diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml index c64c802..5974f0f 100644 --- a/.github/workflows/checks.yml +++ b/.github/workflows/checks.yml @@ -22,6 +22,12 @@ jobs: - name: Run linters run: | nix develop --ignore-environment --keep HOME . --command task lint + # Adding golang-ci lint as a separate step as the Nix package is currently broken + - name: golangci-lint + uses: golangci/golangci-lint-action@v6 + with: + version: v1.61 + args: --timeout=10m test: runs-on: ubuntu-latest @@ -65,13 +71,15 @@ jobs: - uses: cachix/install-nix-action@v26 with: github_access_token: ${{ secrets.GITHUB_TOKEN }} - - name: Install web UI, apply database migrations, generate code and build web app + - name: Install web UI, apply database migrations, generate code, extract translations and build web app run: | nix develop --ignore-environment --command task install-webui nix develop --ignore-environment --keep HOME --keep POSTGRES_PASSWORD . --command task migrate nix develop --ignore-environment --keep HOME --keep POSTGRES_PASSWORD . --command task gen + nix develop --ignore-environment . --command task i18n-extract nix develop --ignore-environment . --command task build-webui env: POSTGRES_PASSWORD: postgres - name: Check nothing changed - run: git diff --exit-code + # excluding the 3rdpartylicenses file in a horrible hack: + run: git diff --exit-code -- . ':(exclude)webui/dist/bitmagnet/3rdpartylicenses.txt' diff --git a/.prettierignore b/.prettierignore index 820171a..57481d6 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,3 +1,5 @@ bitmagnet.io/schemas/**/*.* webui/dist/**/*.* webui/src/app/graphql/generated/**/*.* +webui/src/app/i18n/translations/*.json +webui/.angular diff --git a/Dockerfile b/Dockerfile index 23b7d9d..a9be1c5 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM golang:alpine3.18 AS build +FROM golang:1.23.2-alpine3.20 AS build RUN apk --update add \ gcc \ @@ -13,7 +13,7 @@ WORKDIR /build RUN go build -ldflags "-s -w -X github.com/bitmagnet-io/bitmagnet/internal/version.GitTag=$(git describe --tags --always --dirty)" -FROM alpine:3.18 +FROM alpine:3.20 RUN apk --update add \ curl \ diff --git a/Taskfile.yml b/Taskfile.yml index 310b31b..9a00f8a 100644 --- a/Taskfile.yml +++ b/Taskfile.yml @@ -46,12 +46,19 @@ tasks: - go run . classifier schema --format json > ./bitmagnet.io/schemas/classifier-0.1.json gen-webui-graphql: + dir: ./webui cmds: - - cd webui && npm run graphql:codegen + - npm run graphql:codegen + + i18n-extract: + dir: ./webui + cmds: + - npm run i18n:extract lint: cmds: - - task lint-golangci + # Removing golang-ci lint as the Nix package is currently broken + # - task lint-golangci - task lint-webui - task lint-prettier @@ -93,7 +100,7 @@ tasks: build-webui: dir: ./webui cmds: - - npm run build -- -c embedded + - npm run build build-docsite: dir: ./bitmagnet.io diff --git a/bitmagnet.io/Gemfile b/bitmagnet.io/Gemfile index 157e747..26a17b9 100644 --- a/bitmagnet.io/Gemfile +++ b/bitmagnet.io/Gemfile @@ -1,10 +1,10 @@ source 'https://rubygems.org' -gem "just-the-docs", "~> 0.6" +gem "just-the-docs", "~> 0.10" gem "jekyll", "~> 4.3" gem "jekyll-redirect-from", "~> 0.16" gem "jekyll-seo-tag" gem "jekyll-target-blank", "~> 2.0" -gem "kramdown", "~> 2.3" +gem "kramdown", "~> 2.4" gem "kramdown-parser-gfm", "~> 1.1" gem "webrick", "~> 1.8" diff --git a/bitmagnet.io/Gemfile.lock b/bitmagnet.io/Gemfile.lock index 2de0f35..2bca4ed 100644 --- a/bitmagnet.io/Gemfile.lock +++ b/bitmagnet.io/Gemfile.lock @@ -1,22 +1,28 @@ GEM remote: https://rubygems.org/ specs: - addressable (2.8.5) - public_suffix (>= 2.0.2, < 6.0) + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + bigdecimal (3.1.8) colorator (1.1.0) - concurrent-ruby (1.2.2) + concurrent-ruby (1.3.4) em-websocket (0.5.3) eventmachine (>= 0.12.9) http_parser.rb (~> 0) eventmachine (1.2.7) - ffi (1.16.2) + ffi (1.17.0-arm64-darwin) + ffi (1.17.0-x86_64-linux-gnu) forwardable-extended (2.6.0) - google-protobuf (3.24.3-arm64-darwin) - google-protobuf (3.24.3-x86_64-linux) + google-protobuf (4.28.2-arm64-darwin) + bigdecimal + rake (>= 13) + google-protobuf (4.28.2-x86_64-linux) + bigdecimal + rake (>= 13) http_parser.rb (0.8.0) - i18n (1.14.1) + i18n (1.14.6) concurrent-ruby (~> 1.0) - jekyll (4.3.2) + jekyll (4.3.4) addressable (~> 2.4) colorator (~> 1.0) em-websocket (~> 0.5) @@ -45,7 +51,7 @@ GEM nokogiri (~> 1.10) jekyll-watch (2.2.1) listen (~> 3.0) - just-the-docs (0.6.2) + just-the-docs (0.10.0) jekyll (>= 3.8.5) jekyll-include-cache jekyll-seo-tag (>= 2.0) @@ -55,35 +61,34 @@ GEM kramdown-parser-gfm (1.1.0) kramdown (~> 2.0) liquid (4.0.4) - listen (3.8.0) + listen (3.9.0) rb-fsevent (~> 0.10, >= 0.10.3) rb-inotify (~> 0.9, >= 0.9.10) mercenary (0.4.0) - nokogiri (1.16.5-arm64-darwin) + nokogiri (1.16.7-arm64-darwin) racc (~> 1.4) - nokogiri (1.16.5-x86_64-linux) + nokogiri (1.16.7-x86_64-linux) racc (~> 1.4) pathutil (0.16.2) forwardable-extended (~> 2.6) - public_suffix (5.0.3) - racc (1.7.3) - rake (13.0.6) + public_suffix (6.0.1) + racc (1.8.1) + rake (13.2.1) rb-fsevent (0.11.2) - rb-inotify (0.10.1) + rb-inotify (0.11.1) ffi (~> 1.0) - rexml (3.2.8) - strscan (>= 3.0.9) - rouge (4.1.3) + rexml (3.3.8) + rouge (4.4.0) safe_yaml (1.0.5) - sass-embedded (1.68.0-arm64-darwin) - google-protobuf (~> 3.23) - sass-embedded (1.68.0-x86_64-linux-gnu) - google-protobuf (~> 3.23) - strscan (3.1.0) + sass-embedded (1.79.5) + google-protobuf (~> 4.27) + rake (>= 13) + sass-embedded (1.79.5-arm64-darwin) + google-protobuf (~> 4.27) terminal-table (3.0.2) unicode-display_width (>= 1.1.1, < 3) - unicode-display_width (2.4.2) - webrick (1.8.1) + unicode-display_width (2.6.0) + webrick (1.8.2) PLATFORMS arm64-darwin-22 @@ -95,10 +100,10 @@ DEPENDENCIES jekyll-redirect-from (~> 0.16) jekyll-seo-tag jekyll-target-blank (~> 2.0) - just-the-docs (~> 0.6) - kramdown (~> 2.3) + just-the-docs (~> 0.10) + kramdown (~> 2.4) kramdown-parser-gfm (~> 1.1) webrick (~> 1.8) BUNDLED WITH - 2.5.7 + 2.5.9 diff --git a/bitmagnet.io/faq.md b/bitmagnet.io/faq.md index 3b4a8e4..b0ea598 100644 --- a/bitmagnet.io/faq.md +++ b/bitmagnet.io/faq.md @@ -24,22 +24,17 @@ As a rough guide, you should allow around 300MB RAM for BitMagnet, and at least ## I've started **bitmagnet** for the first time and am not seeing torrents right away, is something wrong? -If everything is working, **bitmagnet** should begin showing torrents in the web UI within a maximum of 10 minutes (which is its cache TTL). The round blue refresh button in the web UI is a cache buster - use it to see new torrent content in real time. Bear in mind that when a torrent is inserted into the database, a background queue job must run before it will become available in the UI. If you're importing thousands or millions of torrents, it might therefore take a while for everything to show. Check the next question if you're still not seeing torrents. +If everything is working, **bitmagnet** should begin showing torrents in the web UI within a maximum of 10 minutes (which is its cache TTL). The refresh button at the top of the torrent listing is a cache buster - use it to see new torrent content in real time. Bear in mind that when a torrent is inserted into the database, a background queue job must run before it will become available in the UI. If you're importing thousands or millions of torrents, it might therefore take a while for everything to show. Check the next question if you're still not seeing torrents. ## **bitmagnet** isn't finding any new torrents, what's wrong? -{: .highlight } -If **bitmagnet** isn't finding new torrents, it probably isn't due to a problem with the software - many people are using it successfully. You may have a networking or firewall issue, or a VPN misconfiguration preventing you from connecting to the DHT. Additionally, the TMDB API is blocked in certain countries; if you are in an affected country you may need to either disable the TMDB integration with the `tmdb.enabled` configuration key, or use a VPN. +If **bitmagnet** isn't finding new torrents, it probably isn't due to a problem with the software - many people are using it successfully. You may have a networking or firewall issue, or a VPN misconfiguration preventing you from connecting to the DHT. Additionally, the TMDB API is blocked in certain countries; if you are in an affected country you may need to either disable the TMDB integration with the `tmdb.enabled` configuration key, or use a VPN. Configuring a personal TMDB API key (or disabling TMDB) will make the queue run a **lot** faster. -Here are some things to check if you're not seeing any new torrents: +**bitmagnet** now shows its health status in the main toolbar: It will show a tick for health, a cross for unhealthy or sometimes 3 dots for pending. Click on it to open the health dialog and check that all workers are running and healthy. The dashboard can be used to monitor queue throughput. On the queues dashboard, the following would indicate a problem: -- Press the round blue refresh button in the UI. -- Visit the metrics endpoint at `/metrics` and check the following metrics: - - `bitmagnet_dht_crawler_persisted_total`: If you see a positive number for this, the DHT crawler is working and has found torrents. - - If torrents are being persisted but you still don't see them in the UI, then check:`bitmagnet_queue_jobs_total{queue="process_torrent",status="processed"}`: If you see a positive number here, then the queue worker is running and processing jobs. If you see `status="failed"` or `status="retry"`, but no `status="processed"`, then something is wrong. - - If no torrents are being persisted, check: `bitmagnet_dht_server_query_success_total` and `bitmagnet_dht_server_query_error_total`. Having some DHT query errors is completely normal, but if you see no successful queries then something is wrong. -- If any of the above metrics are missing, you can assume their value is zero. -- If the metrics confirm a problem, check the logs for errors. +- A high number of pending jobs, and the number of processed jobs not increasing over time +- A high number of failed jobs +- No new jobs being created over time ## Why doesn't **bitmagnet** show me exactly how many torrents it has indexed? @@ -51,7 +46,7 @@ This will depend on a number of factors, including your hardware and network con ## How can I see exactly how many torrents **bitmagnet** has crawled in the current session? -Visit the metrics endpoint at `/metrics` and check the metric `bitmagnet_dht_crawler_persisted_total`. `{entity="Torrent"}` corresponds to newly crawled torrents, and `{entity="TorrentsTorrentSource"}` corresponds to torrents that were rediscovered and had their seeders/leechers count, and last-seen-on date updated. +The new dashboard shows throughput of the crawler and job queue. Alternatively, visit the metrics endpoint at `/metrics` and check the metric `bitmagnet_dht_crawler_persisted_total`. `{entity="Torrent"}` corresponds to newly crawled torrents, and `{entity="TorrentsTorrentSource"}` corresponds to torrents that were rediscovered and had their seeders/leechers count, and last-seen-on date updated. ## How are the seeders/leechers numbers determined for torrents crawled from the DHT? @@ -69,6 +64,10 @@ No. The DHT crawler works by sampling random info hashes from the network, and w **bitmagnet** is in early development, and improving the classifier will be an ongoing effort. When new versions are released, you can follow the [reclassify turorial](/tutorials/reprocess-reclassify.html) to reclassify torrents. If you'd like to [improve or customize the classifier](/guides/classifier.html), this is also possible. +## How can I make **bitmagnet** automatically delete torrents I'm not interested in? + +A better question would be: why bother? Disk space is inexpensive in the quantities required by **bitmagnet**, and searching is easier than deleting. Nevertheless this is one of the most commonly asked questions, and it is possible to do this by [customizing the classifier](/guides/classifier.html). Please consider the wastage of resources and load on the network created by deleting what you've crawled. Also remember that the classifier isn't perfect: for example, enabling deletion of XXX content will also delete anything that has been mis-identified as XXX by the classifier, preventing you from finding it in future - for example because it contains a rude word. If you are deleting a large proportion of what you're crawling, you are almost certainly deleting over-zealously and you should consider just using one of the many indexer sites instead. + ## Can I run multiple **bitmagnet** instances pointing to the same database? Yes you can, just point multiple instances to one database and it will work - _but_ it will put more load on the database and cause the app to run slower. An alternative is to run multiple instances with multiple databases, and periodically [merge the databases](/guides/backup-restore-merge.html). diff --git a/bitmagnet.io/index.md b/bitmagnet.io/index.md index db92c16..ecb2bad 100644 --- a/bitmagnet.io/index.md +++ b/bitmagnet.io/index.md @@ -36,13 +36,12 @@ This means that **bitmagnet** is not reliant on any external trackers or torrent - [x] A GraphQL API: currently this provides a single search query; there is also an embedded GraphQL playground at `/graphql` - [x] A web user interface implemented in Angular: currently this is a simple single-page application providing a user interface for search queries via the GraphQL API - [x] [A Torznab-compatible endpoint for integration with the Serverr stack](/guides/servarr-integration.html) +- [x] A WebUI dashboard for monitoring and administration ### High priority features not yet implemented -- [ ] A WebUI dashboard showing things like crawler throughput, task queue, database size etc. - [ ] Authentication, API keys, access levels etc. - [ ] An admin API, and in general a more complete GraphQL API -- [ ] A more complete web UI - [ ] Saved searches for content of particular interest, enabling custom feeds in addition to the following feature - [ ] Bi-directional integration with the [Prowlarr indexer proxy](https://prowlarr.com/): Currently **bitmagnet** can be added as an indexer in Prowlarr; bi-directional integration would allow **bitmagnet** to crawl content from any indexer configured in Prowlarr, unlocking many new sources of content - [ ] More documentation and more tests! diff --git a/bitmagnet.io/setup/installation.md b/bitmagnet.io/setup/installation.md index a970d3e..5fa17cf 100644 --- a/bitmagnet.io/setup/installation.md +++ b/bitmagnet.io/setup/installation.md @@ -85,3 +85,17 @@ When referring to CLI commands in the rest of the documentation, for simplicity ```sh bitmagnet --help ``` + +## Starting **bitmagnet** + +**bitmagnet** runs as multiple worker processes that can be started either individually or all at once. To start all workers, run: + +```sh +bitmagnet worker run --all +``` + +Alternatively, specify individual workers to start: + +```sh +bitmagnet worker run --keys=http_server,queue_server,dht_crawler +``` diff --git a/flake.lock b/flake.lock index 8fd40d5..fe73533 100644 --- a/flake.lock +++ b/flake.lock @@ -5,11 +5,11 @@ "systems": "systems" }, "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "lastModified": 1726560853, + "narHash": "sha256-X6rJYSESBVr3hBoH0WbKE5KvhPU5bloyZ2L4K60/fPQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "rev": "c1dfcf08411b08f6b8615f7d8971a2bfa81d5e8a", "type": "github" }, "original": { @@ -20,16 +20,16 @@ }, "nixpkgs": { "locked": { - "lastModified": 1713805509, - "narHash": "sha256-YgSEan4CcrjivCNO5ZNzhg7/8ViLkZ4CB/GrGBVSudo=", - "owner": "NixOS", + "lastModified": 1728500571, + "narHash": "sha256-dOymOQ3AfNI4Z337yEwHGohrVQb4yPODCW9MDUyAc4w=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "1e1dc66fe68972a76679644a5577828b6a7e8be4", + "rev": "d51c28603def282a24fa034bcb007e2bcb5b5dd0", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", + "owner": "nixos", + "ref": "nixos-24.05", "repo": "nixpkgs", "type": "github" } diff --git a/flake.nix b/flake.nix index 3ae2c59..9c5ba4c 100644 --- a/flake.nix +++ b/flake.nix @@ -1,6 +1,6 @@ { description = "A basic flake with a shell"; - inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; + inputs.nixpkgs.url = "github:nixos/nixpkgs/nixos-24.05"; inputs.flake-utils.url = "github:numtide/flake-utils"; outputs = { @@ -20,7 +20,7 @@ go-task golangci-lint jekyll - nodejs_20 + nodejs_22 nodePackages.prettier protobuf protoc-gen-go diff --git a/go.mod b/go.mod index 70d9aa6..0a34b98 100644 --- a/go.mod +++ b/go.mod @@ -1,9 +1,9 @@ module github.com/bitmagnet-io/bitmagnet -go 1.22 +go 1.23 require ( - github.com/99designs/gqlgen v0.17.45 + github.com/99designs/gqlgen v0.17.55 github.com/DATA-DOG/go-sqlmock v1.5.2 github.com/abice/go-enum v0.6.0 github.com/adrg/xdg v0.4.0 @@ -18,10 +18,9 @@ require ( github.com/go-playground/validator/v10 v10.20.0 github.com/go-resty/resty/v2 v2.12.0 github.com/google/cel-go v0.20.1 - github.com/grafana/pyroscope-go/godeltaprof v0.1.7 + github.com/grafana/pyroscope-go/godeltaprof v0.1.8 github.com/hashicorp/golang-lru/v2 v2.0.7 github.com/hedhyw/rex v0.6.0 - github.com/hellofresh/health-go/v5 v5.5.3 github.com/iancoleman/strcase v0.3.0 github.com/jackc/pgx/v5 v5.5.5 github.com/jedib0t/go-pretty/v6 v6.5.8 @@ -35,17 +34,17 @@ require ( github.com/rs/cors/wrapper/gin v0.0.0-20240429123903-3d336ea9b505 github.com/stretchr/testify v1.9.0 github.com/tylertreat/BoomFilters v0.0.0-20210315201527-1a82519a3e43 - github.com/urfave/cli/v2 v2.27.2 - github.com/vektah/gqlparser/v2 v2.5.14 - github.com/vektra/mockery/v2 v2.43.0 + github.com/urfave/cli/v2 v2.27.4 + github.com/vektah/gqlparser/v2 v2.5.17 + github.com/vektra/mockery/v2 v2.46.2 github.com/xeipuuv/gojsonschema v1.2.0 go.uber.org/fx v1.21.1 go.uber.org/zap v1.27.0 - golang.org/x/sync v0.7.0 - golang.org/x/sys v0.19.0 - golang.org/x/text v0.14.0 + golang.org/x/sync v0.8.0 + golang.org/x/sys v0.25.0 + golang.org/x/text v0.18.0 golang.org/x/time v0.5.0 - google.golang.org/protobuf v1.34.0 + google.golang.org/protobuf v1.35.1 gopkg.in/yaml.v3 v3.0.1 gorm.io/driver/mysql v1.5.6 gorm.io/driver/postgres v1.5.7 @@ -137,7 +136,7 @@ require ( github.com/sagikazarmark/slog-shim v0.1.0 // indirect github.com/sethvargo/go-retry v0.2.4 // indirect github.com/shopspring/decimal v1.4.0 // indirect - github.com/sosodev/duration v1.3.0 // indirect + github.com/sosodev/duration v1.3.1 // indirect github.com/sourcegraph/conc v0.3.0 // indirect github.com/spf13/afero v1.11.0 // indirect github.com/spf13/cast v1.6.0 // indirect @@ -151,18 +150,16 @@ require ( github.com/ugorji/go/codec v1.2.12 // indirect github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb // indirect github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect - github.com/xrash/smetrics v0.0.0-20240312152122-5f08fbb34913 // indirect - go.opentelemetry.io/otel v1.26.0 // indirect - go.opentelemetry.io/otel/trace v1.26.0 // indirect + github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1 // indirect go.uber.org/dig v1.17.1 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/arch v0.7.0 // indirect - golang.org/x/crypto v0.22.0 // indirect + golang.org/x/crypto v0.27.0 // indirect golang.org/x/exp v0.0.0-20240416160154-fe59bbe5cc7f // indirect - golang.org/x/mod v0.17.0 // indirect - golang.org/x/net v0.24.0 // indirect - golang.org/x/term v0.19.0 // indirect - golang.org/x/tools v0.20.0 // indirect + golang.org/x/mod v0.20.0 // indirect + golang.org/x/net v0.29.0 // indirect + golang.org/x/term v0.24.0 // indirect + golang.org/x/tools v0.24.0 // indirect golang.org/x/tools/cmd/cover v0.1.0-deprecated // indirect google.golang.org/genproto/googleapis/api v0.0.0-20240429193739-8cf5692501f6 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20240429193739-8cf5692501f6 // indirect diff --git a/go.sum b/go.sum index 2dbabe8..6210cb7 100644 --- a/go.sum +++ b/go.sum @@ -4,8 +4,8 @@ crawshaw.io/iox v0.0.0-20181124134642-c51c3df30797/go.mod h1:sXBiorCo8c46JlQV3oX crawshaw.io/sqlite v0.3.2/go.mod h1:igAO5JulrQ1DbdZdtVq48mnZUBAPOeFzer7VhDWNtW4= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= -github.com/99designs/gqlgen v0.17.45 h1:bH0AH67vIJo8JKNKPJP+pOPpQhZeuVRQLf53dKIpDik= -github.com/99designs/gqlgen v0.17.45/go.mod h1:Bas0XQ+Jiu/Xm5E33jC8sES3G+iC2esHBMXcq0fUPs0= +github.com/99designs/gqlgen v0.17.55 h1:3vzrNWYyzSZjGDFo68e5j9sSauLxfKvLp+6ioRokVtM= +github.com/99designs/gqlgen v0.17.55/go.mod h1:3Bq768f8hgVPGZxL8aY9MaYmbxa6llPM/qu1IGH1EJo= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/DATA-DOG/go-sqlmock v1.5.2 h1:OcvFkGmslmlZibjAjaHm3L//6LiuBgolP7OputlJIzU= github.com/DATA-DOG/go-sqlmock v1.5.2/go.mod h1:88MAG/4G7SMwSE3CeA0ZKzrT5CiOU3OJ+JlNzwDqpNU= @@ -16,8 +16,8 @@ github.com/Masterminds/semver/v3 v3.2.1 h1:RN9w6+7QoMeJVGyfmbcgs28Br8cvmnucEXnY0 github.com/Masterminds/semver/v3 v3.2.1/go.mod h1:qvl/7zhW3nngYb5+80sSMF+FG2BjYrf8m9wsX0PNOMQ= github.com/Masterminds/sprig/v3 v3.2.3 h1:eL2fZNezLomi0uOLqjQoN6BfsDD+fyLtgbJMAj9n6YA= github.com/Masterminds/sprig/v3 v3.2.3/go.mod h1:rXcFaZ2zZbLRJv/xSysmlgIM1u11eBaRMhvYXJNkGuM= -github.com/PuerkitoBio/goquery v1.9.1 h1:mTL6XjbJTZdpfL+Gwl5U2h1l9yEkJjhmlTeV9VPW7UI= -github.com/PuerkitoBio/goquery v1.9.1/go.mod h1:cW1n6TmIMDoORQU5IU/P1T3tGFunOeXEpGP2WHRwkbY= +github.com/PuerkitoBio/goquery v1.9.3 h1:mpJr/ikUA9/GNJB/DBZcGeFDXUtosHRyRrwh7KGdTG0= +github.com/PuerkitoBio/goquery v1.9.3/go.mod h1:1ndLHPdTz+DyQPICCWYlYQMPl0oXZj0G6D4LCYA6u4U= github.com/RoaringBitmap/roaring v0.4.7/go.mod h1:8khRDP4HmeXns4xIj9oGrKSz7XTQiJx2zgh7AcNke4w= github.com/RoaringBitmap/roaring v0.4.17/go.mod h1:D3qVegWTmfCaX4Bl5CrBE9hfrSrrXIr8KVNvRsDi1NI= github.com/RoaringBitmap/roaring v0.4.23/go.mod h1:D0gp8kJQgE1A4LQ5wFLggQEyvDi06Mq5mKs52e1TwOo= @@ -228,8 +228,8 @@ github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51 github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= github.com/gorilla/websocket v1.5.1 h1:gmztn0JnHVt9JZquRuzLw3g4wouNVzKL15iLr/zn/QY= github.com/gorilla/websocket v1.5.1/go.mod h1:x3kM2JMyaluk02fnUJpQuwD2dCS5NDG2ZHL0uE0tcaY= -github.com/grafana/pyroscope-go/godeltaprof v0.1.7 h1:C11j63y7gymiW8VugJ9ZW0pWfxTZugdSJyC48olk5KY= -github.com/grafana/pyroscope-go/godeltaprof v0.1.7/go.mod h1:Tk376Nbldo4Cha9RgiU7ik8WKFkNpfds98aUzS8omLE= +github.com/grafana/pyroscope-go/godeltaprof v0.1.8 h1:iwOtYXeeVSAeYefJNaxDytgjKtUuKQbJqgAIjlnicKg= +github.com/grafana/pyroscope-go/godeltaprof v0.1.8/go.mod h1:2+l7K7twW49Ct4wFluZD3tZ6e0SjanjcUUBPVD/UuGU= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k= github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM= @@ -237,8 +237,6 @@ github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hedhyw/rex v0.6.0 h1:VoCgjAn2st5qshzHM3Qcd4lEHq8y1PDGNp+MO5x0G64= github.com/hedhyw/rex v0.6.0/go.mod h1:n9CYz3ztkAp56mrMXw65Q3LeXCO2AZSUvO7VMHsVMF8= -github.com/hellofresh/health-go/v5 v5.5.3 h1:i+mfJcA8te/QhBzrBZxOw344XgIvHrc9IQzrEyn3OUQ= -github.com/hellofresh/health-go/v5 v5.5.3/go.mod h1:maWprKoK7N9zno7l2ubFEGVF2SDmTHq5D9sV+lCFmGs= github.com/hexops/gotextdiff v1.0.3 h1:gitA9+qJrrTCsiCl7+kh75nPqQt1cx4ZkudSTLoUqJM= github.com/hexops/gotextdiff v1.0.3/go.mod h1:pSWU5MAI3yDq+fZBTazCSJysOMbxWL1BSow5/V2vxeg= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= @@ -283,7 +281,6 @@ github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfV github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/kisielk/sqlstruct v0.0.0-20201105191214-5f3e10d3ab46/go.mod h1:yyMNCyc/Ib3bDTKd379tNMpB/7/H5TjM2Y9QJ5THLbE= -github.com/klauspost/compress v1.17.3/go.mod h1:/dCuZOvVtNoHsyb+cuJD3itjs3NbnF6KH9zAO4BDxPM= github.com/klauspost/compress v1.17.8 h1:YcnTYrq7MikUT7k0Yb5eceMmALQPYBW/Xltxn0NAMnU= github.com/klauspost/compress v1.17.8/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= @@ -429,8 +426,8 @@ github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1 github.com/smartystreets/assertions v0.0.0-20190215210624-980c5ac6f3ac/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= github.com/smartystreets/goconvey v0.0.0-20181108003508-044398e4856c/go.mod h1:XDJAKZRPZ1CvBcN2aX5YOUTYGHki24fSF0Iv48Ibg0s= github.com/smartystreets/goconvey v0.0.0-20190306220146-200a235640ff/go.mod h1:KSQcGKpxUMHk3nbYzs/tIBAM2iDooCn0BmttHOJEbLs= -github.com/sosodev/duration v1.3.0 h1:g3E6mto+hFdA2uZXeNDYff8LYeg7v5D4YKP/Ng/NUkE= -github.com/sosodev/duration v1.3.0/go.mod h1:RQIBBX0+fMLc/D9+Jb/fwvVmo0eZvDDEERAikUR6SDg= +github.com/sosodev/duration v1.3.1 h1:qtHBDMQ6lvMQsL15g4aopM4HEfOaYuhWBw3NPTtlqq4= +github.com/sosodev/duration v1.3.1/go.mod h1:RQIBBX0+fMLc/D9+Jb/fwvVmo0eZvDDEERAikUR6SDg= github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo= github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0= github.com/spf13/afero v1.11.0 h1:WJQKhtpdm3v2IzqG8VMqrr6Rf3UYpEF239Jy9wNepM8= @@ -477,12 +474,12 @@ github.com/tylertreat/BoomFilters v0.0.0-20210315201527-1a82519a3e43 h1:QEePdg0t github.com/tylertreat/BoomFilters v0.0.0-20210315201527-1a82519a3e43/go.mod h1:OYRfF6eb5wY9VRFkXJH8FFBi3plw2v+giaIu7P054pM= github.com/ugorji/go/codec v1.2.12 h1:9LC83zGrHhuUA9l16C9AHXAqEV/2wBQ4nkvumAE65EE= github.com/ugorji/go/codec v1.2.12/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg= -github.com/urfave/cli/v2 v2.27.2 h1:6e0H+AkS+zDckwPCUrZkKX38mRaau4nL2uipkJpbkcI= -github.com/urfave/cli/v2 v2.27.2/go.mod h1:g0+79LmHHATl7DAcHO99smiR/T7uGLw84w8Y42x+4eM= -github.com/vektah/gqlparser/v2 v2.5.14 h1:dzLq75BJe03jjQm6n56PdH1oweB8ana42wj7E4jRy70= -github.com/vektah/gqlparser/v2 v2.5.14/go.mod h1:WQQjFc+I1YIzoPvZBhUQX7waZgg3pMLi0r8KymvAE2w= -github.com/vektra/mockery/v2 v2.43.0 h1:9jgLwYbFIKPwWJUeK6Y+0s9oLRIGXLfW4FWlmF9R8c0= -github.com/vektra/mockery/v2 v2.43.0/go.mod h1:XNTE9RIu3deGAGQRVjP1VZxGpQNm0YedZx4oDs3prr8= +github.com/urfave/cli/v2 v2.27.4 h1:o1owoI+02Eb+K107p27wEX9Bb8eqIoZCfLXloLUSWJ8= +github.com/urfave/cli/v2 v2.27.4/go.mod h1:m4QzxcD2qpra4z7WhzEGn74WZLViBnMpb1ToCAKdGRQ= +github.com/vektah/gqlparser/v2 v2.5.17 h1:9At7WblLV7/36nulgekUgIaqHZWn5hxqluxrxGUhOmI= +github.com/vektah/gqlparser/v2 v2.5.17/go.mod h1:1lz1OeCqgQbQepsGxPVywrjdBHW2T08PUS3pJqepRww= +github.com/vektra/mockery/v2 v2.46.2 h1:bpUncWvkiDzqn+aWwt4dY1aS0F8Ob4k8+WJrWU/Kh4s= +github.com/vektra/mockery/v2 v2.46.2/go.mod h1:dDivqi0ShM8A29mLgZn13yZ14MdXlTM4V360u8JDWCQ= github.com/willf/bitset v1.1.9/go.mod h1:RjeCKbqT1RxIR/KWY6phxZiaY1IyutSBfGjNPySAYV4= github.com/willf/bitset v1.1.10/go.mod h1:RjeCKbqT1RxIR/KWY6phxZiaY1IyutSBfGjNPySAYV4= github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= @@ -492,17 +489,13 @@ github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 h1:EzJWgHo github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= github.com/xeipuuv/gojsonschema v1.2.0 h1:LhYJRs+L4fBtjZUfuSZIKGeVu0QRy8e5Xi7D17UxZ74= github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= -github.com/xrash/smetrics v0.0.0-20240312152122-5f08fbb34913 h1:+qGGcbkzsfDQNPPe9UDgpxAWQrhbbBXOYJFQDq/dtJw= -github.com/xrash/smetrics v0.0.0-20240312152122-5f08fbb34913/go.mod h1:4aEEwZQutDLsQv2Deui4iYQ6DWTxR14g6m8Wv88+Xqk= +github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1 h1:gEOO8jv9F4OT7lGCjxCBTO/36wtF6j2nSip77qHd4x4= +github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1/go.mod h1:Ohn+xnUBiLI6FVj/9LpzZWtj1/D6lUovWYBkxHVV3aM= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= go.opencensus.io v0.20.2/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opentelemetry.io/otel v1.26.0 h1:LQwgL5s/1W7YiiRwxf03QGnWLb2HW4pLiAhaA5cZXBs= -go.opentelemetry.io/otel v1.26.0/go.mod h1:UmLkJHUAidDval2EICqBMbnAd0/m2vmpf/dAM+fvFs4= -go.opentelemetry.io/otel/trace v1.26.0 h1:1ieeAUb4y0TE26jUFrCIXKpTuVK7uJGN9/Z/2LP5sQA= -go.opentelemetry.io/otel/trace v1.26.0/go.mod h1:4iDxvGDQuUkHve82hJJ8UqrwswHYsZuWCBllGV2U2y0= go.uber.org/dig v1.17.1 h1:Tga8Lz8PcYNsWsyHMZ1Vm0OQOUaJNDyvPImgbAu9YSc= go.uber.org/dig v1.17.1/go.mod h1:Us0rSJiThwCv2GteUN0Q7OKvU7n5J4dxZ9JKUXozFdE= go.uber.org/fx v1.21.1 h1:RqBh3cYdzZS0uqwVeEjOX2p73dddLpym315myy/Bpb0= @@ -523,8 +516,8 @@ golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5y golang.org/x/crypto v0.3.0/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs= -golang.org/x/crypto v0.22.0 h1:g1v0xeRhjcugydODzvb3mEM9SQ0HGp9s/nh3COQ/C30= -golang.org/x/crypto v0.22.0/go.mod h1:vr6Su+7cTlO45qkww3VDJlzDn0ctJvRgYbC2NvXHt+M= +golang.org/x/crypto v0.27.0 h1:GXm2NjJrPaiv/h1tb2UH8QfgC/hOf/+z0p6PT8o1w7A= +golang.org/x/crypto v0.27.0/go.mod h1:1Xngt8kV6Dvbssa53Ziq6Eqn0HqbZi5Z6R0ZpwQzt70= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20240416160154-fe59bbe5cc7f h1:99ci1mjWVBWwJiEKYY6jWa4d2nTQVIEhZIptnrVb1XY= golang.org/x/exp v0.0.0-20240416160154-fe59bbe5cc7f/go.mod h1:/lliqkxwWAhPjf5oSOIJup2XcqJaw8RGS6k3TGEc7GI= @@ -536,8 +529,8 @@ golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.10.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/mod v0.17.0 h1:zY54UmvipHiNd+pm+m0x9KhZ9hl1/7QNMyxXbc6ICqA= -golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.20.0 h1:utOm6MM3R3dnawAiJgn0y+xvuYRsm1RKM/4giyfDgV0= +golang.org/x/mod v0.20.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -558,8 +551,8 @@ golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= golang.org/x/net v0.22.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= -golang.org/x/net v0.24.0 h1:1PcaxkF854Fu3+lvBIx5SYn9wRlBzzcnHZSiaFFAb0w= -golang.org/x/net v0.24.0/go.mod h1:2Q7sJY5mzlzWjKtYUEXSlBWCdyaioyXzRB2RtU8KVE8= +golang.org/x/net v0.29.0 h1:5ORfpBpCs4HzDYoodCDBbwHzdR5UrLBZ3sOnUJmFoHo= +golang.org/x/net v0.29.0/go.mod h1:gLkgy8jTGERgjzMic6DS9+SP0ajcu6Xu3Orq/SpETg0= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -571,8 +564,8 @@ golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M= -golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ= +golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -601,8 +594,8 @@ golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.19.0 h1:q5f1RH2jigJ1MoAWp2KTp3gm5zAGFUTarQZ5U386+4o= -golang.org/x/sys v0.19.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.25.0 h1:r+8e+loiHxRqhXVl6ML1nO3l1+oFoWbnlu2Ehimmi34= +golang.org/x/sys v0.25.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= @@ -611,8 +604,8 @@ golang.org/x/term v0.7.0/go.mod h1:P32HKFT3hSsZrRxla30E9HqToFYAQPCMs/zFMBUFqPY= golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58= -golang.org/x/term v0.19.0 h1:+ThwsDv+tYfnJFhF4L8jITxu1tdTWRTZpdsWgEgjL6Q= -golang.org/x/term v0.19.0/go.mod h1:2CuTdWZ7KHSQwUzKva0cbMg6q2DMI3Mmxp+gKJbskEk= +golang.org/x/term v0.24.0 h1:Mh5cbb+Zk2hqqXNO7S1iTjEphVL+jb8ZWaqh/g+JWkM= +golang.org/x/term v0.24.0/go.mod h1:lOBK/LVxemqiMij05LGJ0tzNr8xlmwBRJ81PX6wVLH8= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= @@ -620,8 +613,9 @@ golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= -golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.18.0 h1:XvMDiNzPAl0jr17s6W9lcaIhGUfUORdGCNsuLmPG224= +golang.org/x/text v0.18.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -635,8 +629,8 @@ golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.8.0/go.mod h1:JxBZ99ISMI5ViVkT1tr6tdNmXeTrcpVSD3vZ1RsRdN4= -golang.org/x/tools v0.20.0 h1:hz/CVckiOxybQvFw6h7b/q80NTr9IUQb4s1IIzW7KNY= -golang.org/x/tools v0.20.0/go.mod h1:WvitBU7JJf6A4jOdg4S1tviW9bhUxkgeCui/0JHctQg= +golang.org/x/tools v0.24.0 h1:J1shsA93PJUEVaUSaay7UXAyE8aimq3GW0pjlolpa24= +golang.org/x/tools v0.24.0/go.mod h1:YhNqVBIfWHdzvTLs0d8LCuMhkKUgSUKldakyV7W/WDQ= golang.org/x/tools/cmd/cover v0.1.0-deprecated h1:Rwy+mWYz6loAF+LnG1jHG/JWMHRMMC2/1XX3Ejkx9lA= golang.org/x/tools/cmd/cover v0.1.0-deprecated/go.mod h1:hMDiIvlpN1NoVgmjLjUJE9tMHyxHjFX7RuQ+rW12mSA= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -661,8 +655,8 @@ google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= -google.golang.org/protobuf v1.34.0 h1:Qo/qEd2RZPCf2nKuorzksSknv0d3ERwp1vFG38gSmH4= -google.golang.org/protobuf v1.34.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +google.golang.org/protobuf v1.35.1 h1:m3LfL6/Ca+fqnjnlqQXNpFPABW1UD7mjh8KO2mKFytA= +google.golang.org/protobuf v1.35.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/graphql/fragments/QueueJob.graphql b/graphql/fragments/QueueJob.graphql new file mode 100644 index 0000000..bc65bc0 --- /dev/null +++ b/graphql/fragments/QueueJob.graphql @@ -0,0 +1,13 @@ +fragment QueueJob on QueueJob { + id + queue + status + payload + priority + retries + maxRetries + runAfter + ranAt + error + createdAt +} diff --git a/graphql/fragments/QueueJobsQueryResult.graphql b/graphql/fragments/QueueJobsQueryResult.graphql new file mode 100644 index 0000000..3868727 --- /dev/null +++ b/graphql/fragments/QueueJobsQueryResult.graphql @@ -0,0 +1,21 @@ +#import "../fragments/QueueJob" + +fragment QueueJobsQueryResult on QueueJobsQueryResult { + items { + ...QueueJob + } + totalCount + hasNextPage + aggregations { + queue { + value + label + count + } + status { + value + label + count + } + } +} diff --git a/graphql/fragments/Torrent.graphql b/graphql/fragments/Torrent.graphql index ddf02db..02b5bee 100644 --- a/graphql/fragments/Torrent.graphql +++ b/graphql/fragments/Torrent.graphql @@ -9,9 +9,6 @@ fragment Torrent on Torrent { hasFilesInfo singleFile fileType - files { - ...TorrentFile - } sources { key name diff --git a/graphql/fragments/TorrentFilesQueryResult.graphql b/graphql/fragments/TorrentFilesQueryResult.graphql new file mode 100644 index 0000000..bd943ac --- /dev/null +++ b/graphql/fragments/TorrentFilesQueryResult.graphql @@ -0,0 +1,9 @@ +#import "./TorrentFile" + +fragment TorrentFilesQueryResult on TorrentFilesQueryResult { + items { + ...TorrentFile + } + totalCount + hasNextPage +} diff --git a/graphql/mutations/QueueEnqueueReprocessTorrentsBatch.graphql b/graphql/mutations/QueueEnqueueReprocessTorrentsBatch.graphql new file mode 100644 index 0000000..a68e9a8 --- /dev/null +++ b/graphql/mutations/QueueEnqueueReprocessTorrentsBatch.graphql @@ -0,0 +1,7 @@ +mutation QueueEnqueueReprocessTorrentsBatch( + $input: QueueEnqueueReprocessTorrentsBatchInput! +) { + queue { + enqueueReprocessTorrentsBatch(input: $input) + } +} diff --git a/graphql/mutations/QueuePurgeJobs.graphql b/graphql/mutations/QueuePurgeJobs.graphql new file mode 100644 index 0000000..17868cf --- /dev/null +++ b/graphql/mutations/QueuePurgeJobs.graphql @@ -0,0 +1,5 @@ +mutation QueuePurgeJobs($input: QueuePurgeJobsInput!) { + queue { + purgeJobs(input: $input) + } +} diff --git a/graphql/queries/HealthCheck.graphql b/graphql/queries/HealthCheck.graphql new file mode 100644 index 0000000..0d39e8b --- /dev/null +++ b/graphql/queries/HealthCheck.graphql @@ -0,0 +1,21 @@ +#import "../fragments/TorrentContentSearchResult" + +query HealthCheck { + health { + status + checks { + key + status + timestamp + error + } + } + workers { + listAll { + workers { + key + started + } + } + } +} diff --git a/graphql/queries/QueueJobs.graphql b/graphql/queries/QueueJobs.graphql new file mode 100644 index 0000000..e0cd22f --- /dev/null +++ b/graphql/queries/QueueJobs.graphql @@ -0,0 +1,9 @@ +#import "../fragments/QueueJobsQueryResult" + +query QueueJobs($input: QueueJobsQueryInput!) { + queue { + jobs(input: $input) { + ...QueueJobsQueryResult + } + } +} diff --git a/graphql/queries/QueueMetrics.graphql b/graphql/queries/QueueMetrics.graphql new file mode 100644 index 0000000..32e9b46 --- /dev/null +++ b/graphql/queries/QueueMetrics.graphql @@ -0,0 +1,14 @@ +query QueueMetrics($input: QueueMetricsQueryInput!) { + queue { + metrics(input: $input) { + buckets { + queue + status + createdAtBucket + ranAtBucket + count + latency + } + } + } +} diff --git a/graphql/queries/SystemQuery.graphql b/graphql/queries/SystemQuery.graphql deleted file mode 100644 index f8b8a1c..0000000 --- a/graphql/queries/SystemQuery.graphql +++ /dev/null @@ -1,5 +0,0 @@ -query SystemQuery { - system { - version - } -} diff --git a/graphql/queries/TorrentContentSearch.graphql b/graphql/queries/TorrentContentSearch.graphql index 6c8b62e..eaf51b3 100644 --- a/graphql/queries/TorrentContentSearch.graphql +++ b/graphql/queries/TorrentContentSearch.graphql @@ -1,12 +1,8 @@ #import "../fragments/TorrentContentSearchResult" -query TorrentContentSearch( - $query: SearchQueryInput - $facets: TorrentContentFacetsInput - $orderBy: [TorrentContentOrderByInput!] -) { +query TorrentContentSearch($input: TorrentContentSearchQueryInput!) { torrentContent { - search(query: $query, facets: $facets, orderBy: $orderBy) { + search(input: $input) { ...TorrentContentSearchResult } } diff --git a/graphql/queries/TorrentFiles.graphql b/graphql/queries/TorrentFiles.graphql new file mode 100644 index 0000000..8cda542 --- /dev/null +++ b/graphql/queries/TorrentFiles.graphql @@ -0,0 +1,9 @@ +#import "../fragments/TorrentFilesQueryResult" + +query TorrentFiles($input: TorrentFilesQueryInput!) { + torrent { + files(input: $input) { + ...TorrentFilesQueryResult + } + } +} diff --git a/graphql/queries/TorrentMetrics.graphql b/graphql/queries/TorrentMetrics.graphql new file mode 100644 index 0000000..b90dd18 --- /dev/null +++ b/graphql/queries/TorrentMetrics.graphql @@ -0,0 +1,18 @@ +query TorrentMetrics($input: TorrentMetricsQueryInput!) { + torrent { + metrics(input: $input) { + buckets { + source + updated + bucket + count + } + } + listSources { + sources { + key + name + } + } + } +} diff --git a/graphql/queries/TorrentSuggestTags.graphql b/graphql/queries/TorrentSuggestTags.graphql index d9cff7c..37e1569 100644 --- a/graphql/queries/TorrentSuggestTags.graphql +++ b/graphql/queries/TorrentSuggestTags.graphql @@ -1,6 +1,6 @@ -query TorrentSuggestTags($query: SuggestTagsQueryInput!) { +query TorrentSuggestTags($input: SuggestTagsQueryInput!) { torrent { - suggestTags(query: $query) { + suggestTags(input: $input) { suggestions { name count diff --git a/graphql/queries/Version.graphql b/graphql/queries/Version.graphql new file mode 100644 index 0000000..8ec1aa9 --- /dev/null +++ b/graphql/queries/Version.graphql @@ -0,0 +1,3 @@ +query Version { + version +} diff --git a/graphql/schema/enums.graphqls b/graphql/schema/enums.graphqls index 60d60cf..b98b087 100644 --- a/graphql/schema/enums.graphqls +++ b/graphql/schema/enums.graphqls @@ -34,42 +34,58 @@ enum FilesStatus { } enum Language { + af ar - bs + az + be bg + bs ca - zh + ce + co cs + cy da - nl - en - et - fi - fr de el + en + es + et + eu + fa + fi + fr he hi hr hu - is + hy id + is it ja + ka ko - lv + ku lt + lv + mi mk ml + mn + ms + mt + nl no - fa pl pt ro ru + sa sk sl - es + sm + so sr sv ta @@ -77,24 +93,8 @@ enum Language { tr uk vi - af - hy - az - eu - be - ce - co - ka - ku - mi - ms - mt - mn - sa - sm - so - cy yi + zh zu } @@ -146,14 +146,27 @@ enum VideoSource { BluRay } -enum TorrentContentOrderBy { - Relevance - PublishedAt - UpdatedAt - Size - Files - Seeders - Leechers - Name - InfoHash +enum TorrentContentOrderByField { + relevance + published_at + updated_at + size + files_count + seeders + leechers + name + info_hash +} + +enum TorrentFilesOrderByField { + index + path + extension + size +} + +enum QueueJobsOrderByField { + created_at + ran_at + priority } diff --git a/graphql/schema/metrics.graphqls b/graphql/schema/metrics.graphqls new file mode 100644 index 0000000..0bca5f1 --- /dev/null +++ b/graphql/schema/metrics.graphqls @@ -0,0 +1,44 @@ +enum MetricsBucketDuration { + minute + hour + day +} + +type QueueMetricsBucket { + queue: String! + status: QueueJobStatus! + createdAtBucket: DateTime! + ranAtBucket: DateTime + count: Int! + latency: Duration +} + +type QueueMetricsQueryResult { + buckets: [QueueMetricsBucket!]! +} + +input QueueMetricsQueryInput { + bucketDuration: MetricsBucketDuration! + statuses: [QueueJobStatus!] + queues: [String!] + startTime: DateTime + endTime: DateTime +} + +type TorrentMetricsBucket { + source: String! + bucket: DateTime! + updated: Boolean! + count: Int! +} + +type TorrentMetricsQueryResult { + buckets: [TorrentMetricsBucket!]! +} + +input TorrentMetricsQueryInput { + bucketDuration: MetricsBucketDuration! + sources: [String!] + startTime: DateTime + endTime: DateTime +} diff --git a/graphql/schema/models.graphqls b/graphql/schema/models.graphqls index 7e1d39c..296bb3a 100644 --- a/graphql/schema/models.graphqls +++ b/graphql/schema/models.graphqls @@ -10,7 +10,7 @@ type Torrent { fileType: FileType fileTypes: [FileType!] files: [TorrentFile!] - sources: [TorrentSource!]! + sources: [TorrentSourceInfo!]! seeders: Int leechers: Int tagNames: [String!]! @@ -33,6 +33,11 @@ type TorrentFile { type TorrentSource { key: String! name: String! +} + +type TorrentSourceInfo { + key: String! + name: String! importId: String seeders: Int leechers: Int diff --git a/graphql/schema/mutation.graphqls b/graphql/schema/mutation.graphqls index e0a6823..45d61c7 100644 --- a/graphql/schema/mutation.graphqls +++ b/graphql/schema/mutation.graphqls @@ -1,5 +1,6 @@ type Mutation { torrent: TorrentMutation! + queue: QueueMutation! } type TorrentMutation { diff --git a/graphql/schema/query.graphqls b/graphql/schema/query.graphqls index 0d4a0e2..7c93c35 100644 --- a/graphql/schema/query.graphqls +++ b/graphql/schema/query.graphqls @@ -1,11 +1,17 @@ type Query { + version: String! + workers: WorkersQuery! + health: HealthQuery! + queue: QueueQuery! torrent: TorrentQuery! torrentContent: TorrentContentQuery! - system: SystemQuery! } type TorrentQuery { - suggestTags(query: SuggestTagsQueryInput): TorrentSuggestTagsResult! + files(input: TorrentFilesQueryInput!): TorrentFilesQueryResult! + listSources: TorrentListSourcesResult! + suggestTags(input: SuggestTagsQueryInput): TorrentSuggestTagsResult! + metrics(input: TorrentMetricsQueryInput!): TorrentMetricsQueryResult! } input SuggestTagsQueryInput { @@ -17,19 +23,47 @@ type TorrentSuggestTagsResult { suggestions: [SuggestedTag!]! } +type TorrentListSourcesResult { + sources: [TorrentSource!]! +} + type SuggestedTag { name: String! count: Int! } type TorrentContentQuery { - search( - query: SearchQueryInput - facets: TorrentContentFacetsInput - orderBy: [TorrentContentOrderByInput!] - ): TorrentContentSearchResult! + search(input: TorrentContentSearchQueryInput!): TorrentContentSearchResult! } -type SystemQuery { - version: String! +type Worker { + key: String! + started: Boolean! +} + +type WorkersListAllQueryResult { + workers: [Worker!]! +} + +type WorkersQuery { + listAll: WorkersListAllQueryResult! +} + +enum HealthStatus { + unknown + inactive + up + down +} + +type HealthCheck { + key: String! + status: HealthStatus! + timestamp: DateTime! + error: String +} + +type HealthQuery { + status: HealthStatus! + checks: [HealthCheck!]! } diff --git a/graphql/schema/queue.graphqls b/graphql/schema/queue.graphqls new file mode 100644 index 0000000..a6a0f12 --- /dev/null +++ b/graphql/schema/queue.graphqls @@ -0,0 +1,104 @@ +type QueueQuery { + jobs(input: QueueJobsQueryInput!): QueueJobsQueryResult! + metrics(input: QueueMetricsQueryInput!): QueueMetricsQueryResult! +} + +input QueueJobsQueryInput { + queues: [String!] + statuses: [QueueJobStatus!] + limit: Int + page: Int + offset: Int + totalCount: Boolean + hasNextPage: Boolean + facets: QueueJobsFacetsInput + orderBy: [QueueJobsOrderByInput!] +} + +input QueueJobQueueFacetInput { + aggregate: Boolean + filter: [String!] +} + +input QueueJobStatusFacetInput { + aggregate: Boolean + filter: [QueueJobStatus!] +} + +input QueueJobsFacetsInput { + status: QueueJobStatusFacetInput + queue: QueueJobQueueFacetInput +} + +input QueueJobsOrderByInput { + field: QueueJobsOrderByField! + descending: Boolean +} + +type QueueJob { + id: ID! + queue: String! + status: QueueJobStatus! + payload: String! + priority: Int! + retries: Int! + maxRetries: Int! + runAfter: DateTime! + ranAt: DateTime + error: String + createdAt: DateTime! +} + +type QueueJobsQueryResult { + totalCount: Int! + hasNextPage: Boolean + items: [QueueJob!]! + aggregations: QueueJobsAggregations! +} + +type QueueJobQueueAgg { + value: String! + label: String! + count: Int! +} + +type QueueJobStatusAgg { + value: QueueJobStatus! + label: String! + count: Int! +} + +type QueueJobsAggregations { + queue: [QueueJobQueueAgg!] + status: [QueueJobStatusAgg!] +} + +enum QueueJobStatus { + pending + retry + failed + processed +} + +input QueueEnqueueReprocessTorrentsBatchInput { + batchSize: Int + chunkSize: Int + contentTypes: [ContentType] + orphans: Boolean + classifierRematch: Boolean + classifierWorkflow: String + apisDisabled: Boolean + localSearchDisabled: Boolean +} + +type QueueMutation { + purgeJobs(input: QueuePurgeJobsInput!): Void + enqueueReprocessTorrentsBatch( + input: QueueEnqueueReprocessTorrentsBatchInput + ): Void +} + +input QueuePurgeJobsInput { + queues: [String!] + statuses: [QueueJobStatus!] +} diff --git a/graphql/schema/scalars.graphqls b/graphql/schema/scalars.graphqls index d264990..a3f44eb 100644 --- a/graphql/schema/scalars.graphqls +++ b/graphql/schema/scalars.graphqls @@ -1,5 +1,6 @@ scalar Hash20 scalar Date scalar DateTime +scalar Duration scalar Void scalar Year diff --git a/graphql/schema/search.graphqls b/graphql/schema/torrent_content.graphqls similarity index 93% rename from graphql/schema/search.graphqls rename to graphql/schema/torrent_content.graphqls index e12b4db..3c5b57c 100644 --- a/graphql/schema/search.graphqls +++ b/graphql/schema/torrent_content.graphqls @@ -1,12 +1,16 @@ -input SearchQueryInput { +input TorrentContentSearchQueryInput { queryString: String limit: Int + page: Int offset: Int totalCount: Boolean """ hasNextPage if true, the search result will include the hasNextPage field, indicating if there are more results to fetch """ hasNextPage: Boolean + infoHashes: [Hash20!] + facets: TorrentContentFacetsInput + orderBy: [TorrentContentOrderByInput!] cached: Boolean aggregationBudget: Float } @@ -159,6 +163,6 @@ type TorrentContentSearchResult { } input TorrentContentOrderByInput { - field: TorrentContentOrderBy! + field: TorrentContentOrderByField! descending: Boolean } diff --git a/graphql/schema/torrent_files.graphqls b/graphql/schema/torrent_files.graphqls new file mode 100644 index 0000000..ebcf59b --- /dev/null +++ b/graphql/schema/torrent_files.graphqls @@ -0,0 +1,21 @@ +input TorrentFilesQueryInput { + limit: Int + page: Int + offset: Int + totalCount: Boolean + hasNextPage: Boolean + infoHashes: [Hash20!] + orderBy: [TorrentFilesOrderByInput!] + cached: Boolean +} + +input TorrentFilesOrderByInput { + field: TorrentFilesOrderByField! + descending: Boolean +} + +type TorrentFilesQueryResult { + totalCount: Int! + hasNextPage: Boolean + items: [TorrentFile!]! +} diff --git a/internal/app/appfx/module.go b/internal/app/appfx/module.go index 9f0d1cd..ef0503f 100644 --- a/internal/app/appfx/module.go +++ b/internal/app/appfx/module.go @@ -12,7 +12,9 @@ import ( "github.com/bitmagnet-io/bitmagnet/internal/database/migrations" "github.com/bitmagnet-io/bitmagnet/internal/dhtcrawler/dhtcrawlerfx" "github.com/bitmagnet-io/bitmagnet/internal/gql/gqlfx" + "github.com/bitmagnet-io/bitmagnet/internal/health/healthfx" "github.com/bitmagnet-io/bitmagnet/internal/importer/importerfx" + "github.com/bitmagnet-io/bitmagnet/internal/metrics/metricsfx" "github.com/bitmagnet-io/bitmagnet/internal/processor/processorfx" "github.com/bitmagnet-io/bitmagnet/internal/protocol/dht/dhtfx" "github.com/bitmagnet-io/bitmagnet/internal/protocol/metainfo/metainfofx" @@ -34,9 +36,11 @@ func New() fx.Option { dhtfx.New(), databasefx.New(), gqlfx.New(), + healthfx.New(), httpserverfx.New(), importerfx.New(), metainfofx.New(), + metricsfx.New(), processorfx.New(), queuefx.New(), telemetryfx.New(), diff --git a/internal/boilerplate/boilerplatefx/module.go b/internal/boilerplate/boilerplatefx/module.go index 447e7d4..6604e43 100644 --- a/internal/boilerplate/boilerplatefx/module.go +++ b/internal/boilerplate/boilerplatefx/module.go @@ -3,7 +3,6 @@ package boilerplatefx import ( "github.com/bitmagnet-io/bitmagnet/internal/boilerplate/cli/clifx" "github.com/bitmagnet-io/bitmagnet/internal/boilerplate/config/configfx" - "github.com/bitmagnet-io/bitmagnet/internal/boilerplate/healthcheck/healthcheckfx" "github.com/bitmagnet-io/bitmagnet/internal/boilerplate/logging/loggingfx" "github.com/bitmagnet-io/bitmagnet/internal/boilerplate/validation/validationfx" "go.uber.org/fx" @@ -14,7 +13,6 @@ func New() fx.Option { "boilerplate", clifx.New(), configfx.New(), - healthcheckfx.New(), loggingfx.New(), validationfx.New(), ) diff --git a/internal/boilerplate/healthcheck/healthcheck.go b/internal/boilerplate/healthcheck/healthcheck.go deleted file mode 100644 index 698a7df..0000000 --- a/internal/boilerplate/healthcheck/healthcheck.go +++ /dev/null @@ -1,24 +0,0 @@ -package healthcheck - -import ( - "github.com/hellofresh/health-go/v5" - "go.uber.org/fx" -) - -type Params struct { - fx.In - Options []health.Option `group:"healthcheck_options"` -} - -type Result struct { - fx.Out - Health *health.Health -} - -func New(p Params) (Result, error) { - h, err := health.New(append(p.Options, health.WithSystemInfo())...) - if err != nil { - return Result{}, err - } - return Result{Health: h}, nil -} diff --git a/internal/boilerplate/healthcheck/healthcheckfx/module.go b/internal/boilerplate/healthcheck/healthcheckfx/module.go deleted file mode 100644 index 43bc37e..0000000 --- a/internal/boilerplate/healthcheck/healthcheckfx/module.go +++ /dev/null @@ -1,15 +0,0 @@ -package healthcheckfx - -import ( - "github.com/bitmagnet-io/bitmagnet/internal/boilerplate/healthcheck" - "github.com/bitmagnet-io/bitmagnet/internal/boilerplate/healthcheck/httpserver" - "go.uber.org/fx" -) - -func New() fx.Option { - return fx.Module( - "healthcheck", - fx.Provide(healthcheck.New), - fx.Provide(httpserver.New), - ) -} diff --git a/internal/boilerplate/healthcheck/httpserver/httpserver.go b/internal/boilerplate/healthcheck/httpserver/httpserver.go deleted file mode 100644 index 3590625..0000000 --- a/internal/boilerplate/healthcheck/httpserver/httpserver.go +++ /dev/null @@ -1,41 +0,0 @@ -package httpserver - -import ( - "github.com/bitmagnet-io/bitmagnet/internal/boilerplate/httpserver" - "github.com/gin-gonic/gin" - "github.com/hellofresh/health-go/v5" - "go.uber.org/fx" -) - -type Params struct { - fx.In - Health *health.Health -} - -type Result struct { - fx.Out - Option httpserver.Option `group:"http_server_options"` -} - -func New(p Params) (r Result, err error) { - handler := p.Health.Handler() - r.Option = &builder{ - handler: func(c *gin.Context) { - handler.ServeHTTP(c.Writer, c.Request) - }, - } - return -} - -type builder struct { - handler gin.HandlerFunc -} - -func (builder) Key() string { - return "status" -} - -func (b *builder) Apply(e *gin.Engine) error { - e.GET("/status", b.handler) - return nil -} diff --git a/internal/boilerplate/httpserver/ginzap/ginzap.go b/internal/boilerplate/httpserver/ginzap/ginzap.go index 47f82cb..2e639ed 100644 --- a/internal/boilerplate/httpserver/ginzap/ginzap.go +++ b/internal/boilerplate/httpserver/ginzap/ginzap.go @@ -135,7 +135,7 @@ func CustomRecoveryWithZap(logger ZapLogger, stack bool, recovery gin.RecoveryFu zap.String("request", string(httpRequest)), ) // If the connection is dead, we can't write a status to it. - c.Error(err.(error)) // nolint: errcheck + _ = c.Error(err.(error)) c.Abort() return } diff --git a/internal/boilerplate/lazy/lazy.go b/internal/boilerplate/lazy/lazy.go index baf2f7f..0fc9bd7 100644 --- a/internal/boilerplate/lazy/lazy.go +++ b/internal/boilerplate/lazy/lazy.go @@ -4,6 +4,7 @@ import "sync" type Lazy[T any] interface { Get() (T, error) + Decorate(func(T) (T, error)) // IfInitialized calls the given function if the value has been initialized (useful for shutdown logic) IfInitialized(func(T) error) error } @@ -30,6 +31,20 @@ func (l *lazy[T]) Get() (T, error) { return l.v, l.err } +func (l *lazy[T]) Decorate(fn func(T) (T, error)) { + l.mtx.Lock() + defer l.mtx.Unlock() + baseFn := l.fn + l.fn = func() (T, error) { + v, err := baseFn() + if err != nil { + return v, err + } + v, err = fn(v) + return v, err + } +} + func (l *lazy[T]) IfInitialized(fn func(T) error) error { l.mtx.Lock() defer l.mtx.Unlock() diff --git a/internal/boilerplate/worker/worker.go b/internal/boilerplate/worker/worker.go index 486d3e6..c951ff7 100644 --- a/internal/boilerplate/worker/worker.go +++ b/internal/boilerplate/worker/worker.go @@ -6,6 +6,7 @@ import ( "fmt" "go.uber.org/fx" "go.uber.org/zap" + "sort" "sync" ) @@ -125,8 +126,13 @@ func (r *registry) Workers() []Worker { var workers []Worker r.mutex.RLock() defer r.mutex.RUnlock() - for _, w := range r.workers { - workers = append(workers, w) + keys := make([]string, 0, len(r.workers)) + for k := range r.workers { + keys = append(keys, k) + } + sort.Strings(keys) + for _, k := range keys { + workers = append(workers, r.workers[k]) } return workers } diff --git a/internal/classifier/mocks/LocalSearch.go b/internal/classifier/mocks/LocalSearch.go index 4cfbfaf..5fdaefd 100644 --- a/internal/classifier/mocks/LocalSearch.go +++ b/internal/classifier/mocks/LocalSearch.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.43.0. DO NOT EDIT. +// Code generated by mockery v2.46.2. DO NOT EDIT. package classifier_mocks diff --git a/internal/database/dao/budgeted_count.go b/internal/database/dao/budgeted_count.go index 019a21b..2e784f0 100644 --- a/internal/database/dao/budgeted_count.go +++ b/internal/database/dao/budgeted_count.go @@ -1,24 +1,31 @@ package dao import ( - "gorm.io/gorm" + "database/sql" + "gorm.io/gorm" ) func ToSQL(db *gorm.DB) string { - return db.ToSQL(func(tx *gorm.DB) *gorm.DB { - return tx.Find(&[]interface{}{}) - }) + return db.ToSQL(func(tx *gorm.DB) *gorm.DB { + return tx.Find(&[]interface{}{}) + }) } type BudgetedCountResult struct { - Count int64 - Cost float64 - BudgetExceeded bool + Count int64 + Cost float64 + BudgetExceeded bool } func BudgetedCount(db *gorm.DB, budget float64) (BudgetedCountResult, error) { - row := db.Raw("SELECT count, cost, budget_exceeded from budgeted_count(?, ?)", ToSQL(db), budget).Row() - result := BudgetedCountResult{} - err := row.Scan(&result.Count, &result.Cost, &result.BudgetExceeded) - return result, err + var row *sql.Row + q := ToSQL(db) + if budget > 0 { + row = db.Raw("SELECT count, cost, budget_exceeded from budgeted_count(?, ?)", q, budget).Row() + } else { + row = db.Raw("SELECT count(*) as count, 0 as cost, false as budget_exceeded from (" + q + ")").Row() + } + result := BudgetedCountResult{} + err := row.Scan(&result.Count, &result.Cost, &result.BudgetExceeded) + return result, err } diff --git a/internal/database/dao/torrent_contents.go b/internal/database/dao/torrent_contents.go index ffdc582..03e9cc7 100644 --- a/internal/database/dao/torrent_contents.go +++ b/internal/database/dao/torrent_contents.go @@ -1,15 +1,11 @@ package dao import ( - "fmt" "gorm.io/gorm/callbacks" ) func (t torrentContent) CountEstimate() (int64, error) { db := t.UnderlyingDB() callbacks.BuildQuerySQL(db) - query := db.Statement.SQL.String() - args := db.Statement.Vars - fmt.Printf("query: %s, args: %v", query, args) return 0, nil } diff --git a/internal/database/exclause/except_test.go b/internal/database/exclause/except_test.go index 1010634..00b52b3 100644 --- a/internal/database/exclause/except_test.go +++ b/internal/database/exclause/except_test.go @@ -94,7 +94,7 @@ func TestExcept_Query(t *testing.T) { db = tt.operation(db) } if db.Error != nil { - t.Errorf(db.Error.Error()) + t.Error(db.Error.Error()) } }) } diff --git a/internal/database/exclause/intersect_test.go b/internal/database/exclause/intersect_test.go index 02e69b1..454f815 100644 --- a/internal/database/exclause/intersect_test.go +++ b/internal/database/exclause/intersect_test.go @@ -94,7 +94,7 @@ func TestIntersect_Query(t *testing.T) { db = tt.operation(db) } if db.Error != nil { - t.Errorf(db.Error.Error()) + t.Error(db.Error.Error()) } }) } diff --git a/internal/database/exclause/union_test.go b/internal/database/exclause/union_test.go index c103011..d62549e 100644 --- a/internal/database/exclause/union_test.go +++ b/internal/database/exclause/union_test.go @@ -92,7 +92,7 @@ func TestUnion_Query(t *testing.T) { db = tt.operation(db) } if db.Error != nil { - t.Errorf(db.Error.Error()) + t.Error(db.Error.Error()) } }) } diff --git a/internal/database/exclause/with_test.go b/internal/database/exclause/with_test.go index 1cbe6a5..51b0e88 100644 --- a/internal/database/exclause/with_test.go +++ b/internal/database/exclause/with_test.go @@ -82,7 +82,7 @@ func TestWith_Query(t *testing.T) { db = tt.operation(db) } if db.Error != nil { - t.Errorf(db.Error.Error()) + t.Error(db.Error.Error()) } }) } diff --git a/internal/database/gorm.go b/internal/database/gorm.go index 1666c7f..1064af1 100644 --- a/internal/database/gorm.go +++ b/internal/database/gorm.go @@ -42,6 +42,7 @@ func New(p Params) Result { SlowThreshold: time.Second * 30, }, }).GormLogger, + DisableAutomaticPing: true, }) if dbErr != nil { return nil, dbErr diff --git a/internal/database/healthcheck/healthcheck.go b/internal/database/healthcheck/healthcheck.go index c7bdd77..18663d4 100644 --- a/internal/database/healthcheck/healthcheck.go +++ b/internal/database/healthcheck/healthcheck.go @@ -5,7 +5,7 @@ import ( "database/sql" "fmt" "github.com/bitmagnet-io/bitmagnet/internal/boilerplate/lazy" - "github.com/hellofresh/health-go/v5" + "github.com/bitmagnet-io/bitmagnet/internal/health" "go.uber.org/fx" "time" ) @@ -17,25 +17,28 @@ type Params struct { type Result struct { fx.Out - Config health.Option `group:"healthcheck_options"` + Option health.CheckerOption `group:"health_check_options"` } func New(p Params) Result { return Result{ - Config: health.WithChecks(health.Config{ - Name: "postgres", - Timeout: time.Second * 5, - Check: func(ctx context.Context) error { - db, dbErr := p.DB.Get() - if dbErr != nil { - return fmt.Errorf("failed to get database connection: %w", dbErr) - } - pingErr := db.PingContext(ctx) - if pingErr != nil { - return fmt.Errorf("failed to ping database: %w", pingErr) - } - return nil - }, - }), + Option: health.WithPeriodicCheck( + time.Second*30, + time.Second*1, + health.Check{ + Name: "postgres", + Timeout: time.Second * 5, + Check: func(ctx context.Context) error { + db, dbErr := p.DB.Get() + if dbErr != nil { + return fmt.Errorf("failed to get database connection: %w", dbErr) + } + pingErr := db.PingContext(ctx) + if pingErr != nil { + return fmt.Errorf("failed to ping database: %w", pingErr) + } + return nil + }, + }), } } diff --git a/internal/database/query/params.go b/internal/database/query/params.go index 5a9c511..3abc882 100644 --- a/internal/database/query/params.go +++ b/internal/database/query/params.go @@ -7,6 +7,7 @@ import ( type SearchParams struct { QueryString model.NullString Limit model.NullUint + Page model.NullUint Offset model.NullUint TotalCount model.NullBool HasNextPage model.NullBool @@ -19,11 +20,18 @@ func (s SearchParams) Option() Option { if s.QueryString.Valid { options = append(options, QueryString(s.QueryString.String), OrderByQueryStringRank()) } + offset := uint(0) if s.Limit.Valid { options = append(options, Limit(s.Limit.Uint)) + if s.Page.Valid && s.Page.Uint > 0 { + offset += (s.Page.Uint - 1) * s.Limit.Uint + } } if s.Offset.Valid { - options = append(options, Offset(s.Offset.Uint)) + offset += s.Offset.Uint + } + if offset > 0 { + options = append(options, Offset(offset)) } if s.TotalCount.Valid { options = append(options, WithTotalCount(s.TotalCount.Bool)) diff --git a/internal/database/search/criteria_queue_job_queue.go b/internal/database/search/criteria_queue_job_queue.go new file mode 100644 index 0000000..744c6fb --- /dev/null +++ b/internal/database/search/criteria_queue_job_queue.go @@ -0,0 +1,17 @@ +package search + +import ( + "github.com/bitmagnet-io/bitmagnet/internal/database/query" + "gorm.io/gen/field" +) + +func QueueJobQueueCriteria(queues ...string) query.Criteria { + return query.DaoCriteria{ + Conditions: func(ctx query.DbContext) ([]field.Expr, error) { + q := ctx.Query() + return []field.Expr{ + q.QueueJob.Queue.In(queues...), + }, nil + }, + } +} diff --git a/internal/database/search/criteria_queue_job_status.go b/internal/database/search/criteria_queue_job_status.go new file mode 100644 index 0000000..b6673b7 --- /dev/null +++ b/internal/database/search/criteria_queue_job_status.go @@ -0,0 +1,22 @@ +package search + +import ( + "github.com/bitmagnet-io/bitmagnet/internal/database/query" + "github.com/bitmagnet-io/bitmagnet/internal/model" + "gorm.io/gen/field" +) + +func QueueJobStatusCriteria(statuses ...model.QueueJobStatus) query.Criteria { + strStatuses := make([]string, 0, len(statuses)) + for _, s := range statuses { + strStatuses = append(strStatuses, s.String()) + } + return query.DaoCriteria{ + Conditions: func(ctx query.DbContext) ([]field.Expr, error) { + q := ctx.Query() + return []field.Expr{ + q.QueueJob.Status.In(strStatuses...), + }, nil + }, + } +} diff --git a/internal/database/search/criteria_torrent_content_info_hash.go b/internal/database/search/criteria_torrent_content_info_hash.go index 182540b..655e3f9 100644 --- a/internal/database/search/criteria_torrent_content_info_hash.go +++ b/internal/database/search/criteria_torrent_content_info_hash.go @@ -1,20 +1,11 @@ package search import ( - "database/sql/driver" "github.com/bitmagnet-io/bitmagnet/internal/database/query" + "github.com/bitmagnet-io/bitmagnet/internal/model" "github.com/bitmagnet-io/bitmagnet/internal/protocol" - "gorm.io/gen/field" ) func TorrentContentInfoHashCriteria(infoHashes ...protocol.ID) query.Criteria { - valuers := make([]driver.Valuer, 0, len(infoHashes)) - for _, infoHash := range infoHashes { - valuers = append(valuers, infoHash) - } - return query.DaoCriteria{ - Conditions: func(ctx query.DbContext) ([]field.Expr, error) { - return []field.Expr{ctx.Query().TorrentContent.InfoHash.In(valuers...)}, nil - }, - } + return infoHashCriteria(model.TableNameTorrentContent, infoHashes...) } diff --git a/internal/database/search/criteria_torrent_file_info_hash.go b/internal/database/search/criteria_torrent_file_info_hash.go new file mode 100644 index 0000000..09043be --- /dev/null +++ b/internal/database/search/criteria_torrent_file_info_hash.go @@ -0,0 +1,11 @@ +package search + +import ( + "github.com/bitmagnet-io/bitmagnet/internal/database/query" + "github.com/bitmagnet-io/bitmagnet/internal/model" + "github.com/bitmagnet-io/bitmagnet/internal/protocol" +) + +func TorrentFileInfoHashCriteria(infoHashes ...protocol.ID) query.Criteria { + return infoHashCriteria(model.TableNameTorrentFile, infoHashes...) +} diff --git a/internal/database/search/criteria_torrent_info_hash.go b/internal/database/search/criteria_torrent_info_hash.go index e971ca7..af7ffa5 100644 --- a/internal/database/search/criteria_torrent_info_hash.go +++ b/internal/database/search/criteria_torrent_info_hash.go @@ -1,20 +1,28 @@ package search import ( - "database/sql/driver" + "fmt" "github.com/bitmagnet-io/bitmagnet/internal/database/query" + "github.com/bitmagnet-io/bitmagnet/internal/model" "github.com/bitmagnet-io/bitmagnet/internal/protocol" - "gorm.io/gen/field" + "strings" ) func TorrentInfoHashCriteria(infoHashes ...protocol.ID) query.Criteria { - valuers := make([]driver.Valuer, 0, len(infoHashes)) - for _, infoHash := range infoHashes { - valuers = append(valuers, infoHash) + return infoHashCriteria(model.TableNameTorrent, infoHashes...) +} + +func infoHashCriteria(table string, infoHashes ...protocol.ID) query.Criteria { + if len(infoHashes) == 0 { + return query.DbCriteria{ + Sql: "FALSE", + } } - return query.DaoCriteria{ - Conditions: func(ctx query.DbContext) ([]field.Expr, error) { - return []field.Expr{ctx.Query().Torrent.InfoHash.In(valuers...)}, nil - }, + decodes := make([]string, len(infoHashes)) + for i, infoHash := range infoHashes { + decodes[i] = fmt.Sprintf("DECODE('%s', 'hex')", infoHash.String()) + } + return query.DbCriteria{ + Sql: fmt.Sprintf("%s.info_hash IN (%s)", table, strings.Join(decodes, ", ")), } } diff --git a/internal/database/search/facet_queue_job_queue.go b/internal/database/search/facet_queue_job_queue.go new file mode 100644 index 0000000..991d04f --- /dev/null +++ b/internal/database/search/facet_queue_job_queue.go @@ -0,0 +1,43 @@ +package search + +import ( + "github.com/bitmagnet-io/bitmagnet/internal/database/query" +) + +const QueueJobQueueFacetKey = "queue" + +func QueueJobQueueFacet(options ...query.FacetOption) query.Facet { + return queueJobQueueFacet{ + FacetConfig: query.NewFacetConfig( + append([]query.FacetOption{ + query.FacetHasKey(QueueJobQueueFacetKey), + query.FacetHasLabel("Queue"), + query.FacetUsesOrLogic(), + }, options...)..., + ), + } +} + +type queueJobQueueFacet struct { + query.FacetConfig +} + +var queueNames = []string{"process_torrent", "process_torrent_batch"} + +func (f queueJobQueueFacet) Values(query.FacetContext) (map[string]string, error) { + values := make(map[string]string) + for _, n := range queueNames { + values[n] = n + } + return values, nil +} + +func (f queueJobQueueFacet) Criteria(filter query.FacetFilter) []query.Criteria { + values := filter.Values() + if len(values) == 0 { + return nil + } + return []query.Criteria{ + QueueJobQueueCriteria(filter.Values()...), + } +} diff --git a/internal/database/search/facet_queue_job_status.go b/internal/database/search/facet_queue_job_status.go new file mode 100644 index 0000000..3c6b5e2 --- /dev/null +++ b/internal/database/search/facet_queue_job_status.go @@ -0,0 +1,50 @@ +package search + +import ( + "github.com/bitmagnet-io/bitmagnet/internal/database/query" + "github.com/bitmagnet-io/bitmagnet/internal/model" + "gorm.io/gen/field" +) + +const QueueJobStatusFacetKey = "status" + +func QueueJobStatusFacet(options ...query.FacetOption) query.Facet { + return queueJobStatusFacet{ + FacetConfig: query.NewFacetConfig( + append([]query.FacetOption{ + query.FacetHasKey(QueueJobStatusFacetKey), + query.FacetHasLabel("Status"), + query.FacetUsesOrLogic(), + }, options...)..., + ), + } +} + +type queueJobStatusFacet struct { + query.FacetConfig +} + +func (f queueJobStatusFacet) Values(query.FacetContext) (map[string]string, error) { + values := make(map[string]string) + for _, n := range model.QueueJobStatusNames() { + values[n] = n + } + return values, nil +} + +func (f queueJobStatusFacet) Criteria(filter query.FacetFilter) []query.Criteria { + values := filter.Values() + if len(values) == 0 { + return nil + } + return []query.Criteria{ + query.DaoCriteria{ + Conditions: func(ctx query.DbContext) ([]field.Expr, error) { + q := ctx.Query() + return []field.Expr{ + q.QueueJob.Status.In(values...), + }, nil + }, + }, + } +} diff --git a/internal/database/search/hydrator_torrent_content_torrent.go b/internal/database/search/hydrator_torrent_content_torrent.go index 278a480..97dc197 100644 --- a/internal/database/search/hydrator_torrent_content_torrent.go +++ b/internal/database/search/hydrator_torrent_content_torrent.go @@ -2,25 +2,56 @@ package search import ( "context" + "github.com/bitmagnet-io/bitmagnet/internal/database/dao" "github.com/bitmagnet-io/bitmagnet/internal/database/query" "github.com/bitmagnet-io/bitmagnet/internal/model" "github.com/bitmagnet-io/bitmagnet/internal/protocol" + "gorm.io/gen/field" ) -func HydrateTorrentContentTorrent() query.Option { +type torrentContentTorrentHydratorConfig struct { + files bool +} + +type HydrateTorrentContentTorrentOption func(config *torrentContentTorrentHydratorConfig) + +func HydrateTorrentContentTorrentWithFiles() HydrateTorrentContentTorrentOption { + return func(config *torrentContentTorrentHydratorConfig) { + config.files = true + } +} + +func HydrateTorrentContentTorrent(options ...HydrateTorrentContentTorrentOption) query.Option { + var config torrentContentTorrentHydratorConfig + for _, option := range options { + option(&config) + } return query.HydrateHasOne[TorrentContentResultItem, model.Torrent, protocol.ID]( - torrentContentTorrentHydrator{}, + torrentContentTorrentHydrator{config}, ) } -type torrentContentTorrentHydrator struct{} +type torrentContentTorrentHydrator struct { + torrentContentTorrentHydratorConfig +} func (h torrentContentTorrentHydrator) RootToSubID(root TorrentContentResultItem) (protocol.ID, bool) { return root.InfoHash, true } func (h torrentContentTorrentHydrator) GetSubs(ctx context.Context, dbCtx query.DbContext, ids []protocol.ID) ([]model.Torrent, error) { - result, err := search{dbCtx.Query()}.Torrents(ctx, query.Where(TorrentInfoHashCriteria(ids...)), TorrentDefaultPreload()) + result, err := search{dbCtx.Query()}.Torrents(ctx, query.Where(TorrentInfoHashCriteria(ids...)), query.Preload(func(q *dao.Query) []field.RelationField { + preload := []field.RelationField{ + q.Torrent.Sources.RelationField, + q.Torrent.Sources.TorrentSource.RelationField, + q.Torrent.Hint.RelationField, + q.Torrent.Tags.RelationField, + } + if h.files { + preload = append(preload, q.Torrent.Files.RelationField) + } + return preload + })) if err != nil { return nil, err } diff --git a/internal/database/search/order.go b/internal/database/search/order.go new file mode 100644 index 0000000..6a3eb06 --- /dev/null +++ b/internal/database/search/order.go @@ -0,0 +1,7 @@ +package search + +//go:generate go run github.com/abice/go-enum --marshal --names --nocase --nocomments --sql --sqlnullstr --values -f order.go -f order_torrent_content.go -f order_torrent_files.go -f order_queue_jobs.go + +// OrderDirection represents sort order directions +// ENUM(Ascending, Descending) +type OrderDirection string diff --git a/internal/database/search/order_enum.go b/internal/database/search/order_enum.go new file mode 100644 index 0000000..f69ee03 --- /dev/null +++ b/internal/database/search/order_enum.go @@ -0,0 +1,181 @@ +// Code generated by go-enum DO NOT EDIT. +// Version: +// Revision: +// Build Date: +// Built By: + +package search + +import ( + "database/sql/driver" + "encoding/json" + "errors" + "fmt" + "strings" +) + +const ( + OrderDirectionAscending OrderDirection = "Ascending" + OrderDirectionDescending OrderDirection = "Descending" +) + +var ErrInvalidOrderDirection = fmt.Errorf("not a valid OrderDirection, try [%s]", strings.Join(_OrderDirectionNames, ", ")) + +var _OrderDirectionNames = []string{ + string(OrderDirectionAscending), + string(OrderDirectionDescending), +} + +// OrderDirectionNames returns a list of possible string values of OrderDirection. +func OrderDirectionNames() []string { + tmp := make([]string, len(_OrderDirectionNames)) + copy(tmp, _OrderDirectionNames) + return tmp +} + +// OrderDirectionValues returns a list of the values for OrderDirection +func OrderDirectionValues() []OrderDirection { + return []OrderDirection{ + OrderDirectionAscending, + OrderDirectionDescending, + } +} + +// String implements the Stringer interface. +func (x OrderDirection) String() string { + return string(x) +} + +// IsValid provides a quick way to determine if the typed value is +// part of the allowed enumerated values +func (x OrderDirection) IsValid() bool { + _, err := ParseOrderDirection(string(x)) + return err == nil +} + +var _OrderDirectionValue = map[string]OrderDirection{ + "Ascending": OrderDirectionAscending, + "ascending": OrderDirectionAscending, + "Descending": OrderDirectionDescending, + "descending": OrderDirectionDescending, +} + +// ParseOrderDirection attempts to convert a string to a OrderDirection. +func ParseOrderDirection(name string) (OrderDirection, error) { + if x, ok := _OrderDirectionValue[name]; ok { + return x, nil + } + // Case insensitive parse, do a separate lookup to prevent unnecessary cost of lowercasing a string if we don't need to. + if x, ok := _OrderDirectionValue[strings.ToLower(name)]; ok { + return x, nil + } + return OrderDirection(""), fmt.Errorf("%s is %w", name, ErrInvalidOrderDirection) +} + +// MarshalText implements the text marshaller method. +func (x OrderDirection) MarshalText() ([]byte, error) { + return []byte(string(x)), nil +} + +// UnmarshalText implements the text unmarshaller method. +func (x *OrderDirection) UnmarshalText(text []byte) error { + tmp, err := ParseOrderDirection(string(text)) + if err != nil { + return err + } + *x = tmp + return nil +} + +var errOrderDirectionNilPtr = errors.New("value pointer is nil") // one per type for package clashes + +// Scan implements the Scanner interface. +func (x *OrderDirection) Scan(value interface{}) (err error) { + if value == nil { + *x = OrderDirection("") + return + } + + // A wider range of scannable types. + // driver.Value values at the top of the list for expediency + switch v := value.(type) { + case string: + *x, err = ParseOrderDirection(v) + case []byte: + *x, err = ParseOrderDirection(string(v)) + case OrderDirection: + *x = v + case *OrderDirection: + if v == nil { + return errOrderDirectionNilPtr + } + *x = *v + case *string: + if v == nil { + return errOrderDirectionNilPtr + } + *x, err = ParseOrderDirection(*v) + default: + return errors.New("invalid type for OrderDirection") + } + + return +} + +// Value implements the driver Valuer interface. +func (x OrderDirection) Value() (driver.Value, error) { + return x.String(), nil +} + +type NullOrderDirection struct { + OrderDirection OrderDirection + Valid bool + Set bool +} + +func NewNullOrderDirection(val interface{}) (x NullOrderDirection) { + err := x.Scan(val) // yes, we ignore this error, it will just be an invalid value. + _ = err // make any errcheck linters happy + return +} + +// Scan implements the Scanner interface. +func (x *NullOrderDirection) Scan(value interface{}) (err error) { + if value == nil { + x.OrderDirection, x.Valid = OrderDirection(""), false + return + } + + err = x.OrderDirection.Scan(value) + x.Valid = (err == nil) + return +} + +// Value implements the driver Valuer interface. +func (x NullOrderDirection) Value() (driver.Value, error) { + if !x.Valid { + return nil, nil + } + return x.OrderDirection.String(), nil +} + +// MarshalJSON correctly serializes a NullOrderDirection to JSON. +func (n NullOrderDirection) MarshalJSON() ([]byte, error) { + const nullStr = "null" + if n.Valid { + return json.Marshal(n.OrderDirection) + } + return []byte(nullStr), nil +} + +// UnmarshalJSON correctly deserializes a NullOrderDirection from JSON. +func (n *NullOrderDirection) UnmarshalJSON(b []byte) error { + n.Set = true + var x interface{} + err := json.Unmarshal(b, &x) + if err != nil { + return err + } + err = n.Scan(x) + return err +} diff --git a/internal/database/search/order_queue_jobs.go b/internal/database/search/order_queue_jobs.go new file mode 100644 index 0000000..5151ca0 --- /dev/null +++ b/internal/database/search/order_queue_jobs.go @@ -0,0 +1,65 @@ +package search + +import ( + "github.com/bitmagnet-io/bitmagnet/internal/database/query" + "github.com/bitmagnet-io/bitmagnet/internal/maps" + "github.com/bitmagnet-io/bitmagnet/internal/model" + "gorm.io/gorm/clause" +) + +// QueueJobsOrderBy represents sort orders for queue jobs search results +// ENUM(created_at, ran_at, priority) +type QueueJobsOrderBy string + +func (ob QueueJobsOrderBy) Clauses(direction OrderDirection) []query.OrderByColumn { + desc := direction == OrderDirectionDescending + switch ob { + case QueueJobsOrderByCreatedAt: + return []query.OrderByColumn{{ + OrderByColumn: clause.OrderByColumn{ + Column: clause.Column{ + Table: model.TableNameQueueJob, + Name: "created_at", + }, + Desc: desc, + }, + }} + case QueueJobsOrderByRanAt: + return []query.OrderByColumn{{ + OrderByColumn: clause.OrderByColumn{ + Column: clause.Column{ + Table: model.TableNameQueueJob, + Name: "ran_at", + }, + Desc: desc, + }, + }} + case QueueJobsOrderByPriority: + return []query.OrderByColumn{{ + OrderByColumn: clause.OrderByColumn{ + Column: clause.Column{ + Table: model.TableNameQueueJob, + Name: "priority", + }, + Desc: desc, + }, + }} + default: + return []query.OrderByColumn{} + } +} + +type QueueJobsFullOrderBy maps.InsertMap[QueueJobsOrderBy, OrderDirection] + +func (fob QueueJobsFullOrderBy) Clauses() []query.OrderByColumn { + im := maps.InsertMap[QueueJobsOrderBy, OrderDirection](fob) + clauses := make([]query.OrderByColumn, 0, im.Len()) + for _, ob := range im.Entries() { + clauses = append(clauses, ob.Key.Clauses(ob.Value)...) + } + return clauses +} + +func (fob QueueJobsFullOrderBy) Option() query.Option { + return query.OrderBy(fob.Clauses()...) +} diff --git a/internal/database/search/order_queue_jobs_enum.go b/internal/database/search/order_queue_jobs_enum.go new file mode 100644 index 0000000..3df9244 --- /dev/null +++ b/internal/database/search/order_queue_jobs_enum.go @@ -0,0 +1,183 @@ +// Code generated by go-enum DO NOT EDIT. +// Version: +// Revision: +// Build Date: +// Built By: + +package search + +import ( + "database/sql/driver" + "encoding/json" + "errors" + "fmt" + "strings" +) + +const ( + QueueJobsOrderByCreatedAt QueueJobsOrderBy = "created_at" + QueueJobsOrderByRanAt QueueJobsOrderBy = "ran_at" + QueueJobsOrderByPriority QueueJobsOrderBy = "priority" +) + +var ErrInvalidQueueJobsOrderBy = fmt.Errorf("not a valid QueueJobsOrderBy, try [%s]", strings.Join(_QueueJobsOrderByNames, ", ")) + +var _QueueJobsOrderByNames = []string{ + string(QueueJobsOrderByCreatedAt), + string(QueueJobsOrderByRanAt), + string(QueueJobsOrderByPriority), +} + +// QueueJobsOrderByNames returns a list of possible string values of QueueJobsOrderBy. +func QueueJobsOrderByNames() []string { + tmp := make([]string, len(_QueueJobsOrderByNames)) + copy(tmp, _QueueJobsOrderByNames) + return tmp +} + +// QueueJobsOrderByValues returns a list of the values for QueueJobsOrderBy +func QueueJobsOrderByValues() []QueueJobsOrderBy { + return []QueueJobsOrderBy{ + QueueJobsOrderByCreatedAt, + QueueJobsOrderByRanAt, + QueueJobsOrderByPriority, + } +} + +// String implements the Stringer interface. +func (x QueueJobsOrderBy) String() string { + return string(x) +} + +// IsValid provides a quick way to determine if the typed value is +// part of the allowed enumerated values +func (x QueueJobsOrderBy) IsValid() bool { + _, err := ParseQueueJobsOrderBy(string(x)) + return err == nil +} + +var _QueueJobsOrderByValue = map[string]QueueJobsOrderBy{ + "created_at": QueueJobsOrderByCreatedAt, + "ran_at": QueueJobsOrderByRanAt, + "priority": QueueJobsOrderByPriority, +} + +// ParseQueueJobsOrderBy attempts to convert a string to a QueueJobsOrderBy. +func ParseQueueJobsOrderBy(name string) (QueueJobsOrderBy, error) { + if x, ok := _QueueJobsOrderByValue[name]; ok { + return x, nil + } + // Case insensitive parse, do a separate lookup to prevent unnecessary cost of lowercasing a string if we don't need to. + if x, ok := _QueueJobsOrderByValue[strings.ToLower(name)]; ok { + return x, nil + } + return QueueJobsOrderBy(""), fmt.Errorf("%s is %w", name, ErrInvalidQueueJobsOrderBy) +} + +// MarshalText implements the text marshaller method. +func (x QueueJobsOrderBy) MarshalText() ([]byte, error) { + return []byte(string(x)), nil +} + +// UnmarshalText implements the text unmarshaller method. +func (x *QueueJobsOrderBy) UnmarshalText(text []byte) error { + tmp, err := ParseQueueJobsOrderBy(string(text)) + if err != nil { + return err + } + *x = tmp + return nil +} + +var errQueueJobsOrderByNilPtr = errors.New("value pointer is nil") // one per type for package clashes + +// Scan implements the Scanner interface. +func (x *QueueJobsOrderBy) Scan(value interface{}) (err error) { + if value == nil { + *x = QueueJobsOrderBy("") + return + } + + // A wider range of scannable types. + // driver.Value values at the top of the list for expediency + switch v := value.(type) { + case string: + *x, err = ParseQueueJobsOrderBy(v) + case []byte: + *x, err = ParseQueueJobsOrderBy(string(v)) + case QueueJobsOrderBy: + *x = v + case *QueueJobsOrderBy: + if v == nil { + return errQueueJobsOrderByNilPtr + } + *x = *v + case *string: + if v == nil { + return errQueueJobsOrderByNilPtr + } + *x, err = ParseQueueJobsOrderBy(*v) + default: + return errors.New("invalid type for QueueJobsOrderBy") + } + + return +} + +// Value implements the driver Valuer interface. +func (x QueueJobsOrderBy) Value() (driver.Value, error) { + return x.String(), nil +} + +type NullQueueJobsOrderBy struct { + QueueJobsOrderBy QueueJobsOrderBy + Valid bool + Set bool +} + +func NewNullQueueJobsOrderBy(val interface{}) (x NullQueueJobsOrderBy) { + err := x.Scan(val) // yes, we ignore this error, it will just be an invalid value. + _ = err // make any errcheck linters happy + return +} + +// Scan implements the Scanner interface. +func (x *NullQueueJobsOrderBy) Scan(value interface{}) (err error) { + if value == nil { + x.QueueJobsOrderBy, x.Valid = QueueJobsOrderBy(""), false + return + } + + err = x.QueueJobsOrderBy.Scan(value) + x.Valid = (err == nil) + return +} + +// Value implements the driver Valuer interface. +func (x NullQueueJobsOrderBy) Value() (driver.Value, error) { + if !x.Valid { + return nil, nil + } + return x.QueueJobsOrderBy.String(), nil +} + +// MarshalJSON correctly serializes a NullQueueJobsOrderBy to JSON. +func (n NullQueueJobsOrderBy) MarshalJSON() ([]byte, error) { + const nullStr = "null" + if n.Valid { + return json.Marshal(n.QueueJobsOrderBy) + } + return []byte(nullStr), nil +} + +// UnmarshalJSON correctly deserializes a NullQueueJobsOrderBy from JSON. +func (n *NullQueueJobsOrderBy) UnmarshalJSON(b []byte) error { + n.Set = true + var x interface{} + err := json.Unmarshal(b, &x) + if err != nil { + return err + } + err = n.Scan(x) + return err +} diff --git a/internal/database/search/order_torrent_content.go b/internal/database/search/order_torrent_content.go index 23885c9..f396705 100644 --- a/internal/database/search/order_torrent_content.go +++ b/internal/database/search/order_torrent_content.go @@ -7,16 +7,10 @@ import ( "gorm.io/gorm/clause" ) -//go:generate go run github.com/abice/go-enum --marshal --names --nocase --nocomments --sql --sqlnullstr --values -f order_torrent_content.go - // TorrentContentOrderBy represents sort orders for torrent content search results -// ENUM(Relevance, PublishedAt, UpdatedAt, Size, Files, Seeders, Leechers, Name, InfoHash) +// ENUM(relevance, published_at, updated_at, size, files_count, seeders, leechers, name, info_hash) type TorrentContentOrderBy string -// OrderDirection represents sort order directions -// ENUM(Ascending, Descending) -type OrderDirection string - func (ob TorrentContentOrderBy) Clauses(direction OrderDirection) []query.OrderByColumn { desc := direction == OrderDirectionDescending switch ob { @@ -37,7 +31,16 @@ func (ob TorrentContentOrderBy) Clauses(direction OrderDirection) []query.OrderB Name: "published_at", }, Desc: desc, - }}} + }, + }, { + OrderByColumn: clause.OrderByColumn{ + Column: clause.Column{ + Table: model.TableNameTorrentContent, + Name: "info_hash", + }, + Desc: desc, + }, + }} case TorrentContentOrderByUpdatedAt: return []query.OrderByColumn{{ OrderByColumn: clause.OrderByColumn{ @@ -46,7 +49,15 @@ func (ob TorrentContentOrderBy) Clauses(direction OrderDirection) []query.OrderB Name: "updated_at", }, Desc: desc, - }}} + }}, { + OrderByColumn: clause.OrderByColumn{ + Column: clause.Column{ + Table: model.TableNameTorrentContent, + Name: "info_hash", + }, + Desc: desc, + }, + }} case TorrentContentOrderBySize: return []query.OrderByColumn{{ OrderByColumn: clause.OrderByColumn{ @@ -55,8 +66,16 @@ func (ob TorrentContentOrderBy) Clauses(direction OrderDirection) []query.OrderB Name: "size", }, Desc: desc, - }}} - case TorrentContentOrderByFiles: + }}, { + OrderByColumn: clause.OrderByColumn{ + Column: clause.Column{ + Table: model.TableNameTorrentContent, + Name: "info_hash", + }, + Desc: desc, + }, + }} + case TorrentContentOrderByFilesCount: return []query.OrderByColumn{{ OrderByColumn: clause.OrderByColumn{ Column: clause.Column{ @@ -64,7 +83,15 @@ func (ob TorrentContentOrderBy) Clauses(direction OrderDirection) []query.OrderB Raw: true, }, Desc: desc, - }}} + }}, { + OrderByColumn: clause.OrderByColumn{ + Column: clause.Column{ + Table: model.TableNameTorrentContent, + Name: "info_hash", + }, + Desc: desc, + }, + }} case TorrentContentOrderBySeeders: return []query.OrderByColumn{{ OrderByColumn: clause.OrderByColumn{ @@ -74,6 +101,14 @@ func (ob TorrentContentOrderBy) Clauses(direction OrderDirection) []query.OrderB }, Desc: desc, }, + }, { + OrderByColumn: clause.OrderByColumn{ + Column: clause.Column{ + Table: model.TableNameTorrentContent, + Name: "info_hash", + }, + Desc: desc, + }, }} case TorrentContentOrderByLeechers: return []query.OrderByColumn{{ @@ -84,6 +119,14 @@ func (ob TorrentContentOrderBy) Clauses(direction OrderDirection) []query.OrderB }, Desc: desc, }, + }, { + OrderByColumn: clause.OrderByColumn{ + Column: clause.Column{ + Table: model.TableNameTorrentContent, + Name: "info_hash", + }, + Desc: desc, + }, }} case TorrentContentOrderByName: return []query.OrderByColumn{{ @@ -103,7 +146,8 @@ func (ob TorrentContentOrderBy) Clauses(direction OrderDirection) []query.OrderB Name: "info_hash", }, Desc: desc, - }}} + }, + }} default: return []query.OrderByColumn{} } diff --git a/internal/database/search/order_torrent_content_enum.go b/internal/database/search/order_torrent_content_enum.go index 5f903de..3a79652 100644 --- a/internal/database/search/order_torrent_content_enum.go +++ b/internal/database/search/order_torrent_content_enum.go @@ -15,181 +15,15 @@ import ( ) const ( - OrderDirectionAscending OrderDirection = "Ascending" - OrderDirectionDescending OrderDirection = "Descending" -) - -var ErrInvalidOrderDirection = fmt.Errorf("not a valid OrderDirection, try [%s]", strings.Join(_OrderDirectionNames, ", ")) - -var _OrderDirectionNames = []string{ - string(OrderDirectionAscending), - string(OrderDirectionDescending), -} - -// OrderDirectionNames returns a list of possible string values of OrderDirection. -func OrderDirectionNames() []string { - tmp := make([]string, len(_OrderDirectionNames)) - copy(tmp, _OrderDirectionNames) - return tmp -} - -// OrderDirectionValues returns a list of the values for OrderDirection -func OrderDirectionValues() []OrderDirection { - return []OrderDirection{ - OrderDirectionAscending, - OrderDirectionDescending, - } -} - -// String implements the Stringer interface. -func (x OrderDirection) String() string { - return string(x) -} - -// IsValid provides a quick way to determine if the typed value is -// part of the allowed enumerated values -func (x OrderDirection) IsValid() bool { - _, err := ParseOrderDirection(string(x)) - return err == nil -} - -var _OrderDirectionValue = map[string]OrderDirection{ - "Ascending": OrderDirectionAscending, - "ascending": OrderDirectionAscending, - "Descending": OrderDirectionDescending, - "descending": OrderDirectionDescending, -} - -// ParseOrderDirection attempts to convert a string to a OrderDirection. -func ParseOrderDirection(name string) (OrderDirection, error) { - if x, ok := _OrderDirectionValue[name]; ok { - return x, nil - } - // Case insensitive parse, do a separate lookup to prevent unnecessary cost of lowercasing a string if we don't need to. - if x, ok := _OrderDirectionValue[strings.ToLower(name)]; ok { - return x, nil - } - return OrderDirection(""), fmt.Errorf("%s is %w", name, ErrInvalidOrderDirection) -} - -// MarshalText implements the text marshaller method. -func (x OrderDirection) MarshalText() ([]byte, error) { - return []byte(string(x)), nil -} - -// UnmarshalText implements the text unmarshaller method. -func (x *OrderDirection) UnmarshalText(text []byte) error { - tmp, err := ParseOrderDirection(string(text)) - if err != nil { - return err - } - *x = tmp - return nil -} - -var errOrderDirectionNilPtr = errors.New("value pointer is nil") // one per type for package clashes - -// Scan implements the Scanner interface. -func (x *OrderDirection) Scan(value interface{}) (err error) { - if value == nil { - *x = OrderDirection("") - return - } - - // A wider range of scannable types. - // driver.Value values at the top of the list for expediency - switch v := value.(type) { - case string: - *x, err = ParseOrderDirection(v) - case []byte: - *x, err = ParseOrderDirection(string(v)) - case OrderDirection: - *x = v - case *OrderDirection: - if v == nil { - return errOrderDirectionNilPtr - } - *x = *v - case *string: - if v == nil { - return errOrderDirectionNilPtr - } - *x, err = ParseOrderDirection(*v) - default: - return errors.New("invalid type for OrderDirection") - } - - return -} - -// Value implements the driver Valuer interface. -func (x OrderDirection) Value() (driver.Value, error) { - return x.String(), nil -} - -type NullOrderDirection struct { - OrderDirection OrderDirection - Valid bool - Set bool -} - -func NewNullOrderDirection(val interface{}) (x NullOrderDirection) { - err := x.Scan(val) // yes, we ignore this error, it will just be an invalid value. - _ = err // make any errcheck linters happy - return -} - -// Scan implements the Scanner interface. -func (x *NullOrderDirection) Scan(value interface{}) (err error) { - if value == nil { - x.OrderDirection, x.Valid = OrderDirection(""), false - return - } - - err = x.OrderDirection.Scan(value) - x.Valid = (err == nil) - return -} - -// Value implements the driver Valuer interface. -func (x NullOrderDirection) Value() (driver.Value, error) { - if !x.Valid { - return nil, nil - } - return x.OrderDirection.String(), nil -} - -// MarshalJSON correctly serializes a NullOrderDirection to JSON. -func (n NullOrderDirection) MarshalJSON() ([]byte, error) { - const nullStr = "null" - if n.Valid { - return json.Marshal(n.OrderDirection) - } - return []byte(nullStr), nil -} - -// UnmarshalJSON correctly deserializes a NullOrderDirection from JSON. -func (n *NullOrderDirection) UnmarshalJSON(b []byte) error { - n.Set = true - var x interface{} - err := json.Unmarshal(b, &x) - if err != nil { - return err - } - err = n.Scan(x) - return err -} - -const ( - TorrentContentOrderByRelevance TorrentContentOrderBy = "Relevance" - TorrentContentOrderByPublishedAt TorrentContentOrderBy = "PublishedAt" - TorrentContentOrderByUpdatedAt TorrentContentOrderBy = "UpdatedAt" - TorrentContentOrderBySize TorrentContentOrderBy = "Size" - TorrentContentOrderByFiles TorrentContentOrderBy = "Files" - TorrentContentOrderBySeeders TorrentContentOrderBy = "Seeders" - TorrentContentOrderByLeechers TorrentContentOrderBy = "Leechers" - TorrentContentOrderByName TorrentContentOrderBy = "Name" - TorrentContentOrderByInfoHash TorrentContentOrderBy = "InfoHash" + TorrentContentOrderByRelevance TorrentContentOrderBy = "relevance" + TorrentContentOrderByPublishedAt TorrentContentOrderBy = "published_at" + TorrentContentOrderByUpdatedAt TorrentContentOrderBy = "updated_at" + TorrentContentOrderBySize TorrentContentOrderBy = "size" + TorrentContentOrderByFilesCount TorrentContentOrderBy = "files_count" + TorrentContentOrderBySeeders TorrentContentOrderBy = "seeders" + TorrentContentOrderByLeechers TorrentContentOrderBy = "leechers" + TorrentContentOrderByName TorrentContentOrderBy = "name" + TorrentContentOrderByInfoHash TorrentContentOrderBy = "info_hash" ) var ErrInvalidTorrentContentOrderBy = fmt.Errorf("not a valid TorrentContentOrderBy, try [%s]", strings.Join(_TorrentContentOrderByNames, ", ")) @@ -199,7 +33,7 @@ var _TorrentContentOrderByNames = []string{ string(TorrentContentOrderByPublishedAt), string(TorrentContentOrderByUpdatedAt), string(TorrentContentOrderBySize), - string(TorrentContentOrderByFiles), + string(TorrentContentOrderByFilesCount), string(TorrentContentOrderBySeeders), string(TorrentContentOrderByLeechers), string(TorrentContentOrderByName), @@ -220,7 +54,7 @@ func TorrentContentOrderByValues() []TorrentContentOrderBy { TorrentContentOrderByPublishedAt, TorrentContentOrderByUpdatedAt, TorrentContentOrderBySize, - TorrentContentOrderByFiles, + TorrentContentOrderByFilesCount, TorrentContentOrderBySeeders, TorrentContentOrderByLeechers, TorrentContentOrderByName, @@ -241,24 +75,15 @@ func (x TorrentContentOrderBy) IsValid() bool { } var _TorrentContentOrderByValue = map[string]TorrentContentOrderBy{ - "Relevance": TorrentContentOrderByRelevance, - "relevance": TorrentContentOrderByRelevance, - "PublishedAt": TorrentContentOrderByPublishedAt, - "publishedat": TorrentContentOrderByPublishedAt, - "UpdatedAt": TorrentContentOrderByUpdatedAt, - "updatedat": TorrentContentOrderByUpdatedAt, - "Size": TorrentContentOrderBySize, - "size": TorrentContentOrderBySize, - "Files": TorrentContentOrderByFiles, - "files": TorrentContentOrderByFiles, - "Seeders": TorrentContentOrderBySeeders, - "seeders": TorrentContentOrderBySeeders, - "Leechers": TorrentContentOrderByLeechers, - "leechers": TorrentContentOrderByLeechers, - "Name": TorrentContentOrderByName, - "name": TorrentContentOrderByName, - "InfoHash": TorrentContentOrderByInfoHash, - "infohash": TorrentContentOrderByInfoHash, + "relevance": TorrentContentOrderByRelevance, + "published_at": TorrentContentOrderByPublishedAt, + "updated_at": TorrentContentOrderByUpdatedAt, + "size": TorrentContentOrderBySize, + "files_count": TorrentContentOrderByFilesCount, + "seeders": TorrentContentOrderBySeeders, + "leechers": TorrentContentOrderByLeechers, + "name": TorrentContentOrderByName, + "info_hash": TorrentContentOrderByInfoHash, } // ParseTorrentContentOrderBy attempts to convert a string to a TorrentContentOrderBy. diff --git a/internal/database/search/order_torrent_files.go b/internal/database/search/order_torrent_files.go new file mode 100644 index 0000000..de14eb8 --- /dev/null +++ b/internal/database/search/order_torrent_files.go @@ -0,0 +1,75 @@ +package search + +import ( + "github.com/bitmagnet-io/bitmagnet/internal/database/query" + "github.com/bitmagnet-io/bitmagnet/internal/maps" + "github.com/bitmagnet-io/bitmagnet/internal/model" + "gorm.io/gorm/clause" +) + +// TorrentFilesOrderBy represents sort orders for torrent content search results +// ENUM(index, path, extension, size) +type TorrentFilesOrderBy string + +func (ob TorrentFilesOrderBy) Clauses(direction OrderDirection) []query.OrderByColumn { + desc := direction == OrderDirectionDescending + switch ob { + case TorrentFilesOrderByIndex: + return []query.OrderByColumn{{ + OrderByColumn: clause.OrderByColumn{ + Column: clause.Column{ + Table: model.TableNameTorrentFile, + Name: "index", + }, + Desc: desc, + }, + }} + case TorrentFilesOrderByPath: + return []query.OrderByColumn{{ + OrderByColumn: clause.OrderByColumn{ + Column: clause.Column{ + Table: model.TableNameTorrentFile, + Name: "path", + }, + Desc: desc, + }, + }} + case TorrentFilesOrderByExtension: + return []query.OrderByColumn{{ + OrderByColumn: clause.OrderByColumn{ + Column: clause.Column{ + Table: model.TableNameTorrentFile, + Name: "extension", + }, + Desc: desc, + }, + }} + case TorrentFilesOrderBySize: + return []query.OrderByColumn{{ + OrderByColumn: clause.OrderByColumn{ + Column: clause.Column{ + Table: model.TableNameTorrentFile, + Name: "size", + }, + Desc: desc, + }, + }} + default: + return []query.OrderByColumn{} + } +} + +type TorrentFilesFullOrderBy maps.InsertMap[TorrentFilesOrderBy, OrderDirection] + +func (fob TorrentFilesFullOrderBy) Clauses() []query.OrderByColumn { + im := maps.InsertMap[TorrentFilesOrderBy, OrderDirection](fob) + clauses := make([]query.OrderByColumn, 0, im.Len()) + for _, ob := range im.Entries() { + clauses = append(clauses, ob.Key.Clauses(ob.Value)...) + } + return clauses +} + +func (fob TorrentFilesFullOrderBy) Option() query.Option { + return query.OrderBy(fob.Clauses()...) +} diff --git a/internal/database/search/order_torrent_files_enum.go b/internal/database/search/order_torrent_files_enum.go new file mode 100644 index 0000000..09680a1 --- /dev/null +++ b/internal/database/search/order_torrent_files_enum.go @@ -0,0 +1,187 @@ +// Code generated by go-enum DO NOT EDIT. +// Version: +// Revision: +// Build Date: +// Built By: + +package search + +import ( + "database/sql/driver" + "encoding/json" + "errors" + "fmt" + "strings" +) + +const ( + TorrentFilesOrderByIndex TorrentFilesOrderBy = "index" + TorrentFilesOrderByPath TorrentFilesOrderBy = "path" + TorrentFilesOrderByExtension TorrentFilesOrderBy = "extension" + TorrentFilesOrderBySize TorrentFilesOrderBy = "size" +) + +var ErrInvalidTorrentFilesOrderBy = fmt.Errorf("not a valid TorrentFilesOrderBy, try [%s]", strings.Join(_TorrentFilesOrderByNames, ", ")) + +var _TorrentFilesOrderByNames = []string{ + string(TorrentFilesOrderByIndex), + string(TorrentFilesOrderByPath), + string(TorrentFilesOrderByExtension), + string(TorrentFilesOrderBySize), +} + +// TorrentFilesOrderByNames returns a list of possible string values of TorrentFilesOrderBy. +func TorrentFilesOrderByNames() []string { + tmp := make([]string, len(_TorrentFilesOrderByNames)) + copy(tmp, _TorrentFilesOrderByNames) + return tmp +} + +// TorrentFilesOrderByValues returns a list of the values for TorrentFilesOrderBy +func TorrentFilesOrderByValues() []TorrentFilesOrderBy { + return []TorrentFilesOrderBy{ + TorrentFilesOrderByIndex, + TorrentFilesOrderByPath, + TorrentFilesOrderByExtension, + TorrentFilesOrderBySize, + } +} + +// String implements the Stringer interface. +func (x TorrentFilesOrderBy) String() string { + return string(x) +} + +// IsValid provides a quick way to determine if the typed value is +// part of the allowed enumerated values +func (x TorrentFilesOrderBy) IsValid() bool { + _, err := ParseTorrentFilesOrderBy(string(x)) + return err == nil +} + +var _TorrentFilesOrderByValue = map[string]TorrentFilesOrderBy{ + "index": TorrentFilesOrderByIndex, + "path": TorrentFilesOrderByPath, + "extension": TorrentFilesOrderByExtension, + "size": TorrentFilesOrderBySize, +} + +// ParseTorrentFilesOrderBy attempts to convert a string to a TorrentFilesOrderBy. +func ParseTorrentFilesOrderBy(name string) (TorrentFilesOrderBy, error) { + if x, ok := _TorrentFilesOrderByValue[name]; ok { + return x, nil + } + // Case insensitive parse, do a separate lookup to prevent unnecessary cost of lowercasing a string if we don't need to. + if x, ok := _TorrentFilesOrderByValue[strings.ToLower(name)]; ok { + return x, nil + } + return TorrentFilesOrderBy(""), fmt.Errorf("%s is %w", name, ErrInvalidTorrentFilesOrderBy) +} + +// MarshalText implements the text marshaller method. +func (x TorrentFilesOrderBy) MarshalText() ([]byte, error) { + return []byte(string(x)), nil +} + +// UnmarshalText implements the text unmarshaller method. +func (x *TorrentFilesOrderBy) UnmarshalText(text []byte) error { + tmp, err := ParseTorrentFilesOrderBy(string(text)) + if err != nil { + return err + } + *x = tmp + return nil +} + +var errTorrentFilesOrderByNilPtr = errors.New("value pointer is nil") // one per type for package clashes + +// Scan implements the Scanner interface. +func (x *TorrentFilesOrderBy) Scan(value interface{}) (err error) { + if value == nil { + *x = TorrentFilesOrderBy("") + return + } + + // A wider range of scannable types. + // driver.Value values at the top of the list for expediency + switch v := value.(type) { + case string: + *x, err = ParseTorrentFilesOrderBy(v) + case []byte: + *x, err = ParseTorrentFilesOrderBy(string(v)) + case TorrentFilesOrderBy: + *x = v + case *TorrentFilesOrderBy: + if v == nil { + return errTorrentFilesOrderByNilPtr + } + *x = *v + case *string: + if v == nil { + return errTorrentFilesOrderByNilPtr + } + *x, err = ParseTorrentFilesOrderBy(*v) + default: + return errors.New("invalid type for TorrentFilesOrderBy") + } + + return +} + +// Value implements the driver Valuer interface. +func (x TorrentFilesOrderBy) Value() (driver.Value, error) { + return x.String(), nil +} + +type NullTorrentFilesOrderBy struct { + TorrentFilesOrderBy TorrentFilesOrderBy + Valid bool + Set bool +} + +func NewNullTorrentFilesOrderBy(val interface{}) (x NullTorrentFilesOrderBy) { + err := x.Scan(val) // yes, we ignore this error, it will just be an invalid value. + _ = err // make any errcheck linters happy + return +} + +// Scan implements the Scanner interface. +func (x *NullTorrentFilesOrderBy) Scan(value interface{}) (err error) { + if value == nil { + x.TorrentFilesOrderBy, x.Valid = TorrentFilesOrderBy(""), false + return + } + + err = x.TorrentFilesOrderBy.Scan(value) + x.Valid = (err == nil) + return +} + +// Value implements the driver Valuer interface. +func (x NullTorrentFilesOrderBy) Value() (driver.Value, error) { + if !x.Valid { + return nil, nil + } + return x.TorrentFilesOrderBy.String(), nil +} + +// MarshalJSON correctly serializes a NullTorrentFilesOrderBy to JSON. +func (n NullTorrentFilesOrderBy) MarshalJSON() ([]byte, error) { + const nullStr = "null" + if n.Valid { + return json.Marshal(n.TorrentFilesOrderBy) + } + return []byte(nullStr), nil +} + +// UnmarshalJSON correctly deserializes a NullTorrentFilesOrderBy from JSON. +func (n *NullTorrentFilesOrderBy) UnmarshalJSON(b []byte) error { + n.Set = true + var x interface{} + err := json.Unmarshal(b, &x) + if err != nil { + return err + } + err = n.Scan(x) + return err +} diff --git a/internal/database/search/search.go b/internal/database/search/search.go index 5cef835..4078c6e 100644 --- a/internal/database/search/search.go +++ b/internal/database/search/search.go @@ -8,8 +8,10 @@ import ( type Search interface { ContentSearch + QueueJobSearch TorrentSearch TorrentContentSearch + TorrentFilesSearch } type search struct { diff --git a/internal/database/search/search_queue_jobs.go b/internal/database/search/search_queue_jobs.go new file mode 100644 index 0000000..b1916e1 --- /dev/null +++ b/internal/database/search/search_queue_jobs.go @@ -0,0 +1,28 @@ +package search + +import ( + "context" + "github.com/bitmagnet-io/bitmagnet/internal/database/dao" + "github.com/bitmagnet-io/bitmagnet/internal/database/query" + "github.com/bitmagnet-io/bitmagnet/internal/model" +) + +type QueueJobResult = query.GenericResult[model.QueueJob] + +type QueueJobSearch interface { + QueueJobs(ctx context.Context, options ...query.Option) (result QueueJobResult, err error) +} + +func (s search) QueueJobs(ctx context.Context, options ...query.Option) (result QueueJobResult, err error) { + return query.GenericQuery[model.QueueJob]( + ctx, + s.q, + query.Options(append([]query.Option{query.SelectAll()}, options...)...), + model.TableNameQueueJob, + func(ctx context.Context, q *dao.Query) query.SubQuery { + return query.GenericSubQuery[dao.IQueueJobDo]{ + SubQuery: q.QueueJob.WithContext(ctx).ReadDB(), + } + }, + ) +} diff --git a/internal/database/search/search_torrent_content.go b/internal/database/search/search_torrent_content.go index 439b3c3..d296099 100644 --- a/internal/database/search/search_torrent_content.go +++ b/internal/database/search/search_torrent_content.go @@ -49,23 +49,6 @@ func TorrentContentDefaultOption() query.Option { Desc: true, }, }, - query.OrderByColumn{ - OrderByColumn: clause.OrderByColumn{ - Column: clause.Column{ - Table: clause.CurrentTable, - Name: "updated_at", - }, - Desc: true, - }, - }, - query.OrderByColumn{ - OrderByColumn: clause.OrderByColumn{ - Column: clause.Column{ - Table: clause.CurrentTable, - Name: "info_hash", - }, - }, - }, ), ) } diff --git a/internal/database/search/search_torrent_files.go b/internal/database/search/search_torrent_files.go new file mode 100644 index 0000000..bedcaa3 --- /dev/null +++ b/internal/database/search/search_torrent_files.go @@ -0,0 +1,28 @@ +package search + +import ( + "context" + "github.com/bitmagnet-io/bitmagnet/internal/database/dao" + "github.com/bitmagnet-io/bitmagnet/internal/database/query" + "github.com/bitmagnet-io/bitmagnet/internal/model" +) + +type TorrentFilesResult = query.GenericResult[model.TorrentFile] + +type TorrentFilesSearch interface { + TorrentFiles(ctx context.Context, options ...query.Option) (TorrentFilesResult, error) +} + +func (s search) TorrentFiles(ctx context.Context, options ...query.Option) (TorrentFilesResult, error) { + return query.GenericQuery[model.TorrentFile]( + ctx, + s.q, + query.Options(append([]query.Option{query.SelectAll()}, options...)...), + model.TableNameTorrentFile, + func(ctx context.Context, q *dao.Query) query.SubQuery { + return query.GenericSubQuery[dao.ITorrentFileDo]{ + SubQuery: q.TorrentFile.WithContext(ctx).ReadDB(), + } + }, + ) +} diff --git a/internal/database/search/search_torrents.go b/internal/database/search/search_torrents.go index 6d7beb6..11a0464 100644 --- a/internal/database/search/search_torrents.go +++ b/internal/database/search/search_torrents.go @@ -32,18 +32,6 @@ func (s search) Torrents(ctx context.Context, options ...query.Option) (Torrents ) } -func TorrentDefaultPreload() query.Option { - return query.Preload(func(q *dao.Query) []field.RelationField { - return []field.RelationField{ - q.Torrent.Sources.RelationField, - q.Torrent.Sources.TorrentSource.RelationField, - q.Torrent.Files.RelationField, - q.Torrent.Hint.RelationField, - q.Torrent.Tags.RelationField, - } - }) -} - type TorrentsWithMissingInfoHashesResult struct { Torrents []model.Torrent MissingInfoHashes []protocol.ID diff --git a/internal/dhtcrawler/dhtcrawler_health_check/check.go b/internal/dhtcrawler/dhtcrawler_health_check/check.go new file mode 100644 index 0000000..34ab17b --- /dev/null +++ b/internal/dhtcrawler/dhtcrawler_health_check/check.go @@ -0,0 +1,40 @@ +package dhtcrawler_health_check + +import ( + "context" + "errors" + "github.com/bitmagnet-io/bitmagnet/internal/concurrency" + "github.com/bitmagnet-io/bitmagnet/internal/health" + "github.com/bitmagnet-io/bitmagnet/internal/protocol/dht/server" + "time" +) + +func NewCheck( + dhtCrawlerActive *concurrency.AtomicValue[bool], + lastResponses *concurrency.AtomicValue[server.LastResponses], +) health.Check { + return health.Check{ + Name: "dht", + IsActive: func() bool { + return dhtCrawlerActive.Get() + }, + Timeout: time.Second, + Check: func(ctx context.Context) error { + lr := lastResponses.Get() + if lr.StartTime.IsZero() { + return nil + } + now := time.Now() + if lr.LastSuccess.IsZero() { + if now.Sub(lr.StartTime) < 30*time.Second { + return nil + } + return errors.New("no response within 30 seconds") + } + if now.Sub(lr.LastSuccess) > time.Minute { + return errors.New("no successful responses within last minute") + } + return nil + }, + } +} diff --git a/internal/dhtcrawler/dhtcrawler_health_check/factory.go b/internal/dhtcrawler/dhtcrawler_health_check/factory.go new file mode 100644 index 0000000..d7f3d7b --- /dev/null +++ b/internal/dhtcrawler/dhtcrawler_health_check/factory.go @@ -0,0 +1,30 @@ +package dhtcrawler_health_check + +import ( + "github.com/bitmagnet-io/bitmagnet/internal/concurrency" + "github.com/bitmagnet-io/bitmagnet/internal/health" + "github.com/bitmagnet-io/bitmagnet/internal/protocol/dht/server" + "go.uber.org/fx" + "time" +) + +type Params struct { + fx.In + DhtCrawlerActive *concurrency.AtomicValue[bool] `name:"dht_crawler_active"` + DhtServerLastResponses *concurrency.AtomicValue[server.LastResponses] `name:"dht_server_last_responses"` +} + +type Result struct { + fx.Out + Option health.CheckerOption `group:"health_check_options"` +} + +func New(params Params) Result { + return Result{ + Option: health.WithPeriodicCheck( + time.Second*10, + time.Second*1, + NewCheck(params.DhtCrawlerActive, params.DhtServerLastResponses), + ), + } +} diff --git a/internal/dhtcrawler/dhtcrawlerfx/module.go b/internal/dhtcrawler/dhtcrawlerfx/module.go index 40ff74b..e34dd2e 100644 --- a/internal/dhtcrawler/dhtcrawlerfx/module.go +++ b/internal/dhtcrawler/dhtcrawlerfx/module.go @@ -4,6 +4,7 @@ import ( adht "github.com/anacrolix/dht/v2" "github.com/bitmagnet-io/bitmagnet/internal/boilerplate/config/configfx" "github.com/bitmagnet-io/bitmagnet/internal/dhtcrawler" + "github.com/bitmagnet-io/bitmagnet/internal/dhtcrawler/dhtcrawler_health_check" "go.uber.org/fx" "net" "net/netip" @@ -30,6 +31,7 @@ func New() fx.Option { }, dhtcrawler.New, dhtcrawler.NewDiscoveredNodes, + dhtcrawler_health_check.New, ), ) } diff --git a/internal/dhtcrawler/factory.go b/internal/dhtcrawler/factory.go index 39fb7a4..cfd8822 100644 --- a/internal/dhtcrawler/factory.go +++ b/internal/dhtcrawler/factory.go @@ -36,11 +36,13 @@ type Params struct { type Result struct { fx.Out - Worker worker.Worker `group:"workers"` - PersistedTotal prometheus.Collector `group:"prometheus_collectors"` + Worker worker.Worker `group:"workers"` + PersistedTotal prometheus.Collector `group:"prometheus_collectors"` + DhtCrawlerActive *concurrency.AtomicValue[bool] `name:"dht_crawler_active"` } func New(params Params) Result { + active := &concurrency.AtomicValue[bool]{} var c crawler persistedTotal := prometheus.NewCounterVec(prometheus.CounterOpts{ Namespace: "bitmagnet", @@ -53,6 +55,7 @@ func New(params Params) Result { "dht_crawler", fx.Hook{ OnStart: func(context.Context) error { + active.Set(true) scalingFactor := int(params.Config.ScalingFactor) cl, err := params.Client.Get() if err != nil { @@ -111,6 +114,7 @@ func New(params Params) Result { return nil }, OnStop: func(context.Context) error { + active.Set(false) if c.stopped != nil { close(c.stopped) } @@ -118,6 +122,7 @@ func New(params Params) Result { }, }, ), - PersistedTotal: persistedTotal, + PersistedTotal: persistedTotal, + DhtCrawlerActive: active, } } diff --git a/internal/dhtcrawler/metrics/metrics.go b/internal/dhtcrawler/metrics/metrics.go new file mode 100644 index 0000000..1abe097 --- /dev/null +++ b/internal/dhtcrawler/metrics/metrics.go @@ -0,0 +1 @@ +package metrics diff --git a/internal/gql/config/config.go b/internal/gql/config/config.go index 25a9c45..196446d 100644 --- a/internal/gql/config/config.go +++ b/internal/gql/config/config.go @@ -3,12 +3,13 @@ package config import ( "github.com/bitmagnet-io/bitmagnet/internal/boilerplate/lazy" "github.com/bitmagnet-io/bitmagnet/internal/gql" + "github.com/bitmagnet-io/bitmagnet/internal/gql/resolvers" "go.uber.org/fx" ) type Params struct { fx.In - ResolverRoot lazy.Lazy[gql.ResolverRoot] + ResolverRoot lazy.Lazy[*resolvers.Resolver] } func New(p Params) lazy.Lazy[gql.Config] { diff --git a/internal/gql/enums/enums.go b/internal/gql/enums/enums.go index bc489bb..78cb9d3 100644 --- a/internal/gql/enums/enums.go +++ b/internal/gql/enums/enums.go @@ -28,5 +28,7 @@ var Enums = []enum{ newEnum("VideoModifier", model.VideoModifierNames()), newEnum("VideoResolution", model.VideoResolutionNames()), newEnum("VideoSource", model.VideoSourceNames()), - newEnum("TorrentContentOrderBy", search.TorrentContentOrderByNames()), + newEnum("TorrentContentOrderByField", search.TorrentContentOrderByNames()), + newEnum("TorrentFilesOrderByField", search.TorrentFilesOrderByNames()), + newEnum("QueueJobsOrderByField", search.QueueJobsOrderByNames()), } diff --git a/internal/gql/gql.gen.go b/internal/gql/gql.gen.go index 35c7801..0767a4e 100644 --- a/internal/gql/gql.gen.go +++ b/internal/gql/gql.gen.go @@ -18,8 +18,11 @@ import ( "github.com/bitmagnet-io/bitmagnet/internal/database/search" "github.com/bitmagnet-io/bitmagnet/internal/gql/gqlmodel" "github.com/bitmagnet-io/bitmagnet/internal/gql/gqlmodel/gen" + "github.com/bitmagnet-io/bitmagnet/internal/metrics/queuemetrics" + "github.com/bitmagnet-io/bitmagnet/internal/metrics/torrentmetrics" "github.com/bitmagnet-io/bitmagnet/internal/model" "github.com/bitmagnet-io/bitmagnet/internal/protocol" + "github.com/bitmagnet-io/bitmagnet/internal/queue/manager" gqlparser "github.com/vektah/gqlparser/v2" "github.com/vektah/gqlparser/v2/ast" ) @@ -47,8 +50,12 @@ type ResolverRoot interface { Content() ContentResolver Mutation() MutationResolver Query() QueryResolver + QueueJob() QueueJobResolver + QueueQuery() QueueQueryResolver Torrent() TorrentResolver TorrentMutation() TorrentMutationResolver + TorrentQuery() TorrentQueryResolver + QueueEnqueueReprocessTorrentsBatchInput() QueueEnqueueReprocessTorrentsBatchInputResolver } type DirectiveRoot struct { @@ -121,6 +128,18 @@ type ComplexityRoot struct { Value func(childComplexity int) int } + HealthCheck struct { + Error func(childComplexity int) int + Key func(childComplexity int) int + Status func(childComplexity int) int + Timestamp func(childComplexity int) int + } + + HealthQuery struct { + Checks func(childComplexity int) int + Status func(childComplexity int) int + } + LanguageAgg struct { Count func(childComplexity int) int IsEstimate func(childComplexity int) int @@ -139,13 +158,78 @@ type ComplexityRoot struct { } Mutation struct { + Queue func(childComplexity int) int Torrent func(childComplexity int) int } Query struct { - System func(childComplexity int) int + Health func(childComplexity int) int + Queue func(childComplexity int) int Torrent func(childComplexity int) int TorrentContent func(childComplexity int) int + Version func(childComplexity int) int + Workers func(childComplexity int) int + } + + QueueJob struct { + CreatedAt func(childComplexity int) int + Error func(childComplexity int) int + ID func(childComplexity int) int + MaxRetries func(childComplexity int) int + Payload func(childComplexity int) int + Priority func(childComplexity int) int + Queue func(childComplexity int) int + RanAt func(childComplexity int) int + Retries func(childComplexity int) int + RunAfter func(childComplexity int) int + Status func(childComplexity int) int + } + + QueueJobQueueAgg struct { + Count func(childComplexity int) int + Label func(childComplexity int) int + Value func(childComplexity int) int + } + + QueueJobStatusAgg struct { + Count func(childComplexity int) int + Label func(childComplexity int) int + Value func(childComplexity int) int + } + + QueueJobsAggregations struct { + Queue func(childComplexity int) int + Status func(childComplexity int) int + } + + QueueJobsQueryResult struct { + Aggregations func(childComplexity int) int + HasNextPage func(childComplexity int) int + Items func(childComplexity int) int + TotalCount func(childComplexity int) int + } + + QueueMetricsBucket struct { + Count func(childComplexity int) int + CreatedAtBucket func(childComplexity int) int + Latency func(childComplexity int) int + Queue func(childComplexity int) int + RanAtBucket func(childComplexity int) int + Status func(childComplexity int) int + } + + QueueMetricsQueryResult struct { + Buckets func(childComplexity int) int + } + + QueueMutation struct { + EnqueueReprocessTorrentsBatch func(childComplexity int, input manager.EnqueueReprocessTorrentsBatchRequest) int + PurgeJobs func(childComplexity int, input manager.PurgeJobsRequest) int + } + + QueueQuery struct { + Jobs func(childComplexity int, input gqlmodel.QueueJobsQueryInput) int + Metrics func(childComplexity int, input gen.QueueMetricsQueryInput) int } ReleaseYearAgg struct { @@ -165,10 +249,6 @@ type ComplexityRoot struct { Name func(childComplexity int) int } - SystemQuery struct { - Version func(childComplexity int) int - } - Torrent struct { CreatedAt func(childComplexity int) int Extension func(childComplexity int) int @@ -227,7 +307,7 @@ type ComplexityRoot struct { } TorrentContentQuery struct { - Search func(childComplexity int, query *query.SearchParams, facets *gen.TorrentContentFacetsInput, orderBy []gen.TorrentContentOrderByInput) int + Search func(childComplexity int, input gqlmodel.TorrentContentSearchQueryInput) int } TorrentContentSearchResult struct { @@ -256,6 +336,27 @@ type ComplexityRoot struct { Value func(childComplexity int) int } + TorrentFilesQueryResult struct { + HasNextPage func(childComplexity int) int + Items func(childComplexity int) int + TotalCount func(childComplexity int) int + } + + TorrentListSourcesResult struct { + Sources func(childComplexity int) int + } + + TorrentMetricsBucket struct { + Bucket func(childComplexity int) int + Count func(childComplexity int) int + Source func(childComplexity int) int + Updated func(childComplexity int) int + } + + TorrentMetricsQueryResult struct { + Buckets func(childComplexity int) int + } + TorrentMutation struct { Delete func(childComplexity int, infoHashes []protocol.ID) int DeleteTags func(childComplexity int, infoHashes []protocol.ID, tagNames []string) int @@ -264,15 +365,15 @@ type ComplexityRoot struct { } TorrentQuery struct { - SuggestTags func(childComplexity int, query *gen.SuggestTagsQueryInput) int + Files func(childComplexity int, input gqlmodel.TorrentFilesQueryInput) int + ListSources func(childComplexity int) int + Metrics func(childComplexity int, input gen.TorrentMetricsQueryInput) int + SuggestTags func(childComplexity int, input *gen.SuggestTagsQueryInput) int } TorrentSource struct { - ImportID func(childComplexity int) int - Key func(childComplexity int) int - Leechers func(childComplexity int) int - Name func(childComplexity int) int - Seeders func(childComplexity int) int + Key func(childComplexity int) int + Name func(childComplexity int) int } TorrentSourceAgg struct { @@ -282,6 +383,14 @@ type ComplexityRoot struct { Value func(childComplexity int) int } + TorrentSourceInfo struct { + ImportID func(childComplexity int) int + Key func(childComplexity int) int + Leechers func(childComplexity int) int + Name func(childComplexity int) int + Seeders func(childComplexity int) int + } + TorrentSuggestTagsResult struct { Suggestions func(childComplexity int) int } @@ -306,6 +415,19 @@ type ComplexityRoot struct { Label func(childComplexity int) int Value func(childComplexity int) int } + + Worker struct { + Key func(childComplexity int) int + Started func(childComplexity int) int + } + + WorkersListAllQueryResult struct { + Workers func(childComplexity int) int + } + + WorkersQuery struct { + ListAll func(childComplexity int) int + } } type ContentResolver interface { @@ -313,14 +435,24 @@ type ContentResolver interface { } type MutationResolver interface { Torrent(ctx context.Context) (gqlmodel.TorrentMutation, error) + Queue(ctx context.Context) (gqlmodel.QueueMutation, error) } type QueryResolver interface { + Version(ctx context.Context) (string, error) + Workers(ctx context.Context) (gen.WorkersQuery, error) + Health(ctx context.Context) (gen.HealthQuery, error) + Queue(ctx context.Context) (gqlmodel.QueueQuery, error) Torrent(ctx context.Context) (gqlmodel.TorrentQuery, error) TorrentContent(ctx context.Context) (gqlmodel.TorrentContentQuery, error) - System(ctx context.Context) (gen.SystemQuery, error) +} +type QueueJobResolver interface { + RanAt(ctx context.Context, obj *model.QueueJob) (*time.Time, error) +} +type QueueQueryResolver interface { + Jobs(ctx context.Context, obj *gqlmodel.QueueQuery, input gqlmodel.QueueJobsQueryInput) (gqlmodel.QueueJobsQueryResult, error) } type TorrentResolver interface { - Sources(ctx context.Context, obj *model.Torrent) ([]gqlmodel.TorrentSource, error) + Sources(ctx context.Context, obj *model.Torrent) ([]gqlmodel.TorrentSourceInfo, error) } type TorrentMutationResolver interface { Delete(ctx context.Context, obj *gqlmodel.TorrentMutation, infoHashes []protocol.ID) (*string, error) @@ -328,6 +460,13 @@ type TorrentMutationResolver interface { SetTags(ctx context.Context, obj *gqlmodel.TorrentMutation, infoHashes []protocol.ID, tagNames []string) (*string, error) DeleteTags(ctx context.Context, obj *gqlmodel.TorrentMutation, infoHashes []protocol.ID, tagNames []string) (*string, error) } +type TorrentQueryResolver interface { + Files(ctx context.Context, obj *gqlmodel.TorrentQuery, input gqlmodel.TorrentFilesQueryInput) (query.GenericResult[model.TorrentFile], error) +} + +type QueueEnqueueReprocessTorrentsBatchInputResolver interface { + ClassifierRematch(ctx context.Context, obj *manager.EnqueueReprocessTorrentsBatchRequest, data *bool) error +} type executableSchema struct { schema *ast.Schema @@ -663,6 +802,48 @@ func (e *executableSchema) Complexity(typeName, field string, childComplexity in return e.complexity.GenreAgg.Value(childComplexity), true + case "HealthCheck.error": + if e.complexity.HealthCheck.Error == nil { + break + } + + return e.complexity.HealthCheck.Error(childComplexity), true + + case "HealthCheck.key": + if e.complexity.HealthCheck.Key == nil { + break + } + + return e.complexity.HealthCheck.Key(childComplexity), true + + case "HealthCheck.status": + if e.complexity.HealthCheck.Status == nil { + break + } + + return e.complexity.HealthCheck.Status(childComplexity), true + + case "HealthCheck.timestamp": + if e.complexity.HealthCheck.Timestamp == nil { + break + } + + return e.complexity.HealthCheck.Timestamp(childComplexity), true + + case "HealthQuery.checks": + if e.complexity.HealthQuery.Checks == nil { + break + } + + return e.complexity.HealthQuery.Checks(childComplexity), true + + case "HealthQuery.status": + if e.complexity.HealthQuery.Status == nil { + break + } + + return e.complexity.HealthQuery.Status(childComplexity), true + case "LanguageAgg.count": if e.complexity.LanguageAgg.Count == nil { break @@ -719,6 +900,13 @@ func (e *executableSchema) Complexity(typeName, field string, childComplexity in return e.complexity.MetadataSource.Name(childComplexity), true + case "Mutation.queue": + if e.complexity.Mutation.Queue == nil { + break + } + + return e.complexity.Mutation.Queue(childComplexity), true + case "Mutation.torrent": if e.complexity.Mutation.Torrent == nil { break @@ -726,12 +914,19 @@ func (e *executableSchema) Complexity(typeName, field string, childComplexity in return e.complexity.Mutation.Torrent(childComplexity), true - case "Query.system": - if e.complexity.Query.System == nil { + case "Query.health": + if e.complexity.Query.Health == nil { break } - return e.complexity.Query.System(childComplexity), true + return e.complexity.Query.Health(childComplexity), true + + case "Query.queue": + if e.complexity.Query.Queue == nil { + break + } + + return e.complexity.Query.Queue(childComplexity), true case "Query.torrent": if e.complexity.Query.Torrent == nil { @@ -747,6 +942,278 @@ func (e *executableSchema) Complexity(typeName, field string, childComplexity in return e.complexity.Query.TorrentContent(childComplexity), true + case "Query.version": + if e.complexity.Query.Version == nil { + break + } + + return e.complexity.Query.Version(childComplexity), true + + case "Query.workers": + if e.complexity.Query.Workers == nil { + break + } + + return e.complexity.Query.Workers(childComplexity), true + + case "QueueJob.createdAt": + if e.complexity.QueueJob.CreatedAt == nil { + break + } + + return e.complexity.QueueJob.CreatedAt(childComplexity), true + + case "QueueJob.error": + if e.complexity.QueueJob.Error == nil { + break + } + + return e.complexity.QueueJob.Error(childComplexity), true + + case "QueueJob.id": + if e.complexity.QueueJob.ID == nil { + break + } + + return e.complexity.QueueJob.ID(childComplexity), true + + case "QueueJob.maxRetries": + if e.complexity.QueueJob.MaxRetries == nil { + break + } + + return e.complexity.QueueJob.MaxRetries(childComplexity), true + + case "QueueJob.payload": + if e.complexity.QueueJob.Payload == nil { + break + } + + return e.complexity.QueueJob.Payload(childComplexity), true + + case "QueueJob.priority": + if e.complexity.QueueJob.Priority == nil { + break + } + + return e.complexity.QueueJob.Priority(childComplexity), true + + case "QueueJob.queue": + if e.complexity.QueueJob.Queue == nil { + break + } + + return e.complexity.QueueJob.Queue(childComplexity), true + + case "QueueJob.ranAt": + if e.complexity.QueueJob.RanAt == nil { + break + } + + return e.complexity.QueueJob.RanAt(childComplexity), true + + case "QueueJob.retries": + if e.complexity.QueueJob.Retries == nil { + break + } + + return e.complexity.QueueJob.Retries(childComplexity), true + + case "QueueJob.runAfter": + if e.complexity.QueueJob.RunAfter == nil { + break + } + + return e.complexity.QueueJob.RunAfter(childComplexity), true + + case "QueueJob.status": + if e.complexity.QueueJob.Status == nil { + break + } + + return e.complexity.QueueJob.Status(childComplexity), true + + case "QueueJobQueueAgg.count": + if e.complexity.QueueJobQueueAgg.Count == nil { + break + } + + return e.complexity.QueueJobQueueAgg.Count(childComplexity), true + + case "QueueJobQueueAgg.label": + if e.complexity.QueueJobQueueAgg.Label == nil { + break + } + + return e.complexity.QueueJobQueueAgg.Label(childComplexity), true + + case "QueueJobQueueAgg.value": + if e.complexity.QueueJobQueueAgg.Value == nil { + break + } + + return e.complexity.QueueJobQueueAgg.Value(childComplexity), true + + case "QueueJobStatusAgg.count": + if e.complexity.QueueJobStatusAgg.Count == nil { + break + } + + return e.complexity.QueueJobStatusAgg.Count(childComplexity), true + + case "QueueJobStatusAgg.label": + if e.complexity.QueueJobStatusAgg.Label == nil { + break + } + + return e.complexity.QueueJobStatusAgg.Label(childComplexity), true + + case "QueueJobStatusAgg.value": + if e.complexity.QueueJobStatusAgg.Value == nil { + break + } + + return e.complexity.QueueJobStatusAgg.Value(childComplexity), true + + case "QueueJobsAggregations.queue": + if e.complexity.QueueJobsAggregations.Queue == nil { + break + } + + return e.complexity.QueueJobsAggregations.Queue(childComplexity), true + + case "QueueJobsAggregations.status": + if e.complexity.QueueJobsAggregations.Status == nil { + break + } + + return e.complexity.QueueJobsAggregations.Status(childComplexity), true + + case "QueueJobsQueryResult.aggregations": + if e.complexity.QueueJobsQueryResult.Aggregations == nil { + break + } + + return e.complexity.QueueJobsQueryResult.Aggregations(childComplexity), true + + case "QueueJobsQueryResult.hasNextPage": + if e.complexity.QueueJobsQueryResult.HasNextPage == nil { + break + } + + return e.complexity.QueueJobsQueryResult.HasNextPage(childComplexity), true + + case "QueueJobsQueryResult.items": + if e.complexity.QueueJobsQueryResult.Items == nil { + break + } + + return e.complexity.QueueJobsQueryResult.Items(childComplexity), true + + case "QueueJobsQueryResult.totalCount": + if e.complexity.QueueJobsQueryResult.TotalCount == nil { + break + } + + return e.complexity.QueueJobsQueryResult.TotalCount(childComplexity), true + + case "QueueMetricsBucket.count": + if e.complexity.QueueMetricsBucket.Count == nil { + break + } + + return e.complexity.QueueMetricsBucket.Count(childComplexity), true + + case "QueueMetricsBucket.createdAtBucket": + if e.complexity.QueueMetricsBucket.CreatedAtBucket == nil { + break + } + + return e.complexity.QueueMetricsBucket.CreatedAtBucket(childComplexity), true + + case "QueueMetricsBucket.latency": + if e.complexity.QueueMetricsBucket.Latency == nil { + break + } + + return e.complexity.QueueMetricsBucket.Latency(childComplexity), true + + case "QueueMetricsBucket.queue": + if e.complexity.QueueMetricsBucket.Queue == nil { + break + } + + return e.complexity.QueueMetricsBucket.Queue(childComplexity), true + + case "QueueMetricsBucket.ranAtBucket": + if e.complexity.QueueMetricsBucket.RanAtBucket == nil { + break + } + + return e.complexity.QueueMetricsBucket.RanAtBucket(childComplexity), true + + case "QueueMetricsBucket.status": + if e.complexity.QueueMetricsBucket.Status == nil { + break + } + + return e.complexity.QueueMetricsBucket.Status(childComplexity), true + + case "QueueMetricsQueryResult.buckets": + if e.complexity.QueueMetricsQueryResult.Buckets == nil { + break + } + + return e.complexity.QueueMetricsQueryResult.Buckets(childComplexity), true + + case "QueueMutation.enqueueReprocessTorrentsBatch": + if e.complexity.QueueMutation.EnqueueReprocessTorrentsBatch == nil { + break + } + + args, err := ec.field_QueueMutation_enqueueReprocessTorrentsBatch_args(context.TODO(), rawArgs) + if err != nil { + return 0, false + } + + return e.complexity.QueueMutation.EnqueueReprocessTorrentsBatch(childComplexity, args["input"].(manager.EnqueueReprocessTorrentsBatchRequest)), true + + case "QueueMutation.purgeJobs": + if e.complexity.QueueMutation.PurgeJobs == nil { + break + } + + args, err := ec.field_QueueMutation_purgeJobs_args(context.TODO(), rawArgs) + if err != nil { + return 0, false + } + + return e.complexity.QueueMutation.PurgeJobs(childComplexity, args["input"].(manager.PurgeJobsRequest)), true + + case "QueueQuery.jobs": + if e.complexity.QueueQuery.Jobs == nil { + break + } + + args, err := ec.field_QueueQuery_jobs_args(context.TODO(), rawArgs) + if err != nil { + return 0, false + } + + return e.complexity.QueueQuery.Jobs(childComplexity, args["input"].(gqlmodel.QueueJobsQueryInput)), true + + case "QueueQuery.metrics": + if e.complexity.QueueQuery.Metrics == nil { + break + } + + args, err := ec.field_QueueQuery_metrics_args(context.TODO(), rawArgs) + if err != nil { + return 0, false + } + + return e.complexity.QueueQuery.Metrics(childComplexity, args["input"].(gen.QueueMetricsQueryInput)), true + case "ReleaseYearAgg.count": if e.complexity.ReleaseYearAgg.Count == nil { break @@ -803,13 +1270,6 @@ func (e *executableSchema) Complexity(typeName, field string, childComplexity in return e.complexity.SuggestedTag.Name(childComplexity), true - case "SystemQuery.version": - if e.complexity.SystemQuery.Version == nil { - break - } - - return e.complexity.SystemQuery.Version(childComplexity), true - case "Torrent.createdAt": if e.complexity.Torrent.CreatedAt == nil { break @@ -1156,7 +1616,7 @@ func (e *executableSchema) Complexity(typeName, field string, childComplexity in return 0, false } - return e.complexity.TorrentContentQuery.Search(childComplexity, args["query"].(*query.SearchParams), args["facets"].(*gen.TorrentContentFacetsInput), args["orderBy"].([]gen.TorrentContentOrderByInput)), true + return e.complexity.TorrentContentQuery.Search(childComplexity, args["input"].(gqlmodel.TorrentContentSearchQueryInput)), true case "TorrentContentSearchResult.aggregations": if e.complexity.TorrentContentSearchResult.Aggregations == nil { @@ -1277,6 +1737,69 @@ func (e *executableSchema) Complexity(typeName, field string, childComplexity in return e.complexity.TorrentFileTypeAgg.Value(childComplexity), true + case "TorrentFilesQueryResult.hasNextPage": + if e.complexity.TorrentFilesQueryResult.HasNextPage == nil { + break + } + + return e.complexity.TorrentFilesQueryResult.HasNextPage(childComplexity), true + + case "TorrentFilesQueryResult.items": + if e.complexity.TorrentFilesQueryResult.Items == nil { + break + } + + return e.complexity.TorrentFilesQueryResult.Items(childComplexity), true + + case "TorrentFilesQueryResult.totalCount": + if e.complexity.TorrentFilesQueryResult.TotalCount == nil { + break + } + + return e.complexity.TorrentFilesQueryResult.TotalCount(childComplexity), true + + case "TorrentListSourcesResult.sources": + if e.complexity.TorrentListSourcesResult.Sources == nil { + break + } + + return e.complexity.TorrentListSourcesResult.Sources(childComplexity), true + + case "TorrentMetricsBucket.bucket": + if e.complexity.TorrentMetricsBucket.Bucket == nil { + break + } + + return e.complexity.TorrentMetricsBucket.Bucket(childComplexity), true + + case "TorrentMetricsBucket.count": + if e.complexity.TorrentMetricsBucket.Count == nil { + break + } + + return e.complexity.TorrentMetricsBucket.Count(childComplexity), true + + case "TorrentMetricsBucket.source": + if e.complexity.TorrentMetricsBucket.Source == nil { + break + } + + return e.complexity.TorrentMetricsBucket.Source(childComplexity), true + + case "TorrentMetricsBucket.updated": + if e.complexity.TorrentMetricsBucket.Updated == nil { + break + } + + return e.complexity.TorrentMetricsBucket.Updated(childComplexity), true + + case "TorrentMetricsQueryResult.buckets": + if e.complexity.TorrentMetricsQueryResult.Buckets == nil { + break + } + + return e.complexity.TorrentMetricsQueryResult.Buckets(childComplexity), true + case "TorrentMutation.delete": if e.complexity.TorrentMutation.Delete == nil { break @@ -1325,6 +1848,37 @@ func (e *executableSchema) Complexity(typeName, field string, childComplexity in return e.complexity.TorrentMutation.SetTags(childComplexity, args["infoHashes"].([]protocol.ID), args["tagNames"].([]string)), true + case "TorrentQuery.files": + if e.complexity.TorrentQuery.Files == nil { + break + } + + args, err := ec.field_TorrentQuery_files_args(context.TODO(), rawArgs) + if err != nil { + return 0, false + } + + return e.complexity.TorrentQuery.Files(childComplexity, args["input"].(gqlmodel.TorrentFilesQueryInput)), true + + case "TorrentQuery.listSources": + if e.complexity.TorrentQuery.ListSources == nil { + break + } + + return e.complexity.TorrentQuery.ListSources(childComplexity), true + + case "TorrentQuery.metrics": + if e.complexity.TorrentQuery.Metrics == nil { + break + } + + args, err := ec.field_TorrentQuery_metrics_args(context.TODO(), rawArgs) + if err != nil { + return 0, false + } + + return e.complexity.TorrentQuery.Metrics(childComplexity, args["input"].(gen.TorrentMetricsQueryInput)), true + case "TorrentQuery.suggestTags": if e.complexity.TorrentQuery.SuggestTags == nil { break @@ -1335,14 +1889,7 @@ func (e *executableSchema) Complexity(typeName, field string, childComplexity in return 0, false } - return e.complexity.TorrentQuery.SuggestTags(childComplexity, args["query"].(*gen.SuggestTagsQueryInput)), true - - case "TorrentSource.importId": - if e.complexity.TorrentSource.ImportID == nil { - break - } - - return e.complexity.TorrentSource.ImportID(childComplexity), true + return e.complexity.TorrentQuery.SuggestTags(childComplexity, args["input"].(*gen.SuggestTagsQueryInput)), true case "TorrentSource.key": if e.complexity.TorrentSource.Key == nil { @@ -1351,13 +1898,6 @@ func (e *executableSchema) Complexity(typeName, field string, childComplexity in return e.complexity.TorrentSource.Key(childComplexity), true - case "TorrentSource.leechers": - if e.complexity.TorrentSource.Leechers == nil { - break - } - - return e.complexity.TorrentSource.Leechers(childComplexity), true - case "TorrentSource.name": if e.complexity.TorrentSource.Name == nil { break @@ -1365,13 +1905,6 @@ func (e *executableSchema) Complexity(typeName, field string, childComplexity in return e.complexity.TorrentSource.Name(childComplexity), true - case "TorrentSource.seeders": - if e.complexity.TorrentSource.Seeders == nil { - break - } - - return e.complexity.TorrentSource.Seeders(childComplexity), true - case "TorrentSourceAgg.count": if e.complexity.TorrentSourceAgg.Count == nil { break @@ -1400,6 +1933,41 @@ func (e *executableSchema) Complexity(typeName, field string, childComplexity in return e.complexity.TorrentSourceAgg.Value(childComplexity), true + case "TorrentSourceInfo.importId": + if e.complexity.TorrentSourceInfo.ImportID == nil { + break + } + + return e.complexity.TorrentSourceInfo.ImportID(childComplexity), true + + case "TorrentSourceInfo.key": + if e.complexity.TorrentSourceInfo.Key == nil { + break + } + + return e.complexity.TorrentSourceInfo.Key(childComplexity), true + + case "TorrentSourceInfo.leechers": + if e.complexity.TorrentSourceInfo.Leechers == nil { + break + } + + return e.complexity.TorrentSourceInfo.Leechers(childComplexity), true + + case "TorrentSourceInfo.name": + if e.complexity.TorrentSourceInfo.Name == nil { + break + } + + return e.complexity.TorrentSourceInfo.Name(childComplexity), true + + case "TorrentSourceInfo.seeders": + if e.complexity.TorrentSourceInfo.Seeders == nil { + break + } + + return e.complexity.TorrentSourceInfo.Seeders(childComplexity), true + case "TorrentSuggestTagsResult.suggestions": if e.complexity.TorrentSuggestTagsResult.Suggestions == nil { break @@ -1491,6 +2059,34 @@ func (e *executableSchema) Complexity(typeName, field string, childComplexity in return e.complexity.VideoSourceAgg.Value(childComplexity), true + case "Worker.key": + if e.complexity.Worker.Key == nil { + break + } + + return e.complexity.Worker.Key(childComplexity), true + + case "Worker.started": + if e.complexity.Worker.Started == nil { + break + } + + return e.complexity.Worker.Started(childComplexity), true + + case "WorkersListAllQueryResult.workers": + if e.complexity.WorkersListAllQueryResult.Workers == nil { + break + } + + return e.complexity.WorkersListAllQueryResult.Workers(childComplexity), true + + case "WorkersQuery.listAll": + if e.complexity.WorkersQuery.ListAll == nil { + break + } + + return e.complexity.WorkersQuery.ListAll(childComplexity), true + } return 0, false } @@ -1502,12 +2098,23 @@ func (e *executableSchema) Exec(ctx context.Context) graphql.ResponseHandler { ec.unmarshalInputContentTypeFacetInput, ec.unmarshalInputGenreFacetInput, ec.unmarshalInputLanguageFacetInput, + ec.unmarshalInputQueueEnqueueReprocessTorrentsBatchInput, + ec.unmarshalInputQueueJobQueueFacetInput, + ec.unmarshalInputQueueJobStatusFacetInput, + ec.unmarshalInputQueueJobsFacetsInput, + ec.unmarshalInputQueueJobsOrderByInput, + ec.unmarshalInputQueueJobsQueryInput, + ec.unmarshalInputQueueMetricsQueryInput, + ec.unmarshalInputQueuePurgeJobsInput, ec.unmarshalInputReleaseYearFacetInput, - ec.unmarshalInputSearchQueryInput, ec.unmarshalInputSuggestTagsQueryInput, ec.unmarshalInputTorrentContentFacetsInput, ec.unmarshalInputTorrentContentOrderByInput, + ec.unmarshalInputTorrentContentSearchQueryInput, ec.unmarshalInputTorrentFileTypeFacetInput, + ec.unmarshalInputTorrentFilesOrderByInput, + ec.unmarshalInputTorrentFilesQueryInput, + ec.unmarshalInputTorrentMetricsQueryInput, ec.unmarshalInputTorrentSourceFacetInput, ec.unmarshalInputTorrentTagFacetInput, ec.unmarshalInputVideoResolutionFacetInput, @@ -1645,42 +2252,58 @@ enum FilesStatus { } enum Language { + af ar - bs + az + be bg + bs ca - zh + ce + co cs + cy da - nl - en - et - fi - fr de el + en + es + et + eu + fa + fi + fr he hi hr hu - is + hy id + is it ja + ka ko - lv + ku lt + lv + mi mk ml + mn + ms + mt + nl no - fa pl pt ro ru + sa sk sl - es + sm + so sr sv ta @@ -1688,24 +2311,8 @@ enum Language { tr uk vi - af - hy - az - eu - be - ce - co - ka - ku - mi - ms - mt - mn - sa - sm - so - cy yi + zh zu } @@ -1757,16 +2364,74 @@ enum VideoSource { BluRay } -enum TorrentContentOrderBy { - Relevance - PublishedAt - UpdatedAt - Size - Files - Seeders - Leechers - Name - InfoHash +enum TorrentContentOrderByField { + relevance + published_at + updated_at + size + files_count + seeders + leechers + name + info_hash +} + +enum TorrentFilesOrderByField { + index + path + extension + size +} + +enum QueueJobsOrderByField { + created_at + ran_at + priority +} +`, BuiltIn: false}, + {Name: "../../graphql/schema/metrics.graphqls", Input: `enum MetricsBucketDuration { + minute + hour + day +} + +type QueueMetricsBucket { + queue: String! + status: QueueJobStatus! + createdAtBucket: DateTime! + ranAtBucket: DateTime + count: Int! + latency: Duration +} + +type QueueMetricsQueryResult { + buckets: [QueueMetricsBucket!]! +} + +input QueueMetricsQueryInput { + bucketDuration: MetricsBucketDuration! + statuses: [QueueJobStatus!] + queues: [String!] + startTime: DateTime + endTime: DateTime +} + +type TorrentMetricsBucket { + source: String! + bucket: DateTime! + updated: Boolean! + count: Int! +} + +type TorrentMetricsQueryResult { + buckets: [TorrentMetricsBucket!]! +} + +input TorrentMetricsQueryInput { + bucketDuration: MetricsBucketDuration! + sources: [String!] + startTime: DateTime + endTime: DateTime } `, BuiltIn: false}, {Name: "../../graphql/schema/models.graphqls", Input: `type Torrent { @@ -1781,7 +2446,7 @@ enum TorrentContentOrderBy { fileType: FileType fileTypes: [FileType!] files: [TorrentFile!] - sources: [TorrentSource!]! + sources: [TorrentSourceInfo!]! seeders: Int leechers: Int tagNames: [String!]! @@ -1804,6 +2469,11 @@ type TorrentFile { type TorrentSource { key: String! name: String! +} + +type TorrentSourceInfo { + key: String! + name: String! importId: String seeders: Int leechers: Int @@ -1902,6 +2572,7 @@ type ContentCollection { `, BuiltIn: false}, {Name: "../../graphql/schema/mutation.graphqls", Input: `type Mutation { torrent: TorrentMutation! + queue: QueueMutation! } type TorrentMutation { @@ -1912,13 +2583,19 @@ type TorrentMutation { } `, BuiltIn: false}, {Name: "../../graphql/schema/query.graphqls", Input: `type Query { + version: String! + workers: WorkersQuery! + health: HealthQuery! + queue: QueueQuery! torrent: TorrentQuery! torrentContent: TorrentContentQuery! - system: SystemQuery! } type TorrentQuery { - suggestTags(query: SuggestTagsQueryInput): TorrentSuggestTagsResult! + files(input: TorrentFilesQueryInput!): TorrentFilesQueryResult! + listSources: TorrentListSourcesResult! + suggestTags(input: SuggestTagsQueryInput): TorrentSuggestTagsResult! + metrics(input: TorrentMetricsQueryInput!): TorrentMetricsQueryResult! } input SuggestTagsQueryInput { @@ -1930,38 +2607,176 @@ type TorrentSuggestTagsResult { suggestions: [SuggestedTag!]! } +type TorrentListSourcesResult { + sources: [TorrentSource!]! +} + type SuggestedTag { name: String! count: Int! } type TorrentContentQuery { - search( - query: SearchQueryInput - facets: TorrentContentFacetsInput - orderBy: [TorrentContentOrderByInput!] - ): TorrentContentSearchResult! + search(input: TorrentContentSearchQueryInput!): TorrentContentSearchResult! } -type SystemQuery { - version: String! +type Worker { + key: String! + started: Boolean! +} + +type WorkersListAllQueryResult { + workers: [Worker!]! +} + +type WorkersQuery { + listAll: WorkersListAllQueryResult! +} + +enum HealthStatus { + unknown + inactive + up + down +} + +type HealthCheck { + key: String! + status: HealthStatus! + timestamp: DateTime! + error: String +} + +type HealthQuery { + status: HealthStatus! + checks: [HealthCheck!]! +} +`, BuiltIn: false}, + {Name: "../../graphql/schema/queue.graphqls", Input: `type QueueQuery { + jobs(input: QueueJobsQueryInput!): QueueJobsQueryResult! + metrics(input: QueueMetricsQueryInput!): QueueMetricsQueryResult! +} + +input QueueJobsQueryInput { + queues: [String!] + statuses: [QueueJobStatus!] + limit: Int + page: Int + offset: Int + totalCount: Boolean + hasNextPage: Boolean + facets: QueueJobsFacetsInput + orderBy: [QueueJobsOrderByInput!] +} + +input QueueJobQueueFacetInput { + aggregate: Boolean + filter: [String!] +} + +input QueueJobStatusFacetInput { + aggregate: Boolean + filter: [QueueJobStatus!] +} + +input QueueJobsFacetsInput { + status: QueueJobStatusFacetInput + queue: QueueJobQueueFacetInput +} + +input QueueJobsOrderByInput { + field: QueueJobsOrderByField! + descending: Boolean +} + +type QueueJob { + id: ID! + queue: String! + status: QueueJobStatus! + payload: String! + priority: Int! + retries: Int! + maxRetries: Int! + runAfter: DateTime! + ranAt: DateTime + error: String + createdAt: DateTime! +} + +type QueueJobsQueryResult { + totalCount: Int! + hasNextPage: Boolean + items: [QueueJob!]! + aggregations: QueueJobsAggregations! +} + +type QueueJobQueueAgg { + value: String! + label: String! + count: Int! +} + +type QueueJobStatusAgg { + value: QueueJobStatus! + label: String! + count: Int! +} + +type QueueJobsAggregations { + queue: [QueueJobQueueAgg!] + status: [QueueJobStatusAgg!] +} + +enum QueueJobStatus { + pending + retry + failed + processed +} + +input QueueEnqueueReprocessTorrentsBatchInput { + batchSize: Int + chunkSize: Int + contentTypes: [ContentType] + orphans: Boolean + classifierRematch: Boolean + classifierWorkflow: String + apisDisabled: Boolean + localSearchDisabled: Boolean +} + +type QueueMutation { + purgeJobs(input: QueuePurgeJobsInput!): Void + enqueueReprocessTorrentsBatch( + input: QueueEnqueueReprocessTorrentsBatchInput + ): Void +} + +input QueuePurgeJobsInput { + queues: [String!] + statuses: [QueueJobStatus!] } `, BuiltIn: false}, {Name: "../../graphql/schema/scalars.graphqls", Input: `scalar Hash20 scalar Date scalar DateTime +scalar Duration scalar Void scalar Year `, BuiltIn: false}, - {Name: "../../graphql/schema/search.graphqls", Input: `input SearchQueryInput { + {Name: "../../graphql/schema/torrent_content.graphqls", Input: `input TorrentContentSearchQueryInput { queryString: String limit: Int + page: Int offset: Int totalCount: Boolean """ hasNextPage if true, the search result will include the hasNextPage field, indicating if there are more results to fetch """ hasNextPage: Boolean + infoHashes: [Hash20!] + facets: TorrentContentFacetsInput + orderBy: [TorrentContentOrderByInput!] cached: Boolean aggregationBudget: Float } @@ -2114,9 +2929,31 @@ type TorrentContentSearchResult { } input TorrentContentOrderByInput { - field: TorrentContentOrderBy! + field: TorrentContentOrderByField! descending: Boolean } +`, BuiltIn: false}, + {Name: "../../graphql/schema/torrent_files.graphqls", Input: `input TorrentFilesQueryInput { + limit: Int + page: Int + offset: Int + totalCount: Boolean + hasNextPage: Boolean + infoHashes: [Hash20!] + orderBy: [TorrentFilesOrderByInput!] + cached: Boolean +} + +input TorrentFilesOrderByInput { + field: TorrentFilesOrderByField! + descending: Boolean +} + +type TorrentFilesQueryResult { + totalCount: Int! + hasNextPage: Boolean + items: [TorrentFile!]! +} `, BuiltIn: false}, } var parsedSchema = gqlparser.MustLoadSchema(sources...) @@ -2128,182 +2965,563 @@ var parsedSchema = gqlparser.MustLoadSchema(sources...) func (ec *executionContext) field_Query___type_args(ctx context.Context, rawArgs map[string]interface{}) (map[string]interface{}, error) { var err error args := map[string]interface{}{} - var arg0 string - if tmp, ok := rawArgs["name"]; ok { - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("name")) - arg0, err = ec.unmarshalNString2string(ctx, tmp) - if err != nil { - return nil, err - } + arg0, err := ec.field_Query___type_argsName(ctx, rawArgs) + if err != nil { + return nil, err } args["name"] = arg0 return args, nil } +func (ec *executionContext) field_Query___type_argsName( + ctx context.Context, + rawArgs map[string]interface{}, +) (string, error) { + // We won't call the directive if the argument is null. + // Set call_argument_directives_with_null to true to call directives + // even if the argument is null. + _, ok := rawArgs["name"] + if !ok { + var zeroVal string + return zeroVal, nil + } + + ctx = graphql.WithPathContext(ctx, graphql.NewPathWithField("name")) + if tmp, ok := rawArgs["name"]; ok { + return ec.unmarshalNString2string(ctx, tmp) + } + + var zeroVal string + return zeroVal, nil +} + +func (ec *executionContext) field_QueueMutation_enqueueReprocessTorrentsBatch_args(ctx context.Context, rawArgs map[string]interface{}) (map[string]interface{}, error) { + var err error + args := map[string]interface{}{} + arg0, err := ec.field_QueueMutation_enqueueReprocessTorrentsBatch_argsInput(ctx, rawArgs) + if err != nil { + return nil, err + } + args["input"] = arg0 + return args, nil +} +func (ec *executionContext) field_QueueMutation_enqueueReprocessTorrentsBatch_argsInput( + ctx context.Context, + rawArgs map[string]interface{}, +) (manager.EnqueueReprocessTorrentsBatchRequest, error) { + // We won't call the directive if the argument is null. + // Set call_argument_directives_with_null to true to call directives + // even if the argument is null. + _, ok := rawArgs["input"] + if !ok { + var zeroVal manager.EnqueueReprocessTorrentsBatchRequest + return zeroVal, nil + } + + ctx = graphql.WithPathContext(ctx, graphql.NewPathWithField("input")) + if tmp, ok := rawArgs["input"]; ok { + return ec.unmarshalOQueueEnqueueReprocessTorrentsBatchInput2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋqueueᚋmanagerᚐEnqueueReprocessTorrentsBatchRequest(ctx, tmp) + } + + var zeroVal manager.EnqueueReprocessTorrentsBatchRequest + return zeroVal, nil +} + +func (ec *executionContext) field_QueueMutation_purgeJobs_args(ctx context.Context, rawArgs map[string]interface{}) (map[string]interface{}, error) { + var err error + args := map[string]interface{}{} + arg0, err := ec.field_QueueMutation_purgeJobs_argsInput(ctx, rawArgs) + if err != nil { + return nil, err + } + args["input"] = arg0 + return args, nil +} +func (ec *executionContext) field_QueueMutation_purgeJobs_argsInput( + ctx context.Context, + rawArgs map[string]interface{}, +) (manager.PurgeJobsRequest, error) { + // We won't call the directive if the argument is null. + // Set call_argument_directives_with_null to true to call directives + // even if the argument is null. + _, ok := rawArgs["input"] + if !ok { + var zeroVal manager.PurgeJobsRequest + return zeroVal, nil + } + + ctx = graphql.WithPathContext(ctx, graphql.NewPathWithField("input")) + if tmp, ok := rawArgs["input"]; ok { + return ec.unmarshalNQueuePurgeJobsInput2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋqueueᚋmanagerᚐPurgeJobsRequest(ctx, tmp) + } + + var zeroVal manager.PurgeJobsRequest + return zeroVal, nil +} + +func (ec *executionContext) field_QueueQuery_jobs_args(ctx context.Context, rawArgs map[string]interface{}) (map[string]interface{}, error) { + var err error + args := map[string]interface{}{} + arg0, err := ec.field_QueueQuery_jobs_argsInput(ctx, rawArgs) + if err != nil { + return nil, err + } + args["input"] = arg0 + return args, nil +} +func (ec *executionContext) field_QueueQuery_jobs_argsInput( + ctx context.Context, + rawArgs map[string]interface{}, +) (gqlmodel.QueueJobsQueryInput, error) { + // We won't call the directive if the argument is null. + // Set call_argument_directives_with_null to true to call directives + // even if the argument is null. + _, ok := rawArgs["input"] + if !ok { + var zeroVal gqlmodel.QueueJobsQueryInput + return zeroVal, nil + } + + ctx = graphql.WithPathContext(ctx, graphql.NewPathWithField("input")) + if tmp, ok := rawArgs["input"]; ok { + return ec.unmarshalNQueueJobsQueryInput2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚐQueueJobsQueryInput(ctx, tmp) + } + + var zeroVal gqlmodel.QueueJobsQueryInput + return zeroVal, nil +} + +func (ec *executionContext) field_QueueQuery_metrics_args(ctx context.Context, rawArgs map[string]interface{}) (map[string]interface{}, error) { + var err error + args := map[string]interface{}{} + arg0, err := ec.field_QueueQuery_metrics_argsInput(ctx, rawArgs) + if err != nil { + return nil, err + } + args["input"] = arg0 + return args, nil +} +func (ec *executionContext) field_QueueQuery_metrics_argsInput( + ctx context.Context, + rawArgs map[string]interface{}, +) (gen.QueueMetricsQueryInput, error) { + // We won't call the directive if the argument is null. + // Set call_argument_directives_with_null to true to call directives + // even if the argument is null. + _, ok := rawArgs["input"] + if !ok { + var zeroVal gen.QueueMetricsQueryInput + return zeroVal, nil + } + + ctx = graphql.WithPathContext(ctx, graphql.NewPathWithField("input")) + if tmp, ok := rawArgs["input"]; ok { + return ec.unmarshalNQueueMetricsQueryInput2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚋgenᚐQueueMetricsQueryInput(ctx, tmp) + } + + var zeroVal gen.QueueMetricsQueryInput + return zeroVal, nil +} func (ec *executionContext) field_TorrentContentQuery_search_args(ctx context.Context, rawArgs map[string]interface{}) (map[string]interface{}, error) { var err error args := map[string]interface{}{} - var arg0 *query.SearchParams - if tmp, ok := rawArgs["query"]; ok { - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("query")) - arg0, err = ec.unmarshalOSearchQueryInput2ᚖgithubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋdatabaseᚋqueryᚐSearchParams(ctx, tmp) - if err != nil { - return nil, err - } + arg0, err := ec.field_TorrentContentQuery_search_argsInput(ctx, rawArgs) + if err != nil { + return nil, err } - args["query"] = arg0 - var arg1 *gen.TorrentContentFacetsInput - if tmp, ok := rawArgs["facets"]; ok { - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("facets")) - arg1, err = ec.unmarshalOTorrentContentFacetsInput2ᚖgithubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚋgenᚐTorrentContentFacetsInput(ctx, tmp) - if err != nil { - return nil, err - } - } - args["facets"] = arg1 - var arg2 []gen.TorrentContentOrderByInput - if tmp, ok := rawArgs["orderBy"]; ok { - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("orderBy")) - arg2, err = ec.unmarshalOTorrentContentOrderByInput2ᚕgithubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚋgenᚐTorrentContentOrderByInputᚄ(ctx, tmp) - if err != nil { - return nil, err - } - } - args["orderBy"] = arg2 + args["input"] = arg0 return args, nil } +func (ec *executionContext) field_TorrentContentQuery_search_argsInput( + ctx context.Context, + rawArgs map[string]interface{}, +) (gqlmodel.TorrentContentSearchQueryInput, error) { + // We won't call the directive if the argument is null. + // Set call_argument_directives_with_null to true to call directives + // even if the argument is null. + _, ok := rawArgs["input"] + if !ok { + var zeroVal gqlmodel.TorrentContentSearchQueryInput + return zeroVal, nil + } + + ctx = graphql.WithPathContext(ctx, graphql.NewPathWithField("input")) + if tmp, ok := rawArgs["input"]; ok { + return ec.unmarshalNTorrentContentSearchQueryInput2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚐTorrentContentSearchQueryInput(ctx, tmp) + } + + var zeroVal gqlmodel.TorrentContentSearchQueryInput + return zeroVal, nil +} func (ec *executionContext) field_TorrentMutation_deleteTags_args(ctx context.Context, rawArgs map[string]interface{}) (map[string]interface{}, error) { var err error args := map[string]interface{}{} - var arg0 []protocol.ID - if tmp, ok := rawArgs["infoHashes"]; ok { - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("infoHashes")) - arg0, err = ec.unmarshalOHash202ᚕgithubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋprotocolᚐIDᚄ(ctx, tmp) - if err != nil { - return nil, err - } + arg0, err := ec.field_TorrentMutation_deleteTags_argsInfoHashes(ctx, rawArgs) + if err != nil { + return nil, err } args["infoHashes"] = arg0 - var arg1 []string - if tmp, ok := rawArgs["tagNames"]; ok { - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("tagNames")) - arg1, err = ec.unmarshalOString2ᚕstringᚄ(ctx, tmp) - if err != nil { - return nil, err - } + arg1, err := ec.field_TorrentMutation_deleteTags_argsTagNames(ctx, rawArgs) + if err != nil { + return nil, err } args["tagNames"] = arg1 return args, nil } +func (ec *executionContext) field_TorrentMutation_deleteTags_argsInfoHashes( + ctx context.Context, + rawArgs map[string]interface{}, +) ([]protocol.ID, error) { + // We won't call the directive if the argument is null. + // Set call_argument_directives_with_null to true to call directives + // even if the argument is null. + _, ok := rawArgs["infoHashes"] + if !ok { + var zeroVal []protocol.ID + return zeroVal, nil + } + + ctx = graphql.WithPathContext(ctx, graphql.NewPathWithField("infoHashes")) + if tmp, ok := rawArgs["infoHashes"]; ok { + return ec.unmarshalOHash202ᚕgithubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋprotocolᚐIDᚄ(ctx, tmp) + } + + var zeroVal []protocol.ID + return zeroVal, nil +} + +func (ec *executionContext) field_TorrentMutation_deleteTags_argsTagNames( + ctx context.Context, + rawArgs map[string]interface{}, +) ([]string, error) { + // We won't call the directive if the argument is null. + // Set call_argument_directives_with_null to true to call directives + // even if the argument is null. + _, ok := rawArgs["tagNames"] + if !ok { + var zeroVal []string + return zeroVal, nil + } + + ctx = graphql.WithPathContext(ctx, graphql.NewPathWithField("tagNames")) + if tmp, ok := rawArgs["tagNames"]; ok { + return ec.unmarshalOString2ᚕstringᚄ(ctx, tmp) + } + + var zeroVal []string + return zeroVal, nil +} func (ec *executionContext) field_TorrentMutation_delete_args(ctx context.Context, rawArgs map[string]interface{}) (map[string]interface{}, error) { var err error args := map[string]interface{}{} - var arg0 []protocol.ID - if tmp, ok := rawArgs["infoHashes"]; ok { - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("infoHashes")) - arg0, err = ec.unmarshalNHash202ᚕgithubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋprotocolᚐIDᚄ(ctx, tmp) - if err != nil { - return nil, err - } + arg0, err := ec.field_TorrentMutation_delete_argsInfoHashes(ctx, rawArgs) + if err != nil { + return nil, err } args["infoHashes"] = arg0 return args, nil } +func (ec *executionContext) field_TorrentMutation_delete_argsInfoHashes( + ctx context.Context, + rawArgs map[string]interface{}, +) ([]protocol.ID, error) { + // We won't call the directive if the argument is null. + // Set call_argument_directives_with_null to true to call directives + // even if the argument is null. + _, ok := rawArgs["infoHashes"] + if !ok { + var zeroVal []protocol.ID + return zeroVal, nil + } + + ctx = graphql.WithPathContext(ctx, graphql.NewPathWithField("infoHashes")) + if tmp, ok := rawArgs["infoHashes"]; ok { + return ec.unmarshalNHash202ᚕgithubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋprotocolᚐIDᚄ(ctx, tmp) + } + + var zeroVal []protocol.ID + return zeroVal, nil +} func (ec *executionContext) field_TorrentMutation_putTags_args(ctx context.Context, rawArgs map[string]interface{}) (map[string]interface{}, error) { var err error args := map[string]interface{}{} - var arg0 []protocol.ID - if tmp, ok := rawArgs["infoHashes"]; ok { - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("infoHashes")) - arg0, err = ec.unmarshalNHash202ᚕgithubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋprotocolᚐIDᚄ(ctx, tmp) - if err != nil { - return nil, err - } + arg0, err := ec.field_TorrentMutation_putTags_argsInfoHashes(ctx, rawArgs) + if err != nil { + return nil, err } args["infoHashes"] = arg0 - var arg1 []string - if tmp, ok := rawArgs["tagNames"]; ok { - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("tagNames")) - arg1, err = ec.unmarshalNString2ᚕstringᚄ(ctx, tmp) - if err != nil { - return nil, err - } + arg1, err := ec.field_TorrentMutation_putTags_argsTagNames(ctx, rawArgs) + if err != nil { + return nil, err } args["tagNames"] = arg1 return args, nil } +func (ec *executionContext) field_TorrentMutation_putTags_argsInfoHashes( + ctx context.Context, + rawArgs map[string]interface{}, +) ([]protocol.ID, error) { + // We won't call the directive if the argument is null. + // Set call_argument_directives_with_null to true to call directives + // even if the argument is null. + _, ok := rawArgs["infoHashes"] + if !ok { + var zeroVal []protocol.ID + return zeroVal, nil + } + + ctx = graphql.WithPathContext(ctx, graphql.NewPathWithField("infoHashes")) + if tmp, ok := rawArgs["infoHashes"]; ok { + return ec.unmarshalNHash202ᚕgithubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋprotocolᚐIDᚄ(ctx, tmp) + } + + var zeroVal []protocol.ID + return zeroVal, nil +} + +func (ec *executionContext) field_TorrentMutation_putTags_argsTagNames( + ctx context.Context, + rawArgs map[string]interface{}, +) ([]string, error) { + // We won't call the directive if the argument is null. + // Set call_argument_directives_with_null to true to call directives + // even if the argument is null. + _, ok := rawArgs["tagNames"] + if !ok { + var zeroVal []string + return zeroVal, nil + } + + ctx = graphql.WithPathContext(ctx, graphql.NewPathWithField("tagNames")) + if tmp, ok := rawArgs["tagNames"]; ok { + return ec.unmarshalNString2ᚕstringᚄ(ctx, tmp) + } + + var zeroVal []string + return zeroVal, nil +} func (ec *executionContext) field_TorrentMutation_setTags_args(ctx context.Context, rawArgs map[string]interface{}) (map[string]interface{}, error) { var err error args := map[string]interface{}{} - var arg0 []protocol.ID - if tmp, ok := rawArgs["infoHashes"]; ok { - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("infoHashes")) - arg0, err = ec.unmarshalNHash202ᚕgithubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋprotocolᚐIDᚄ(ctx, tmp) - if err != nil { - return nil, err - } + arg0, err := ec.field_TorrentMutation_setTags_argsInfoHashes(ctx, rawArgs) + if err != nil { + return nil, err } args["infoHashes"] = arg0 - var arg1 []string - if tmp, ok := rawArgs["tagNames"]; ok { - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("tagNames")) - arg1, err = ec.unmarshalNString2ᚕstringᚄ(ctx, tmp) - if err != nil { - return nil, err - } + arg1, err := ec.field_TorrentMutation_setTags_argsTagNames(ctx, rawArgs) + if err != nil { + return nil, err } args["tagNames"] = arg1 return args, nil } +func (ec *executionContext) field_TorrentMutation_setTags_argsInfoHashes( + ctx context.Context, + rawArgs map[string]interface{}, +) ([]protocol.ID, error) { + // We won't call the directive if the argument is null. + // Set call_argument_directives_with_null to true to call directives + // even if the argument is null. + _, ok := rawArgs["infoHashes"] + if !ok { + var zeroVal []protocol.ID + return zeroVal, nil + } + + ctx = graphql.WithPathContext(ctx, graphql.NewPathWithField("infoHashes")) + if tmp, ok := rawArgs["infoHashes"]; ok { + return ec.unmarshalNHash202ᚕgithubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋprotocolᚐIDᚄ(ctx, tmp) + } + + var zeroVal []protocol.ID + return zeroVal, nil +} + +func (ec *executionContext) field_TorrentMutation_setTags_argsTagNames( + ctx context.Context, + rawArgs map[string]interface{}, +) ([]string, error) { + // We won't call the directive if the argument is null. + // Set call_argument_directives_with_null to true to call directives + // even if the argument is null. + _, ok := rawArgs["tagNames"] + if !ok { + var zeroVal []string + return zeroVal, nil + } + + ctx = graphql.WithPathContext(ctx, graphql.NewPathWithField("tagNames")) + if tmp, ok := rawArgs["tagNames"]; ok { + return ec.unmarshalNString2ᚕstringᚄ(ctx, tmp) + } + + var zeroVal []string + return zeroVal, nil +} + +func (ec *executionContext) field_TorrentQuery_files_args(ctx context.Context, rawArgs map[string]interface{}) (map[string]interface{}, error) { + var err error + args := map[string]interface{}{} + arg0, err := ec.field_TorrentQuery_files_argsInput(ctx, rawArgs) + if err != nil { + return nil, err + } + args["input"] = arg0 + return args, nil +} +func (ec *executionContext) field_TorrentQuery_files_argsInput( + ctx context.Context, + rawArgs map[string]interface{}, +) (gqlmodel.TorrentFilesQueryInput, error) { + // We won't call the directive if the argument is null. + // Set call_argument_directives_with_null to true to call directives + // even if the argument is null. + _, ok := rawArgs["input"] + if !ok { + var zeroVal gqlmodel.TorrentFilesQueryInput + return zeroVal, nil + } + + ctx = graphql.WithPathContext(ctx, graphql.NewPathWithField("input")) + if tmp, ok := rawArgs["input"]; ok { + return ec.unmarshalNTorrentFilesQueryInput2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚐTorrentFilesQueryInput(ctx, tmp) + } + + var zeroVal gqlmodel.TorrentFilesQueryInput + return zeroVal, nil +} + +func (ec *executionContext) field_TorrentQuery_metrics_args(ctx context.Context, rawArgs map[string]interface{}) (map[string]interface{}, error) { + var err error + args := map[string]interface{}{} + arg0, err := ec.field_TorrentQuery_metrics_argsInput(ctx, rawArgs) + if err != nil { + return nil, err + } + args["input"] = arg0 + return args, nil +} +func (ec *executionContext) field_TorrentQuery_metrics_argsInput( + ctx context.Context, + rawArgs map[string]interface{}, +) (gen.TorrentMetricsQueryInput, error) { + // We won't call the directive if the argument is null. + // Set call_argument_directives_with_null to true to call directives + // even if the argument is null. + _, ok := rawArgs["input"] + if !ok { + var zeroVal gen.TorrentMetricsQueryInput + return zeroVal, nil + } + + ctx = graphql.WithPathContext(ctx, graphql.NewPathWithField("input")) + if tmp, ok := rawArgs["input"]; ok { + return ec.unmarshalNTorrentMetricsQueryInput2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚋgenᚐTorrentMetricsQueryInput(ctx, tmp) + } + + var zeroVal gen.TorrentMetricsQueryInput + return zeroVal, nil +} func (ec *executionContext) field_TorrentQuery_suggestTags_args(ctx context.Context, rawArgs map[string]interface{}) (map[string]interface{}, error) { var err error args := map[string]interface{}{} - var arg0 *gen.SuggestTagsQueryInput - if tmp, ok := rawArgs["query"]; ok { - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("query")) - arg0, err = ec.unmarshalOSuggestTagsQueryInput2ᚖgithubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚋgenᚐSuggestTagsQueryInput(ctx, tmp) - if err != nil { - return nil, err - } + arg0, err := ec.field_TorrentQuery_suggestTags_argsInput(ctx, rawArgs) + if err != nil { + return nil, err } - args["query"] = arg0 + args["input"] = arg0 return args, nil } +func (ec *executionContext) field_TorrentQuery_suggestTags_argsInput( + ctx context.Context, + rawArgs map[string]interface{}, +) (*gen.SuggestTagsQueryInput, error) { + // We won't call the directive if the argument is null. + // Set call_argument_directives_with_null to true to call directives + // even if the argument is null. + _, ok := rawArgs["input"] + if !ok { + var zeroVal *gen.SuggestTagsQueryInput + return zeroVal, nil + } + + ctx = graphql.WithPathContext(ctx, graphql.NewPathWithField("input")) + if tmp, ok := rawArgs["input"]; ok { + return ec.unmarshalOSuggestTagsQueryInput2ᚖgithubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚋgenᚐSuggestTagsQueryInput(ctx, tmp) + } + + var zeroVal *gen.SuggestTagsQueryInput + return zeroVal, nil +} func (ec *executionContext) field___Type_enumValues_args(ctx context.Context, rawArgs map[string]interface{}) (map[string]interface{}, error) { var err error args := map[string]interface{}{} - var arg0 bool - if tmp, ok := rawArgs["includeDeprecated"]; ok { - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("includeDeprecated")) - arg0, err = ec.unmarshalOBoolean2bool(ctx, tmp) - if err != nil { - return nil, err - } + arg0, err := ec.field___Type_enumValues_argsIncludeDeprecated(ctx, rawArgs) + if err != nil { + return nil, err } args["includeDeprecated"] = arg0 return args, nil } +func (ec *executionContext) field___Type_enumValues_argsIncludeDeprecated( + ctx context.Context, + rawArgs map[string]interface{}, +) (bool, error) { + // We won't call the directive if the argument is null. + // Set call_argument_directives_with_null to true to call directives + // even if the argument is null. + _, ok := rawArgs["includeDeprecated"] + if !ok { + var zeroVal bool + return zeroVal, nil + } + + ctx = graphql.WithPathContext(ctx, graphql.NewPathWithField("includeDeprecated")) + if tmp, ok := rawArgs["includeDeprecated"]; ok { + return ec.unmarshalOBoolean2bool(ctx, tmp) + } + + var zeroVal bool + return zeroVal, nil +} func (ec *executionContext) field___Type_fields_args(ctx context.Context, rawArgs map[string]interface{}) (map[string]interface{}, error) { var err error args := map[string]interface{}{} - var arg0 bool - if tmp, ok := rawArgs["includeDeprecated"]; ok { - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("includeDeprecated")) - arg0, err = ec.unmarshalOBoolean2bool(ctx, tmp) - if err != nil { - return nil, err - } + arg0, err := ec.field___Type_fields_argsIncludeDeprecated(ctx, rawArgs) + if err != nil { + return nil, err } args["includeDeprecated"] = arg0 return args, nil } +func (ec *executionContext) field___Type_fields_argsIncludeDeprecated( + ctx context.Context, + rawArgs map[string]interface{}, +) (bool, error) { + // We won't call the directive if the argument is null. + // Set call_argument_directives_with_null to true to call directives + // even if the argument is null. + _, ok := rawArgs["includeDeprecated"] + if !ok { + var zeroVal bool + return zeroVal, nil + } + + ctx = graphql.WithPathContext(ctx, graphql.NewPathWithField("includeDeprecated")) + if tmp, ok := rawArgs["includeDeprecated"]; ok { + return ec.unmarshalOBoolean2bool(ctx, tmp) + } + + var zeroVal bool + return zeroVal, nil +} // endregion ***************************** args.gotpl ***************************** @@ -2344,7 +3562,7 @@ func (ec *executionContext) _Content_type(ctx context.Context, field graphql.Col return ec.marshalNContentType2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐContentType(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_Content_type(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_Content_type(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "Content", Field: field, @@ -2388,7 +3606,7 @@ func (ec *executionContext) _Content_source(ctx context.Context, field graphql.C return ec.marshalNString2string(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_Content_source(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_Content_source(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "Content", Field: field, @@ -2432,7 +3650,7 @@ func (ec *executionContext) _Content_id(ctx context.Context, field graphql.Colle return ec.marshalNString2string(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_Content_id(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_Content_id(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "Content", Field: field, @@ -2476,7 +3694,7 @@ func (ec *executionContext) _Content_title(ctx context.Context, field graphql.Co return ec.marshalNString2string(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_Content_title(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_Content_title(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "Content", Field: field, @@ -2517,7 +3735,7 @@ func (ec *executionContext) _Content_releaseDate(ctx context.Context, field grap return ec.marshalODate2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐDate(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_Content_releaseDate(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_Content_releaseDate(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "Content", Field: field, @@ -2558,7 +3776,7 @@ func (ec *executionContext) _Content_releaseYear(ctx context.Context, field grap return ec.marshalOYear2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐYear(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_Content_releaseYear(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_Content_releaseYear(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "Content", Field: field, @@ -2599,7 +3817,7 @@ func (ec *executionContext) _Content_adult(ctx context.Context, field graphql.Co return ec.marshalOBoolean2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐNullBool(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_Content_adult(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_Content_adult(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "Content", Field: field, @@ -2640,7 +3858,7 @@ func (ec *executionContext) _Content_originalLanguage(ctx context.Context, field return ec.marshalOLanguageInfo2ᚖgithubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐLanguage(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_Content_originalLanguage(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_Content_originalLanguage(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "Content", Field: field, @@ -2687,7 +3905,7 @@ func (ec *executionContext) _Content_originalTitle(ctx context.Context, field gr return ec.marshalOString2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐNullString(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_Content_originalTitle(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_Content_originalTitle(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "Content", Field: field, @@ -2728,7 +3946,7 @@ func (ec *executionContext) _Content_overview(ctx context.Context, field graphql return ec.marshalOString2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐNullString(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_Content_overview(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_Content_overview(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "Content", Field: field, @@ -2769,7 +3987,7 @@ func (ec *executionContext) _Content_runtime(ctx context.Context, field graphql. return ec.marshalOInt2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐNullUint16(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_Content_runtime(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_Content_runtime(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "Content", Field: field, @@ -2810,7 +4028,7 @@ func (ec *executionContext) _Content_popularity(ctx context.Context, field graph return ec.marshalOFloat2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐNullFloat32(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_Content_popularity(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_Content_popularity(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "Content", Field: field, @@ -2851,7 +4069,7 @@ func (ec *executionContext) _Content_voteAverage(ctx context.Context, field grap return ec.marshalOFloat2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐNullFloat32(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_Content_voteAverage(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_Content_voteAverage(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "Content", Field: field, @@ -2892,7 +4110,7 @@ func (ec *executionContext) _Content_voteCount(ctx context.Context, field graphq return ec.marshalOInt2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐNullUint(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_Content_voteCount(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_Content_voteCount(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "Content", Field: field, @@ -2936,7 +4154,7 @@ func (ec *executionContext) _Content_attributes(ctx context.Context, field graph return ec.marshalNContentAttribute2ᚕgithubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐContentAttributeᚄ(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_Content_attributes(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_Content_attributes(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "Content", Field: field, @@ -2994,7 +4212,7 @@ func (ec *executionContext) _Content_collections(ctx context.Context, field grap return ec.marshalNContentCollection2ᚕgithubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐContentCollectionᚄ(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_Content_collections(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_Content_collections(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "Content", Field: field, @@ -3054,7 +4272,7 @@ func (ec *executionContext) _Content_metadataSource(ctx context.Context, field g return ec.marshalNMetadataSource2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐMetadataSource(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_Content_metadataSource(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_Content_metadataSource(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "Content", Field: field, @@ -3104,7 +4322,7 @@ func (ec *executionContext) _Content_externalLinks(ctx context.Context, field gr return ec.marshalNExternalLink2ᚕgithubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐExternalLinkᚄ(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_Content_externalLinks(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_Content_externalLinks(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "Content", Field: field, @@ -3154,7 +4372,7 @@ func (ec *executionContext) _Content_createdAt(ctx context.Context, field graphq return ec.marshalNDateTime2timeᚐTime(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_Content_createdAt(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_Content_createdAt(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "Content", Field: field, @@ -3198,7 +4416,7 @@ func (ec *executionContext) _Content_updatedAt(ctx context.Context, field graphq return ec.marshalNDateTime2timeᚐTime(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_Content_updatedAt(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_Content_updatedAt(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "Content", Field: field, @@ -3242,7 +4460,7 @@ func (ec *executionContext) _ContentAttribute_source(ctx context.Context, field return ec.marshalNString2string(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_ContentAttribute_source(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_ContentAttribute_source(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "ContentAttribute", Field: field, @@ -3286,7 +4504,7 @@ func (ec *executionContext) _ContentAttribute_key(ctx context.Context, field gra return ec.marshalNString2string(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_ContentAttribute_key(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_ContentAttribute_key(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "ContentAttribute", Field: field, @@ -3330,7 +4548,7 @@ func (ec *executionContext) _ContentAttribute_value(ctx context.Context, field g return ec.marshalNString2string(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_ContentAttribute_value(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_ContentAttribute_value(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "ContentAttribute", Field: field, @@ -3374,7 +4592,7 @@ func (ec *executionContext) _ContentAttribute_metadataSource(ctx context.Context return ec.marshalNMetadataSource2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐMetadataSource(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_ContentAttribute_metadataSource(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_ContentAttribute_metadataSource(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "ContentAttribute", Field: field, @@ -3424,7 +4642,7 @@ func (ec *executionContext) _ContentAttribute_createdAt(ctx context.Context, fie return ec.marshalNDateTime2timeᚐTime(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_ContentAttribute_createdAt(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_ContentAttribute_createdAt(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "ContentAttribute", Field: field, @@ -3468,7 +4686,7 @@ func (ec *executionContext) _ContentAttribute_updatedAt(ctx context.Context, fie return ec.marshalNDateTime2timeᚐTime(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_ContentAttribute_updatedAt(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_ContentAttribute_updatedAt(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "ContentAttribute", Field: field, @@ -3512,7 +4730,7 @@ func (ec *executionContext) _ContentCollection_type(ctx context.Context, field g return ec.marshalNString2string(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_ContentCollection_type(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_ContentCollection_type(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "ContentCollection", Field: field, @@ -3556,7 +4774,7 @@ func (ec *executionContext) _ContentCollection_source(ctx context.Context, field return ec.marshalNString2string(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_ContentCollection_source(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_ContentCollection_source(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "ContentCollection", Field: field, @@ -3600,7 +4818,7 @@ func (ec *executionContext) _ContentCollection_id(ctx context.Context, field gra return ec.marshalNString2string(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_ContentCollection_id(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_ContentCollection_id(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "ContentCollection", Field: field, @@ -3644,7 +4862,7 @@ func (ec *executionContext) _ContentCollection_name(ctx context.Context, field g return ec.marshalNString2string(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_ContentCollection_name(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_ContentCollection_name(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "ContentCollection", Field: field, @@ -3688,7 +4906,7 @@ func (ec *executionContext) _ContentCollection_metadataSource(ctx context.Contex return ec.marshalNMetadataSource2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐMetadataSource(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_ContentCollection_metadataSource(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_ContentCollection_metadataSource(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "ContentCollection", Field: field, @@ -3738,7 +4956,7 @@ func (ec *executionContext) _ContentCollection_createdAt(ctx context.Context, fi return ec.marshalNDateTime2timeᚐTime(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_ContentCollection_createdAt(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_ContentCollection_createdAt(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "ContentCollection", Field: field, @@ -3782,7 +5000,7 @@ func (ec *executionContext) _ContentCollection_updatedAt(ctx context.Context, fi return ec.marshalNDateTime2timeᚐTime(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_ContentCollection_updatedAt(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_ContentCollection_updatedAt(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "ContentCollection", Field: field, @@ -3823,7 +5041,7 @@ func (ec *executionContext) _ContentTypeAgg_value(ctx context.Context, field gra return ec.marshalOContentType2ᚖgithubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐContentType(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_ContentTypeAgg_value(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_ContentTypeAgg_value(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "ContentTypeAgg", Field: field, @@ -3867,7 +5085,7 @@ func (ec *executionContext) _ContentTypeAgg_label(ctx context.Context, field gra return ec.marshalNString2string(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_ContentTypeAgg_label(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_ContentTypeAgg_label(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "ContentTypeAgg", Field: field, @@ -3911,7 +5129,7 @@ func (ec *executionContext) _ContentTypeAgg_count(ctx context.Context, field gra return ec.marshalNInt2int(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_ContentTypeAgg_count(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_ContentTypeAgg_count(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "ContentTypeAgg", Field: field, @@ -3955,7 +5173,7 @@ func (ec *executionContext) _ContentTypeAgg_isEstimate(ctx context.Context, fiel return ec.marshalNBoolean2bool(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_ContentTypeAgg_isEstimate(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_ContentTypeAgg_isEstimate(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "ContentTypeAgg", Field: field, @@ -3999,7 +5217,7 @@ func (ec *executionContext) _Episodes_label(ctx context.Context, field graphql.C return ec.marshalNString2string(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_Episodes_label(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_Episodes_label(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "Episodes", Field: field, @@ -4043,7 +5261,7 @@ func (ec *executionContext) _Episodes_seasons(ctx context.Context, field graphql return ec.marshalNSeason2ᚕgithubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐSeasonᚄ(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_Episodes_seasons(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_Episodes_seasons(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "Episodes", Field: field, @@ -4093,7 +5311,7 @@ func (ec *executionContext) _ExternalLink_metadataSource(ctx context.Context, fi return ec.marshalNMetadataSource2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐMetadataSource(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_ExternalLink_metadataSource(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_ExternalLink_metadataSource(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "ExternalLink", Field: field, @@ -4143,7 +5361,7 @@ func (ec *executionContext) _ExternalLink_url(ctx context.Context, field graphql return ec.marshalNString2string(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_ExternalLink_url(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_ExternalLink_url(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "ExternalLink", Field: field, @@ -4187,7 +5405,7 @@ func (ec *executionContext) _GenreAgg_value(ctx context.Context, field graphql.C return ec.marshalNString2string(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_GenreAgg_value(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_GenreAgg_value(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "GenreAgg", Field: field, @@ -4231,7 +5449,7 @@ func (ec *executionContext) _GenreAgg_label(ctx context.Context, field graphql.C return ec.marshalNString2string(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_GenreAgg_label(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_GenreAgg_label(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "GenreAgg", Field: field, @@ -4275,7 +5493,7 @@ func (ec *executionContext) _GenreAgg_count(ctx context.Context, field graphql.C return ec.marshalNInt2int(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_GenreAgg_count(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_GenreAgg_count(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "GenreAgg", Field: field, @@ -4319,7 +5537,7 @@ func (ec *executionContext) _GenreAgg_isEstimate(ctx context.Context, field grap return ec.marshalNBoolean2bool(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_GenreAgg_isEstimate(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_GenreAgg_isEstimate(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "GenreAgg", Field: field, @@ -4332,6 +5550,277 @@ func (ec *executionContext) fieldContext_GenreAgg_isEstimate(ctx context.Context return fc, nil } +func (ec *executionContext) _HealthCheck_key(ctx context.Context, field graphql.CollectedField, obj *gen.HealthCheck) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_HealthCheck_key(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.Key, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(string) + fc.Result = res + return ec.marshalNString2string(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_HealthCheck_key(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "HealthCheck", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type String does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) _HealthCheck_status(ctx context.Context, field graphql.CollectedField, obj *gen.HealthCheck) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_HealthCheck_status(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.Status, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(gen.HealthStatus) + fc.Result = res + return ec.marshalNHealthStatus2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚋgenᚐHealthStatus(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_HealthCheck_status(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "HealthCheck", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type HealthStatus does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) _HealthCheck_timestamp(ctx context.Context, field graphql.CollectedField, obj *gen.HealthCheck) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_HealthCheck_timestamp(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.Timestamp, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(time.Time) + fc.Result = res + return ec.marshalNDateTime2timeᚐTime(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_HealthCheck_timestamp(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "HealthCheck", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type DateTime does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) _HealthCheck_error(ctx context.Context, field graphql.CollectedField, obj *gen.HealthCheck) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_HealthCheck_error(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.Error, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + return graphql.Null + } + res := resTmp.(*string) + fc.Result = res + return ec.marshalOString2ᚖstring(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_HealthCheck_error(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "HealthCheck", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type String does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) _HealthQuery_status(ctx context.Context, field graphql.CollectedField, obj *gen.HealthQuery) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_HealthQuery_status(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.Status, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(gen.HealthStatus) + fc.Result = res + return ec.marshalNHealthStatus2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚋgenᚐHealthStatus(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_HealthQuery_status(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "HealthQuery", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type HealthStatus does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) _HealthQuery_checks(ctx context.Context, field graphql.CollectedField, obj *gen.HealthQuery) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_HealthQuery_checks(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.Checks, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.([]gen.HealthCheck) + fc.Result = res + return ec.marshalNHealthCheck2ᚕgithubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚋgenᚐHealthCheckᚄ(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_HealthQuery_checks(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "HealthQuery", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + switch field.Name { + case "key": + return ec.fieldContext_HealthCheck_key(ctx, field) + case "status": + return ec.fieldContext_HealthCheck_status(ctx, field) + case "timestamp": + return ec.fieldContext_HealthCheck_timestamp(ctx, field) + case "error": + return ec.fieldContext_HealthCheck_error(ctx, field) + } + return nil, fmt.Errorf("no field named %q was found under type HealthCheck", field.Name) + }, + } + return fc, nil +} + func (ec *executionContext) _LanguageAgg_value(ctx context.Context, field graphql.CollectedField, obj *gen.LanguageAgg) (ret graphql.Marshaler) { fc, err := ec.fieldContext_LanguageAgg_value(ctx, field) if err != nil { @@ -4363,7 +5852,7 @@ func (ec *executionContext) _LanguageAgg_value(ctx context.Context, field graphq return ec.marshalNLanguage2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐLanguage(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_LanguageAgg_value(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_LanguageAgg_value(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "LanguageAgg", Field: field, @@ -4407,7 +5896,7 @@ func (ec *executionContext) _LanguageAgg_label(ctx context.Context, field graphq return ec.marshalNString2string(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_LanguageAgg_label(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_LanguageAgg_label(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "LanguageAgg", Field: field, @@ -4451,7 +5940,7 @@ func (ec *executionContext) _LanguageAgg_count(ctx context.Context, field graphq return ec.marshalNInt2int(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_LanguageAgg_count(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_LanguageAgg_count(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "LanguageAgg", Field: field, @@ -4495,7 +5984,7 @@ func (ec *executionContext) _LanguageAgg_isEstimate(ctx context.Context, field g return ec.marshalNBoolean2bool(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_LanguageAgg_isEstimate(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_LanguageAgg_isEstimate(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "LanguageAgg", Field: field, @@ -4539,7 +6028,7 @@ func (ec *executionContext) _LanguageInfo_id(ctx context.Context, field graphql. return ec.marshalNString2string(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_LanguageInfo_id(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_LanguageInfo_id(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "LanguageInfo", Field: field, @@ -4583,7 +6072,7 @@ func (ec *executionContext) _LanguageInfo_name(ctx context.Context, field graphq return ec.marshalNString2string(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_LanguageInfo_name(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_LanguageInfo_name(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "LanguageInfo", Field: field, @@ -4627,7 +6116,7 @@ func (ec *executionContext) _MetadataSource_key(ctx context.Context, field graph return ec.marshalNString2string(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_MetadataSource_key(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_MetadataSource_key(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "MetadataSource", Field: field, @@ -4671,7 +6160,7 @@ func (ec *executionContext) _MetadataSource_name(ctx context.Context, field grap return ec.marshalNString2string(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_MetadataSource_name(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_MetadataSource_name(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "MetadataSource", Field: field, @@ -4715,7 +6204,7 @@ func (ec *executionContext) _Mutation_torrent(ctx context.Context, field graphql return ec.marshalNTorrentMutation2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚐTorrentMutation(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_Mutation_torrent(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_Mutation_torrent(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "Mutation", Field: field, @@ -4738,6 +6227,248 @@ func (ec *executionContext) fieldContext_Mutation_torrent(ctx context.Context, f return fc, nil } +func (ec *executionContext) _Mutation_queue(ctx context.Context, field graphql.CollectedField) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_Mutation_queue(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return ec.resolvers.Mutation().Queue(rctx) + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(gqlmodel.QueueMutation) + fc.Result = res + return ec.marshalNQueueMutation2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚐQueueMutation(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_Mutation_queue(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "Mutation", + Field: field, + IsMethod: true, + IsResolver: true, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + switch field.Name { + case "purgeJobs": + return ec.fieldContext_QueueMutation_purgeJobs(ctx, field) + case "enqueueReprocessTorrentsBatch": + return ec.fieldContext_QueueMutation_enqueueReprocessTorrentsBatch(ctx, field) + } + return nil, fmt.Errorf("no field named %q was found under type QueueMutation", field.Name) + }, + } + return fc, nil +} + +func (ec *executionContext) _Query_version(ctx context.Context, field graphql.CollectedField) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_Query_version(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return ec.resolvers.Query().Version(rctx) + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(string) + fc.Result = res + return ec.marshalNString2string(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_Query_version(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "Query", + Field: field, + IsMethod: true, + IsResolver: true, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type String does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) _Query_workers(ctx context.Context, field graphql.CollectedField) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_Query_workers(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return ec.resolvers.Query().Workers(rctx) + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(gen.WorkersQuery) + fc.Result = res + return ec.marshalNWorkersQuery2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚋgenᚐWorkersQuery(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_Query_workers(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "Query", + Field: field, + IsMethod: true, + IsResolver: true, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + switch field.Name { + case "listAll": + return ec.fieldContext_WorkersQuery_listAll(ctx, field) + } + return nil, fmt.Errorf("no field named %q was found under type WorkersQuery", field.Name) + }, + } + return fc, nil +} + +func (ec *executionContext) _Query_health(ctx context.Context, field graphql.CollectedField) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_Query_health(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return ec.resolvers.Query().Health(rctx) + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(gen.HealthQuery) + fc.Result = res + return ec.marshalNHealthQuery2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚋgenᚐHealthQuery(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_Query_health(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "Query", + Field: field, + IsMethod: true, + IsResolver: true, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + switch field.Name { + case "status": + return ec.fieldContext_HealthQuery_status(ctx, field) + case "checks": + return ec.fieldContext_HealthQuery_checks(ctx, field) + } + return nil, fmt.Errorf("no field named %q was found under type HealthQuery", field.Name) + }, + } + return fc, nil +} + +func (ec *executionContext) _Query_queue(ctx context.Context, field graphql.CollectedField) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_Query_queue(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return ec.resolvers.Query().Queue(rctx) + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(gqlmodel.QueueQuery) + fc.Result = res + return ec.marshalNQueueQuery2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚐQueueQuery(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_Query_queue(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "Query", + Field: field, + IsMethod: true, + IsResolver: true, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + switch field.Name { + case "jobs": + return ec.fieldContext_QueueQuery_jobs(ctx, field) + case "metrics": + return ec.fieldContext_QueueQuery_metrics(ctx, field) + } + return nil, fmt.Errorf("no field named %q was found under type QueueQuery", field.Name) + }, + } + return fc, nil +} + func (ec *executionContext) _Query_torrent(ctx context.Context, field graphql.CollectedField) (ret graphql.Marshaler) { fc, err := ec.fieldContext_Query_torrent(ctx, field) if err != nil { @@ -4769,7 +6500,7 @@ func (ec *executionContext) _Query_torrent(ctx context.Context, field graphql.Co return ec.marshalNTorrentQuery2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚐTorrentQuery(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_Query_torrent(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_Query_torrent(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "Query", Field: field, @@ -4777,8 +6508,14 @@ func (ec *executionContext) fieldContext_Query_torrent(ctx context.Context, fiel IsResolver: true, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { switch field.Name { + case "files": + return ec.fieldContext_TorrentQuery_files(ctx, field) + case "listSources": + return ec.fieldContext_TorrentQuery_listSources(ctx, field) case "suggestTags": return ec.fieldContext_TorrentQuery_suggestTags(ctx, field) + case "metrics": + return ec.fieldContext_TorrentQuery_metrics(ctx, field) } return nil, fmt.Errorf("no field named %q was found under type TorrentQuery", field.Name) }, @@ -4817,7 +6554,7 @@ func (ec *executionContext) _Query_torrentContent(ctx context.Context, field gra return ec.marshalNTorrentContentQuery2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚐTorrentContentQuery(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_Query_torrentContent(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_Query_torrentContent(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "Query", Field: field, @@ -4834,54 +6571,6 @@ func (ec *executionContext) fieldContext_Query_torrentContent(ctx context.Contex return fc, nil } -func (ec *executionContext) _Query_system(ctx context.Context, field graphql.CollectedField) (ret graphql.Marshaler) { - fc, err := ec.fieldContext_Query_system(ctx, field) - if err != nil { - return graphql.Null - } - ctx = graphql.WithFieldContext(ctx, fc) - defer func() { - if r := recover(); r != nil { - ec.Error(ctx, ec.Recover(ctx, r)) - ret = graphql.Null - } - }() - resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { - ctx = rctx // use context from middleware stack in children - return ec.resolvers.Query().System(rctx) - }) - if err != nil { - ec.Error(ctx, err) - return graphql.Null - } - if resTmp == nil { - if !graphql.HasFieldError(ctx, fc) { - ec.Errorf(ctx, "must not be null") - } - return graphql.Null - } - res := resTmp.(gen.SystemQuery) - fc.Result = res - return ec.marshalNSystemQuery2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚋgenᚐSystemQuery(ctx, field.Selections, res) -} - -func (ec *executionContext) fieldContext_Query_system(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { - fc = &graphql.FieldContext{ - Object: "Query", - Field: field, - IsMethod: true, - IsResolver: true, - Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { - switch field.Name { - case "version": - return ec.fieldContext_SystemQuery_version(ctx, field) - } - return nil, fmt.Errorf("no field named %q was found under type SystemQuery", field.Name) - }, - } - return fc, nil -} - func (ec *executionContext) _Query___type(ctx context.Context, field graphql.CollectedField) (ret graphql.Marshaler) { fc, err := ec.fieldContext_Query___type(ctx, field) if err != nil { @@ -4984,7 +6673,7 @@ func (ec *executionContext) _Query___schema(ctx context.Context, field graphql.C return ec.marshalO__Schema2ᚖgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐSchema(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_Query___schema(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_Query___schema(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "Query", Field: field, @@ -5011,6 +6700,1593 @@ func (ec *executionContext) fieldContext_Query___schema(ctx context.Context, fie return fc, nil } +func (ec *executionContext) _QueueJob_id(ctx context.Context, field graphql.CollectedField, obj *model.QueueJob) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_QueueJob_id(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.ID, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(string) + fc.Result = res + return ec.marshalNID2string(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_QueueJob_id(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "QueueJob", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type ID does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) _QueueJob_queue(ctx context.Context, field graphql.CollectedField, obj *model.QueueJob) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_QueueJob_queue(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.Queue, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(string) + fc.Result = res + return ec.marshalNString2string(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_QueueJob_queue(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "QueueJob", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type String does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) _QueueJob_status(ctx context.Context, field graphql.CollectedField, obj *model.QueueJob) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_QueueJob_status(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.Status, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(model.QueueJobStatus) + fc.Result = res + return ec.marshalNQueueJobStatus2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐQueueJobStatus(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_QueueJob_status(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "QueueJob", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type QueueJobStatus does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) _QueueJob_payload(ctx context.Context, field graphql.CollectedField, obj *model.QueueJob) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_QueueJob_payload(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.Payload, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(string) + fc.Result = res + return ec.marshalNString2string(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_QueueJob_payload(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "QueueJob", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type String does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) _QueueJob_priority(ctx context.Context, field graphql.CollectedField, obj *model.QueueJob) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_QueueJob_priority(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.Priority, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(int) + fc.Result = res + return ec.marshalNInt2int(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_QueueJob_priority(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "QueueJob", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type Int does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) _QueueJob_retries(ctx context.Context, field graphql.CollectedField, obj *model.QueueJob) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_QueueJob_retries(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.Retries, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(uint) + fc.Result = res + return ec.marshalNInt2uint(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_QueueJob_retries(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "QueueJob", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type Int does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) _QueueJob_maxRetries(ctx context.Context, field graphql.CollectedField, obj *model.QueueJob) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_QueueJob_maxRetries(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.MaxRetries, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(uint) + fc.Result = res + return ec.marshalNInt2uint(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_QueueJob_maxRetries(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "QueueJob", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type Int does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) _QueueJob_runAfter(ctx context.Context, field graphql.CollectedField, obj *model.QueueJob) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_QueueJob_runAfter(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.RunAfter, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(time.Time) + fc.Result = res + return ec.marshalNDateTime2timeᚐTime(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_QueueJob_runAfter(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "QueueJob", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type DateTime does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) _QueueJob_ranAt(ctx context.Context, field graphql.CollectedField, obj *model.QueueJob) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_QueueJob_ranAt(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return ec.resolvers.QueueJob().RanAt(rctx, obj) + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + return graphql.Null + } + res := resTmp.(*time.Time) + fc.Result = res + return ec.marshalODateTime2ᚖtimeᚐTime(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_QueueJob_ranAt(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "QueueJob", + Field: field, + IsMethod: true, + IsResolver: true, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type DateTime does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) _QueueJob_error(ctx context.Context, field graphql.CollectedField, obj *model.QueueJob) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_QueueJob_error(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.Error, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + return graphql.Null + } + res := resTmp.(model.NullString) + fc.Result = res + return ec.marshalOString2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐNullString(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_QueueJob_error(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "QueueJob", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type String does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) _QueueJob_createdAt(ctx context.Context, field graphql.CollectedField, obj *model.QueueJob) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_QueueJob_createdAt(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.CreatedAt, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(time.Time) + fc.Result = res + return ec.marshalNDateTime2timeᚐTime(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_QueueJob_createdAt(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "QueueJob", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type DateTime does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) _QueueJobQueueAgg_value(ctx context.Context, field graphql.CollectedField, obj *gen.QueueJobQueueAgg) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_QueueJobQueueAgg_value(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.Value, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(string) + fc.Result = res + return ec.marshalNString2string(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_QueueJobQueueAgg_value(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "QueueJobQueueAgg", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type String does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) _QueueJobQueueAgg_label(ctx context.Context, field graphql.CollectedField, obj *gen.QueueJobQueueAgg) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_QueueJobQueueAgg_label(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.Label, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(string) + fc.Result = res + return ec.marshalNString2string(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_QueueJobQueueAgg_label(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "QueueJobQueueAgg", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type String does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) _QueueJobQueueAgg_count(ctx context.Context, field graphql.CollectedField, obj *gen.QueueJobQueueAgg) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_QueueJobQueueAgg_count(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.Count, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(int) + fc.Result = res + return ec.marshalNInt2int(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_QueueJobQueueAgg_count(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "QueueJobQueueAgg", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type Int does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) _QueueJobStatusAgg_value(ctx context.Context, field graphql.CollectedField, obj *gen.QueueJobStatusAgg) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_QueueJobStatusAgg_value(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.Value, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(model.QueueJobStatus) + fc.Result = res + return ec.marshalNQueueJobStatus2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐQueueJobStatus(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_QueueJobStatusAgg_value(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "QueueJobStatusAgg", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type QueueJobStatus does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) _QueueJobStatusAgg_label(ctx context.Context, field graphql.CollectedField, obj *gen.QueueJobStatusAgg) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_QueueJobStatusAgg_label(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.Label, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(string) + fc.Result = res + return ec.marshalNString2string(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_QueueJobStatusAgg_label(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "QueueJobStatusAgg", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type String does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) _QueueJobStatusAgg_count(ctx context.Context, field graphql.CollectedField, obj *gen.QueueJobStatusAgg) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_QueueJobStatusAgg_count(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.Count, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(int) + fc.Result = res + return ec.marshalNInt2int(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_QueueJobStatusAgg_count(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "QueueJobStatusAgg", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type Int does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) _QueueJobsAggregations_queue(ctx context.Context, field graphql.CollectedField, obj *gen.QueueJobsAggregations) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_QueueJobsAggregations_queue(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.Queue, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + return graphql.Null + } + res := resTmp.([]gen.QueueJobQueueAgg) + fc.Result = res + return ec.marshalOQueueJobQueueAgg2ᚕgithubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚋgenᚐQueueJobQueueAggᚄ(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_QueueJobsAggregations_queue(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "QueueJobsAggregations", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + switch field.Name { + case "value": + return ec.fieldContext_QueueJobQueueAgg_value(ctx, field) + case "label": + return ec.fieldContext_QueueJobQueueAgg_label(ctx, field) + case "count": + return ec.fieldContext_QueueJobQueueAgg_count(ctx, field) + } + return nil, fmt.Errorf("no field named %q was found under type QueueJobQueueAgg", field.Name) + }, + } + return fc, nil +} + +func (ec *executionContext) _QueueJobsAggregations_status(ctx context.Context, field graphql.CollectedField, obj *gen.QueueJobsAggregations) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_QueueJobsAggregations_status(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.Status, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + return graphql.Null + } + res := resTmp.([]gen.QueueJobStatusAgg) + fc.Result = res + return ec.marshalOQueueJobStatusAgg2ᚕgithubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚋgenᚐQueueJobStatusAggᚄ(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_QueueJobsAggregations_status(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "QueueJobsAggregations", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + switch field.Name { + case "value": + return ec.fieldContext_QueueJobStatusAgg_value(ctx, field) + case "label": + return ec.fieldContext_QueueJobStatusAgg_label(ctx, field) + case "count": + return ec.fieldContext_QueueJobStatusAgg_count(ctx, field) + } + return nil, fmt.Errorf("no field named %q was found under type QueueJobStatusAgg", field.Name) + }, + } + return fc, nil +} + +func (ec *executionContext) _QueueJobsQueryResult_totalCount(ctx context.Context, field graphql.CollectedField, obj *gqlmodel.QueueJobsQueryResult) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_QueueJobsQueryResult_totalCount(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.TotalCount, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(uint) + fc.Result = res + return ec.marshalNInt2uint(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_QueueJobsQueryResult_totalCount(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "QueueJobsQueryResult", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type Int does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) _QueueJobsQueryResult_hasNextPage(ctx context.Context, field graphql.CollectedField, obj *gqlmodel.QueueJobsQueryResult) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_QueueJobsQueryResult_hasNextPage(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.HasNextPage, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + return graphql.Null + } + res := resTmp.(bool) + fc.Result = res + return ec.marshalOBoolean2bool(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_QueueJobsQueryResult_hasNextPage(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "QueueJobsQueryResult", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type Boolean does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) _QueueJobsQueryResult_items(ctx context.Context, field graphql.CollectedField, obj *gqlmodel.QueueJobsQueryResult) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_QueueJobsQueryResult_items(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.Items, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.([]model.QueueJob) + fc.Result = res + return ec.marshalNQueueJob2ᚕgithubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐQueueJobᚄ(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_QueueJobsQueryResult_items(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "QueueJobsQueryResult", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + switch field.Name { + case "id": + return ec.fieldContext_QueueJob_id(ctx, field) + case "queue": + return ec.fieldContext_QueueJob_queue(ctx, field) + case "status": + return ec.fieldContext_QueueJob_status(ctx, field) + case "payload": + return ec.fieldContext_QueueJob_payload(ctx, field) + case "priority": + return ec.fieldContext_QueueJob_priority(ctx, field) + case "retries": + return ec.fieldContext_QueueJob_retries(ctx, field) + case "maxRetries": + return ec.fieldContext_QueueJob_maxRetries(ctx, field) + case "runAfter": + return ec.fieldContext_QueueJob_runAfter(ctx, field) + case "ranAt": + return ec.fieldContext_QueueJob_ranAt(ctx, field) + case "error": + return ec.fieldContext_QueueJob_error(ctx, field) + case "createdAt": + return ec.fieldContext_QueueJob_createdAt(ctx, field) + } + return nil, fmt.Errorf("no field named %q was found under type QueueJob", field.Name) + }, + } + return fc, nil +} + +func (ec *executionContext) _QueueJobsQueryResult_aggregations(ctx context.Context, field graphql.CollectedField, obj *gqlmodel.QueueJobsQueryResult) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_QueueJobsQueryResult_aggregations(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.Aggregations, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(gen.QueueJobsAggregations) + fc.Result = res + return ec.marshalNQueueJobsAggregations2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚋgenᚐQueueJobsAggregations(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_QueueJobsQueryResult_aggregations(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "QueueJobsQueryResult", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + switch field.Name { + case "queue": + return ec.fieldContext_QueueJobsAggregations_queue(ctx, field) + case "status": + return ec.fieldContext_QueueJobsAggregations_status(ctx, field) + } + return nil, fmt.Errorf("no field named %q was found under type QueueJobsAggregations", field.Name) + }, + } + return fc, nil +} + +func (ec *executionContext) _QueueMetricsBucket_queue(ctx context.Context, field graphql.CollectedField, obj *queuemetrics.Bucket) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_QueueMetricsBucket_queue(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.Queue, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(string) + fc.Result = res + return ec.marshalNString2string(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_QueueMetricsBucket_queue(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "QueueMetricsBucket", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type String does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) _QueueMetricsBucket_status(ctx context.Context, field graphql.CollectedField, obj *queuemetrics.Bucket) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_QueueMetricsBucket_status(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.Status, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(model.QueueJobStatus) + fc.Result = res + return ec.marshalNQueueJobStatus2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐQueueJobStatus(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_QueueMetricsBucket_status(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "QueueMetricsBucket", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type QueueJobStatus does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) _QueueMetricsBucket_createdAtBucket(ctx context.Context, field graphql.CollectedField, obj *queuemetrics.Bucket) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_QueueMetricsBucket_createdAtBucket(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.CreatedAtBucket, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(time.Time) + fc.Result = res + return ec.marshalNDateTime2timeᚐTime(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_QueueMetricsBucket_createdAtBucket(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "QueueMetricsBucket", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type DateTime does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) _QueueMetricsBucket_ranAtBucket(ctx context.Context, field graphql.CollectedField, obj *queuemetrics.Bucket) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_QueueMetricsBucket_ranAtBucket(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.RanAtBucket, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + return graphql.Null + } + res := resTmp.(time.Time) + fc.Result = res + return ec.marshalODateTime2timeᚐTime(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_QueueMetricsBucket_ranAtBucket(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "QueueMetricsBucket", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type DateTime does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) _QueueMetricsBucket_count(ctx context.Context, field graphql.CollectedField, obj *queuemetrics.Bucket) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_QueueMetricsBucket_count(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.Count, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(uint) + fc.Result = res + return ec.marshalNInt2uint(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_QueueMetricsBucket_count(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "QueueMetricsBucket", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type Int does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) _QueueMetricsBucket_latency(ctx context.Context, field graphql.CollectedField, obj *queuemetrics.Bucket) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_QueueMetricsBucket_latency(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.Latency, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + return graphql.Null + } + res := resTmp.(*time.Duration) + fc.Result = res + return ec.marshalODuration2ᚖtimeᚐDuration(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_QueueMetricsBucket_latency(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "QueueMetricsBucket", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type Duration does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) _QueueMetricsQueryResult_buckets(ctx context.Context, field graphql.CollectedField, obj *gen.QueueMetricsQueryResult) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_QueueMetricsQueryResult_buckets(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.Buckets, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.([]queuemetrics.Bucket) + fc.Result = res + return ec.marshalNQueueMetricsBucket2ᚕgithubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmetricsᚋqueuemetricsᚐBucketᚄ(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_QueueMetricsQueryResult_buckets(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "QueueMetricsQueryResult", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + switch field.Name { + case "queue": + return ec.fieldContext_QueueMetricsBucket_queue(ctx, field) + case "status": + return ec.fieldContext_QueueMetricsBucket_status(ctx, field) + case "createdAtBucket": + return ec.fieldContext_QueueMetricsBucket_createdAtBucket(ctx, field) + case "ranAtBucket": + return ec.fieldContext_QueueMetricsBucket_ranAtBucket(ctx, field) + case "count": + return ec.fieldContext_QueueMetricsBucket_count(ctx, field) + case "latency": + return ec.fieldContext_QueueMetricsBucket_latency(ctx, field) + } + return nil, fmt.Errorf("no field named %q was found under type QueueMetricsBucket", field.Name) + }, + } + return fc, nil +} + +func (ec *executionContext) _QueueMutation_purgeJobs(ctx context.Context, field graphql.CollectedField, obj *gqlmodel.QueueMutation) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_QueueMutation_purgeJobs(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.PurgeJobs(ctx, fc.Args["input"].(manager.PurgeJobsRequest)) + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + return graphql.Null + } + res := resTmp.(*string) + fc.Result = res + return ec.marshalOVoid2ᚖstring(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_QueueMutation_purgeJobs(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "QueueMutation", + Field: field, + IsMethod: true, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type Void does not have child fields") + }, + } + defer func() { + if r := recover(); r != nil { + err = ec.Recover(ctx, r) + ec.Error(ctx, err) + } + }() + ctx = graphql.WithFieldContext(ctx, fc) + if fc.Args, err = ec.field_QueueMutation_purgeJobs_args(ctx, field.ArgumentMap(ec.Variables)); err != nil { + ec.Error(ctx, err) + return fc, err + } + return fc, nil +} + +func (ec *executionContext) _QueueMutation_enqueueReprocessTorrentsBatch(ctx context.Context, field graphql.CollectedField, obj *gqlmodel.QueueMutation) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_QueueMutation_enqueueReprocessTorrentsBatch(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.EnqueueReprocessTorrentsBatch(ctx, fc.Args["input"].(manager.EnqueueReprocessTorrentsBatchRequest)) + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + return graphql.Null + } + res := resTmp.(*string) + fc.Result = res + return ec.marshalOVoid2ᚖstring(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_QueueMutation_enqueueReprocessTorrentsBatch(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "QueueMutation", + Field: field, + IsMethod: true, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type Void does not have child fields") + }, + } + defer func() { + if r := recover(); r != nil { + err = ec.Recover(ctx, r) + ec.Error(ctx, err) + } + }() + ctx = graphql.WithFieldContext(ctx, fc) + if fc.Args, err = ec.field_QueueMutation_enqueueReprocessTorrentsBatch_args(ctx, field.ArgumentMap(ec.Variables)); err != nil { + ec.Error(ctx, err) + return fc, err + } + return fc, nil +} + +func (ec *executionContext) _QueueQuery_jobs(ctx context.Context, field graphql.CollectedField, obj *gqlmodel.QueueQuery) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_QueueQuery_jobs(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return ec.resolvers.QueueQuery().Jobs(rctx, obj, fc.Args["input"].(gqlmodel.QueueJobsQueryInput)) + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(gqlmodel.QueueJobsQueryResult) + fc.Result = res + return ec.marshalNQueueJobsQueryResult2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚐQueueJobsQueryResult(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_QueueQuery_jobs(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "QueueQuery", + Field: field, + IsMethod: true, + IsResolver: true, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + switch field.Name { + case "totalCount": + return ec.fieldContext_QueueJobsQueryResult_totalCount(ctx, field) + case "hasNextPage": + return ec.fieldContext_QueueJobsQueryResult_hasNextPage(ctx, field) + case "items": + return ec.fieldContext_QueueJobsQueryResult_items(ctx, field) + case "aggregations": + return ec.fieldContext_QueueJobsQueryResult_aggregations(ctx, field) + } + return nil, fmt.Errorf("no field named %q was found under type QueueJobsQueryResult", field.Name) + }, + } + defer func() { + if r := recover(); r != nil { + err = ec.Recover(ctx, r) + ec.Error(ctx, err) + } + }() + ctx = graphql.WithFieldContext(ctx, fc) + if fc.Args, err = ec.field_QueueQuery_jobs_args(ctx, field.ArgumentMap(ec.Variables)); err != nil { + ec.Error(ctx, err) + return fc, err + } + return fc, nil +} + +func (ec *executionContext) _QueueQuery_metrics(ctx context.Context, field graphql.CollectedField, obj *gqlmodel.QueueQuery) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_QueueQuery_metrics(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.Metrics(ctx, fc.Args["input"].(gen.QueueMetricsQueryInput)) + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(*gen.QueueMetricsQueryResult) + fc.Result = res + return ec.marshalNQueueMetricsQueryResult2ᚖgithubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚋgenᚐQueueMetricsQueryResult(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_QueueQuery_metrics(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "QueueQuery", + Field: field, + IsMethod: true, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + switch field.Name { + case "buckets": + return ec.fieldContext_QueueMetricsQueryResult_buckets(ctx, field) + } + return nil, fmt.Errorf("no field named %q was found under type QueueMetricsQueryResult", field.Name) + }, + } + defer func() { + if r := recover(); r != nil { + err = ec.Recover(ctx, r) + ec.Error(ctx, err) + } + }() + ctx = graphql.WithFieldContext(ctx, fc) + if fc.Args, err = ec.field_QueueQuery_metrics_args(ctx, field.ArgumentMap(ec.Variables)); err != nil { + ec.Error(ctx, err) + return fc, err + } + return fc, nil +} + func (ec *executionContext) _ReleaseYearAgg_value(ctx context.Context, field graphql.CollectedField, obj *gen.ReleaseYearAgg) (ret graphql.Marshaler) { fc, err := ec.fieldContext_ReleaseYearAgg_value(ctx, field) if err != nil { @@ -5039,7 +8315,7 @@ func (ec *executionContext) _ReleaseYearAgg_value(ctx context.Context, field gra return ec.marshalOYear2ᚖgithubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐYear(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_ReleaseYearAgg_value(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_ReleaseYearAgg_value(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "ReleaseYearAgg", Field: field, @@ -5083,7 +8359,7 @@ func (ec *executionContext) _ReleaseYearAgg_label(ctx context.Context, field gra return ec.marshalNString2string(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_ReleaseYearAgg_label(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_ReleaseYearAgg_label(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "ReleaseYearAgg", Field: field, @@ -5127,7 +8403,7 @@ func (ec *executionContext) _ReleaseYearAgg_count(ctx context.Context, field gra return ec.marshalNInt2int(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_ReleaseYearAgg_count(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_ReleaseYearAgg_count(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "ReleaseYearAgg", Field: field, @@ -5171,7 +8447,7 @@ func (ec *executionContext) _ReleaseYearAgg_isEstimate(ctx context.Context, fiel return ec.marshalNBoolean2bool(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_ReleaseYearAgg_isEstimate(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_ReleaseYearAgg_isEstimate(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "ReleaseYearAgg", Field: field, @@ -5215,7 +8491,7 @@ func (ec *executionContext) _Season_season(ctx context.Context, field graphql.Co return ec.marshalNInt2int(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_Season_season(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_Season_season(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "Season", Field: field, @@ -5256,7 +8532,7 @@ func (ec *executionContext) _Season_episodes(ctx context.Context, field graphql. return ec.marshalOInt2ᚕintᚄ(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_Season_episodes(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_Season_episodes(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "Season", Field: field, @@ -5300,7 +8576,7 @@ func (ec *executionContext) _SuggestedTag_name(ctx context.Context, field graphq return ec.marshalNString2string(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_SuggestedTag_name(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_SuggestedTag_name(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "SuggestedTag", Field: field, @@ -5344,7 +8620,7 @@ func (ec *executionContext) _SuggestedTag_count(ctx context.Context, field graph return ec.marshalNInt2int(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_SuggestedTag_count(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_SuggestedTag_count(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "SuggestedTag", Field: field, @@ -5357,50 +8633,6 @@ func (ec *executionContext) fieldContext_SuggestedTag_count(ctx context.Context, return fc, nil } -func (ec *executionContext) _SystemQuery_version(ctx context.Context, field graphql.CollectedField, obj *gen.SystemQuery) (ret graphql.Marshaler) { - fc, err := ec.fieldContext_SystemQuery_version(ctx, field) - if err != nil { - return graphql.Null - } - ctx = graphql.WithFieldContext(ctx, fc) - defer func() { - if r := recover(); r != nil { - ec.Error(ctx, ec.Recover(ctx, r)) - ret = graphql.Null - } - }() - resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { - ctx = rctx // use context from middleware stack in children - return obj.Version, nil - }) - if err != nil { - ec.Error(ctx, err) - return graphql.Null - } - if resTmp == nil { - if !graphql.HasFieldError(ctx, fc) { - ec.Errorf(ctx, "must not be null") - } - return graphql.Null - } - res := resTmp.(string) - fc.Result = res - return ec.marshalNString2string(ctx, field.Selections, res) -} - -func (ec *executionContext) fieldContext_SystemQuery_version(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { - fc = &graphql.FieldContext{ - Object: "SystemQuery", - Field: field, - IsMethod: false, - IsResolver: false, - Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { - return nil, errors.New("field of type String does not have child fields") - }, - } - return fc, nil -} - func (ec *executionContext) _Torrent_infoHash(ctx context.Context, field graphql.CollectedField, obj *model.Torrent) (ret graphql.Marshaler) { fc, err := ec.fieldContext_Torrent_infoHash(ctx, field) if err != nil { @@ -5432,7 +8664,7 @@ func (ec *executionContext) _Torrent_infoHash(ctx context.Context, field graphql return ec.marshalNHash202githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋprotocolᚐID(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_Torrent_infoHash(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_Torrent_infoHash(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "Torrent", Field: field, @@ -5476,7 +8708,7 @@ func (ec *executionContext) _Torrent_name(ctx context.Context, field graphql.Col return ec.marshalNString2string(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_Torrent_name(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_Torrent_name(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "Torrent", Field: field, @@ -5520,7 +8752,7 @@ func (ec *executionContext) _Torrent_size(ctx context.Context, field graphql.Col return ec.marshalNInt2uint(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_Torrent_size(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_Torrent_size(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "Torrent", Field: field, @@ -5564,7 +8796,7 @@ func (ec *executionContext) _Torrent_hasFilesInfo(ctx context.Context, field gra return ec.marshalNBoolean2bool(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_Torrent_hasFilesInfo(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_Torrent_hasFilesInfo(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "Torrent", Field: field, @@ -5605,7 +8837,7 @@ func (ec *executionContext) _Torrent_singleFile(ctx context.Context, field graph return ec.marshalOBoolean2bool(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_Torrent_singleFile(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_Torrent_singleFile(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "Torrent", Field: field, @@ -5646,7 +8878,7 @@ func (ec *executionContext) _Torrent_extension(ctx context.Context, field graphq return ec.marshalOString2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐNullString(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_Torrent_extension(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_Torrent_extension(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "Torrent", Field: field, @@ -5690,7 +8922,7 @@ func (ec *executionContext) _Torrent_filesStatus(ctx context.Context, field grap return ec.marshalNFilesStatus2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐFilesStatus(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_Torrent_filesStatus(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_Torrent_filesStatus(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "Torrent", Field: field, @@ -5731,7 +8963,7 @@ func (ec *executionContext) _Torrent_filesCount(ctx context.Context, field graph return ec.marshalOInt2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐNullUint(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_Torrent_filesCount(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_Torrent_filesCount(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "Torrent", Field: field, @@ -5772,7 +9004,7 @@ func (ec *executionContext) _Torrent_fileType(ctx context.Context, field graphql return ec.marshalOFileType2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐNullFileType(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_Torrent_fileType(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_Torrent_fileType(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "Torrent", Field: field, @@ -5813,7 +9045,7 @@ func (ec *executionContext) _Torrent_fileTypes(ctx context.Context, field graphq return ec.marshalOFileType2ᚕgithubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐFileTypeᚄ(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_Torrent_fileTypes(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_Torrent_fileTypes(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "Torrent", Field: field, @@ -5854,7 +9086,7 @@ func (ec *executionContext) _Torrent_files(ctx context.Context, field graphql.Co return ec.marshalOTorrentFile2ᚕgithubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐTorrentFileᚄ(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_Torrent_files(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_Torrent_files(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "Torrent", Field: field, @@ -5911,12 +9143,12 @@ func (ec *executionContext) _Torrent_sources(ctx context.Context, field graphql. } return graphql.Null } - res := resTmp.([]gqlmodel.TorrentSource) + res := resTmp.([]gqlmodel.TorrentSourceInfo) fc.Result = res - return ec.marshalNTorrentSource2ᚕgithubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚐTorrentSourceᚄ(ctx, field.Selections, res) + return ec.marshalNTorrentSourceInfo2ᚕgithubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚐTorrentSourceInfoᚄ(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_Torrent_sources(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_Torrent_sources(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "Torrent", Field: field, @@ -5925,17 +9157,17 @@ func (ec *executionContext) fieldContext_Torrent_sources(ctx context.Context, fi Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { switch field.Name { case "key": - return ec.fieldContext_TorrentSource_key(ctx, field) + return ec.fieldContext_TorrentSourceInfo_key(ctx, field) case "name": - return ec.fieldContext_TorrentSource_name(ctx, field) + return ec.fieldContext_TorrentSourceInfo_name(ctx, field) case "importId": - return ec.fieldContext_TorrentSource_importId(ctx, field) + return ec.fieldContext_TorrentSourceInfo_importId(ctx, field) case "seeders": - return ec.fieldContext_TorrentSource_seeders(ctx, field) + return ec.fieldContext_TorrentSourceInfo_seeders(ctx, field) case "leechers": - return ec.fieldContext_TorrentSource_leechers(ctx, field) + return ec.fieldContext_TorrentSourceInfo_leechers(ctx, field) } - return nil, fmt.Errorf("no field named %q was found under type TorrentSource", field.Name) + return nil, fmt.Errorf("no field named %q was found under type TorrentSourceInfo", field.Name) }, } return fc, nil @@ -5969,7 +9201,7 @@ func (ec *executionContext) _Torrent_seeders(ctx context.Context, field graphql. return ec.marshalOInt2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐNullUint(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_Torrent_seeders(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_Torrent_seeders(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "Torrent", Field: field, @@ -6010,7 +9242,7 @@ func (ec *executionContext) _Torrent_leechers(ctx context.Context, field graphql return ec.marshalOInt2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐNullUint(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_Torrent_leechers(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_Torrent_leechers(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "Torrent", Field: field, @@ -6054,7 +9286,7 @@ func (ec *executionContext) _Torrent_tagNames(ctx context.Context, field graphql return ec.marshalNString2ᚕstringᚄ(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_Torrent_tagNames(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_Torrent_tagNames(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "Torrent", Field: field, @@ -6098,7 +9330,7 @@ func (ec *executionContext) _Torrent_magnetUri(ctx context.Context, field graphq return ec.marshalNString2string(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_Torrent_magnetUri(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_Torrent_magnetUri(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "Torrent", Field: field, @@ -6142,7 +9374,7 @@ func (ec *executionContext) _Torrent_createdAt(ctx context.Context, field graphq return ec.marshalNDateTime2timeᚐTime(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_Torrent_createdAt(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_Torrent_createdAt(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "Torrent", Field: field, @@ -6186,7 +9418,7 @@ func (ec *executionContext) _Torrent_updatedAt(ctx context.Context, field graphq return ec.marshalNDateTime2timeᚐTime(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_Torrent_updatedAt(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_Torrent_updatedAt(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "Torrent", Field: field, @@ -6230,7 +9462,7 @@ func (ec *executionContext) _TorrentContent_id(ctx context.Context, field graphq return ec.marshalNID2string(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_TorrentContent_id(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_TorrentContent_id(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "TorrentContent", Field: field, @@ -6274,7 +9506,7 @@ func (ec *executionContext) _TorrentContent_infoHash(ctx context.Context, field return ec.marshalNHash202githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋprotocolᚐID(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_TorrentContent_infoHash(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_TorrentContent_infoHash(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "TorrentContent", Field: field, @@ -6318,7 +9550,7 @@ func (ec *executionContext) _TorrentContent_torrent(ctx context.Context, field g return ec.marshalNTorrent2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐTorrent(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_TorrentContent_torrent(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_TorrentContent_torrent(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "TorrentContent", Field: field, @@ -6397,7 +9629,7 @@ func (ec *executionContext) _TorrentContent_contentType(ctx context.Context, fie return ec.marshalOContentType2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐNullContentType(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_TorrentContent_contentType(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_TorrentContent_contentType(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "TorrentContent", Field: field, @@ -6438,7 +9670,7 @@ func (ec *executionContext) _TorrentContent_contentSource(ctx context.Context, f return ec.marshalOString2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐNullString(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_TorrentContent_contentSource(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_TorrentContent_contentSource(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "TorrentContent", Field: field, @@ -6479,7 +9711,7 @@ func (ec *executionContext) _TorrentContent_contentId(ctx context.Context, field return ec.marshalOString2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐNullString(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_TorrentContent_contentId(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_TorrentContent_contentId(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "TorrentContent", Field: field, @@ -6520,7 +9752,7 @@ func (ec *executionContext) _TorrentContent_content(ctx context.Context, field g return ec.marshalOContent2ᚖgithubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐContent(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_TorrentContent_content(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_TorrentContent_content(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "TorrentContent", Field: field, @@ -6606,7 +9838,7 @@ func (ec *executionContext) _TorrentContent_title(ctx context.Context, field gra return ec.marshalNString2string(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_TorrentContent_title(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_TorrentContent_title(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "TorrentContent", Field: field, @@ -6647,7 +9879,7 @@ func (ec *executionContext) _TorrentContent_languages(ctx context.Context, field return ec.marshalOLanguageInfo2ᚕgithubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐLanguageᚄ(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_TorrentContent_languages(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_TorrentContent_languages(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "TorrentContent", Field: field, @@ -6694,7 +9926,7 @@ func (ec *executionContext) _TorrentContent_episodes(ctx context.Context, field return ec.marshalOEpisodes2ᚖgithubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚐEpisodes(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_TorrentContent_episodes(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_TorrentContent_episodes(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "TorrentContent", Field: field, @@ -6741,7 +9973,7 @@ func (ec *executionContext) _TorrentContent_videoResolution(ctx context.Context, return ec.marshalOVideoResolution2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐNullVideoResolution(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_TorrentContent_videoResolution(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_TorrentContent_videoResolution(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "TorrentContent", Field: field, @@ -6782,7 +10014,7 @@ func (ec *executionContext) _TorrentContent_videoSource(ctx context.Context, fie return ec.marshalOVideoSource2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐNullVideoSource(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_TorrentContent_videoSource(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_TorrentContent_videoSource(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "TorrentContent", Field: field, @@ -6823,7 +10055,7 @@ func (ec *executionContext) _TorrentContent_videoCodec(ctx context.Context, fiel return ec.marshalOVideoCodec2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐNullVideoCodec(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_TorrentContent_videoCodec(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_TorrentContent_videoCodec(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "TorrentContent", Field: field, @@ -6864,7 +10096,7 @@ func (ec *executionContext) _TorrentContent_video3d(ctx context.Context, field g return ec.marshalOVideo3d2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐNullVideo3d(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_TorrentContent_video3d(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_TorrentContent_video3d(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "TorrentContent", Field: field, @@ -6905,7 +10137,7 @@ func (ec *executionContext) _TorrentContent_videoModifier(ctx context.Context, f return ec.marshalOVideoModifier2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐNullVideoModifier(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_TorrentContent_videoModifier(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_TorrentContent_videoModifier(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "TorrentContent", Field: field, @@ -6946,7 +10178,7 @@ func (ec *executionContext) _TorrentContent_releaseGroup(ctx context.Context, fi return ec.marshalOString2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐNullString(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_TorrentContent_releaseGroup(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_TorrentContent_releaseGroup(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "TorrentContent", Field: field, @@ -6987,7 +10219,7 @@ func (ec *executionContext) _TorrentContent_seeders(ctx context.Context, field g return ec.marshalOInt2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐNullUint(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_TorrentContent_seeders(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_TorrentContent_seeders(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "TorrentContent", Field: field, @@ -7028,7 +10260,7 @@ func (ec *executionContext) _TorrentContent_leechers(ctx context.Context, field return ec.marshalOInt2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐNullUint(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_TorrentContent_leechers(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_TorrentContent_leechers(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "TorrentContent", Field: field, @@ -7072,7 +10304,7 @@ func (ec *executionContext) _TorrentContent_publishedAt(ctx context.Context, fie return ec.marshalNDateTime2timeᚐTime(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_TorrentContent_publishedAt(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_TorrentContent_publishedAt(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "TorrentContent", Field: field, @@ -7116,7 +10348,7 @@ func (ec *executionContext) _TorrentContent_createdAt(ctx context.Context, field return ec.marshalNDateTime2timeᚐTime(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_TorrentContent_createdAt(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_TorrentContent_createdAt(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "TorrentContent", Field: field, @@ -7160,7 +10392,7 @@ func (ec *executionContext) _TorrentContent_updatedAt(ctx context.Context, field return ec.marshalNDateTime2timeᚐTime(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_TorrentContent_updatedAt(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_TorrentContent_updatedAt(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "TorrentContent", Field: field, @@ -7201,7 +10433,7 @@ func (ec *executionContext) _TorrentContentAggregations_contentType(ctx context. return ec.marshalOContentTypeAgg2ᚕgithubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚋgenᚐContentTypeAggᚄ(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_TorrentContentAggregations_contentType(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_TorrentContentAggregations_contentType(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "TorrentContentAggregations", Field: field, @@ -7252,7 +10484,7 @@ func (ec *executionContext) _TorrentContentAggregations_torrentSource(ctx contex return ec.marshalOTorrentSourceAgg2ᚕgithubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚋgenᚐTorrentSourceAggᚄ(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_TorrentContentAggregations_torrentSource(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_TorrentContentAggregations_torrentSource(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "TorrentContentAggregations", Field: field, @@ -7303,7 +10535,7 @@ func (ec *executionContext) _TorrentContentAggregations_torrentTag(ctx context.C return ec.marshalOTorrentTagAgg2ᚕgithubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚋgenᚐTorrentTagAggᚄ(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_TorrentContentAggregations_torrentTag(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_TorrentContentAggregations_torrentTag(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "TorrentContentAggregations", Field: field, @@ -7354,7 +10586,7 @@ func (ec *executionContext) _TorrentContentAggregations_torrentFileType(ctx cont return ec.marshalOTorrentFileTypeAgg2ᚕgithubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚋgenᚐTorrentFileTypeAggᚄ(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_TorrentContentAggregations_torrentFileType(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_TorrentContentAggregations_torrentFileType(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "TorrentContentAggregations", Field: field, @@ -7405,7 +10637,7 @@ func (ec *executionContext) _TorrentContentAggregations_language(ctx context.Con return ec.marshalOLanguageAgg2ᚕgithubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚋgenᚐLanguageAggᚄ(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_TorrentContentAggregations_language(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_TorrentContentAggregations_language(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "TorrentContentAggregations", Field: field, @@ -7456,7 +10688,7 @@ func (ec *executionContext) _TorrentContentAggregations_genre(ctx context.Contex return ec.marshalOGenreAgg2ᚕgithubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚋgenᚐGenreAggᚄ(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_TorrentContentAggregations_genre(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_TorrentContentAggregations_genre(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "TorrentContentAggregations", Field: field, @@ -7507,7 +10739,7 @@ func (ec *executionContext) _TorrentContentAggregations_releaseYear(ctx context. return ec.marshalOReleaseYearAgg2ᚕgithubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚋgenᚐReleaseYearAggᚄ(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_TorrentContentAggregations_releaseYear(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_TorrentContentAggregations_releaseYear(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "TorrentContentAggregations", Field: field, @@ -7558,7 +10790,7 @@ func (ec *executionContext) _TorrentContentAggregations_videoResolution(ctx cont return ec.marshalOVideoResolutionAgg2ᚕgithubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚋgenᚐVideoResolutionAggᚄ(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_TorrentContentAggregations_videoResolution(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_TorrentContentAggregations_videoResolution(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "TorrentContentAggregations", Field: field, @@ -7609,7 +10841,7 @@ func (ec *executionContext) _TorrentContentAggregations_videoSource(ctx context. return ec.marshalOVideoSourceAgg2ᚕgithubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚋgenᚐVideoSourceAggᚄ(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_TorrentContentAggregations_videoSource(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_TorrentContentAggregations_videoSource(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "TorrentContentAggregations", Field: field, @@ -7646,7 +10878,7 @@ func (ec *executionContext) _TorrentContentQuery_search(ctx context.Context, fie }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { ctx = rctx // use context from middleware stack in children - return obj.Search(ctx, fc.Args["query"].(*query.SearchParams), fc.Args["facets"].(*gen.TorrentContentFacetsInput), fc.Args["orderBy"].([]gen.TorrentContentOrderByInput)) + return obj.Search(ctx, fc.Args["input"].(gqlmodel.TorrentContentSearchQueryInput)) }) if err != nil { ec.Error(ctx, err) @@ -7730,7 +10962,7 @@ func (ec *executionContext) _TorrentContentSearchResult_totalCount(ctx context.C return ec.marshalNInt2uint(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_TorrentContentSearchResult_totalCount(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_TorrentContentSearchResult_totalCount(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "TorrentContentSearchResult", Field: field, @@ -7774,7 +11006,7 @@ func (ec *executionContext) _TorrentContentSearchResult_totalCountIsEstimate(ctx return ec.marshalNBoolean2bool(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_TorrentContentSearchResult_totalCountIsEstimate(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_TorrentContentSearchResult_totalCountIsEstimate(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "TorrentContentSearchResult", Field: field, @@ -7815,7 +11047,7 @@ func (ec *executionContext) _TorrentContentSearchResult_hasNextPage(ctx context. return ec.marshalOBoolean2bool(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_TorrentContentSearchResult_hasNextPage(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_TorrentContentSearchResult_hasNextPage(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "TorrentContentSearchResult", Field: field, @@ -7859,7 +11091,7 @@ func (ec *executionContext) _TorrentContentSearchResult_items(ctx context.Contex return ec.marshalNTorrentContent2ᚕgithubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚐTorrentContentᚄ(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_TorrentContentSearchResult_items(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_TorrentContentSearchResult_items(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "TorrentContentSearchResult", Field: field, @@ -7947,7 +11179,7 @@ func (ec *executionContext) _TorrentContentSearchResult_aggregations(ctx context return ec.marshalNTorrentContentAggregations2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚋgenᚐTorrentContentAggregations(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_TorrentContentSearchResult_aggregations(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_TorrentContentSearchResult_aggregations(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "TorrentContentSearchResult", Field: field, @@ -8011,7 +11243,7 @@ func (ec *executionContext) _TorrentFile_infoHash(ctx context.Context, field gra return ec.marshalNHash202githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋprotocolᚐID(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_TorrentFile_infoHash(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_TorrentFile_infoHash(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "TorrentFile", Field: field, @@ -8055,7 +11287,7 @@ func (ec *executionContext) _TorrentFile_index(ctx context.Context, field graphq return ec.marshalNInt2uint(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_TorrentFile_index(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_TorrentFile_index(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "TorrentFile", Field: field, @@ -8099,7 +11331,7 @@ func (ec *executionContext) _TorrentFile_path(ctx context.Context, field graphql return ec.marshalNString2string(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_TorrentFile_path(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_TorrentFile_path(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "TorrentFile", Field: field, @@ -8140,7 +11372,7 @@ func (ec *executionContext) _TorrentFile_extension(ctx context.Context, field gr return ec.marshalOString2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐNullString(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_TorrentFile_extension(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_TorrentFile_extension(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "TorrentFile", Field: field, @@ -8181,7 +11413,7 @@ func (ec *executionContext) _TorrentFile_fileType(ctx context.Context, field gra return ec.marshalOFileType2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐNullFileType(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_TorrentFile_fileType(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_TorrentFile_fileType(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "TorrentFile", Field: field, @@ -8225,7 +11457,7 @@ func (ec *executionContext) _TorrentFile_size(ctx context.Context, field graphql return ec.marshalNInt2uint(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_TorrentFile_size(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_TorrentFile_size(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "TorrentFile", Field: field, @@ -8269,7 +11501,7 @@ func (ec *executionContext) _TorrentFile_createdAt(ctx context.Context, field gr return ec.marshalNDateTime2timeᚐTime(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_TorrentFile_createdAt(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_TorrentFile_createdAt(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "TorrentFile", Field: field, @@ -8313,7 +11545,7 @@ func (ec *executionContext) _TorrentFile_updatedAt(ctx context.Context, field gr return ec.marshalNDateTime2timeᚐTime(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_TorrentFile_updatedAt(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_TorrentFile_updatedAt(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "TorrentFile", Field: field, @@ -8357,7 +11589,7 @@ func (ec *executionContext) _TorrentFileTypeAgg_value(ctx context.Context, field return ec.marshalNFileType2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐFileType(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_TorrentFileTypeAgg_value(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_TorrentFileTypeAgg_value(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "TorrentFileTypeAgg", Field: field, @@ -8401,7 +11633,7 @@ func (ec *executionContext) _TorrentFileTypeAgg_label(ctx context.Context, field return ec.marshalNString2string(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_TorrentFileTypeAgg_label(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_TorrentFileTypeAgg_label(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "TorrentFileTypeAgg", Field: field, @@ -8445,7 +11677,7 @@ func (ec *executionContext) _TorrentFileTypeAgg_count(ctx context.Context, field return ec.marshalNInt2int(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_TorrentFileTypeAgg_count(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_TorrentFileTypeAgg_count(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "TorrentFileTypeAgg", Field: field, @@ -8489,7 +11721,7 @@ func (ec *executionContext) _TorrentFileTypeAgg_isEstimate(ctx context.Context, return ec.marshalNBoolean2bool(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_TorrentFileTypeAgg_isEstimate(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_TorrentFileTypeAgg_isEstimate(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "TorrentFileTypeAgg", Field: field, @@ -8502,6 +11734,433 @@ func (ec *executionContext) fieldContext_TorrentFileTypeAgg_isEstimate(ctx conte return fc, nil } +func (ec *executionContext) _TorrentFilesQueryResult_totalCount(ctx context.Context, field graphql.CollectedField, obj *query.GenericResult[model.TorrentFile]) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_TorrentFilesQueryResult_totalCount(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.TotalCount, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(uint) + fc.Result = res + return ec.marshalNInt2uint(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_TorrentFilesQueryResult_totalCount(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "TorrentFilesQueryResult", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type Int does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) _TorrentFilesQueryResult_hasNextPage(ctx context.Context, field graphql.CollectedField, obj *query.GenericResult[model.TorrentFile]) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_TorrentFilesQueryResult_hasNextPage(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.HasNextPage, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + return graphql.Null + } + res := resTmp.(bool) + fc.Result = res + return ec.marshalOBoolean2bool(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_TorrentFilesQueryResult_hasNextPage(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "TorrentFilesQueryResult", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type Boolean does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) _TorrentFilesQueryResult_items(ctx context.Context, field graphql.CollectedField, obj *query.GenericResult[model.TorrentFile]) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_TorrentFilesQueryResult_items(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.Items, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.([]model.TorrentFile) + fc.Result = res + return ec.marshalNTorrentFile2ᚕgithubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐTorrentFileᚄ(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_TorrentFilesQueryResult_items(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "TorrentFilesQueryResult", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + switch field.Name { + case "infoHash": + return ec.fieldContext_TorrentFile_infoHash(ctx, field) + case "index": + return ec.fieldContext_TorrentFile_index(ctx, field) + case "path": + return ec.fieldContext_TorrentFile_path(ctx, field) + case "extension": + return ec.fieldContext_TorrentFile_extension(ctx, field) + case "fileType": + return ec.fieldContext_TorrentFile_fileType(ctx, field) + case "size": + return ec.fieldContext_TorrentFile_size(ctx, field) + case "createdAt": + return ec.fieldContext_TorrentFile_createdAt(ctx, field) + case "updatedAt": + return ec.fieldContext_TorrentFile_updatedAt(ctx, field) + } + return nil, fmt.Errorf("no field named %q was found under type TorrentFile", field.Name) + }, + } + return fc, nil +} + +func (ec *executionContext) _TorrentListSourcesResult_sources(ctx context.Context, field graphql.CollectedField, obj *gen.TorrentListSourcesResult) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_TorrentListSourcesResult_sources(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.Sources, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.([]model.TorrentSource) + fc.Result = res + return ec.marshalNTorrentSource2ᚕgithubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐTorrentSourceᚄ(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_TorrentListSourcesResult_sources(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "TorrentListSourcesResult", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + switch field.Name { + case "key": + return ec.fieldContext_TorrentSource_key(ctx, field) + case "name": + return ec.fieldContext_TorrentSource_name(ctx, field) + } + return nil, fmt.Errorf("no field named %q was found under type TorrentSource", field.Name) + }, + } + return fc, nil +} + +func (ec *executionContext) _TorrentMetricsBucket_source(ctx context.Context, field graphql.CollectedField, obj *torrentmetrics.Bucket) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_TorrentMetricsBucket_source(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.Source, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(string) + fc.Result = res + return ec.marshalNString2string(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_TorrentMetricsBucket_source(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "TorrentMetricsBucket", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type String does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) _TorrentMetricsBucket_bucket(ctx context.Context, field graphql.CollectedField, obj *torrentmetrics.Bucket) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_TorrentMetricsBucket_bucket(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.Bucket, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(time.Time) + fc.Result = res + return ec.marshalNDateTime2timeᚐTime(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_TorrentMetricsBucket_bucket(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "TorrentMetricsBucket", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type DateTime does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) _TorrentMetricsBucket_updated(ctx context.Context, field graphql.CollectedField, obj *torrentmetrics.Bucket) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_TorrentMetricsBucket_updated(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.Updated, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(bool) + fc.Result = res + return ec.marshalNBoolean2bool(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_TorrentMetricsBucket_updated(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "TorrentMetricsBucket", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type Boolean does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) _TorrentMetricsBucket_count(ctx context.Context, field graphql.CollectedField, obj *torrentmetrics.Bucket) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_TorrentMetricsBucket_count(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.Count, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(uint) + fc.Result = res + return ec.marshalNInt2uint(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_TorrentMetricsBucket_count(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "TorrentMetricsBucket", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type Int does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) _TorrentMetricsQueryResult_buckets(ctx context.Context, field graphql.CollectedField, obj *gen.TorrentMetricsQueryResult) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_TorrentMetricsQueryResult_buckets(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.Buckets, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.([]torrentmetrics.Bucket) + fc.Result = res + return ec.marshalNTorrentMetricsBucket2ᚕgithubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmetricsᚋtorrentmetricsᚐBucketᚄ(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_TorrentMetricsQueryResult_buckets(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "TorrentMetricsQueryResult", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + switch field.Name { + case "source": + return ec.fieldContext_TorrentMetricsBucket_source(ctx, field) + case "bucket": + return ec.fieldContext_TorrentMetricsBucket_bucket(ctx, field) + case "updated": + return ec.fieldContext_TorrentMetricsBucket_updated(ctx, field) + case "count": + return ec.fieldContext_TorrentMetricsBucket_count(ctx, field) + } + return nil, fmt.Errorf("no field named %q was found under type TorrentMetricsBucket", field.Name) + }, + } + return fc, nil +} + func (ec *executionContext) _TorrentMutation_delete(ctx context.Context, field graphql.CollectedField, obj *gqlmodel.TorrentMutation) (ret graphql.Marshaler) { fc, err := ec.fieldContext_TorrentMutation_delete(ctx, field) if err != nil { @@ -8710,6 +12369,117 @@ func (ec *executionContext) fieldContext_TorrentMutation_deleteTags(ctx context. return fc, nil } +func (ec *executionContext) _TorrentQuery_files(ctx context.Context, field graphql.CollectedField, obj *gqlmodel.TorrentQuery) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_TorrentQuery_files(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return ec.resolvers.TorrentQuery().Files(rctx, obj, fc.Args["input"].(gqlmodel.TorrentFilesQueryInput)) + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(query.GenericResult[model.TorrentFile]) + fc.Result = res + return ec.marshalNTorrentFilesQueryResult2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋdatabaseᚋqueryᚐGenericResult(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_TorrentQuery_files(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "TorrentQuery", + Field: field, + IsMethod: true, + IsResolver: true, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + switch field.Name { + case "totalCount": + return ec.fieldContext_TorrentFilesQueryResult_totalCount(ctx, field) + case "hasNextPage": + return ec.fieldContext_TorrentFilesQueryResult_hasNextPage(ctx, field) + case "items": + return ec.fieldContext_TorrentFilesQueryResult_items(ctx, field) + } + return nil, fmt.Errorf("no field named %q was found under type TorrentFilesQueryResult", field.Name) + }, + } + defer func() { + if r := recover(); r != nil { + err = ec.Recover(ctx, r) + ec.Error(ctx, err) + } + }() + ctx = graphql.WithFieldContext(ctx, fc) + if fc.Args, err = ec.field_TorrentQuery_files_args(ctx, field.ArgumentMap(ec.Variables)); err != nil { + ec.Error(ctx, err) + return fc, err + } + return fc, nil +} + +func (ec *executionContext) _TorrentQuery_listSources(ctx context.Context, field graphql.CollectedField, obj *gqlmodel.TorrentQuery) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_TorrentQuery_listSources(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.ListSources(ctx) + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(gen.TorrentListSourcesResult) + fc.Result = res + return ec.marshalNTorrentListSourcesResult2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚋgenᚐTorrentListSourcesResult(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_TorrentQuery_listSources(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "TorrentQuery", + Field: field, + IsMethod: true, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + switch field.Name { + case "sources": + return ec.fieldContext_TorrentListSourcesResult_sources(ctx, field) + } + return nil, fmt.Errorf("no field named %q was found under type TorrentListSourcesResult", field.Name) + }, + } + return fc, nil +} + func (ec *executionContext) _TorrentQuery_suggestTags(ctx context.Context, field graphql.CollectedField, obj *gqlmodel.TorrentQuery) (ret graphql.Marshaler) { fc, err := ec.fieldContext_TorrentQuery_suggestTags(ctx, field) if err != nil { @@ -8724,7 +12494,7 @@ func (ec *executionContext) _TorrentQuery_suggestTags(ctx context.Context, field }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { ctx = rctx // use context from middleware stack in children - return obj.SuggestTags(ctx, fc.Args["query"].(*gen.SuggestTagsQueryInput)) + return obj.SuggestTags(ctx, fc.Args["input"].(*gen.SuggestTagsQueryInput)) }) if err != nil { ec.Error(ctx, err) @@ -8769,7 +12539,66 @@ func (ec *executionContext) fieldContext_TorrentQuery_suggestTags(ctx context.Co return fc, nil } -func (ec *executionContext) _TorrentSource_key(ctx context.Context, field graphql.CollectedField, obj *gqlmodel.TorrentSource) (ret graphql.Marshaler) { +func (ec *executionContext) _TorrentQuery_metrics(ctx context.Context, field graphql.CollectedField, obj *gqlmodel.TorrentQuery) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_TorrentQuery_metrics(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.Metrics(ctx, fc.Args["input"].(gen.TorrentMetricsQueryInput)) + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(*gen.TorrentMetricsQueryResult) + fc.Result = res + return ec.marshalNTorrentMetricsQueryResult2ᚖgithubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚋgenᚐTorrentMetricsQueryResult(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_TorrentQuery_metrics(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "TorrentQuery", + Field: field, + IsMethod: true, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + switch field.Name { + case "buckets": + return ec.fieldContext_TorrentMetricsQueryResult_buckets(ctx, field) + } + return nil, fmt.Errorf("no field named %q was found under type TorrentMetricsQueryResult", field.Name) + }, + } + defer func() { + if r := recover(); r != nil { + err = ec.Recover(ctx, r) + ec.Error(ctx, err) + } + }() + ctx = graphql.WithFieldContext(ctx, fc) + if fc.Args, err = ec.field_TorrentQuery_metrics_args(ctx, field.ArgumentMap(ec.Variables)); err != nil { + ec.Error(ctx, err) + return fc, err + } + return fc, nil +} + +func (ec *executionContext) _TorrentSource_key(ctx context.Context, field graphql.CollectedField, obj *model.TorrentSource) (ret graphql.Marshaler) { fc, err := ec.fieldContext_TorrentSource_key(ctx, field) if err != nil { return graphql.Null @@ -8800,7 +12629,7 @@ func (ec *executionContext) _TorrentSource_key(ctx context.Context, field graphq return ec.marshalNString2string(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_TorrentSource_key(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_TorrentSource_key(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "TorrentSource", Field: field, @@ -8813,7 +12642,7 @@ func (ec *executionContext) fieldContext_TorrentSource_key(ctx context.Context, return fc, nil } -func (ec *executionContext) _TorrentSource_name(ctx context.Context, field graphql.CollectedField, obj *gqlmodel.TorrentSource) (ret graphql.Marshaler) { +func (ec *executionContext) _TorrentSource_name(ctx context.Context, field graphql.CollectedField, obj *model.TorrentSource) (ret graphql.Marshaler) { fc, err := ec.fieldContext_TorrentSource_name(ctx, field) if err != nil { return graphql.Null @@ -8844,7 +12673,7 @@ func (ec *executionContext) _TorrentSource_name(ctx context.Context, field graph return ec.marshalNString2string(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_TorrentSource_name(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_TorrentSource_name(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "TorrentSource", Field: field, @@ -8857,129 +12686,6 @@ func (ec *executionContext) fieldContext_TorrentSource_name(ctx context.Context, return fc, nil } -func (ec *executionContext) _TorrentSource_importId(ctx context.Context, field graphql.CollectedField, obj *gqlmodel.TorrentSource) (ret graphql.Marshaler) { - fc, err := ec.fieldContext_TorrentSource_importId(ctx, field) - if err != nil { - return graphql.Null - } - ctx = graphql.WithFieldContext(ctx, fc) - defer func() { - if r := recover(); r != nil { - ec.Error(ctx, ec.Recover(ctx, r)) - ret = graphql.Null - } - }() - resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { - ctx = rctx // use context from middleware stack in children - return obj.ImportID, nil - }) - if err != nil { - ec.Error(ctx, err) - return graphql.Null - } - if resTmp == nil { - return graphql.Null - } - res := resTmp.(model.NullString) - fc.Result = res - return ec.marshalOString2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐNullString(ctx, field.Selections, res) -} - -func (ec *executionContext) fieldContext_TorrentSource_importId(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { - fc = &graphql.FieldContext{ - Object: "TorrentSource", - Field: field, - IsMethod: false, - IsResolver: false, - Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { - return nil, errors.New("field of type String does not have child fields") - }, - } - return fc, nil -} - -func (ec *executionContext) _TorrentSource_seeders(ctx context.Context, field graphql.CollectedField, obj *gqlmodel.TorrentSource) (ret graphql.Marshaler) { - fc, err := ec.fieldContext_TorrentSource_seeders(ctx, field) - if err != nil { - return graphql.Null - } - ctx = graphql.WithFieldContext(ctx, fc) - defer func() { - if r := recover(); r != nil { - ec.Error(ctx, ec.Recover(ctx, r)) - ret = graphql.Null - } - }() - resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { - ctx = rctx // use context from middleware stack in children - return obj.Seeders, nil - }) - if err != nil { - ec.Error(ctx, err) - return graphql.Null - } - if resTmp == nil { - return graphql.Null - } - res := resTmp.(model.NullUint) - fc.Result = res - return ec.marshalOInt2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐNullUint(ctx, field.Selections, res) -} - -func (ec *executionContext) fieldContext_TorrentSource_seeders(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { - fc = &graphql.FieldContext{ - Object: "TorrentSource", - Field: field, - IsMethod: false, - IsResolver: false, - Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { - return nil, errors.New("field of type Int does not have child fields") - }, - } - return fc, nil -} - -func (ec *executionContext) _TorrentSource_leechers(ctx context.Context, field graphql.CollectedField, obj *gqlmodel.TorrentSource) (ret graphql.Marshaler) { - fc, err := ec.fieldContext_TorrentSource_leechers(ctx, field) - if err != nil { - return graphql.Null - } - ctx = graphql.WithFieldContext(ctx, fc) - defer func() { - if r := recover(); r != nil { - ec.Error(ctx, ec.Recover(ctx, r)) - ret = graphql.Null - } - }() - resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { - ctx = rctx // use context from middleware stack in children - return obj.Leechers, nil - }) - if err != nil { - ec.Error(ctx, err) - return graphql.Null - } - if resTmp == nil { - return graphql.Null - } - res := resTmp.(model.NullUint) - fc.Result = res - return ec.marshalOInt2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐNullUint(ctx, field.Selections, res) -} - -func (ec *executionContext) fieldContext_TorrentSource_leechers(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { - fc = &graphql.FieldContext{ - Object: "TorrentSource", - Field: field, - IsMethod: false, - IsResolver: false, - Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { - return nil, errors.New("field of type Int does not have child fields") - }, - } - return fc, nil -} - func (ec *executionContext) _TorrentSourceAgg_value(ctx context.Context, field graphql.CollectedField, obj *gen.TorrentSourceAgg) (ret graphql.Marshaler) { fc, err := ec.fieldContext_TorrentSourceAgg_value(ctx, field) if err != nil { @@ -9011,7 +12717,7 @@ func (ec *executionContext) _TorrentSourceAgg_value(ctx context.Context, field g return ec.marshalNString2string(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_TorrentSourceAgg_value(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_TorrentSourceAgg_value(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "TorrentSourceAgg", Field: field, @@ -9055,7 +12761,7 @@ func (ec *executionContext) _TorrentSourceAgg_label(ctx context.Context, field g return ec.marshalNString2string(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_TorrentSourceAgg_label(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_TorrentSourceAgg_label(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "TorrentSourceAgg", Field: field, @@ -9099,7 +12805,7 @@ func (ec *executionContext) _TorrentSourceAgg_count(ctx context.Context, field g return ec.marshalNInt2int(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_TorrentSourceAgg_count(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_TorrentSourceAgg_count(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "TorrentSourceAgg", Field: field, @@ -9143,7 +12849,7 @@ func (ec *executionContext) _TorrentSourceAgg_isEstimate(ctx context.Context, fi return ec.marshalNBoolean2bool(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_TorrentSourceAgg_isEstimate(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_TorrentSourceAgg_isEstimate(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "TorrentSourceAgg", Field: field, @@ -9156,6 +12862,217 @@ func (ec *executionContext) fieldContext_TorrentSourceAgg_isEstimate(ctx context return fc, nil } +func (ec *executionContext) _TorrentSourceInfo_key(ctx context.Context, field graphql.CollectedField, obj *gqlmodel.TorrentSourceInfo) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_TorrentSourceInfo_key(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.Key, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(string) + fc.Result = res + return ec.marshalNString2string(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_TorrentSourceInfo_key(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "TorrentSourceInfo", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type String does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) _TorrentSourceInfo_name(ctx context.Context, field graphql.CollectedField, obj *gqlmodel.TorrentSourceInfo) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_TorrentSourceInfo_name(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.Name, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(string) + fc.Result = res + return ec.marshalNString2string(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_TorrentSourceInfo_name(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "TorrentSourceInfo", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type String does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) _TorrentSourceInfo_importId(ctx context.Context, field graphql.CollectedField, obj *gqlmodel.TorrentSourceInfo) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_TorrentSourceInfo_importId(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.ImportID, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + return graphql.Null + } + res := resTmp.(model.NullString) + fc.Result = res + return ec.marshalOString2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐNullString(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_TorrentSourceInfo_importId(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "TorrentSourceInfo", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type String does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) _TorrentSourceInfo_seeders(ctx context.Context, field graphql.CollectedField, obj *gqlmodel.TorrentSourceInfo) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_TorrentSourceInfo_seeders(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.Seeders, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + return graphql.Null + } + res := resTmp.(model.NullUint) + fc.Result = res + return ec.marshalOInt2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐNullUint(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_TorrentSourceInfo_seeders(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "TorrentSourceInfo", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type Int does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) _TorrentSourceInfo_leechers(ctx context.Context, field graphql.CollectedField, obj *gqlmodel.TorrentSourceInfo) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_TorrentSourceInfo_leechers(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.Leechers, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + return graphql.Null + } + res := resTmp.(model.NullUint) + fc.Result = res + return ec.marshalOInt2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐNullUint(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_TorrentSourceInfo_leechers(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "TorrentSourceInfo", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type Int does not have child fields") + }, + } + return fc, nil +} + func (ec *executionContext) _TorrentSuggestTagsResult_suggestions(ctx context.Context, field graphql.CollectedField, obj *search.TorrentSuggestTagsResult) (ret graphql.Marshaler) { fc, err := ec.fieldContext_TorrentSuggestTagsResult_suggestions(ctx, field) if err != nil { @@ -9187,7 +13104,7 @@ func (ec *executionContext) _TorrentSuggestTagsResult_suggestions(ctx context.Co return ec.marshalNSuggestedTag2ᚕgithubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋdatabaseᚋsearchᚐSuggestedTagᚄ(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_TorrentSuggestTagsResult_suggestions(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_TorrentSuggestTagsResult_suggestions(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "TorrentSuggestTagsResult", Field: field, @@ -9237,7 +13154,7 @@ func (ec *executionContext) _TorrentTagAgg_value(ctx context.Context, field grap return ec.marshalNString2string(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_TorrentTagAgg_value(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_TorrentTagAgg_value(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "TorrentTagAgg", Field: field, @@ -9281,7 +13198,7 @@ func (ec *executionContext) _TorrentTagAgg_label(ctx context.Context, field grap return ec.marshalNString2string(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_TorrentTagAgg_label(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_TorrentTagAgg_label(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "TorrentTagAgg", Field: field, @@ -9325,7 +13242,7 @@ func (ec *executionContext) _TorrentTagAgg_count(ctx context.Context, field grap return ec.marshalNInt2int(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_TorrentTagAgg_count(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_TorrentTagAgg_count(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "TorrentTagAgg", Field: field, @@ -9369,7 +13286,7 @@ func (ec *executionContext) _TorrentTagAgg_isEstimate(ctx context.Context, field return ec.marshalNBoolean2bool(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_TorrentTagAgg_isEstimate(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_TorrentTagAgg_isEstimate(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "TorrentTagAgg", Field: field, @@ -9410,7 +13327,7 @@ func (ec *executionContext) _VideoResolutionAgg_value(ctx context.Context, field return ec.marshalOVideoResolution2ᚖgithubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐVideoResolution(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_VideoResolutionAgg_value(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_VideoResolutionAgg_value(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "VideoResolutionAgg", Field: field, @@ -9454,7 +13371,7 @@ func (ec *executionContext) _VideoResolutionAgg_label(ctx context.Context, field return ec.marshalNString2string(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_VideoResolutionAgg_label(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_VideoResolutionAgg_label(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "VideoResolutionAgg", Field: field, @@ -9498,7 +13415,7 @@ func (ec *executionContext) _VideoResolutionAgg_count(ctx context.Context, field return ec.marshalNInt2int(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_VideoResolutionAgg_count(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_VideoResolutionAgg_count(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "VideoResolutionAgg", Field: field, @@ -9542,7 +13459,7 @@ func (ec *executionContext) _VideoResolutionAgg_isEstimate(ctx context.Context, return ec.marshalNBoolean2bool(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_VideoResolutionAgg_isEstimate(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_VideoResolutionAgg_isEstimate(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "VideoResolutionAgg", Field: field, @@ -9583,7 +13500,7 @@ func (ec *executionContext) _VideoSourceAgg_value(ctx context.Context, field gra return ec.marshalOVideoSource2ᚖgithubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐVideoSource(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_VideoSourceAgg_value(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_VideoSourceAgg_value(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "VideoSourceAgg", Field: field, @@ -9627,7 +13544,7 @@ func (ec *executionContext) _VideoSourceAgg_label(ctx context.Context, field gra return ec.marshalNString2string(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_VideoSourceAgg_label(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_VideoSourceAgg_label(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "VideoSourceAgg", Field: field, @@ -9671,7 +13588,7 @@ func (ec *executionContext) _VideoSourceAgg_count(ctx context.Context, field gra return ec.marshalNInt2int(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_VideoSourceAgg_count(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_VideoSourceAgg_count(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "VideoSourceAgg", Field: field, @@ -9715,7 +13632,7 @@ func (ec *executionContext) _VideoSourceAgg_isEstimate(ctx context.Context, fiel return ec.marshalNBoolean2bool(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_VideoSourceAgg_isEstimate(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_VideoSourceAgg_isEstimate(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "VideoSourceAgg", Field: field, @@ -9728,6 +13645,192 @@ func (ec *executionContext) fieldContext_VideoSourceAgg_isEstimate(ctx context.C return fc, nil } +func (ec *executionContext) _Worker_key(ctx context.Context, field graphql.CollectedField, obj *gen.Worker) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_Worker_key(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.Key, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(string) + fc.Result = res + return ec.marshalNString2string(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_Worker_key(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "Worker", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type String does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) _Worker_started(ctx context.Context, field graphql.CollectedField, obj *gen.Worker) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_Worker_started(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.Started, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(bool) + fc.Result = res + return ec.marshalNBoolean2bool(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_Worker_started(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "Worker", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type Boolean does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) _WorkersListAllQueryResult_workers(ctx context.Context, field graphql.CollectedField, obj *gen.WorkersListAllQueryResult) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_WorkersListAllQueryResult_workers(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.Workers, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.([]gen.Worker) + fc.Result = res + return ec.marshalNWorker2ᚕgithubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚋgenᚐWorkerᚄ(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_WorkersListAllQueryResult_workers(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "WorkersListAllQueryResult", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + switch field.Name { + case "key": + return ec.fieldContext_Worker_key(ctx, field) + case "started": + return ec.fieldContext_Worker_started(ctx, field) + } + return nil, fmt.Errorf("no field named %q was found under type Worker", field.Name) + }, + } + return fc, nil +} + +func (ec *executionContext) _WorkersQuery_listAll(ctx context.Context, field graphql.CollectedField, obj *gen.WorkersQuery) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_WorkersQuery_listAll(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.ListAll, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(gen.WorkersListAllQueryResult) + fc.Result = res + return ec.marshalNWorkersListAllQueryResult2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚋgenᚐWorkersListAllQueryResult(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_WorkersQuery_listAll(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "WorkersQuery", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + switch field.Name { + case "workers": + return ec.fieldContext_WorkersListAllQueryResult_workers(ctx, field) + } + return nil, fmt.Errorf("no field named %q was found under type WorkersListAllQueryResult", field.Name) + }, + } + return fc, nil +} + func (ec *executionContext) ___Directive_name(ctx context.Context, field graphql.CollectedField, obj *introspection.Directive) (ret graphql.Marshaler) { fc, err := ec.fieldContext___Directive_name(ctx, field) if err != nil { @@ -9759,7 +13862,7 @@ func (ec *executionContext) ___Directive_name(ctx context.Context, field graphql return ec.marshalNString2string(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext___Directive_name(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext___Directive_name(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "__Directive", Field: field, @@ -9800,7 +13903,7 @@ func (ec *executionContext) ___Directive_description(ctx context.Context, field return ec.marshalOString2ᚖstring(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext___Directive_description(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext___Directive_description(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "__Directive", Field: field, @@ -9844,7 +13947,7 @@ func (ec *executionContext) ___Directive_locations(ctx context.Context, field gr return ec.marshalN__DirectiveLocation2ᚕstringᚄ(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext___Directive_locations(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext___Directive_locations(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "__Directive", Field: field, @@ -9888,7 +13991,7 @@ func (ec *executionContext) ___Directive_args(ctx context.Context, field graphql return ec.marshalN__InputValue2ᚕgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐInputValueᚄ(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext___Directive_args(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext___Directive_args(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "__Directive", Field: field, @@ -9942,7 +14045,7 @@ func (ec *executionContext) ___Directive_isRepeatable(ctx context.Context, field return ec.marshalNBoolean2bool(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext___Directive_isRepeatable(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext___Directive_isRepeatable(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "__Directive", Field: field, @@ -9986,7 +14089,7 @@ func (ec *executionContext) ___EnumValue_name(ctx context.Context, field graphql return ec.marshalNString2string(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext___EnumValue_name(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext___EnumValue_name(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "__EnumValue", Field: field, @@ -10027,7 +14130,7 @@ func (ec *executionContext) ___EnumValue_description(ctx context.Context, field return ec.marshalOString2ᚖstring(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext___EnumValue_description(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext___EnumValue_description(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "__EnumValue", Field: field, @@ -10071,7 +14174,7 @@ func (ec *executionContext) ___EnumValue_isDeprecated(ctx context.Context, field return ec.marshalNBoolean2bool(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext___EnumValue_isDeprecated(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext___EnumValue_isDeprecated(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "__EnumValue", Field: field, @@ -10112,7 +14215,7 @@ func (ec *executionContext) ___EnumValue_deprecationReason(ctx context.Context, return ec.marshalOString2ᚖstring(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext___EnumValue_deprecationReason(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext___EnumValue_deprecationReason(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "__EnumValue", Field: field, @@ -10156,7 +14259,7 @@ func (ec *executionContext) ___Field_name(ctx context.Context, field graphql.Col return ec.marshalNString2string(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext___Field_name(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext___Field_name(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "__Field", Field: field, @@ -10197,7 +14300,7 @@ func (ec *executionContext) ___Field_description(ctx context.Context, field grap return ec.marshalOString2ᚖstring(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext___Field_description(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext___Field_description(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "__Field", Field: field, @@ -10241,7 +14344,7 @@ func (ec *executionContext) ___Field_args(ctx context.Context, field graphql.Col return ec.marshalN__InputValue2ᚕgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐInputValueᚄ(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext___Field_args(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext___Field_args(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "__Field", Field: field, @@ -10295,7 +14398,7 @@ func (ec *executionContext) ___Field_type(ctx context.Context, field graphql.Col return ec.marshalN__Type2ᚖgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐType(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext___Field_type(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext___Field_type(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "__Field", Field: field, @@ -10361,7 +14464,7 @@ func (ec *executionContext) ___Field_isDeprecated(ctx context.Context, field gra return ec.marshalNBoolean2bool(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext___Field_isDeprecated(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext___Field_isDeprecated(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "__Field", Field: field, @@ -10402,7 +14505,7 @@ func (ec *executionContext) ___Field_deprecationReason(ctx context.Context, fiel return ec.marshalOString2ᚖstring(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext___Field_deprecationReason(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext___Field_deprecationReason(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "__Field", Field: field, @@ -10446,7 +14549,7 @@ func (ec *executionContext) ___InputValue_name(ctx context.Context, field graphq return ec.marshalNString2string(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext___InputValue_name(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext___InputValue_name(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "__InputValue", Field: field, @@ -10487,7 +14590,7 @@ func (ec *executionContext) ___InputValue_description(ctx context.Context, field return ec.marshalOString2ᚖstring(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext___InputValue_description(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext___InputValue_description(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "__InputValue", Field: field, @@ -10531,7 +14634,7 @@ func (ec *executionContext) ___InputValue_type(ctx context.Context, field graphq return ec.marshalN__Type2ᚖgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐType(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext___InputValue_type(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext___InputValue_type(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "__InputValue", Field: field, @@ -10594,7 +14697,7 @@ func (ec *executionContext) ___InputValue_defaultValue(ctx context.Context, fiel return ec.marshalOString2ᚖstring(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext___InputValue_defaultValue(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext___InputValue_defaultValue(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "__InputValue", Field: field, @@ -10635,7 +14738,7 @@ func (ec *executionContext) ___Schema_description(ctx context.Context, field gra return ec.marshalOString2ᚖstring(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext___Schema_description(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext___Schema_description(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "__Schema", Field: field, @@ -10679,7 +14782,7 @@ func (ec *executionContext) ___Schema_types(ctx context.Context, field graphql.C return ec.marshalN__Type2ᚕgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐTypeᚄ(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext___Schema_types(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext___Schema_types(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "__Schema", Field: field, @@ -10745,7 +14848,7 @@ func (ec *executionContext) ___Schema_queryType(ctx context.Context, field graph return ec.marshalN__Type2ᚖgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐType(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext___Schema_queryType(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext___Schema_queryType(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "__Schema", Field: field, @@ -10808,7 +14911,7 @@ func (ec *executionContext) ___Schema_mutationType(ctx context.Context, field gr return ec.marshalO__Type2ᚖgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐType(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext___Schema_mutationType(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext___Schema_mutationType(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "__Schema", Field: field, @@ -10871,7 +14974,7 @@ func (ec *executionContext) ___Schema_subscriptionType(ctx context.Context, fiel return ec.marshalO__Type2ᚖgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐType(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext___Schema_subscriptionType(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext___Schema_subscriptionType(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "__Schema", Field: field, @@ -10937,7 +15040,7 @@ func (ec *executionContext) ___Schema_directives(ctx context.Context, field grap return ec.marshalN__Directive2ᚕgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐDirectiveᚄ(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext___Schema_directives(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext___Schema_directives(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "__Schema", Field: field, @@ -10993,7 +15096,7 @@ func (ec *executionContext) ___Type_kind(ctx context.Context, field graphql.Coll return ec.marshalN__TypeKind2string(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext___Type_kind(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext___Type_kind(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "__Type", Field: field, @@ -11034,7 +15137,7 @@ func (ec *executionContext) ___Type_name(ctx context.Context, field graphql.Coll return ec.marshalOString2ᚖstring(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext___Type_name(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext___Type_name(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "__Type", Field: field, @@ -11075,7 +15178,7 @@ func (ec *executionContext) ___Type_description(ctx context.Context, field graph return ec.marshalOString2ᚖstring(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext___Type_description(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext___Type_description(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "__Type", Field: field, @@ -11182,7 +15285,7 @@ func (ec *executionContext) ___Type_interfaces(ctx context.Context, field graphq return ec.marshalO__Type2ᚕgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐTypeᚄ(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext___Type_interfaces(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext___Type_interfaces(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "__Type", Field: field, @@ -11245,7 +15348,7 @@ func (ec *executionContext) ___Type_possibleTypes(ctx context.Context, field gra return ec.marshalO__Type2ᚕgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐTypeᚄ(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext___Type_possibleTypes(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext___Type_possibleTypes(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "__Type", Field: field, @@ -11370,7 +15473,7 @@ func (ec *executionContext) ___Type_inputFields(ctx context.Context, field graph return ec.marshalO__InputValue2ᚕgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐInputValueᚄ(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext___Type_inputFields(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext___Type_inputFields(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "__Type", Field: field, @@ -11421,7 +15524,7 @@ func (ec *executionContext) ___Type_ofType(ctx context.Context, field graphql.Co return ec.marshalO__Type2ᚖgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐType(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext___Type_ofType(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext___Type_ofType(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "__Type", Field: field, @@ -11484,7 +15587,7 @@ func (ec *executionContext) ___Type_specifiedByURL(ctx context.Context, field gr return ec.marshalOString2ᚖstring(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext___Type_specifiedByURL(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext___Type_specifiedByURL(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ Object: "__Type", Field: field, @@ -11610,6 +15713,392 @@ func (ec *executionContext) unmarshalInputLanguageFacetInput(ctx context.Context return it, nil } +func (ec *executionContext) unmarshalInputQueueEnqueueReprocessTorrentsBatchInput(ctx context.Context, obj interface{}) (manager.EnqueueReprocessTorrentsBatchRequest, error) { + var it manager.EnqueueReprocessTorrentsBatchRequest + asMap := map[string]interface{}{} + for k, v := range obj.(map[string]interface{}) { + asMap[k] = v + } + + fieldsInOrder := [...]string{"batchSize", "chunkSize", "contentTypes", "orphans", "classifierRematch", "classifierWorkflow", "apisDisabled", "localSearchDisabled"} + for _, k := range fieldsInOrder { + v, ok := asMap[k] + if !ok { + continue + } + switch k { + case "batchSize": + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("batchSize")) + data, err := ec.unmarshalOInt2uint(ctx, v) + if err != nil { + return it, err + } + it.BatchSize = data + case "chunkSize": + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("chunkSize")) + data, err := ec.unmarshalOInt2uint(ctx, v) + if err != nil { + return it, err + } + it.ChunkSize = data + case "contentTypes": + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("contentTypes")) + data, err := ec.unmarshalOContentType2ᚕgithubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐNullContentType(ctx, v) + if err != nil { + return it, err + } + it.ContentTypes = data + case "orphans": + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("orphans")) + data, err := ec.unmarshalOBoolean2bool(ctx, v) + if err != nil { + return it, err + } + it.Orphans = data + case "classifierRematch": + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("classifierRematch")) + data, err := ec.unmarshalOBoolean2ᚖbool(ctx, v) + if err != nil { + return it, err + } + if err = ec.resolvers.QueueEnqueueReprocessTorrentsBatchInput().ClassifierRematch(ctx, &it, data); err != nil { + return it, err + } + case "classifierWorkflow": + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("classifierWorkflow")) + data, err := ec.unmarshalOString2string(ctx, v) + if err != nil { + return it, err + } + it.ClassifierWorkflow = data + case "apisDisabled": + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("apisDisabled")) + data, err := ec.unmarshalOBoolean2bool(ctx, v) + if err != nil { + return it, err + } + it.ApisDisabled = data + case "localSearchDisabled": + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("localSearchDisabled")) + data, err := ec.unmarshalOBoolean2bool(ctx, v) + if err != nil { + return it, err + } + it.LocalSearchDisabled = data + } + } + + return it, nil +} + +func (ec *executionContext) unmarshalInputQueueJobQueueFacetInput(ctx context.Context, obj interface{}) (gen.QueueJobQueueFacetInput, error) { + var it gen.QueueJobQueueFacetInput + asMap := map[string]interface{}{} + for k, v := range obj.(map[string]interface{}) { + asMap[k] = v + } + + fieldsInOrder := [...]string{"aggregate", "filter"} + for _, k := range fieldsInOrder { + v, ok := asMap[k] + if !ok { + continue + } + switch k { + case "aggregate": + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("aggregate")) + data, err := ec.unmarshalOBoolean2ᚖbool(ctx, v) + if err != nil { + return it, err + } + it.Aggregate = graphql.OmittableOf(data) + case "filter": + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("filter")) + data, err := ec.unmarshalOString2ᚕstringᚄ(ctx, v) + if err != nil { + return it, err + } + it.Filter = graphql.OmittableOf(data) + } + } + + return it, nil +} + +func (ec *executionContext) unmarshalInputQueueJobStatusFacetInput(ctx context.Context, obj interface{}) (gen.QueueJobStatusFacetInput, error) { + var it gen.QueueJobStatusFacetInput + asMap := map[string]interface{}{} + for k, v := range obj.(map[string]interface{}) { + asMap[k] = v + } + + fieldsInOrder := [...]string{"aggregate", "filter"} + for _, k := range fieldsInOrder { + v, ok := asMap[k] + if !ok { + continue + } + switch k { + case "aggregate": + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("aggregate")) + data, err := ec.unmarshalOBoolean2ᚖbool(ctx, v) + if err != nil { + return it, err + } + it.Aggregate = graphql.OmittableOf(data) + case "filter": + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("filter")) + data, err := ec.unmarshalOQueueJobStatus2ᚕgithubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐQueueJobStatusᚄ(ctx, v) + if err != nil { + return it, err + } + it.Filter = graphql.OmittableOf(data) + } + } + + return it, nil +} + +func (ec *executionContext) unmarshalInputQueueJobsFacetsInput(ctx context.Context, obj interface{}) (gen.QueueJobsFacetsInput, error) { + var it gen.QueueJobsFacetsInput + asMap := map[string]interface{}{} + for k, v := range obj.(map[string]interface{}) { + asMap[k] = v + } + + fieldsInOrder := [...]string{"status", "queue"} + for _, k := range fieldsInOrder { + v, ok := asMap[k] + if !ok { + continue + } + switch k { + case "status": + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("status")) + data, err := ec.unmarshalOQueueJobStatusFacetInput2ᚖgithubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚋgenᚐQueueJobStatusFacetInput(ctx, v) + if err != nil { + return it, err + } + it.Status = graphql.OmittableOf(data) + case "queue": + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("queue")) + data, err := ec.unmarshalOQueueJobQueueFacetInput2ᚖgithubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚋgenᚐQueueJobQueueFacetInput(ctx, v) + if err != nil { + return it, err + } + it.Queue = graphql.OmittableOf(data) + } + } + + return it, nil +} + +func (ec *executionContext) unmarshalInputQueueJobsOrderByInput(ctx context.Context, obj interface{}) (gen.QueueJobsOrderByInput, error) { + var it gen.QueueJobsOrderByInput + asMap := map[string]interface{}{} + for k, v := range obj.(map[string]interface{}) { + asMap[k] = v + } + + fieldsInOrder := [...]string{"field", "descending"} + for _, k := range fieldsInOrder { + v, ok := asMap[k] + if !ok { + continue + } + switch k { + case "field": + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("field")) + data, err := ec.unmarshalNQueueJobsOrderByField2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚋgenᚐQueueJobsOrderByField(ctx, v) + if err != nil { + return it, err + } + it.Field = data + case "descending": + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("descending")) + data, err := ec.unmarshalOBoolean2ᚖbool(ctx, v) + if err != nil { + return it, err + } + it.Descending = graphql.OmittableOf(data) + } + } + + return it, nil +} + +func (ec *executionContext) unmarshalInputQueueJobsQueryInput(ctx context.Context, obj interface{}) (gqlmodel.QueueJobsQueryInput, error) { + var it gqlmodel.QueueJobsQueryInput + asMap := map[string]interface{}{} + for k, v := range obj.(map[string]interface{}) { + asMap[k] = v + } + + fieldsInOrder := [...]string{"queues", "statuses", "limit", "page", "offset", "totalCount", "hasNextPage", "facets", "orderBy"} + for _, k := range fieldsInOrder { + v, ok := asMap[k] + if !ok { + continue + } + switch k { + case "queues": + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("queues")) + data, err := ec.unmarshalOString2ᚕstringᚄ(ctx, v) + if err != nil { + return it, err + } + it.Queues = data + case "statuses": + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("statuses")) + data, err := ec.unmarshalOQueueJobStatus2ᚕgithubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐQueueJobStatusᚄ(ctx, v) + if err != nil { + return it, err + } + it.Statuses = data + case "limit": + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("limit")) + data, err := ec.unmarshalOInt2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐNullUint(ctx, v) + if err != nil { + return it, err + } + it.Limit = data + case "page": + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("page")) + data, err := ec.unmarshalOInt2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐNullUint(ctx, v) + if err != nil { + return it, err + } + it.Page = data + case "offset": + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("offset")) + data, err := ec.unmarshalOInt2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐNullUint(ctx, v) + if err != nil { + return it, err + } + it.Offset = data + case "totalCount": + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("totalCount")) + data, err := ec.unmarshalOBoolean2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐNullBool(ctx, v) + if err != nil { + return it, err + } + it.TotalCount = data + case "hasNextPage": + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("hasNextPage")) + data, err := ec.unmarshalOBoolean2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐNullBool(ctx, v) + if err != nil { + return it, err + } + it.HasNextPage = data + case "facets": + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("facets")) + data, err := ec.unmarshalOQueueJobsFacetsInput2ᚖgithubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚋgenᚐQueueJobsFacetsInput(ctx, v) + if err != nil { + return it, err + } + it.Facets = data + case "orderBy": + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("orderBy")) + data, err := ec.unmarshalOQueueJobsOrderByInput2ᚕgithubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚋgenᚐQueueJobsOrderByInputᚄ(ctx, v) + if err != nil { + return it, err + } + it.OrderBy = data + } + } + + return it, nil +} + +func (ec *executionContext) unmarshalInputQueueMetricsQueryInput(ctx context.Context, obj interface{}) (gen.QueueMetricsQueryInput, error) { + var it gen.QueueMetricsQueryInput + asMap := map[string]interface{}{} + for k, v := range obj.(map[string]interface{}) { + asMap[k] = v + } + + fieldsInOrder := [...]string{"bucketDuration", "statuses", "queues", "startTime", "endTime"} + for _, k := range fieldsInOrder { + v, ok := asMap[k] + if !ok { + continue + } + switch k { + case "bucketDuration": + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("bucketDuration")) + data, err := ec.unmarshalNMetricsBucketDuration2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚋgenᚐMetricsBucketDuration(ctx, v) + if err != nil { + return it, err + } + it.BucketDuration = data + case "statuses": + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("statuses")) + data, err := ec.unmarshalOQueueJobStatus2ᚕgithubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐQueueJobStatusᚄ(ctx, v) + if err != nil { + return it, err + } + it.Statuses = graphql.OmittableOf(data) + case "queues": + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("queues")) + data, err := ec.unmarshalOString2ᚕstringᚄ(ctx, v) + if err != nil { + return it, err + } + it.Queues = graphql.OmittableOf(data) + case "startTime": + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("startTime")) + data, err := ec.unmarshalODateTime2ᚖtimeᚐTime(ctx, v) + if err != nil { + return it, err + } + it.StartTime = graphql.OmittableOf(data) + case "endTime": + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("endTime")) + data, err := ec.unmarshalODateTime2ᚖtimeᚐTime(ctx, v) + if err != nil { + return it, err + } + it.EndTime = graphql.OmittableOf(data) + } + } + + return it, nil +} + +func (ec *executionContext) unmarshalInputQueuePurgeJobsInput(ctx context.Context, obj interface{}) (manager.PurgeJobsRequest, error) { + var it manager.PurgeJobsRequest + asMap := map[string]interface{}{} + for k, v := range obj.(map[string]interface{}) { + asMap[k] = v + } + + fieldsInOrder := [...]string{"queues", "statuses"} + for _, k := range fieldsInOrder { + v, ok := asMap[k] + if !ok { + continue + } + switch k { + case "queues": + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("queues")) + data, err := ec.unmarshalOString2ᚕstringᚄ(ctx, v) + if err != nil { + return it, err + } + it.Queues = data + case "statuses": + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("statuses")) + data, err := ec.unmarshalOQueueJobStatus2ᚕgithubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐQueueJobStatusᚄ(ctx, v) + if err != nil { + return it, err + } + it.Statuses = data + } + } + + return it, nil +} + func (ec *executionContext) unmarshalInputReleaseYearFacetInput(ctx context.Context, obj interface{}) (gen.ReleaseYearFacetInput, error) { var it gen.ReleaseYearFacetInput asMap := map[string]interface{}{} @@ -11644,75 +16133,6 @@ func (ec *executionContext) unmarshalInputReleaseYearFacetInput(ctx context.Cont return it, nil } -func (ec *executionContext) unmarshalInputSearchQueryInput(ctx context.Context, obj interface{}) (query.SearchParams, error) { - var it query.SearchParams - asMap := map[string]interface{}{} - for k, v := range obj.(map[string]interface{}) { - asMap[k] = v - } - - fieldsInOrder := [...]string{"queryString", "limit", "offset", "totalCount", "hasNextPage", "cached", "aggregationBudget"} - for _, k := range fieldsInOrder { - v, ok := asMap[k] - if !ok { - continue - } - switch k { - case "queryString": - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("queryString")) - data, err := ec.unmarshalOString2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐNullString(ctx, v) - if err != nil { - return it, err - } - it.QueryString = data - case "limit": - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("limit")) - data, err := ec.unmarshalOInt2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐNullUint(ctx, v) - if err != nil { - return it, err - } - it.Limit = data - case "offset": - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("offset")) - data, err := ec.unmarshalOInt2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐNullUint(ctx, v) - if err != nil { - return it, err - } - it.Offset = data - case "totalCount": - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("totalCount")) - data, err := ec.unmarshalOBoolean2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐNullBool(ctx, v) - if err != nil { - return it, err - } - it.TotalCount = data - case "hasNextPage": - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("hasNextPage")) - data, err := ec.unmarshalOBoolean2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐNullBool(ctx, v) - if err != nil { - return it, err - } - it.HasNextPage = data - case "cached": - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("cached")) - data, err := ec.unmarshalOBoolean2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐNullBool(ctx, v) - if err != nil { - return it, err - } - it.Cached = data - case "aggregationBudget": - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("aggregationBudget")) - data, err := ec.unmarshalOFloat2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐNullFloat64(ctx, v) - if err != nil { - return it, err - } - it.AggregationBudget = data - } - } - - return it, nil -} - func (ec *executionContext) unmarshalInputSuggestTagsQueryInput(ctx context.Context, obj interface{}) (gen.SuggestTagsQueryInput, error) { var it gen.SuggestTagsQueryInput asMap := map[string]interface{}{} @@ -11846,7 +16266,7 @@ func (ec *executionContext) unmarshalInputTorrentContentOrderByInput(ctx context switch k { case "field": ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("field")) - data, err := ec.unmarshalNTorrentContentOrderBy2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚋgenᚐTorrentContentOrderBy(ctx, v) + data, err := ec.unmarshalNTorrentContentOrderByField2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚋgenᚐTorrentContentOrderByField(ctx, v) if err != nil { return it, err } @@ -11864,6 +16284,103 @@ func (ec *executionContext) unmarshalInputTorrentContentOrderByInput(ctx context return it, nil } +func (ec *executionContext) unmarshalInputTorrentContentSearchQueryInput(ctx context.Context, obj interface{}) (gqlmodel.TorrentContentSearchQueryInput, error) { + var it gqlmodel.TorrentContentSearchQueryInput + asMap := map[string]interface{}{} + for k, v := range obj.(map[string]interface{}) { + asMap[k] = v + } + + fieldsInOrder := [...]string{"queryString", "limit", "page", "offset", "totalCount", "hasNextPage", "infoHashes", "facets", "orderBy", "cached", "aggregationBudget"} + for _, k := range fieldsInOrder { + v, ok := asMap[k] + if !ok { + continue + } + switch k { + case "queryString": + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("queryString")) + data, err := ec.unmarshalOString2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐNullString(ctx, v) + if err != nil { + return it, err + } + it.QueryString = data + case "limit": + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("limit")) + data, err := ec.unmarshalOInt2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐNullUint(ctx, v) + if err != nil { + return it, err + } + it.Limit = data + case "page": + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("page")) + data, err := ec.unmarshalOInt2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐNullUint(ctx, v) + if err != nil { + return it, err + } + it.Page = data + case "offset": + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("offset")) + data, err := ec.unmarshalOInt2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐNullUint(ctx, v) + if err != nil { + return it, err + } + it.Offset = data + case "totalCount": + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("totalCount")) + data, err := ec.unmarshalOBoolean2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐNullBool(ctx, v) + if err != nil { + return it, err + } + it.TotalCount = data + case "hasNextPage": + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("hasNextPage")) + data, err := ec.unmarshalOBoolean2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐNullBool(ctx, v) + if err != nil { + return it, err + } + it.HasNextPage = data + case "infoHashes": + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("infoHashes")) + data, err := ec.unmarshalOHash202ᚕgithubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋprotocolᚐIDᚄ(ctx, v) + if err != nil { + return it, err + } + it.InfoHashes = graphql.OmittableOf(data) + case "facets": + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("facets")) + data, err := ec.unmarshalOTorrentContentFacetsInput2ᚖgithubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚋgenᚐTorrentContentFacetsInput(ctx, v) + if err != nil { + return it, err + } + it.Facets = data + case "orderBy": + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("orderBy")) + data, err := ec.unmarshalOTorrentContentOrderByInput2ᚕgithubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚋgenᚐTorrentContentOrderByInputᚄ(ctx, v) + if err != nil { + return it, err + } + it.OrderBy = data + case "cached": + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("cached")) + data, err := ec.unmarshalOBoolean2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐNullBool(ctx, v) + if err != nil { + return it, err + } + it.Cached = data + case "aggregationBudget": + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("aggregationBudget")) + data, err := ec.unmarshalOFloat2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐNullFloat64(ctx, v) + if err != nil { + return it, err + } + it.AggregationBudget = data + } + } + + return it, nil +} + func (ec *executionContext) unmarshalInputTorrentFileTypeFacetInput(ctx context.Context, obj interface{}) (gen.TorrentFileTypeFacetInput, error) { var it gen.TorrentFileTypeFacetInput asMap := map[string]interface{}{} @@ -11905,6 +16422,164 @@ func (ec *executionContext) unmarshalInputTorrentFileTypeFacetInput(ctx context. return it, nil } +func (ec *executionContext) unmarshalInputTorrentFilesOrderByInput(ctx context.Context, obj interface{}) (gen.TorrentFilesOrderByInput, error) { + var it gen.TorrentFilesOrderByInput + asMap := map[string]interface{}{} + for k, v := range obj.(map[string]interface{}) { + asMap[k] = v + } + + fieldsInOrder := [...]string{"field", "descending"} + for _, k := range fieldsInOrder { + v, ok := asMap[k] + if !ok { + continue + } + switch k { + case "field": + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("field")) + data, err := ec.unmarshalNTorrentFilesOrderByField2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚋgenᚐTorrentFilesOrderByField(ctx, v) + if err != nil { + return it, err + } + it.Field = data + case "descending": + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("descending")) + data, err := ec.unmarshalOBoolean2ᚖbool(ctx, v) + if err != nil { + return it, err + } + it.Descending = graphql.OmittableOf(data) + } + } + + return it, nil +} + +func (ec *executionContext) unmarshalInputTorrentFilesQueryInput(ctx context.Context, obj interface{}) (gqlmodel.TorrentFilesQueryInput, error) { + var it gqlmodel.TorrentFilesQueryInput + asMap := map[string]interface{}{} + for k, v := range obj.(map[string]interface{}) { + asMap[k] = v + } + + fieldsInOrder := [...]string{"limit", "page", "offset", "totalCount", "hasNextPage", "infoHashes", "orderBy", "cached"} + for _, k := range fieldsInOrder { + v, ok := asMap[k] + if !ok { + continue + } + switch k { + case "limit": + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("limit")) + data, err := ec.unmarshalOInt2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐNullUint(ctx, v) + if err != nil { + return it, err + } + it.Limit = data + case "page": + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("page")) + data, err := ec.unmarshalOInt2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐNullUint(ctx, v) + if err != nil { + return it, err + } + it.Page = data + case "offset": + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("offset")) + data, err := ec.unmarshalOInt2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐNullUint(ctx, v) + if err != nil { + return it, err + } + it.Offset = data + case "totalCount": + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("totalCount")) + data, err := ec.unmarshalOBoolean2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐNullBool(ctx, v) + if err != nil { + return it, err + } + it.TotalCount = data + case "hasNextPage": + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("hasNextPage")) + data, err := ec.unmarshalOBoolean2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐNullBool(ctx, v) + if err != nil { + return it, err + } + it.HasNextPage = data + case "infoHashes": + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("infoHashes")) + data, err := ec.unmarshalOHash202ᚕgithubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋprotocolᚐIDᚄ(ctx, v) + if err != nil { + return it, err + } + it.InfoHashes = data + case "orderBy": + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("orderBy")) + data, err := ec.unmarshalOTorrentFilesOrderByInput2ᚕgithubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚋgenᚐTorrentFilesOrderByInputᚄ(ctx, v) + if err != nil { + return it, err + } + it.OrderBy = data + case "cached": + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("cached")) + data, err := ec.unmarshalOBoolean2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐNullBool(ctx, v) + if err != nil { + return it, err + } + it.Cached = data + } + } + + return it, nil +} + +func (ec *executionContext) unmarshalInputTorrentMetricsQueryInput(ctx context.Context, obj interface{}) (gen.TorrentMetricsQueryInput, error) { + var it gen.TorrentMetricsQueryInput + asMap := map[string]interface{}{} + for k, v := range obj.(map[string]interface{}) { + asMap[k] = v + } + + fieldsInOrder := [...]string{"bucketDuration", "sources", "startTime", "endTime"} + for _, k := range fieldsInOrder { + v, ok := asMap[k] + if !ok { + continue + } + switch k { + case "bucketDuration": + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("bucketDuration")) + data, err := ec.unmarshalNMetricsBucketDuration2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚋgenᚐMetricsBucketDuration(ctx, v) + if err != nil { + return it, err + } + it.BucketDuration = data + case "sources": + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("sources")) + data, err := ec.unmarshalOString2ᚕstringᚄ(ctx, v) + if err != nil { + return it, err + } + it.Sources = graphql.OmittableOf(data) + case "startTime": + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("startTime")) + data, err := ec.unmarshalODateTime2ᚖtimeᚐTime(ctx, v) + if err != nil { + return it, err + } + it.StartTime = graphql.OmittableOf(data) + case "endTime": + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("endTime")) + data, err := ec.unmarshalODateTime2ᚖtimeᚐTime(ctx, v) + if err != nil { + return it, err + } + it.EndTime = graphql.OmittableOf(data) + } + } + + return it, nil +} + func (ec *executionContext) unmarshalInputTorrentSourceFacetInput(ctx context.Context, obj interface{}) (gen.TorrentSourceFacetInput, error) { var it gen.TorrentSourceFacetInput asMap := map[string]interface{}{} @@ -12103,7 +16778,7 @@ func (ec *executionContext) _Content(ctx context.Context, sel ast.SelectionSet, case "originalLanguage": field := field - innerFunc := func(ctx context.Context, fs *graphql.FieldSet) (res graphql.Marshaler) { + innerFunc := func(ctx context.Context, _ *graphql.FieldSet) (res graphql.Marshaler) { defer func() { if r := recover(); r != nil { ec.Error(ctx, ec.Recover(ctx, r)) @@ -12524,6 +17199,101 @@ func (ec *executionContext) _GenreAgg(ctx context.Context, sel ast.SelectionSet, return out } +var healthCheckImplementors = []string{"HealthCheck"} + +func (ec *executionContext) _HealthCheck(ctx context.Context, sel ast.SelectionSet, obj *gen.HealthCheck) graphql.Marshaler { + fields := graphql.CollectFields(ec.OperationContext, sel, healthCheckImplementors) + + out := graphql.NewFieldSet(fields) + deferred := make(map[string]*graphql.FieldSet) + for i, field := range fields { + switch field.Name { + case "__typename": + out.Values[i] = graphql.MarshalString("HealthCheck") + case "key": + out.Values[i] = ec._HealthCheck_key(ctx, field, obj) + if out.Values[i] == graphql.Null { + out.Invalids++ + } + case "status": + out.Values[i] = ec._HealthCheck_status(ctx, field, obj) + if out.Values[i] == graphql.Null { + out.Invalids++ + } + case "timestamp": + out.Values[i] = ec._HealthCheck_timestamp(ctx, field, obj) + if out.Values[i] == graphql.Null { + out.Invalids++ + } + case "error": + out.Values[i] = ec._HealthCheck_error(ctx, field, obj) + default: + panic("unknown field " + strconv.Quote(field.Name)) + } + } + out.Dispatch(ctx) + if out.Invalids > 0 { + return graphql.Null + } + + atomic.AddInt32(&ec.deferred, int32(len(deferred))) + + for label, dfs := range deferred { + ec.processDeferredGroup(graphql.DeferredGroup{ + Label: label, + Path: graphql.GetPath(ctx), + FieldSet: dfs, + Context: ctx, + }) + } + + return out +} + +var healthQueryImplementors = []string{"HealthQuery"} + +func (ec *executionContext) _HealthQuery(ctx context.Context, sel ast.SelectionSet, obj *gen.HealthQuery) graphql.Marshaler { + fields := graphql.CollectFields(ec.OperationContext, sel, healthQueryImplementors) + + out := graphql.NewFieldSet(fields) + deferred := make(map[string]*graphql.FieldSet) + for i, field := range fields { + switch field.Name { + case "__typename": + out.Values[i] = graphql.MarshalString("HealthQuery") + case "status": + out.Values[i] = ec._HealthQuery_status(ctx, field, obj) + if out.Values[i] == graphql.Null { + out.Invalids++ + } + case "checks": + out.Values[i] = ec._HealthQuery_checks(ctx, field, obj) + if out.Values[i] == graphql.Null { + out.Invalids++ + } + default: + panic("unknown field " + strconv.Quote(field.Name)) + } + } + out.Dispatch(ctx) + if out.Invalids > 0 { + return graphql.Null + } + + atomic.AddInt32(&ec.deferred, int32(len(deferred))) + + for label, dfs := range deferred { + ec.processDeferredGroup(graphql.DeferredGroup{ + Label: label, + Path: graphql.GetPath(ctx), + FieldSet: dfs, + Context: ctx, + }) + } + + return out +} + var languageAggImplementors = []string{"LanguageAgg"} func (ec *executionContext) _LanguageAgg(ctx context.Context, sel ast.SelectionSet, obj *gen.LanguageAgg) graphql.Marshaler { @@ -12692,6 +17462,13 @@ func (ec *executionContext) _Mutation(ctx context.Context, sel ast.SelectionSet) if out.Values[i] == graphql.Null { out.Invalids++ } + case "queue": + out.Values[i] = ec.OperationContext.RootResolverMiddleware(innerCtx, func(ctx context.Context) (res graphql.Marshaler) { + return ec._Mutation_queue(ctx, field) + }) + if out.Values[i] == graphql.Null { + out.Invalids++ + } default: panic("unknown field " + strconv.Quote(field.Name)) } @@ -12734,6 +17511,94 @@ func (ec *executionContext) _Query(ctx context.Context, sel ast.SelectionSet) gr switch field.Name { case "__typename": out.Values[i] = graphql.MarshalString("Query") + case "version": + field := field + + innerFunc := func(ctx context.Context, fs *graphql.FieldSet) (res graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + } + }() + res = ec._Query_version(ctx, field) + if res == graphql.Null { + atomic.AddUint32(&fs.Invalids, 1) + } + return res + } + + rrm := func(ctx context.Context) graphql.Marshaler { + return ec.OperationContext.RootResolverMiddleware(ctx, + func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) + } + + out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return rrm(innerCtx) }) + case "workers": + field := field + + innerFunc := func(ctx context.Context, fs *graphql.FieldSet) (res graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + } + }() + res = ec._Query_workers(ctx, field) + if res == graphql.Null { + atomic.AddUint32(&fs.Invalids, 1) + } + return res + } + + rrm := func(ctx context.Context) graphql.Marshaler { + return ec.OperationContext.RootResolverMiddleware(ctx, + func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) + } + + out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return rrm(innerCtx) }) + case "health": + field := field + + innerFunc := func(ctx context.Context, fs *graphql.FieldSet) (res graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + } + }() + res = ec._Query_health(ctx, field) + if res == graphql.Null { + atomic.AddUint32(&fs.Invalids, 1) + } + return res + } + + rrm := func(ctx context.Context) graphql.Marshaler { + return ec.OperationContext.RootResolverMiddleware(ctx, + func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) + } + + out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return rrm(innerCtx) }) + case "queue": + field := field + + innerFunc := func(ctx context.Context, fs *graphql.FieldSet) (res graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + } + }() + res = ec._Query_queue(ctx, field) + if res == graphql.Null { + atomic.AddUint32(&fs.Invalids, 1) + } + return res + } + + rrm := func(ctx context.Context) graphql.Marshaler { + return ec.OperationContext.RootResolverMiddleware(ctx, + func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) + } + + out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return rrm(innerCtx) }) case "torrent": field := field @@ -12777,28 +17642,6 @@ func (ec *executionContext) _Query(ctx context.Context, sel ast.SelectionSet) gr func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) } - out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return rrm(innerCtx) }) - case "system": - field := field - - innerFunc := func(ctx context.Context, fs *graphql.FieldSet) (res graphql.Marshaler) { - defer func() { - if r := recover(); r != nil { - ec.Error(ctx, ec.Recover(ctx, r)) - } - }() - res = ec._Query_system(ctx, field) - if res == graphql.Null { - atomic.AddUint32(&fs.Invalids, 1) - } - return res - } - - rrm := func(ctx context.Context) graphql.Marshaler { - return ec.OperationContext.RootResolverMiddleware(ctx, - func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) - } - out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return rrm(innerCtx) }) case "__type": out.Values[i] = ec.OperationContext.RootResolverMiddleware(innerCtx, func(ctx context.Context) (res graphql.Marshaler) { @@ -12831,6 +17674,610 @@ func (ec *executionContext) _Query(ctx context.Context, sel ast.SelectionSet) gr return out } +var queueJobImplementors = []string{"QueueJob"} + +func (ec *executionContext) _QueueJob(ctx context.Context, sel ast.SelectionSet, obj *model.QueueJob) graphql.Marshaler { + fields := graphql.CollectFields(ec.OperationContext, sel, queueJobImplementors) + + out := graphql.NewFieldSet(fields) + deferred := make(map[string]*graphql.FieldSet) + for i, field := range fields { + switch field.Name { + case "__typename": + out.Values[i] = graphql.MarshalString("QueueJob") + case "id": + out.Values[i] = ec._QueueJob_id(ctx, field, obj) + if out.Values[i] == graphql.Null { + atomic.AddUint32(&out.Invalids, 1) + } + case "queue": + out.Values[i] = ec._QueueJob_queue(ctx, field, obj) + if out.Values[i] == graphql.Null { + atomic.AddUint32(&out.Invalids, 1) + } + case "status": + out.Values[i] = ec._QueueJob_status(ctx, field, obj) + if out.Values[i] == graphql.Null { + atomic.AddUint32(&out.Invalids, 1) + } + case "payload": + out.Values[i] = ec._QueueJob_payload(ctx, field, obj) + if out.Values[i] == graphql.Null { + atomic.AddUint32(&out.Invalids, 1) + } + case "priority": + out.Values[i] = ec._QueueJob_priority(ctx, field, obj) + if out.Values[i] == graphql.Null { + atomic.AddUint32(&out.Invalids, 1) + } + case "retries": + out.Values[i] = ec._QueueJob_retries(ctx, field, obj) + if out.Values[i] == graphql.Null { + atomic.AddUint32(&out.Invalids, 1) + } + case "maxRetries": + out.Values[i] = ec._QueueJob_maxRetries(ctx, field, obj) + if out.Values[i] == graphql.Null { + atomic.AddUint32(&out.Invalids, 1) + } + case "runAfter": + out.Values[i] = ec._QueueJob_runAfter(ctx, field, obj) + if out.Values[i] == graphql.Null { + atomic.AddUint32(&out.Invalids, 1) + } + case "ranAt": + field := field + + innerFunc := func(ctx context.Context, _ *graphql.FieldSet) (res graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + } + }() + res = ec._QueueJob_ranAt(ctx, field, obj) + return res + } + + if field.Deferrable != nil { + dfs, ok := deferred[field.Deferrable.Label] + di := 0 + if ok { + dfs.AddField(field) + di = len(dfs.Values) - 1 + } else { + dfs = graphql.NewFieldSet([]graphql.CollectedField{field}) + deferred[field.Deferrable.Label] = dfs + } + dfs.Concurrently(di, func(ctx context.Context) graphql.Marshaler { + return innerFunc(ctx, dfs) + }) + + // don't run the out.Concurrently() call below + out.Values[i] = graphql.Null + continue + } + + out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) + case "error": + out.Values[i] = ec._QueueJob_error(ctx, field, obj) + case "createdAt": + out.Values[i] = ec._QueueJob_createdAt(ctx, field, obj) + if out.Values[i] == graphql.Null { + atomic.AddUint32(&out.Invalids, 1) + } + default: + panic("unknown field " + strconv.Quote(field.Name)) + } + } + out.Dispatch(ctx) + if out.Invalids > 0 { + return graphql.Null + } + + atomic.AddInt32(&ec.deferred, int32(len(deferred))) + + for label, dfs := range deferred { + ec.processDeferredGroup(graphql.DeferredGroup{ + Label: label, + Path: graphql.GetPath(ctx), + FieldSet: dfs, + Context: ctx, + }) + } + + return out +} + +var queueJobQueueAggImplementors = []string{"QueueJobQueueAgg"} + +func (ec *executionContext) _QueueJobQueueAgg(ctx context.Context, sel ast.SelectionSet, obj *gen.QueueJobQueueAgg) graphql.Marshaler { + fields := graphql.CollectFields(ec.OperationContext, sel, queueJobQueueAggImplementors) + + out := graphql.NewFieldSet(fields) + deferred := make(map[string]*graphql.FieldSet) + for i, field := range fields { + switch field.Name { + case "__typename": + out.Values[i] = graphql.MarshalString("QueueJobQueueAgg") + case "value": + out.Values[i] = ec._QueueJobQueueAgg_value(ctx, field, obj) + if out.Values[i] == graphql.Null { + out.Invalids++ + } + case "label": + out.Values[i] = ec._QueueJobQueueAgg_label(ctx, field, obj) + if out.Values[i] == graphql.Null { + out.Invalids++ + } + case "count": + out.Values[i] = ec._QueueJobQueueAgg_count(ctx, field, obj) + if out.Values[i] == graphql.Null { + out.Invalids++ + } + default: + panic("unknown field " + strconv.Quote(field.Name)) + } + } + out.Dispatch(ctx) + if out.Invalids > 0 { + return graphql.Null + } + + atomic.AddInt32(&ec.deferred, int32(len(deferred))) + + for label, dfs := range deferred { + ec.processDeferredGroup(graphql.DeferredGroup{ + Label: label, + Path: graphql.GetPath(ctx), + FieldSet: dfs, + Context: ctx, + }) + } + + return out +} + +var queueJobStatusAggImplementors = []string{"QueueJobStatusAgg"} + +func (ec *executionContext) _QueueJobStatusAgg(ctx context.Context, sel ast.SelectionSet, obj *gen.QueueJobStatusAgg) graphql.Marshaler { + fields := graphql.CollectFields(ec.OperationContext, sel, queueJobStatusAggImplementors) + + out := graphql.NewFieldSet(fields) + deferred := make(map[string]*graphql.FieldSet) + for i, field := range fields { + switch field.Name { + case "__typename": + out.Values[i] = graphql.MarshalString("QueueJobStatusAgg") + case "value": + out.Values[i] = ec._QueueJobStatusAgg_value(ctx, field, obj) + if out.Values[i] == graphql.Null { + out.Invalids++ + } + case "label": + out.Values[i] = ec._QueueJobStatusAgg_label(ctx, field, obj) + if out.Values[i] == graphql.Null { + out.Invalids++ + } + case "count": + out.Values[i] = ec._QueueJobStatusAgg_count(ctx, field, obj) + if out.Values[i] == graphql.Null { + out.Invalids++ + } + default: + panic("unknown field " + strconv.Quote(field.Name)) + } + } + out.Dispatch(ctx) + if out.Invalids > 0 { + return graphql.Null + } + + atomic.AddInt32(&ec.deferred, int32(len(deferred))) + + for label, dfs := range deferred { + ec.processDeferredGroup(graphql.DeferredGroup{ + Label: label, + Path: graphql.GetPath(ctx), + FieldSet: dfs, + Context: ctx, + }) + } + + return out +} + +var queueJobsAggregationsImplementors = []string{"QueueJobsAggregations"} + +func (ec *executionContext) _QueueJobsAggregations(ctx context.Context, sel ast.SelectionSet, obj *gen.QueueJobsAggregations) graphql.Marshaler { + fields := graphql.CollectFields(ec.OperationContext, sel, queueJobsAggregationsImplementors) + + out := graphql.NewFieldSet(fields) + deferred := make(map[string]*graphql.FieldSet) + for i, field := range fields { + switch field.Name { + case "__typename": + out.Values[i] = graphql.MarshalString("QueueJobsAggregations") + case "queue": + out.Values[i] = ec._QueueJobsAggregations_queue(ctx, field, obj) + case "status": + out.Values[i] = ec._QueueJobsAggregations_status(ctx, field, obj) + default: + panic("unknown field " + strconv.Quote(field.Name)) + } + } + out.Dispatch(ctx) + if out.Invalids > 0 { + return graphql.Null + } + + atomic.AddInt32(&ec.deferred, int32(len(deferred))) + + for label, dfs := range deferred { + ec.processDeferredGroup(graphql.DeferredGroup{ + Label: label, + Path: graphql.GetPath(ctx), + FieldSet: dfs, + Context: ctx, + }) + } + + return out +} + +var queueJobsQueryResultImplementors = []string{"QueueJobsQueryResult"} + +func (ec *executionContext) _QueueJobsQueryResult(ctx context.Context, sel ast.SelectionSet, obj *gqlmodel.QueueJobsQueryResult) graphql.Marshaler { + fields := graphql.CollectFields(ec.OperationContext, sel, queueJobsQueryResultImplementors) + + out := graphql.NewFieldSet(fields) + deferred := make(map[string]*graphql.FieldSet) + for i, field := range fields { + switch field.Name { + case "__typename": + out.Values[i] = graphql.MarshalString("QueueJobsQueryResult") + case "totalCount": + out.Values[i] = ec._QueueJobsQueryResult_totalCount(ctx, field, obj) + if out.Values[i] == graphql.Null { + out.Invalids++ + } + case "hasNextPage": + out.Values[i] = ec._QueueJobsQueryResult_hasNextPage(ctx, field, obj) + case "items": + out.Values[i] = ec._QueueJobsQueryResult_items(ctx, field, obj) + if out.Values[i] == graphql.Null { + out.Invalids++ + } + case "aggregations": + out.Values[i] = ec._QueueJobsQueryResult_aggregations(ctx, field, obj) + if out.Values[i] == graphql.Null { + out.Invalids++ + } + default: + panic("unknown field " + strconv.Quote(field.Name)) + } + } + out.Dispatch(ctx) + if out.Invalids > 0 { + return graphql.Null + } + + atomic.AddInt32(&ec.deferred, int32(len(deferred))) + + for label, dfs := range deferred { + ec.processDeferredGroup(graphql.DeferredGroup{ + Label: label, + Path: graphql.GetPath(ctx), + FieldSet: dfs, + Context: ctx, + }) + } + + return out +} + +var queueMetricsBucketImplementors = []string{"QueueMetricsBucket"} + +func (ec *executionContext) _QueueMetricsBucket(ctx context.Context, sel ast.SelectionSet, obj *queuemetrics.Bucket) graphql.Marshaler { + fields := graphql.CollectFields(ec.OperationContext, sel, queueMetricsBucketImplementors) + + out := graphql.NewFieldSet(fields) + deferred := make(map[string]*graphql.FieldSet) + for i, field := range fields { + switch field.Name { + case "__typename": + out.Values[i] = graphql.MarshalString("QueueMetricsBucket") + case "queue": + out.Values[i] = ec._QueueMetricsBucket_queue(ctx, field, obj) + if out.Values[i] == graphql.Null { + out.Invalids++ + } + case "status": + out.Values[i] = ec._QueueMetricsBucket_status(ctx, field, obj) + if out.Values[i] == graphql.Null { + out.Invalids++ + } + case "createdAtBucket": + out.Values[i] = ec._QueueMetricsBucket_createdAtBucket(ctx, field, obj) + if out.Values[i] == graphql.Null { + out.Invalids++ + } + case "ranAtBucket": + out.Values[i] = ec._QueueMetricsBucket_ranAtBucket(ctx, field, obj) + case "count": + out.Values[i] = ec._QueueMetricsBucket_count(ctx, field, obj) + if out.Values[i] == graphql.Null { + out.Invalids++ + } + case "latency": + out.Values[i] = ec._QueueMetricsBucket_latency(ctx, field, obj) + default: + panic("unknown field " + strconv.Quote(field.Name)) + } + } + out.Dispatch(ctx) + if out.Invalids > 0 { + return graphql.Null + } + + atomic.AddInt32(&ec.deferred, int32(len(deferred))) + + for label, dfs := range deferred { + ec.processDeferredGroup(graphql.DeferredGroup{ + Label: label, + Path: graphql.GetPath(ctx), + FieldSet: dfs, + Context: ctx, + }) + } + + return out +} + +var queueMetricsQueryResultImplementors = []string{"QueueMetricsQueryResult"} + +func (ec *executionContext) _QueueMetricsQueryResult(ctx context.Context, sel ast.SelectionSet, obj *gen.QueueMetricsQueryResult) graphql.Marshaler { + fields := graphql.CollectFields(ec.OperationContext, sel, queueMetricsQueryResultImplementors) + + out := graphql.NewFieldSet(fields) + deferred := make(map[string]*graphql.FieldSet) + for i, field := range fields { + switch field.Name { + case "__typename": + out.Values[i] = graphql.MarshalString("QueueMetricsQueryResult") + case "buckets": + out.Values[i] = ec._QueueMetricsQueryResult_buckets(ctx, field, obj) + if out.Values[i] == graphql.Null { + out.Invalids++ + } + default: + panic("unknown field " + strconv.Quote(field.Name)) + } + } + out.Dispatch(ctx) + if out.Invalids > 0 { + return graphql.Null + } + + atomic.AddInt32(&ec.deferred, int32(len(deferred))) + + for label, dfs := range deferred { + ec.processDeferredGroup(graphql.DeferredGroup{ + Label: label, + Path: graphql.GetPath(ctx), + FieldSet: dfs, + Context: ctx, + }) + } + + return out +} + +var queueMutationImplementors = []string{"QueueMutation"} + +func (ec *executionContext) _QueueMutation(ctx context.Context, sel ast.SelectionSet, obj *gqlmodel.QueueMutation) graphql.Marshaler { + fields := graphql.CollectFields(ec.OperationContext, sel, queueMutationImplementors) + + out := graphql.NewFieldSet(fields) + deferred := make(map[string]*graphql.FieldSet) + for i, field := range fields { + switch field.Name { + case "__typename": + out.Values[i] = graphql.MarshalString("QueueMutation") + case "purgeJobs": + field := field + + innerFunc := func(ctx context.Context, _ *graphql.FieldSet) (res graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + } + }() + res = ec._QueueMutation_purgeJobs(ctx, field, obj) + return res + } + + if field.Deferrable != nil { + dfs, ok := deferred[field.Deferrable.Label] + di := 0 + if ok { + dfs.AddField(field) + di = len(dfs.Values) - 1 + } else { + dfs = graphql.NewFieldSet([]graphql.CollectedField{field}) + deferred[field.Deferrable.Label] = dfs + } + dfs.Concurrently(di, func(ctx context.Context) graphql.Marshaler { + return innerFunc(ctx, dfs) + }) + + // don't run the out.Concurrently() call below + out.Values[i] = graphql.Null + continue + } + + out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) + case "enqueueReprocessTorrentsBatch": + field := field + + innerFunc := func(ctx context.Context, _ *graphql.FieldSet) (res graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + } + }() + res = ec._QueueMutation_enqueueReprocessTorrentsBatch(ctx, field, obj) + return res + } + + if field.Deferrable != nil { + dfs, ok := deferred[field.Deferrable.Label] + di := 0 + if ok { + dfs.AddField(field) + di = len(dfs.Values) - 1 + } else { + dfs = graphql.NewFieldSet([]graphql.CollectedField{field}) + deferred[field.Deferrable.Label] = dfs + } + dfs.Concurrently(di, func(ctx context.Context) graphql.Marshaler { + return innerFunc(ctx, dfs) + }) + + // don't run the out.Concurrently() call below + out.Values[i] = graphql.Null + continue + } + + out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) + default: + panic("unknown field " + strconv.Quote(field.Name)) + } + } + out.Dispatch(ctx) + if out.Invalids > 0 { + return graphql.Null + } + + atomic.AddInt32(&ec.deferred, int32(len(deferred))) + + for label, dfs := range deferred { + ec.processDeferredGroup(graphql.DeferredGroup{ + Label: label, + Path: graphql.GetPath(ctx), + FieldSet: dfs, + Context: ctx, + }) + } + + return out +} + +var queueQueryImplementors = []string{"QueueQuery"} + +func (ec *executionContext) _QueueQuery(ctx context.Context, sel ast.SelectionSet, obj *gqlmodel.QueueQuery) graphql.Marshaler { + fields := graphql.CollectFields(ec.OperationContext, sel, queueQueryImplementors) + + out := graphql.NewFieldSet(fields) + deferred := make(map[string]*graphql.FieldSet) + for i, field := range fields { + switch field.Name { + case "__typename": + out.Values[i] = graphql.MarshalString("QueueQuery") + case "jobs": + field := field + + innerFunc := func(ctx context.Context, fs *graphql.FieldSet) (res graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + } + }() + res = ec._QueueQuery_jobs(ctx, field, obj) + if res == graphql.Null { + atomic.AddUint32(&fs.Invalids, 1) + } + return res + } + + if field.Deferrable != nil { + dfs, ok := deferred[field.Deferrable.Label] + di := 0 + if ok { + dfs.AddField(field) + di = len(dfs.Values) - 1 + } else { + dfs = graphql.NewFieldSet([]graphql.CollectedField{field}) + deferred[field.Deferrable.Label] = dfs + } + dfs.Concurrently(di, func(ctx context.Context) graphql.Marshaler { + return innerFunc(ctx, dfs) + }) + + // don't run the out.Concurrently() call below + out.Values[i] = graphql.Null + continue + } + + out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) + case "metrics": + field := field + + innerFunc := func(ctx context.Context, fs *graphql.FieldSet) (res graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + } + }() + res = ec._QueueQuery_metrics(ctx, field, obj) + if res == graphql.Null { + atomic.AddUint32(&fs.Invalids, 1) + } + return res + } + + if field.Deferrable != nil { + dfs, ok := deferred[field.Deferrable.Label] + di := 0 + if ok { + dfs.AddField(field) + di = len(dfs.Values) - 1 + } else { + dfs = graphql.NewFieldSet([]graphql.CollectedField{field}) + deferred[field.Deferrable.Label] = dfs + } + dfs.Concurrently(di, func(ctx context.Context) graphql.Marshaler { + return innerFunc(ctx, dfs) + }) + + // don't run the out.Concurrently() call below + out.Values[i] = graphql.Null + continue + } + + out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) + default: + panic("unknown field " + strconv.Quote(field.Name)) + } + } + out.Dispatch(ctx) + if out.Invalids > 0 { + return graphql.Null + } + + atomic.AddInt32(&ec.deferred, int32(len(deferred))) + + for label, dfs := range deferred { + ec.processDeferredGroup(graphql.DeferredGroup{ + Label: label, + Path: graphql.GetPath(ctx), + FieldSet: dfs, + Context: ctx, + }) + } + + return out +} + var releaseYearAggImplementors = []string{"ReleaseYearAgg"} func (ec *executionContext) _ReleaseYearAgg(ctx context.Context, sel ast.SelectionSet, obj *gen.ReleaseYearAgg) graphql.Marshaler { @@ -12967,45 +18414,6 @@ func (ec *executionContext) _SuggestedTag(ctx context.Context, sel ast.Selection return out } -var systemQueryImplementors = []string{"SystemQuery"} - -func (ec *executionContext) _SystemQuery(ctx context.Context, sel ast.SelectionSet, obj *gen.SystemQuery) graphql.Marshaler { - fields := graphql.CollectFields(ec.OperationContext, sel, systemQueryImplementors) - - out := graphql.NewFieldSet(fields) - deferred := make(map[string]*graphql.FieldSet) - for i, field := range fields { - switch field.Name { - case "__typename": - out.Values[i] = graphql.MarshalString("SystemQuery") - case "version": - out.Values[i] = ec._SystemQuery_version(ctx, field, obj) - if out.Values[i] == graphql.Null { - out.Invalids++ - } - default: - panic("unknown field " + strconv.Quote(field.Name)) - } - } - out.Dispatch(ctx) - if out.Invalids > 0 { - return graphql.Null - } - - atomic.AddInt32(&ec.deferred, int32(len(deferred))) - - for label, dfs := range deferred { - ec.processDeferredGroup(graphql.DeferredGroup{ - Label: label, - Path: graphql.GetPath(ctx), - FieldSet: dfs, - Context: ctx, - }) - } - - return out -} - var torrentImplementors = []string{"Torrent"} func (ec *executionContext) _Torrent(ctx context.Context, sel ast.SelectionSet, obj *model.Torrent) graphql.Marshaler { @@ -13534,6 +18942,184 @@ func (ec *executionContext) _TorrentFileTypeAgg(ctx context.Context, sel ast.Sel return out } +var torrentFilesQueryResultImplementors = []string{"TorrentFilesQueryResult"} + +func (ec *executionContext) _TorrentFilesQueryResult(ctx context.Context, sel ast.SelectionSet, obj *query.GenericResult[model.TorrentFile]) graphql.Marshaler { + fields := graphql.CollectFields(ec.OperationContext, sel, torrentFilesQueryResultImplementors) + + out := graphql.NewFieldSet(fields) + deferred := make(map[string]*graphql.FieldSet) + for i, field := range fields { + switch field.Name { + case "__typename": + out.Values[i] = graphql.MarshalString("TorrentFilesQueryResult") + case "totalCount": + out.Values[i] = ec._TorrentFilesQueryResult_totalCount(ctx, field, obj) + if out.Values[i] == graphql.Null { + out.Invalids++ + } + case "hasNextPage": + out.Values[i] = ec._TorrentFilesQueryResult_hasNextPage(ctx, field, obj) + case "items": + out.Values[i] = ec._TorrentFilesQueryResult_items(ctx, field, obj) + if out.Values[i] == graphql.Null { + out.Invalids++ + } + default: + panic("unknown field " + strconv.Quote(field.Name)) + } + } + out.Dispatch(ctx) + if out.Invalids > 0 { + return graphql.Null + } + + atomic.AddInt32(&ec.deferred, int32(len(deferred))) + + for label, dfs := range deferred { + ec.processDeferredGroup(graphql.DeferredGroup{ + Label: label, + Path: graphql.GetPath(ctx), + FieldSet: dfs, + Context: ctx, + }) + } + + return out +} + +var torrentListSourcesResultImplementors = []string{"TorrentListSourcesResult"} + +func (ec *executionContext) _TorrentListSourcesResult(ctx context.Context, sel ast.SelectionSet, obj *gen.TorrentListSourcesResult) graphql.Marshaler { + fields := graphql.CollectFields(ec.OperationContext, sel, torrentListSourcesResultImplementors) + + out := graphql.NewFieldSet(fields) + deferred := make(map[string]*graphql.FieldSet) + for i, field := range fields { + switch field.Name { + case "__typename": + out.Values[i] = graphql.MarshalString("TorrentListSourcesResult") + case "sources": + out.Values[i] = ec._TorrentListSourcesResult_sources(ctx, field, obj) + if out.Values[i] == graphql.Null { + out.Invalids++ + } + default: + panic("unknown field " + strconv.Quote(field.Name)) + } + } + out.Dispatch(ctx) + if out.Invalids > 0 { + return graphql.Null + } + + atomic.AddInt32(&ec.deferred, int32(len(deferred))) + + for label, dfs := range deferred { + ec.processDeferredGroup(graphql.DeferredGroup{ + Label: label, + Path: graphql.GetPath(ctx), + FieldSet: dfs, + Context: ctx, + }) + } + + return out +} + +var torrentMetricsBucketImplementors = []string{"TorrentMetricsBucket"} + +func (ec *executionContext) _TorrentMetricsBucket(ctx context.Context, sel ast.SelectionSet, obj *torrentmetrics.Bucket) graphql.Marshaler { + fields := graphql.CollectFields(ec.OperationContext, sel, torrentMetricsBucketImplementors) + + out := graphql.NewFieldSet(fields) + deferred := make(map[string]*graphql.FieldSet) + for i, field := range fields { + switch field.Name { + case "__typename": + out.Values[i] = graphql.MarshalString("TorrentMetricsBucket") + case "source": + out.Values[i] = ec._TorrentMetricsBucket_source(ctx, field, obj) + if out.Values[i] == graphql.Null { + out.Invalids++ + } + case "bucket": + out.Values[i] = ec._TorrentMetricsBucket_bucket(ctx, field, obj) + if out.Values[i] == graphql.Null { + out.Invalids++ + } + case "updated": + out.Values[i] = ec._TorrentMetricsBucket_updated(ctx, field, obj) + if out.Values[i] == graphql.Null { + out.Invalids++ + } + case "count": + out.Values[i] = ec._TorrentMetricsBucket_count(ctx, field, obj) + if out.Values[i] == graphql.Null { + out.Invalids++ + } + default: + panic("unknown field " + strconv.Quote(field.Name)) + } + } + out.Dispatch(ctx) + if out.Invalids > 0 { + return graphql.Null + } + + atomic.AddInt32(&ec.deferred, int32(len(deferred))) + + for label, dfs := range deferred { + ec.processDeferredGroup(graphql.DeferredGroup{ + Label: label, + Path: graphql.GetPath(ctx), + FieldSet: dfs, + Context: ctx, + }) + } + + return out +} + +var torrentMetricsQueryResultImplementors = []string{"TorrentMetricsQueryResult"} + +func (ec *executionContext) _TorrentMetricsQueryResult(ctx context.Context, sel ast.SelectionSet, obj *gen.TorrentMetricsQueryResult) graphql.Marshaler { + fields := graphql.CollectFields(ec.OperationContext, sel, torrentMetricsQueryResultImplementors) + + out := graphql.NewFieldSet(fields) + deferred := make(map[string]*graphql.FieldSet) + for i, field := range fields { + switch field.Name { + case "__typename": + out.Values[i] = graphql.MarshalString("TorrentMetricsQueryResult") + case "buckets": + out.Values[i] = ec._TorrentMetricsQueryResult_buckets(ctx, field, obj) + if out.Values[i] == graphql.Null { + out.Invalids++ + } + default: + panic("unknown field " + strconv.Quote(field.Name)) + } + } + out.Dispatch(ctx) + if out.Invalids > 0 { + return graphql.Null + } + + atomic.AddInt32(&ec.deferred, int32(len(deferred))) + + for label, dfs := range deferred { + ec.processDeferredGroup(graphql.DeferredGroup{ + Label: label, + Path: graphql.GetPath(ctx), + FieldSet: dfs, + Context: ctx, + }) + } + + return out +} + var torrentMutationImplementors = []string{"TorrentMutation"} func (ec *executionContext) _TorrentMutation(ctx context.Context, sel ast.SelectionSet, obj *gqlmodel.TorrentMutation) graphql.Marshaler { @@ -13548,7 +19134,7 @@ func (ec *executionContext) _TorrentMutation(ctx context.Context, sel ast.Select case "delete": field := field - innerFunc := func(ctx context.Context, fs *graphql.FieldSet) (res graphql.Marshaler) { + innerFunc := func(ctx context.Context, _ *graphql.FieldSet) (res graphql.Marshaler) { defer func() { if r := recover(); r != nil { ec.Error(ctx, ec.Recover(ctx, r)) @@ -13581,7 +19167,7 @@ func (ec *executionContext) _TorrentMutation(ctx context.Context, sel ast.Select case "putTags": field := field - innerFunc := func(ctx context.Context, fs *graphql.FieldSet) (res graphql.Marshaler) { + innerFunc := func(ctx context.Context, _ *graphql.FieldSet) (res graphql.Marshaler) { defer func() { if r := recover(); r != nil { ec.Error(ctx, ec.Recover(ctx, r)) @@ -13614,7 +19200,7 @@ func (ec *executionContext) _TorrentMutation(ctx context.Context, sel ast.Select case "setTags": field := field - innerFunc := func(ctx context.Context, fs *graphql.FieldSet) (res graphql.Marshaler) { + innerFunc := func(ctx context.Context, _ *graphql.FieldSet) (res graphql.Marshaler) { defer func() { if r := recover(); r != nil { ec.Error(ctx, ec.Recover(ctx, r)) @@ -13647,7 +19233,7 @@ func (ec *executionContext) _TorrentMutation(ctx context.Context, sel ast.Select case "deleteTags": field := field - innerFunc := func(ctx context.Context, fs *graphql.FieldSet) (res graphql.Marshaler) { + innerFunc := func(ctx context.Context, _ *graphql.FieldSet) (res graphql.Marshaler) { defer func() { if r := recover(); r != nil { ec.Error(ctx, ec.Recover(ctx, r)) @@ -13711,6 +19297,78 @@ func (ec *executionContext) _TorrentQuery(ctx context.Context, sel ast.Selection switch field.Name { case "__typename": out.Values[i] = graphql.MarshalString("TorrentQuery") + case "files": + field := field + + innerFunc := func(ctx context.Context, fs *graphql.FieldSet) (res graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + } + }() + res = ec._TorrentQuery_files(ctx, field, obj) + if res == graphql.Null { + atomic.AddUint32(&fs.Invalids, 1) + } + return res + } + + if field.Deferrable != nil { + dfs, ok := deferred[field.Deferrable.Label] + di := 0 + if ok { + dfs.AddField(field) + di = len(dfs.Values) - 1 + } else { + dfs = graphql.NewFieldSet([]graphql.CollectedField{field}) + deferred[field.Deferrable.Label] = dfs + } + dfs.Concurrently(di, func(ctx context.Context) graphql.Marshaler { + return innerFunc(ctx, dfs) + }) + + // don't run the out.Concurrently() call below + out.Values[i] = graphql.Null + continue + } + + out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) + case "listSources": + field := field + + innerFunc := func(ctx context.Context, fs *graphql.FieldSet) (res graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + } + }() + res = ec._TorrentQuery_listSources(ctx, field, obj) + if res == graphql.Null { + atomic.AddUint32(&fs.Invalids, 1) + } + return res + } + + if field.Deferrable != nil { + dfs, ok := deferred[field.Deferrable.Label] + di := 0 + if ok { + dfs.AddField(field) + di = len(dfs.Values) - 1 + } else { + dfs = graphql.NewFieldSet([]graphql.CollectedField{field}) + deferred[field.Deferrable.Label] = dfs + } + dfs.Concurrently(di, func(ctx context.Context) graphql.Marshaler { + return innerFunc(ctx, dfs) + }) + + // don't run the out.Concurrently() call below + out.Values[i] = graphql.Null + continue + } + + out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) case "suggestTags": field := field @@ -13746,6 +19404,42 @@ func (ec *executionContext) _TorrentQuery(ctx context.Context, sel ast.Selection continue } + out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) + case "metrics": + field := field + + innerFunc := func(ctx context.Context, fs *graphql.FieldSet) (res graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + } + }() + res = ec._TorrentQuery_metrics(ctx, field, obj) + if res == graphql.Null { + atomic.AddUint32(&fs.Invalids, 1) + } + return res + } + + if field.Deferrable != nil { + dfs, ok := deferred[field.Deferrable.Label] + di := 0 + if ok { + dfs.AddField(field) + di = len(dfs.Values) - 1 + } else { + dfs = graphql.NewFieldSet([]graphql.CollectedField{field}) + deferred[field.Deferrable.Label] = dfs + } + dfs.Concurrently(di, func(ctx context.Context) graphql.Marshaler { + return innerFunc(ctx, dfs) + }) + + // don't run the out.Concurrently() call below + out.Values[i] = graphql.Null + continue + } + out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) default: panic("unknown field " + strconv.Quote(field.Name)) @@ -13772,7 +19466,7 @@ func (ec *executionContext) _TorrentQuery(ctx context.Context, sel ast.Selection var torrentSourceImplementors = []string{"TorrentSource"} -func (ec *executionContext) _TorrentSource(ctx context.Context, sel ast.SelectionSet, obj *gqlmodel.TorrentSource) graphql.Marshaler { +func (ec *executionContext) _TorrentSource(ctx context.Context, sel ast.SelectionSet, obj *model.TorrentSource) graphql.Marshaler { fields := graphql.CollectFields(ec.OperationContext, sel, torrentSourceImplementors) out := graphql.NewFieldSet(fields) @@ -13791,12 +19485,6 @@ func (ec *executionContext) _TorrentSource(ctx context.Context, sel ast.Selectio if out.Values[i] == graphql.Null { out.Invalids++ } - case "importId": - out.Values[i] = ec._TorrentSource_importId(ctx, field, obj) - case "seeders": - out.Values[i] = ec._TorrentSource_seeders(ctx, field, obj) - case "leechers": - out.Values[i] = ec._TorrentSource_leechers(ctx, field, obj) default: panic("unknown field " + strconv.Quote(field.Name)) } @@ -13874,6 +19562,56 @@ func (ec *executionContext) _TorrentSourceAgg(ctx context.Context, sel ast.Selec return out } +var torrentSourceInfoImplementors = []string{"TorrentSourceInfo"} + +func (ec *executionContext) _TorrentSourceInfo(ctx context.Context, sel ast.SelectionSet, obj *gqlmodel.TorrentSourceInfo) graphql.Marshaler { + fields := graphql.CollectFields(ec.OperationContext, sel, torrentSourceInfoImplementors) + + out := graphql.NewFieldSet(fields) + deferred := make(map[string]*graphql.FieldSet) + for i, field := range fields { + switch field.Name { + case "__typename": + out.Values[i] = graphql.MarshalString("TorrentSourceInfo") + case "key": + out.Values[i] = ec._TorrentSourceInfo_key(ctx, field, obj) + if out.Values[i] == graphql.Null { + out.Invalids++ + } + case "name": + out.Values[i] = ec._TorrentSourceInfo_name(ctx, field, obj) + if out.Values[i] == graphql.Null { + out.Invalids++ + } + case "importId": + out.Values[i] = ec._TorrentSourceInfo_importId(ctx, field, obj) + case "seeders": + out.Values[i] = ec._TorrentSourceInfo_seeders(ctx, field, obj) + case "leechers": + out.Values[i] = ec._TorrentSourceInfo_leechers(ctx, field, obj) + default: + panic("unknown field " + strconv.Quote(field.Name)) + } + } + out.Dispatch(ctx) + if out.Invalids > 0 { + return graphql.Null + } + + atomic.AddInt32(&ec.deferred, int32(len(deferred))) + + for label, dfs := range deferred { + ec.processDeferredGroup(graphql.DeferredGroup{ + Label: label, + Path: graphql.GetPath(ctx), + FieldSet: dfs, + Context: ctx, + }) + } + + return out +} + var torrentSuggestTagsResultImplementors = []string{"TorrentSuggestTagsResult"} func (ec *executionContext) _TorrentSuggestTagsResult(ctx context.Context, sel ast.SelectionSet, obj *search.TorrentSuggestTagsResult) graphql.Marshaler { @@ -14069,6 +19807,128 @@ func (ec *executionContext) _VideoSourceAgg(ctx context.Context, sel ast.Selecti return out } +var workerImplementors = []string{"Worker"} + +func (ec *executionContext) _Worker(ctx context.Context, sel ast.SelectionSet, obj *gen.Worker) graphql.Marshaler { + fields := graphql.CollectFields(ec.OperationContext, sel, workerImplementors) + + out := graphql.NewFieldSet(fields) + deferred := make(map[string]*graphql.FieldSet) + for i, field := range fields { + switch field.Name { + case "__typename": + out.Values[i] = graphql.MarshalString("Worker") + case "key": + out.Values[i] = ec._Worker_key(ctx, field, obj) + if out.Values[i] == graphql.Null { + out.Invalids++ + } + case "started": + out.Values[i] = ec._Worker_started(ctx, field, obj) + if out.Values[i] == graphql.Null { + out.Invalids++ + } + default: + panic("unknown field " + strconv.Quote(field.Name)) + } + } + out.Dispatch(ctx) + if out.Invalids > 0 { + return graphql.Null + } + + atomic.AddInt32(&ec.deferred, int32(len(deferred))) + + for label, dfs := range deferred { + ec.processDeferredGroup(graphql.DeferredGroup{ + Label: label, + Path: graphql.GetPath(ctx), + FieldSet: dfs, + Context: ctx, + }) + } + + return out +} + +var workersListAllQueryResultImplementors = []string{"WorkersListAllQueryResult"} + +func (ec *executionContext) _WorkersListAllQueryResult(ctx context.Context, sel ast.SelectionSet, obj *gen.WorkersListAllQueryResult) graphql.Marshaler { + fields := graphql.CollectFields(ec.OperationContext, sel, workersListAllQueryResultImplementors) + + out := graphql.NewFieldSet(fields) + deferred := make(map[string]*graphql.FieldSet) + for i, field := range fields { + switch field.Name { + case "__typename": + out.Values[i] = graphql.MarshalString("WorkersListAllQueryResult") + case "workers": + out.Values[i] = ec._WorkersListAllQueryResult_workers(ctx, field, obj) + if out.Values[i] == graphql.Null { + out.Invalids++ + } + default: + panic("unknown field " + strconv.Quote(field.Name)) + } + } + out.Dispatch(ctx) + if out.Invalids > 0 { + return graphql.Null + } + + atomic.AddInt32(&ec.deferred, int32(len(deferred))) + + for label, dfs := range deferred { + ec.processDeferredGroup(graphql.DeferredGroup{ + Label: label, + Path: graphql.GetPath(ctx), + FieldSet: dfs, + Context: ctx, + }) + } + + return out +} + +var workersQueryImplementors = []string{"WorkersQuery"} + +func (ec *executionContext) _WorkersQuery(ctx context.Context, sel ast.SelectionSet, obj *gen.WorkersQuery) graphql.Marshaler { + fields := graphql.CollectFields(ec.OperationContext, sel, workersQueryImplementors) + + out := graphql.NewFieldSet(fields) + deferred := make(map[string]*graphql.FieldSet) + for i, field := range fields { + switch field.Name { + case "__typename": + out.Values[i] = graphql.MarshalString("WorkersQuery") + case "listAll": + out.Values[i] = ec._WorkersQuery_listAll(ctx, field, obj) + if out.Values[i] == graphql.Null { + out.Invalids++ + } + default: + panic("unknown field " + strconv.Quote(field.Name)) + } + } + out.Dispatch(ctx) + if out.Invalids > 0 { + return graphql.Null + } + + atomic.AddInt32(&ec.deferred, int32(len(deferred))) + + for label, dfs := range deferred { + ec.processDeferredGroup(graphql.DeferredGroup{ + Label: label, + Path: graphql.GetPath(ctx), + FieldSet: dfs, + Context: ctx, + }) + } + + return out +} + var __DirectiveImplementors = []string{"__Directive"} func (ec *executionContext) ___Directive(ctx context.Context, sel ast.SelectionSet, obj *introspection.Directive) graphql.Marshaler { @@ -14667,6 +20527,68 @@ func (ec *executionContext) marshalNHash202ᚕgithubᚗcomᚋbitmagnetᚑioᚋbi return ret } +func (ec *executionContext) marshalNHealthCheck2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚋgenᚐHealthCheck(ctx context.Context, sel ast.SelectionSet, v gen.HealthCheck) graphql.Marshaler { + return ec._HealthCheck(ctx, sel, &v) +} + +func (ec *executionContext) marshalNHealthCheck2ᚕgithubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚋgenᚐHealthCheckᚄ(ctx context.Context, sel ast.SelectionSet, v []gen.HealthCheck) graphql.Marshaler { + ret := make(graphql.Array, len(v)) + var wg sync.WaitGroup + isLen1 := len(v) == 1 + if !isLen1 { + wg.Add(len(v)) + } + for i := range v { + i := i + fc := &graphql.FieldContext{ + Index: &i, + Result: &v[i], + } + ctx := graphql.WithFieldContext(ctx, fc) + f := func(i int) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = nil + } + }() + if !isLen1 { + defer wg.Done() + } + ret[i] = ec.marshalNHealthCheck2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚋgenᚐHealthCheck(ctx, sel, v[i]) + } + if isLen1 { + f(i) + } else { + go f(i) + } + + } + wg.Wait() + + for _, e := range ret { + if e == graphql.Null { + return graphql.Null + } + } + + return ret +} + +func (ec *executionContext) marshalNHealthQuery2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚋgenᚐHealthQuery(ctx context.Context, sel ast.SelectionSet, v gen.HealthQuery) graphql.Marshaler { + return ec._HealthQuery(ctx, sel, &v) +} + +func (ec *executionContext) unmarshalNHealthStatus2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚋgenᚐHealthStatus(ctx context.Context, v interface{}) (gen.HealthStatus, error) { + var res gen.HealthStatus + err := res.UnmarshalGQL(v) + return res, graphql.ErrorOnPath(ctx, err) +} + +func (ec *executionContext) marshalNHealthStatus2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚋgenᚐHealthStatus(ctx context.Context, sel ast.SelectionSet, v gen.HealthStatus) graphql.Marshaler { + return v +} + func (ec *executionContext) unmarshalNID2string(ctx context.Context, v interface{}) (string, error) { res, err := graphql.UnmarshalID(v) return res, graphql.ErrorOnPath(ctx, err) @@ -14740,6 +20662,192 @@ func (ec *executionContext) marshalNMetadataSource2githubᚗcomᚋbitmagnetᚑio return ec._MetadataSource(ctx, sel, &v) } +func (ec *executionContext) unmarshalNMetricsBucketDuration2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚋgenᚐMetricsBucketDuration(ctx context.Context, v interface{}) (gen.MetricsBucketDuration, error) { + var res gen.MetricsBucketDuration + err := res.UnmarshalGQL(v) + return res, graphql.ErrorOnPath(ctx, err) +} + +func (ec *executionContext) marshalNMetricsBucketDuration2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚋgenᚐMetricsBucketDuration(ctx context.Context, sel ast.SelectionSet, v gen.MetricsBucketDuration) graphql.Marshaler { + return v +} + +func (ec *executionContext) marshalNQueueJob2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐQueueJob(ctx context.Context, sel ast.SelectionSet, v model.QueueJob) graphql.Marshaler { + return ec._QueueJob(ctx, sel, &v) +} + +func (ec *executionContext) marshalNQueueJob2ᚕgithubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐQueueJobᚄ(ctx context.Context, sel ast.SelectionSet, v []model.QueueJob) graphql.Marshaler { + ret := make(graphql.Array, len(v)) + var wg sync.WaitGroup + isLen1 := len(v) == 1 + if !isLen1 { + wg.Add(len(v)) + } + for i := range v { + i := i + fc := &graphql.FieldContext{ + Index: &i, + Result: &v[i], + } + ctx := graphql.WithFieldContext(ctx, fc) + f := func(i int) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = nil + } + }() + if !isLen1 { + defer wg.Done() + } + ret[i] = ec.marshalNQueueJob2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐQueueJob(ctx, sel, v[i]) + } + if isLen1 { + f(i) + } else { + go f(i) + } + + } + wg.Wait() + + for _, e := range ret { + if e == graphql.Null { + return graphql.Null + } + } + + return ret +} + +func (ec *executionContext) marshalNQueueJobQueueAgg2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚋgenᚐQueueJobQueueAgg(ctx context.Context, sel ast.SelectionSet, v gen.QueueJobQueueAgg) graphql.Marshaler { + return ec._QueueJobQueueAgg(ctx, sel, &v) +} + +func (ec *executionContext) unmarshalNQueueJobStatus2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐQueueJobStatus(ctx context.Context, v interface{}) (model.QueueJobStatus, error) { + tmp, err := graphql.UnmarshalString(v) + res := model.QueueJobStatus(tmp) + return res, graphql.ErrorOnPath(ctx, err) +} + +func (ec *executionContext) marshalNQueueJobStatus2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐQueueJobStatus(ctx context.Context, sel ast.SelectionSet, v model.QueueJobStatus) graphql.Marshaler { + res := graphql.MarshalString(string(v)) + if res == graphql.Null { + if !graphql.HasFieldError(ctx, graphql.GetFieldContext(ctx)) { + ec.Errorf(ctx, "the requested element is null which the schema does not allow") + } + } + return res +} + +func (ec *executionContext) marshalNQueueJobStatusAgg2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚋgenᚐQueueJobStatusAgg(ctx context.Context, sel ast.SelectionSet, v gen.QueueJobStatusAgg) graphql.Marshaler { + return ec._QueueJobStatusAgg(ctx, sel, &v) +} + +func (ec *executionContext) marshalNQueueJobsAggregations2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚋgenᚐQueueJobsAggregations(ctx context.Context, sel ast.SelectionSet, v gen.QueueJobsAggregations) graphql.Marshaler { + return ec._QueueJobsAggregations(ctx, sel, &v) +} + +func (ec *executionContext) unmarshalNQueueJobsOrderByField2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚋgenᚐQueueJobsOrderByField(ctx context.Context, v interface{}) (gen.QueueJobsOrderByField, error) { + var res gen.QueueJobsOrderByField + err := res.UnmarshalGQL(v) + return res, graphql.ErrorOnPath(ctx, err) +} + +func (ec *executionContext) marshalNQueueJobsOrderByField2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚋgenᚐQueueJobsOrderByField(ctx context.Context, sel ast.SelectionSet, v gen.QueueJobsOrderByField) graphql.Marshaler { + return v +} + +func (ec *executionContext) unmarshalNQueueJobsOrderByInput2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚋgenᚐQueueJobsOrderByInput(ctx context.Context, v interface{}) (gen.QueueJobsOrderByInput, error) { + res, err := ec.unmarshalInputQueueJobsOrderByInput(ctx, v) + return res, graphql.ErrorOnPath(ctx, err) +} + +func (ec *executionContext) unmarshalNQueueJobsQueryInput2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚐQueueJobsQueryInput(ctx context.Context, v interface{}) (gqlmodel.QueueJobsQueryInput, error) { + res, err := ec.unmarshalInputQueueJobsQueryInput(ctx, v) + return res, graphql.ErrorOnPath(ctx, err) +} + +func (ec *executionContext) marshalNQueueJobsQueryResult2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚐQueueJobsQueryResult(ctx context.Context, sel ast.SelectionSet, v gqlmodel.QueueJobsQueryResult) graphql.Marshaler { + return ec._QueueJobsQueryResult(ctx, sel, &v) +} + +func (ec *executionContext) marshalNQueueMetricsBucket2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmetricsᚋqueuemetricsᚐBucket(ctx context.Context, sel ast.SelectionSet, v queuemetrics.Bucket) graphql.Marshaler { + return ec._QueueMetricsBucket(ctx, sel, &v) +} + +func (ec *executionContext) marshalNQueueMetricsBucket2ᚕgithubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmetricsᚋqueuemetricsᚐBucketᚄ(ctx context.Context, sel ast.SelectionSet, v []queuemetrics.Bucket) graphql.Marshaler { + ret := make(graphql.Array, len(v)) + var wg sync.WaitGroup + isLen1 := len(v) == 1 + if !isLen1 { + wg.Add(len(v)) + } + for i := range v { + i := i + fc := &graphql.FieldContext{ + Index: &i, + Result: &v[i], + } + ctx := graphql.WithFieldContext(ctx, fc) + f := func(i int) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = nil + } + }() + if !isLen1 { + defer wg.Done() + } + ret[i] = ec.marshalNQueueMetricsBucket2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmetricsᚋqueuemetricsᚐBucket(ctx, sel, v[i]) + } + if isLen1 { + f(i) + } else { + go f(i) + } + + } + wg.Wait() + + for _, e := range ret { + if e == graphql.Null { + return graphql.Null + } + } + + return ret +} + +func (ec *executionContext) unmarshalNQueueMetricsQueryInput2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚋgenᚐQueueMetricsQueryInput(ctx context.Context, v interface{}) (gen.QueueMetricsQueryInput, error) { + res, err := ec.unmarshalInputQueueMetricsQueryInput(ctx, v) + return res, graphql.ErrorOnPath(ctx, err) +} + +func (ec *executionContext) marshalNQueueMetricsQueryResult2ᚖgithubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚋgenᚐQueueMetricsQueryResult(ctx context.Context, sel ast.SelectionSet, v *gen.QueueMetricsQueryResult) graphql.Marshaler { + if v == nil { + if !graphql.HasFieldError(ctx, graphql.GetFieldContext(ctx)) { + ec.Errorf(ctx, "the requested element is null which the schema does not allow") + } + return graphql.Null + } + return ec._QueueMetricsQueryResult(ctx, sel, v) +} + +func (ec *executionContext) marshalNQueueMutation2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚐQueueMutation(ctx context.Context, sel ast.SelectionSet, v gqlmodel.QueueMutation) graphql.Marshaler { + return ec._QueueMutation(ctx, sel, &v) +} + +func (ec *executionContext) unmarshalNQueuePurgeJobsInput2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋqueueᚋmanagerᚐPurgeJobsRequest(ctx context.Context, v interface{}) (manager.PurgeJobsRequest, error) { + res, err := ec.unmarshalInputQueuePurgeJobsInput(ctx, v) + return res, graphql.ErrorOnPath(ctx, err) +} + +func (ec *executionContext) marshalNQueueQuery2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚐQueueQuery(ctx context.Context, sel ast.SelectionSet, v gqlmodel.QueueQuery) graphql.Marshaler { + return ec._QueueQuery(ctx, sel, &v) +} + func (ec *executionContext) marshalNReleaseYearAgg2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚋgenᚐReleaseYearAgg(ctx context.Context, sel ast.SelectionSet, v gen.ReleaseYearAgg) graphql.Marshaler { return ec._ReleaseYearAgg(ctx, sel, &v) } @@ -14887,10 +20995,6 @@ func (ec *executionContext) marshalNSuggestedTag2ᚕgithubᚗcomᚋbitmagnetᚑi return ret } -func (ec *executionContext) marshalNSystemQuery2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚋgenᚐSystemQuery(ctx context.Context, sel ast.SelectionSet, v gen.SystemQuery) graphql.Marshaler { - return ec._SystemQuery(ctx, sel, &v) -} - func (ec *executionContext) marshalNTorrent2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐTorrent(ctx context.Context, sel ast.SelectionSet, v model.Torrent) graphql.Marshaler { return ec._Torrent(ctx, sel, &v) } @@ -14947,13 +21051,13 @@ func (ec *executionContext) marshalNTorrentContentAggregations2githubᚗcomᚋbi return ec._TorrentContentAggregations(ctx, sel, &v) } -func (ec *executionContext) unmarshalNTorrentContentOrderBy2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚋgenᚐTorrentContentOrderBy(ctx context.Context, v interface{}) (gen.TorrentContentOrderBy, error) { - var res gen.TorrentContentOrderBy +func (ec *executionContext) unmarshalNTorrentContentOrderByField2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚋgenᚐTorrentContentOrderByField(ctx context.Context, v interface{}) (gen.TorrentContentOrderByField, error) { + var res gen.TorrentContentOrderByField err := res.UnmarshalGQL(v) return res, graphql.ErrorOnPath(ctx, err) } -func (ec *executionContext) marshalNTorrentContentOrderBy2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚋgenᚐTorrentContentOrderBy(ctx context.Context, sel ast.SelectionSet, v gen.TorrentContentOrderBy) graphql.Marshaler { +func (ec *executionContext) marshalNTorrentContentOrderByField2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚋgenᚐTorrentContentOrderByField(ctx context.Context, sel ast.SelectionSet, v gen.TorrentContentOrderByField) graphql.Marshaler { return v } @@ -14966,6 +21070,11 @@ func (ec *executionContext) marshalNTorrentContentQuery2githubᚗcomᚋbitmagnet return ec._TorrentContentQuery(ctx, sel, &v) } +func (ec *executionContext) unmarshalNTorrentContentSearchQueryInput2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚐTorrentContentSearchQueryInput(ctx context.Context, v interface{}) (gqlmodel.TorrentContentSearchQueryInput, error) { + res, err := ec.unmarshalInputTorrentContentSearchQueryInput(ctx, v) + return res, graphql.ErrorOnPath(ctx, err) +} + func (ec *executionContext) marshalNTorrentContentSearchResult2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚐTorrentContentSearchResult(ctx context.Context, sel ast.SelectionSet, v gqlmodel.TorrentContentSearchResult) graphql.Marshaler { return ec._TorrentContentSearchResult(ctx, sel, &v) } @@ -14974,23 +21083,7 @@ func (ec *executionContext) marshalNTorrentFile2githubᚗcomᚋbitmagnetᚑioᚋ return ec._TorrentFile(ctx, sel, &v) } -func (ec *executionContext) marshalNTorrentFileTypeAgg2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚋgenᚐTorrentFileTypeAgg(ctx context.Context, sel ast.SelectionSet, v gen.TorrentFileTypeAgg) graphql.Marshaler { - return ec._TorrentFileTypeAgg(ctx, sel, &v) -} - -func (ec *executionContext) marshalNTorrentMutation2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚐTorrentMutation(ctx context.Context, sel ast.SelectionSet, v gqlmodel.TorrentMutation) graphql.Marshaler { - return ec._TorrentMutation(ctx, sel, &v) -} - -func (ec *executionContext) marshalNTorrentQuery2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚐTorrentQuery(ctx context.Context, sel ast.SelectionSet, v gqlmodel.TorrentQuery) graphql.Marshaler { - return ec._TorrentQuery(ctx, sel, &v) -} - -func (ec *executionContext) marshalNTorrentSource2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚐTorrentSource(ctx context.Context, sel ast.SelectionSet, v gqlmodel.TorrentSource) graphql.Marshaler { - return ec._TorrentSource(ctx, sel, &v) -} - -func (ec *executionContext) marshalNTorrentSource2ᚕgithubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚐTorrentSourceᚄ(ctx context.Context, sel ast.SelectionSet, v []gqlmodel.TorrentSource) graphql.Marshaler { +func (ec *executionContext) marshalNTorrentFile2ᚕgithubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐTorrentFileᚄ(ctx context.Context, sel ast.SelectionSet, v []model.TorrentFile) graphql.Marshaler { ret := make(graphql.Array, len(v)) var wg sync.WaitGroup isLen1 := len(v) == 1 @@ -15014,7 +21107,158 @@ func (ec *executionContext) marshalNTorrentSource2ᚕgithubᚗcomᚋbitmagnetᚑ if !isLen1 { defer wg.Done() } - ret[i] = ec.marshalNTorrentSource2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚐTorrentSource(ctx, sel, v[i]) + ret[i] = ec.marshalNTorrentFile2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐTorrentFile(ctx, sel, v[i]) + } + if isLen1 { + f(i) + } else { + go f(i) + } + + } + wg.Wait() + + for _, e := range ret { + if e == graphql.Null { + return graphql.Null + } + } + + return ret +} + +func (ec *executionContext) marshalNTorrentFileTypeAgg2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚋgenᚐTorrentFileTypeAgg(ctx context.Context, sel ast.SelectionSet, v gen.TorrentFileTypeAgg) graphql.Marshaler { + return ec._TorrentFileTypeAgg(ctx, sel, &v) +} + +func (ec *executionContext) unmarshalNTorrentFilesOrderByField2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚋgenᚐTorrentFilesOrderByField(ctx context.Context, v interface{}) (gen.TorrentFilesOrderByField, error) { + var res gen.TorrentFilesOrderByField + err := res.UnmarshalGQL(v) + return res, graphql.ErrorOnPath(ctx, err) +} + +func (ec *executionContext) marshalNTorrentFilesOrderByField2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚋgenᚐTorrentFilesOrderByField(ctx context.Context, sel ast.SelectionSet, v gen.TorrentFilesOrderByField) graphql.Marshaler { + return v +} + +func (ec *executionContext) unmarshalNTorrentFilesOrderByInput2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚋgenᚐTorrentFilesOrderByInput(ctx context.Context, v interface{}) (gen.TorrentFilesOrderByInput, error) { + res, err := ec.unmarshalInputTorrentFilesOrderByInput(ctx, v) + return res, graphql.ErrorOnPath(ctx, err) +} + +func (ec *executionContext) unmarshalNTorrentFilesQueryInput2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚐTorrentFilesQueryInput(ctx context.Context, v interface{}) (gqlmodel.TorrentFilesQueryInput, error) { + res, err := ec.unmarshalInputTorrentFilesQueryInput(ctx, v) + return res, graphql.ErrorOnPath(ctx, err) +} + +func (ec *executionContext) marshalNTorrentFilesQueryResult2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋdatabaseᚋqueryᚐGenericResult(ctx context.Context, sel ast.SelectionSet, v query.GenericResult[model.TorrentFile]) graphql.Marshaler { + return ec._TorrentFilesQueryResult(ctx, sel, &v) +} + +func (ec *executionContext) marshalNTorrentListSourcesResult2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚋgenᚐTorrentListSourcesResult(ctx context.Context, sel ast.SelectionSet, v gen.TorrentListSourcesResult) graphql.Marshaler { + return ec._TorrentListSourcesResult(ctx, sel, &v) +} + +func (ec *executionContext) marshalNTorrentMetricsBucket2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmetricsᚋtorrentmetricsᚐBucket(ctx context.Context, sel ast.SelectionSet, v torrentmetrics.Bucket) graphql.Marshaler { + return ec._TorrentMetricsBucket(ctx, sel, &v) +} + +func (ec *executionContext) marshalNTorrentMetricsBucket2ᚕgithubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmetricsᚋtorrentmetricsᚐBucketᚄ(ctx context.Context, sel ast.SelectionSet, v []torrentmetrics.Bucket) graphql.Marshaler { + ret := make(graphql.Array, len(v)) + var wg sync.WaitGroup + isLen1 := len(v) == 1 + if !isLen1 { + wg.Add(len(v)) + } + for i := range v { + i := i + fc := &graphql.FieldContext{ + Index: &i, + Result: &v[i], + } + ctx := graphql.WithFieldContext(ctx, fc) + f := func(i int) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = nil + } + }() + if !isLen1 { + defer wg.Done() + } + ret[i] = ec.marshalNTorrentMetricsBucket2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmetricsᚋtorrentmetricsᚐBucket(ctx, sel, v[i]) + } + if isLen1 { + f(i) + } else { + go f(i) + } + + } + wg.Wait() + + for _, e := range ret { + if e == graphql.Null { + return graphql.Null + } + } + + return ret +} + +func (ec *executionContext) unmarshalNTorrentMetricsQueryInput2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚋgenᚐTorrentMetricsQueryInput(ctx context.Context, v interface{}) (gen.TorrentMetricsQueryInput, error) { + res, err := ec.unmarshalInputTorrentMetricsQueryInput(ctx, v) + return res, graphql.ErrorOnPath(ctx, err) +} + +func (ec *executionContext) marshalNTorrentMetricsQueryResult2ᚖgithubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚋgenᚐTorrentMetricsQueryResult(ctx context.Context, sel ast.SelectionSet, v *gen.TorrentMetricsQueryResult) graphql.Marshaler { + if v == nil { + if !graphql.HasFieldError(ctx, graphql.GetFieldContext(ctx)) { + ec.Errorf(ctx, "the requested element is null which the schema does not allow") + } + return graphql.Null + } + return ec._TorrentMetricsQueryResult(ctx, sel, v) +} + +func (ec *executionContext) marshalNTorrentMutation2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚐTorrentMutation(ctx context.Context, sel ast.SelectionSet, v gqlmodel.TorrentMutation) graphql.Marshaler { + return ec._TorrentMutation(ctx, sel, &v) +} + +func (ec *executionContext) marshalNTorrentQuery2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚐTorrentQuery(ctx context.Context, sel ast.SelectionSet, v gqlmodel.TorrentQuery) graphql.Marshaler { + return ec._TorrentQuery(ctx, sel, &v) +} + +func (ec *executionContext) marshalNTorrentSource2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐTorrentSource(ctx context.Context, sel ast.SelectionSet, v model.TorrentSource) graphql.Marshaler { + return ec._TorrentSource(ctx, sel, &v) +} + +func (ec *executionContext) marshalNTorrentSource2ᚕgithubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐTorrentSourceᚄ(ctx context.Context, sel ast.SelectionSet, v []model.TorrentSource) graphql.Marshaler { + ret := make(graphql.Array, len(v)) + var wg sync.WaitGroup + isLen1 := len(v) == 1 + if !isLen1 { + wg.Add(len(v)) + } + for i := range v { + i := i + fc := &graphql.FieldContext{ + Index: &i, + Result: &v[i], + } + ctx := graphql.WithFieldContext(ctx, fc) + f := func(i int) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = nil + } + }() + if !isLen1 { + defer wg.Done() + } + ret[i] = ec.marshalNTorrentSource2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐTorrentSource(ctx, sel, v[i]) } if isLen1 { f(i) @@ -15038,6 +21282,54 @@ func (ec *executionContext) marshalNTorrentSourceAgg2githubᚗcomᚋbitmagnetᚑ return ec._TorrentSourceAgg(ctx, sel, &v) } +func (ec *executionContext) marshalNTorrentSourceInfo2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚐTorrentSourceInfo(ctx context.Context, sel ast.SelectionSet, v gqlmodel.TorrentSourceInfo) graphql.Marshaler { + return ec._TorrentSourceInfo(ctx, sel, &v) +} + +func (ec *executionContext) marshalNTorrentSourceInfo2ᚕgithubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚐTorrentSourceInfoᚄ(ctx context.Context, sel ast.SelectionSet, v []gqlmodel.TorrentSourceInfo) graphql.Marshaler { + ret := make(graphql.Array, len(v)) + var wg sync.WaitGroup + isLen1 := len(v) == 1 + if !isLen1 { + wg.Add(len(v)) + } + for i := range v { + i := i + fc := &graphql.FieldContext{ + Index: &i, + Result: &v[i], + } + ctx := graphql.WithFieldContext(ctx, fc) + f := func(i int) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = nil + } + }() + if !isLen1 { + defer wg.Done() + } + ret[i] = ec.marshalNTorrentSourceInfo2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚐTorrentSourceInfo(ctx, sel, v[i]) + } + if isLen1 { + f(i) + } else { + go f(i) + } + + } + wg.Wait() + + for _, e := range ret { + if e == graphql.Null { + return graphql.Null + } + } + + return ret +} + func (ec *executionContext) marshalNTorrentSuggestTagsResult2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋdatabaseᚋsearchᚐTorrentSuggestTagsResult(ctx context.Context, sel ast.SelectionSet, v search.TorrentSuggestTagsResult) graphql.Marshaler { return ec._TorrentSuggestTagsResult(ctx, sel, &v) } @@ -15054,6 +21346,62 @@ func (ec *executionContext) marshalNVideoSourceAgg2githubᚗcomᚋbitmagnetᚑio return ec._VideoSourceAgg(ctx, sel, &v) } +func (ec *executionContext) marshalNWorker2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚋgenᚐWorker(ctx context.Context, sel ast.SelectionSet, v gen.Worker) graphql.Marshaler { + return ec._Worker(ctx, sel, &v) +} + +func (ec *executionContext) marshalNWorker2ᚕgithubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚋgenᚐWorkerᚄ(ctx context.Context, sel ast.SelectionSet, v []gen.Worker) graphql.Marshaler { + ret := make(graphql.Array, len(v)) + var wg sync.WaitGroup + isLen1 := len(v) == 1 + if !isLen1 { + wg.Add(len(v)) + } + for i := range v { + i := i + fc := &graphql.FieldContext{ + Index: &i, + Result: &v[i], + } + ctx := graphql.WithFieldContext(ctx, fc) + f := func(i int) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = nil + } + }() + if !isLen1 { + defer wg.Done() + } + ret[i] = ec.marshalNWorker2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚋgenᚐWorker(ctx, sel, v[i]) + } + if isLen1 { + f(i) + } else { + go f(i) + } + + } + wg.Wait() + + for _, e := range ret { + if e == graphql.Null { + return graphql.Null + } + } + + return ret +} + +func (ec *executionContext) marshalNWorkersListAllQueryResult2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚋgenᚐWorkersListAllQueryResult(ctx context.Context, sel ast.SelectionSet, v gen.WorkersListAllQueryResult) graphql.Marshaler { + return ec._WorkersListAllQueryResult(ctx, sel, &v) +} + +func (ec *executionContext) marshalNWorkersQuery2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚋgenᚐWorkersQuery(ctx context.Context, sel ast.SelectionSet, v gen.WorkersQuery) graphql.Marshaler { + return ec._WorkersQuery(ctx, sel, &v) +} + func (ec *executionContext) marshalN__Directive2githubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐDirective(ctx context.Context, sel ast.SelectionSet, v introspection.Directive) graphql.Marshaler { return ec.___Directive(ctx, sel, &v) } @@ -15360,6 +21708,67 @@ func (ec *executionContext) marshalOContentType2githubᚗcomᚋbitmagnetᚑioᚋ return v } +func (ec *executionContext) unmarshalOContentType2ᚕgithubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐNullContentType(ctx context.Context, v interface{}) ([]model.NullContentType, error) { + if v == nil { + return nil, nil + } + var vSlice []interface{} + if v != nil { + vSlice = graphql.CoerceList(v) + } + var err error + res := make([]model.NullContentType, len(vSlice)) + for i := range vSlice { + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithIndex(i)) + res[i], err = ec.unmarshalOContentType2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐNullContentType(ctx, vSlice[i]) + if err != nil { + return nil, err + } + } + return res, nil +} + +func (ec *executionContext) marshalOContentType2ᚕgithubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐNullContentType(ctx context.Context, sel ast.SelectionSet, v []model.NullContentType) graphql.Marshaler { + if v == nil { + return graphql.Null + } + ret := make(graphql.Array, len(v)) + var wg sync.WaitGroup + isLen1 := len(v) == 1 + if !isLen1 { + wg.Add(len(v)) + } + for i := range v { + i := i + fc := &graphql.FieldContext{ + Index: &i, + Result: &v[i], + } + ctx := graphql.WithFieldContext(ctx, fc) + f := func(i int) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = nil + } + }() + if !isLen1 { + defer wg.Done() + } + ret[i] = ec.marshalOContentType2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐNullContentType(ctx, sel, v[i]) + } + if isLen1 { + f(i) + } else { + go f(i) + } + + } + wg.Wait() + + return ret +} + func (ec *executionContext) unmarshalOContentType2ᚕᚖgithubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐContentType(ctx context.Context, v interface{}) ([]*model.ContentType, error) { if v == nil { return nil, nil @@ -15503,6 +21912,48 @@ func (ec *executionContext) marshalODate2githubᚗcomᚋbitmagnetᚑioᚋbitmagn return v } +func (ec *executionContext) unmarshalODateTime2timeᚐTime(ctx context.Context, v interface{}) (time.Time, error) { + res, err := graphql.UnmarshalTime(v) + return res, graphql.ErrorOnPath(ctx, err) +} + +func (ec *executionContext) marshalODateTime2timeᚐTime(ctx context.Context, sel ast.SelectionSet, v time.Time) graphql.Marshaler { + res := graphql.MarshalTime(v) + return res +} + +func (ec *executionContext) unmarshalODateTime2ᚖtimeᚐTime(ctx context.Context, v interface{}) (*time.Time, error) { + if v == nil { + return nil, nil + } + res, err := graphql.UnmarshalTime(v) + return &res, graphql.ErrorOnPath(ctx, err) +} + +func (ec *executionContext) marshalODateTime2ᚖtimeᚐTime(ctx context.Context, sel ast.SelectionSet, v *time.Time) graphql.Marshaler { + if v == nil { + return graphql.Null + } + res := graphql.MarshalTime(*v) + return res +} + +func (ec *executionContext) unmarshalODuration2ᚖtimeᚐDuration(ctx context.Context, v interface{}) (*time.Duration, error) { + if v == nil { + return nil, nil + } + res, err := graphql.UnmarshalDuration(v) + return &res, graphql.ErrorOnPath(ctx, err) +} + +func (ec *executionContext) marshalODuration2ᚖtimeᚐDuration(ctx context.Context, sel ast.SelectionSet, v *time.Duration) graphql.Marshaler { + if v == nil { + return graphql.Null + } + res := graphql.MarshalDuration(*v) + return res +} + func (ec *executionContext) marshalOEpisodes2ᚖgithubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚐEpisodes(ctx context.Context, sel ast.SelectionSet, v *gqlmodel.Episodes) graphql.Marshaler { if v == nil { return graphql.Null @@ -15737,6 +22188,16 @@ func (ec *executionContext) marshalOInt2githubᚗcomᚋbitmagnetᚑioᚋbitmagne return v } +func (ec *executionContext) unmarshalOInt2uint(ctx context.Context, v interface{}) (uint, error) { + res, err := graphql.UnmarshalUint(v) + return res, graphql.ErrorOnPath(ctx, err) +} + +func (ec *executionContext) marshalOInt2uint(ctx context.Context, sel ast.SelectionSet, v uint) graphql.Marshaler { + res := graphql.MarshalUint(v) + return res +} + func (ec *executionContext) unmarshalOInt2ᚕintᚄ(ctx context.Context, v interface{}) ([]int, error) { if v == nil { return nil, nil @@ -15951,6 +22412,224 @@ func (ec *executionContext) marshalOLanguageInfo2ᚖgithubᚗcomᚋbitmagnetᚑi return ec._LanguageInfo(ctx, sel, v) } +func (ec *executionContext) unmarshalOQueueEnqueueReprocessTorrentsBatchInput2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋqueueᚋmanagerᚐEnqueueReprocessTorrentsBatchRequest(ctx context.Context, v interface{}) (manager.EnqueueReprocessTorrentsBatchRequest, error) { + res, err := ec.unmarshalInputQueueEnqueueReprocessTorrentsBatchInput(ctx, v) + return res, graphql.ErrorOnPath(ctx, err) +} + +func (ec *executionContext) unmarshalOQueueEnqueueReprocessTorrentsBatchInput2ᚖgithubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋqueueᚋmanagerᚐEnqueueReprocessTorrentsBatchRequest(ctx context.Context, v interface{}) (*manager.EnqueueReprocessTorrentsBatchRequest, error) { + if v == nil { + return nil, nil + } + res, err := ec.unmarshalInputQueueEnqueueReprocessTorrentsBatchInput(ctx, v) + return &res, graphql.ErrorOnPath(ctx, err) +} + +func (ec *executionContext) marshalOQueueJobQueueAgg2ᚕgithubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚋgenᚐQueueJobQueueAggᚄ(ctx context.Context, sel ast.SelectionSet, v []gen.QueueJobQueueAgg) graphql.Marshaler { + if v == nil { + return graphql.Null + } + ret := make(graphql.Array, len(v)) + var wg sync.WaitGroup + isLen1 := len(v) == 1 + if !isLen1 { + wg.Add(len(v)) + } + for i := range v { + i := i + fc := &graphql.FieldContext{ + Index: &i, + Result: &v[i], + } + ctx := graphql.WithFieldContext(ctx, fc) + f := func(i int) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = nil + } + }() + if !isLen1 { + defer wg.Done() + } + ret[i] = ec.marshalNQueueJobQueueAgg2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚋgenᚐQueueJobQueueAgg(ctx, sel, v[i]) + } + if isLen1 { + f(i) + } else { + go f(i) + } + + } + wg.Wait() + + for _, e := range ret { + if e == graphql.Null { + return graphql.Null + } + } + + return ret +} + +func (ec *executionContext) unmarshalOQueueJobQueueFacetInput2ᚖgithubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚋgenᚐQueueJobQueueFacetInput(ctx context.Context, v interface{}) (*gen.QueueJobQueueFacetInput, error) { + if v == nil { + return nil, nil + } + res, err := ec.unmarshalInputQueueJobQueueFacetInput(ctx, v) + return &res, graphql.ErrorOnPath(ctx, err) +} + +func (ec *executionContext) unmarshalOQueueJobStatus2ᚕgithubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐQueueJobStatusᚄ(ctx context.Context, v interface{}) ([]model.QueueJobStatus, error) { + if v == nil { + return nil, nil + } + var vSlice []interface{} + if v != nil { + vSlice = graphql.CoerceList(v) + } + var err error + res := make([]model.QueueJobStatus, len(vSlice)) + for i := range vSlice { + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithIndex(i)) + res[i], err = ec.unmarshalNQueueJobStatus2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐQueueJobStatus(ctx, vSlice[i]) + if err != nil { + return nil, err + } + } + return res, nil +} + +func (ec *executionContext) marshalOQueueJobStatus2ᚕgithubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐQueueJobStatusᚄ(ctx context.Context, sel ast.SelectionSet, v []model.QueueJobStatus) graphql.Marshaler { + if v == nil { + return graphql.Null + } + ret := make(graphql.Array, len(v)) + var wg sync.WaitGroup + isLen1 := len(v) == 1 + if !isLen1 { + wg.Add(len(v)) + } + for i := range v { + i := i + fc := &graphql.FieldContext{ + Index: &i, + Result: &v[i], + } + ctx := graphql.WithFieldContext(ctx, fc) + f := func(i int) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = nil + } + }() + if !isLen1 { + defer wg.Done() + } + ret[i] = ec.marshalNQueueJobStatus2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐQueueJobStatus(ctx, sel, v[i]) + } + if isLen1 { + f(i) + } else { + go f(i) + } + + } + wg.Wait() + + for _, e := range ret { + if e == graphql.Null { + return graphql.Null + } + } + + return ret +} + +func (ec *executionContext) marshalOQueueJobStatusAgg2ᚕgithubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚋgenᚐQueueJobStatusAggᚄ(ctx context.Context, sel ast.SelectionSet, v []gen.QueueJobStatusAgg) graphql.Marshaler { + if v == nil { + return graphql.Null + } + ret := make(graphql.Array, len(v)) + var wg sync.WaitGroup + isLen1 := len(v) == 1 + if !isLen1 { + wg.Add(len(v)) + } + for i := range v { + i := i + fc := &graphql.FieldContext{ + Index: &i, + Result: &v[i], + } + ctx := graphql.WithFieldContext(ctx, fc) + f := func(i int) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = nil + } + }() + if !isLen1 { + defer wg.Done() + } + ret[i] = ec.marshalNQueueJobStatusAgg2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚋgenᚐQueueJobStatusAgg(ctx, sel, v[i]) + } + if isLen1 { + f(i) + } else { + go f(i) + } + + } + wg.Wait() + + for _, e := range ret { + if e == graphql.Null { + return graphql.Null + } + } + + return ret +} + +func (ec *executionContext) unmarshalOQueueJobStatusFacetInput2ᚖgithubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚋgenᚐQueueJobStatusFacetInput(ctx context.Context, v interface{}) (*gen.QueueJobStatusFacetInput, error) { + if v == nil { + return nil, nil + } + res, err := ec.unmarshalInputQueueJobStatusFacetInput(ctx, v) + return &res, graphql.ErrorOnPath(ctx, err) +} + +func (ec *executionContext) unmarshalOQueueJobsFacetsInput2ᚖgithubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚋgenᚐQueueJobsFacetsInput(ctx context.Context, v interface{}) (*gen.QueueJobsFacetsInput, error) { + if v == nil { + return nil, nil + } + res, err := ec.unmarshalInputQueueJobsFacetsInput(ctx, v) + return &res, graphql.ErrorOnPath(ctx, err) +} + +func (ec *executionContext) unmarshalOQueueJobsOrderByInput2ᚕgithubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚋgenᚐQueueJobsOrderByInputᚄ(ctx context.Context, v interface{}) ([]gen.QueueJobsOrderByInput, error) { + if v == nil { + return nil, nil + } + var vSlice []interface{} + if v != nil { + vSlice = graphql.CoerceList(v) + } + var err error + res := make([]gen.QueueJobsOrderByInput, len(vSlice)) + for i := range vSlice { + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithIndex(i)) + res[i], err = ec.unmarshalNQueueJobsOrderByInput2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚋgenᚐQueueJobsOrderByInput(ctx, vSlice[i]) + if err != nil { + return nil, err + } + } + return res, nil +} + func (ec *executionContext) marshalOReleaseYearAgg2ᚕgithubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚋgenᚐReleaseYearAggᚄ(ctx context.Context, sel ast.SelectionSet, v []gen.ReleaseYearAgg) graphql.Marshaler { if v == nil { return graphql.Null @@ -16006,14 +22685,6 @@ func (ec *executionContext) unmarshalOReleaseYearFacetInput2ᚖgithubᚗcomᚋbi return &res, graphql.ErrorOnPath(ctx, err) } -func (ec *executionContext) unmarshalOSearchQueryInput2ᚖgithubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋdatabaseᚋqueryᚐSearchParams(ctx context.Context, v interface{}) (*query.SearchParams, error) { - if v == nil { - return nil, nil - } - res, err := ec.unmarshalInputSearchQueryInput(ctx, v) - return &res, graphql.ErrorOnPath(ctx, err) -} - func (ec *executionContext) unmarshalOString2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋmodelᚐNullString(ctx context.Context, v interface{}) (model.NullString, error) { var res model.NullString err := res.UnmarshalGQL(v) @@ -16024,6 +22695,16 @@ func (ec *executionContext) marshalOString2githubᚗcomᚋbitmagnetᚑioᚋbitma return v } +func (ec *executionContext) unmarshalOString2string(ctx context.Context, v interface{}) (string, error) { + res, err := graphql.UnmarshalString(v) + return res, graphql.ErrorOnPath(ctx, err) +} + +func (ec *executionContext) marshalOString2string(ctx context.Context, sel ast.SelectionSet, v string) graphql.Marshaler { + res := graphql.MarshalString(v) + return res +} + func (ec *executionContext) unmarshalOString2ᚕstringᚄ(ctx context.Context, v interface{}) ([]string, error) { if v == nil { return nil, nil @@ -16216,6 +22897,26 @@ func (ec *executionContext) unmarshalOTorrentFileTypeFacetInput2ᚖgithubᚗcom return &res, graphql.ErrorOnPath(ctx, err) } +func (ec *executionContext) unmarshalOTorrentFilesOrderByInput2ᚕgithubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚋgenᚐTorrentFilesOrderByInputᚄ(ctx context.Context, v interface{}) ([]gen.TorrentFilesOrderByInput, error) { + if v == nil { + return nil, nil + } + var vSlice []interface{} + if v != nil { + vSlice = graphql.CoerceList(v) + } + var err error + res := make([]gen.TorrentFilesOrderByInput, len(vSlice)) + for i := range vSlice { + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithIndex(i)) + res[i], err = ec.unmarshalNTorrentFilesOrderByInput2githubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚋgenᚐTorrentFilesOrderByInput(ctx, vSlice[i]) + if err != nil { + return nil, err + } + } + return res, nil +} + func (ec *executionContext) marshalOTorrentSourceAgg2ᚕgithubᚗcomᚋbitmagnetᚑioᚋbitmagnetᚋinternalᚋgqlᚋgqlmodelᚋgenᚐTorrentSourceAggᚄ(ctx context.Context, sel ast.SelectionSet, v []gen.TorrentSourceAgg) graphql.Marshaler { if v == nil { return graphql.Null diff --git a/internal/gql/gqlfx/module.go b/internal/gql/gqlfx/module.go index 7d34807..7f62544 100644 --- a/internal/gql/gqlfx/module.go +++ b/internal/gql/gqlfx/module.go @@ -3,12 +3,17 @@ package gqlfx import ( "github.com/99designs/gqlgen/graphql" "github.com/bitmagnet-io/bitmagnet/internal/boilerplate/lazy" + "github.com/bitmagnet-io/bitmagnet/internal/boilerplate/worker" "github.com/bitmagnet-io/bitmagnet/internal/database/dao" "github.com/bitmagnet-io/bitmagnet/internal/database/search" "github.com/bitmagnet-io/bitmagnet/internal/gql" "github.com/bitmagnet-io/bitmagnet/internal/gql/config" "github.com/bitmagnet-io/bitmagnet/internal/gql/httpserver" "github.com/bitmagnet-io/bitmagnet/internal/gql/resolvers" + "github.com/bitmagnet-io/bitmagnet/internal/health" + "github.com/bitmagnet-io/bitmagnet/internal/metrics/queuemetrics" + "github.com/bitmagnet-io/bitmagnet/internal/metrics/torrentmetrics" + "github.com/bitmagnet-io/bitmagnet/internal/queue/manager" "go.uber.org/fx" ) @@ -18,22 +23,6 @@ func New() fx.Option { fx.Provide( config.New, httpserver.New, - func( - ls lazy.Lazy[search.Search], - ld lazy.Lazy[*dao.Query], - ) lazy.Lazy[gql.ResolverRoot] { - return lazy.New(func() (gql.ResolverRoot, error) { - s, err := ls.Get() - if err != nil { - return nil, err - } - d, err := ld.Get() - if err != nil { - return nil, err - } - return resolvers.New(d, s), nil - }) - }, func( lcfg lazy.Lazy[gql.Config], ) lazy.Lazy[graphql.ExecutableSchema] { @@ -46,5 +35,70 @@ func New() fx.Option { }) }, ), + fx.Provide( + func(p Params) Result { + return Result{ + Resolver: lazy.New(func() (*resolvers.Resolver, error) { + ch, err := p.Checker.Get() + if err != nil { + return nil, err + } + s, err := p.Search.Get() + if err != nil { + return nil, err + } + d, err := p.Dao.Get() + if err != nil { + return nil, err + } + qmc, err := p.QueueMetricsClient.Get() + if err != nil { + return nil, err + } + qm, err := p.QueueManager.Get() + if err != nil { + return nil, err + } + tm, err := p.TorrentMetricsClient.Get() + if err != nil { + return nil, err + } + return &resolvers.Resolver{ + Dao: d, + Search: s, + Checker: ch, + QueueMetricsClient: qmc, + QueueManager: qm, + TorrentMetricsClient: tm, + }, nil + }), + } + }, + ), + // inject resolver dependencies avoiding a circular dependency: + fx.Invoke(func( + resolver lazy.Lazy[*resolvers.Resolver], + workers worker.Registry, + ) { + resolver.Decorate(func(r *resolvers.Resolver) (*resolvers.Resolver, error) { + r.Workers = workers + return r, nil + }) + }), ) } + +type Params struct { + fx.In + Search lazy.Lazy[search.Search] + Dao lazy.Lazy[*dao.Query] + Checker lazy.Lazy[health.Checker] + QueueMetricsClient lazy.Lazy[queuemetrics.Client] + QueueManager lazy.Lazy[manager.Manager] + TorrentMetricsClient lazy.Lazy[torrentmetrics.Client] +} + +type Result struct { + fx.Out + Resolver lazy.Lazy[*resolvers.Resolver] +} diff --git a/internal/gql/gqlgen.yml b/internal/gql/gqlgen.yml index eb99241..63f3e76 100644 --- a/internal/gql/gqlgen.yml +++ b/internal/gql/gqlgen.yml @@ -110,6 +110,9 @@ models: DateTime: model: - github.com/99designs/gqlgen/graphql.Time + Duration: + model: + - github.com/99designs/gqlgen/graphql.Duration Hash20: model: - github.com/bitmagnet-io/bitmagnet/internal/protocol.ID @@ -153,6 +156,9 @@ models: TorrentContentResult: model: - github.com/bitmagnet-io/bitmagnet/internal/database/search.TorrentContentResult + TorrentFilesQueryResult: + model: + - github.com/bitmagnet-io/bitmagnet/internal/database/search.TorrentFilesResult TorrentSuggestTagsResult: model: - github.com/bitmagnet-io/bitmagnet/internal/database/search.TorrentSuggestTagsResult @@ -162,3 +168,15 @@ models: FacetAggregationInput: model: - github.com/bitmagnet-io/bitmagnet/internal/database/query.FacetAggregationConfig + QueueMetricsBucket: + model: + - github.com/bitmagnet-io/bitmagnet/internal/metrics/queuemetrics.Bucket + QueuePurgeJobsInput: + model: + - github.com/bitmagnet-io/bitmagnet/internal/queue/manager.PurgeJobsRequest + QueueEnqueueReprocessTorrentsBatchInput: + model: + - github.com/bitmagnet-io/bitmagnet/internal/queue/manager.EnqueueReprocessTorrentsBatchRequest + TorrentMetricsBucket: + model: + - github.com/bitmagnet-io/bitmagnet/internal/metrics/torrentmetrics.Bucket diff --git a/internal/gql/gqlmodel/facet.go b/internal/gql/gqlmodel/facet.go index 270db94..9335678 100644 --- a/internal/gql/gqlmodel/facet.go +++ b/internal/gql/gqlmodel/facet.go @@ -134,6 +134,32 @@ func videoSourceFacet(input gen.VideoSourceFacetInput) q.Facet { return facet(input.Aggregate, graphql.Omittable[*model.FacetLogic]{}, input.Filter, search.VideoSourceFacet) } +func queueJobQueueFacet(input gen.QueueJobQueueFacetInput) q.Facet { + var filter graphql.Omittable[[]*string] + if f, ok := input.Filter.ValueOK(); ok { + filterValues := make([]*string, 0, len(f)) + for _, v := range f { + vv := v + filterValues = append(filterValues, &vv) + } + filter = graphql.OmittableOf[[]*string](filterValues) + } + return facet(input.Aggregate, graphql.Omittable[*model.FacetLogic]{}, filter, search.QueueJobQueueFacet) +} + +func queueJobStatusFacet(input gen.QueueJobStatusFacetInput) q.Facet { + var filter graphql.Omittable[[]*model.QueueJobStatus] + if f, ok := input.Filter.ValueOK(); ok { + filterValues := make([]*model.QueueJobStatus, 0, len(f)) + for _, v := range f { + vv := v + filterValues = append(filterValues, &vv) + } + filter = graphql.OmittableOf[[]*model.QueueJobStatus](filterValues) + } + return facet(input.Aggregate, graphql.Omittable[*model.FacetLogic]{}, filter, search.QueueJobStatusFacet) +} + func aggs[T any, Agg comparable]( items q.AggregationItems, parse func(string) (T, error), @@ -220,3 +246,15 @@ func videoSourceAggs(items q.AggregationItems) ([]gen.VideoSourceAgg, error) { return gen.VideoSourceAgg{Value: value, Label: label, Count: int(count), IsEstimate: isEstimate} }) } + +func queueJobQueueAggs(items q.AggregationItems) ([]gen.QueueJobQueueAgg, error) { + return aggs(items, func(s string) (string, error) { return s, nil }, func(value *string, label string, count uint, isEstimate bool) gen.QueueJobQueueAgg { + return gen.QueueJobQueueAgg{Value: *value, Label: label, Count: int(count)} + }) +} + +func queueJobStatusAggs(items q.AggregationItems) ([]gen.QueueJobStatusAgg, error) { + return aggs(items, model.ParseQueueJobStatus, func(value *model.QueueJobStatus, label string, count uint, isEstimate bool) gen.QueueJobStatusAgg { + return gen.QueueJobStatusAgg{Value: *value, Label: label, Count: int(count)} + }) +} diff --git a/internal/gql/gqlmodel/gen/model.gen.go b/internal/gql/gqlmodel/gen/model.gen.go index 0555e5f..2c9d12d 100644 --- a/internal/gql/gqlmodel/gen/model.gen.go +++ b/internal/gql/gqlmodel/gen/model.gen.go @@ -6,8 +6,11 @@ import ( "fmt" "io" "strconv" + "time" "github.com/99designs/gqlgen/graphql" + "github.com/bitmagnet-io/bitmagnet/internal/metrics/queuemetrics" + "github.com/bitmagnet-io/bitmagnet/internal/metrics/torrentmetrics" "github.com/bitmagnet-io/bitmagnet/internal/model" ) @@ -36,6 +39,18 @@ type GenreFacetInput struct { Filter graphql.Omittable[[]string] `json:"filter,omitempty"` } +type HealthCheck struct { + Key string `json:"key"` + Status HealthStatus `json:"status"` + Timestamp time.Time `json:"timestamp"` + Error *string `json:"error,omitempty"` +} + +type HealthQuery struct { + Status HealthStatus `json:"status"` + Checks []HealthCheck `json:"checks"` +} + type LanguageAgg struct { Value model.Language `json:"value"` Label string `json:"label"` @@ -54,6 +69,55 @@ type Mutation struct { type Query struct { } +type QueueJobQueueAgg struct { + Value string `json:"value"` + Label string `json:"label"` + Count int `json:"count"` +} + +type QueueJobQueueFacetInput struct { + Aggregate graphql.Omittable[*bool] `json:"aggregate,omitempty"` + Filter graphql.Omittable[[]string] `json:"filter,omitempty"` +} + +type QueueJobStatusAgg struct { + Value model.QueueJobStatus `json:"value"` + Label string `json:"label"` + Count int `json:"count"` +} + +type QueueJobStatusFacetInput struct { + Aggregate graphql.Omittable[*bool] `json:"aggregate,omitempty"` + Filter graphql.Omittable[[]model.QueueJobStatus] `json:"filter,omitempty"` +} + +type QueueJobsAggregations struct { + Queue []QueueJobQueueAgg `json:"queue,omitempty"` + Status []QueueJobStatusAgg `json:"status,omitempty"` +} + +type QueueJobsFacetsInput struct { + Status graphql.Omittable[*QueueJobStatusFacetInput] `json:"status,omitempty"` + Queue graphql.Omittable[*QueueJobQueueFacetInput] `json:"queue,omitempty"` +} + +type QueueJobsOrderByInput struct { + Field QueueJobsOrderByField `json:"field"` + Descending graphql.Omittable[*bool] `json:"descending,omitempty"` +} + +type QueueMetricsQueryInput struct { + BucketDuration MetricsBucketDuration `json:"bucketDuration"` + Statuses graphql.Omittable[[]model.QueueJobStatus] `json:"statuses,omitempty"` + Queues graphql.Omittable[[]string] `json:"queues,omitempty"` + StartTime graphql.Omittable[*time.Time] `json:"startTime,omitempty"` + EndTime graphql.Omittable[*time.Time] `json:"endTime,omitempty"` +} + +type QueueMetricsQueryResult struct { + Buckets []queuemetrics.Bucket `json:"buckets"` +} + type ReleaseYearAgg struct { Value *model.Year `json:"value,omitempty"` Label string `json:"label"` @@ -71,10 +135,6 @@ type SuggestTagsQueryInput struct { Exclusions graphql.Omittable[[]string] `json:"exclusions,omitempty"` } -type SystemQuery struct { - Version string `json:"version"` -} - type TorrentContentAggregations struct { ContentType []ContentTypeAgg `json:"contentType,omitempty"` TorrentSource []TorrentSourceAgg `json:"torrentSource,omitempty"` @@ -100,8 +160,8 @@ type TorrentContentFacetsInput struct { } type TorrentContentOrderByInput struct { - Field TorrentContentOrderBy `json:"field"` - Descending graphql.Omittable[*bool] `json:"descending,omitempty"` + Field TorrentContentOrderByField `json:"field"` + Descending graphql.Omittable[*bool] `json:"descending,omitempty"` } type TorrentFileTypeAgg struct { @@ -117,6 +177,26 @@ type TorrentFileTypeFacetInput struct { Filter graphql.Omittable[[]model.FileType] `json:"filter,omitempty"` } +type TorrentFilesOrderByInput struct { + Field TorrentFilesOrderByField `json:"field"` + Descending graphql.Omittable[*bool] `json:"descending,omitempty"` +} + +type TorrentListSourcesResult struct { + Sources []model.TorrentSource `json:"sources"` +} + +type TorrentMetricsQueryInput struct { + BucketDuration MetricsBucketDuration `json:"bucketDuration"` + Sources graphql.Omittable[[]string] `json:"sources,omitempty"` + StartTime graphql.Omittable[*time.Time] `json:"startTime,omitempty"` + EndTime graphql.Omittable[*time.Time] `json:"endTime,omitempty"` +} + +type TorrentMetricsQueryResult struct { + Buckets []torrentmetrics.Bucket `json:"buckets"` +} + type TorrentSourceAgg struct { Value string `json:"value"` Label string `json:"label"` @@ -167,57 +247,246 @@ type VideoSourceFacetInput struct { Filter graphql.Omittable[[]*model.VideoSource] `json:"filter,omitempty"` } -type TorrentContentOrderBy string - -const ( - TorrentContentOrderByRelevance TorrentContentOrderBy = "Relevance" - TorrentContentOrderByPublishedAt TorrentContentOrderBy = "PublishedAt" - TorrentContentOrderByUpdatedAt TorrentContentOrderBy = "UpdatedAt" - TorrentContentOrderBySize TorrentContentOrderBy = "Size" - TorrentContentOrderByFiles TorrentContentOrderBy = "Files" - TorrentContentOrderBySeeders TorrentContentOrderBy = "Seeders" - TorrentContentOrderByLeechers TorrentContentOrderBy = "Leechers" - TorrentContentOrderByName TorrentContentOrderBy = "Name" - TorrentContentOrderByInfoHash TorrentContentOrderBy = "InfoHash" -) - -var AllTorrentContentOrderBy = []TorrentContentOrderBy{ - TorrentContentOrderByRelevance, - TorrentContentOrderByPublishedAt, - TorrentContentOrderByUpdatedAt, - TorrentContentOrderBySize, - TorrentContentOrderByFiles, - TorrentContentOrderBySeeders, - TorrentContentOrderByLeechers, - TorrentContentOrderByName, - TorrentContentOrderByInfoHash, +type Worker struct { + Key string `json:"key"` + Started bool `json:"started"` } -func (e TorrentContentOrderBy) IsValid() bool { +type WorkersListAllQueryResult struct { + Workers []Worker `json:"workers"` +} + +type WorkersQuery struct { + ListAll WorkersListAllQueryResult `json:"listAll"` +} + +type HealthStatus string + +const ( + HealthStatusUnknown HealthStatus = "unknown" + HealthStatusInactive HealthStatus = "inactive" + HealthStatusUp HealthStatus = "up" + HealthStatusDown HealthStatus = "down" +) + +var AllHealthStatus = []HealthStatus{ + HealthStatusUnknown, + HealthStatusInactive, + HealthStatusUp, + HealthStatusDown, +} + +func (e HealthStatus) IsValid() bool { switch e { - case TorrentContentOrderByRelevance, TorrentContentOrderByPublishedAt, TorrentContentOrderByUpdatedAt, TorrentContentOrderBySize, TorrentContentOrderByFiles, TorrentContentOrderBySeeders, TorrentContentOrderByLeechers, TorrentContentOrderByName, TorrentContentOrderByInfoHash: + case HealthStatusUnknown, HealthStatusInactive, HealthStatusUp, HealthStatusDown: return true } return false } -func (e TorrentContentOrderBy) String() string { +func (e HealthStatus) String() string { return string(e) } -func (e *TorrentContentOrderBy) UnmarshalGQL(v interface{}) error { +func (e *HealthStatus) UnmarshalGQL(v interface{}) error { str, ok := v.(string) if !ok { return fmt.Errorf("enums must be strings") } - *e = TorrentContentOrderBy(str) + *e = HealthStatus(str) if !e.IsValid() { - return fmt.Errorf("%s is not a valid TorrentContentOrderBy", str) + return fmt.Errorf("%s is not a valid HealthStatus", str) } return nil } -func (e TorrentContentOrderBy) MarshalGQL(w io.Writer) { +func (e HealthStatus) MarshalGQL(w io.Writer) { + fmt.Fprint(w, strconv.Quote(e.String())) +} + +type MetricsBucketDuration string + +const ( + MetricsBucketDurationMinute MetricsBucketDuration = "minute" + MetricsBucketDurationHour MetricsBucketDuration = "hour" + MetricsBucketDurationDay MetricsBucketDuration = "day" +) + +var AllMetricsBucketDuration = []MetricsBucketDuration{ + MetricsBucketDurationMinute, + MetricsBucketDurationHour, + MetricsBucketDurationDay, +} + +func (e MetricsBucketDuration) IsValid() bool { + switch e { + case MetricsBucketDurationMinute, MetricsBucketDurationHour, MetricsBucketDurationDay: + return true + } + return false +} + +func (e MetricsBucketDuration) String() string { + return string(e) +} + +func (e *MetricsBucketDuration) UnmarshalGQL(v interface{}) error { + str, ok := v.(string) + if !ok { + return fmt.Errorf("enums must be strings") + } + + *e = MetricsBucketDuration(str) + if !e.IsValid() { + return fmt.Errorf("%s is not a valid MetricsBucketDuration", str) + } + return nil +} + +func (e MetricsBucketDuration) MarshalGQL(w io.Writer) { + fmt.Fprint(w, strconv.Quote(e.String())) +} + +type QueueJobsOrderByField string + +const ( + QueueJobsOrderByFieldCreatedAt QueueJobsOrderByField = "created_at" + QueueJobsOrderByFieldRanAt QueueJobsOrderByField = "ran_at" + QueueJobsOrderByFieldPriority QueueJobsOrderByField = "priority" +) + +var AllQueueJobsOrderByField = []QueueJobsOrderByField{ + QueueJobsOrderByFieldCreatedAt, + QueueJobsOrderByFieldRanAt, + QueueJobsOrderByFieldPriority, +} + +func (e QueueJobsOrderByField) IsValid() bool { + switch e { + case QueueJobsOrderByFieldCreatedAt, QueueJobsOrderByFieldRanAt, QueueJobsOrderByFieldPriority: + return true + } + return false +} + +func (e QueueJobsOrderByField) String() string { + return string(e) +} + +func (e *QueueJobsOrderByField) UnmarshalGQL(v interface{}) error { + str, ok := v.(string) + if !ok { + return fmt.Errorf("enums must be strings") + } + + *e = QueueJobsOrderByField(str) + if !e.IsValid() { + return fmt.Errorf("%s is not a valid QueueJobsOrderByField", str) + } + return nil +} + +func (e QueueJobsOrderByField) MarshalGQL(w io.Writer) { + fmt.Fprint(w, strconv.Quote(e.String())) +} + +type TorrentContentOrderByField string + +const ( + TorrentContentOrderByFieldRelevance TorrentContentOrderByField = "relevance" + TorrentContentOrderByFieldPublishedAt TorrentContentOrderByField = "published_at" + TorrentContentOrderByFieldUpdatedAt TorrentContentOrderByField = "updated_at" + TorrentContentOrderByFieldSize TorrentContentOrderByField = "size" + TorrentContentOrderByFieldFilesCount TorrentContentOrderByField = "files_count" + TorrentContentOrderByFieldSeeders TorrentContentOrderByField = "seeders" + TorrentContentOrderByFieldLeechers TorrentContentOrderByField = "leechers" + TorrentContentOrderByFieldName TorrentContentOrderByField = "name" + TorrentContentOrderByFieldInfoHash TorrentContentOrderByField = "info_hash" +) + +var AllTorrentContentOrderByField = []TorrentContentOrderByField{ + TorrentContentOrderByFieldRelevance, + TorrentContentOrderByFieldPublishedAt, + TorrentContentOrderByFieldUpdatedAt, + TorrentContentOrderByFieldSize, + TorrentContentOrderByFieldFilesCount, + TorrentContentOrderByFieldSeeders, + TorrentContentOrderByFieldLeechers, + TorrentContentOrderByFieldName, + TorrentContentOrderByFieldInfoHash, +} + +func (e TorrentContentOrderByField) IsValid() bool { + switch e { + case TorrentContentOrderByFieldRelevance, TorrentContentOrderByFieldPublishedAt, TorrentContentOrderByFieldUpdatedAt, TorrentContentOrderByFieldSize, TorrentContentOrderByFieldFilesCount, TorrentContentOrderByFieldSeeders, TorrentContentOrderByFieldLeechers, TorrentContentOrderByFieldName, TorrentContentOrderByFieldInfoHash: + return true + } + return false +} + +func (e TorrentContentOrderByField) String() string { + return string(e) +} + +func (e *TorrentContentOrderByField) UnmarshalGQL(v interface{}) error { + str, ok := v.(string) + if !ok { + return fmt.Errorf("enums must be strings") + } + + *e = TorrentContentOrderByField(str) + if !e.IsValid() { + return fmt.Errorf("%s is not a valid TorrentContentOrderByField", str) + } + return nil +} + +func (e TorrentContentOrderByField) MarshalGQL(w io.Writer) { + fmt.Fprint(w, strconv.Quote(e.String())) +} + +type TorrentFilesOrderByField string + +const ( + TorrentFilesOrderByFieldIndex TorrentFilesOrderByField = "index" + TorrentFilesOrderByFieldPath TorrentFilesOrderByField = "path" + TorrentFilesOrderByFieldExtension TorrentFilesOrderByField = "extension" + TorrentFilesOrderByFieldSize TorrentFilesOrderByField = "size" +) + +var AllTorrentFilesOrderByField = []TorrentFilesOrderByField{ + TorrentFilesOrderByFieldIndex, + TorrentFilesOrderByFieldPath, + TorrentFilesOrderByFieldExtension, + TorrentFilesOrderByFieldSize, +} + +func (e TorrentFilesOrderByField) IsValid() bool { + switch e { + case TorrentFilesOrderByFieldIndex, TorrentFilesOrderByFieldPath, TorrentFilesOrderByFieldExtension, TorrentFilesOrderByFieldSize: + return true + } + return false +} + +func (e TorrentFilesOrderByField) String() string { + return string(e) +} + +func (e *TorrentFilesOrderByField) UnmarshalGQL(v interface{}) error { + str, ok := v.(string) + if !ok { + return fmt.Errorf("enums must be strings") + } + + *e = TorrentFilesOrderByField(str) + if !e.IsValid() { + return fmt.Errorf("%s is not a valid TorrentFilesOrderByField", str) + } + return nil +} + +func (e TorrentFilesOrderByField) MarshalGQL(w io.Writer) { fmt.Fprint(w, strconv.Quote(e.String())) } diff --git a/internal/gql/gqlmodel/queue_jobs.go b/internal/gql/gqlmodel/queue_jobs.go new file mode 100644 index 0000000..2f554d3 --- /dev/null +++ b/internal/gql/gqlmodel/queue_jobs.go @@ -0,0 +1,118 @@ +package gqlmodel + +import ( + "context" + q "github.com/bitmagnet-io/bitmagnet/internal/database/query" + "github.com/bitmagnet-io/bitmagnet/internal/database/search" + "github.com/bitmagnet-io/bitmagnet/internal/gql/gqlmodel/gen" + "github.com/bitmagnet-io/bitmagnet/internal/maps" + "github.com/bitmagnet-io/bitmagnet/internal/model" +) + +type QueueJobsQueryInput struct { + Queues []string + Statuses []model.QueueJobStatus + Limit model.NullUint + Page model.NullUint + Offset model.NullUint + TotalCount model.NullBool + HasNextPage model.NullBool + Facets *gen.QueueJobsFacetsInput + OrderBy []gen.QueueJobsOrderByInput +} + +type QueueJobsQueryResult struct { + TotalCount uint + HasNextPage bool + Items []model.QueueJob + Aggregations gen.QueueJobsAggregations +} + +func (r QueueQuery) Jobs( + ctx context.Context, + query QueueJobsQueryInput, +) (QueueJobsQueryResult, error) { + limit := uint(10) + if query.Limit.Valid { + limit = query.Limit.Uint + } + options := []q.Option{ + q.SearchParams{ + Limit: model.NullUint{Valid: true, Uint: limit}, + Page: query.Page, + Offset: query.Offset, + TotalCount: query.TotalCount, + HasNextPage: query.HasNextPage, + }.Option(), + } + if query.Facets != nil { + var qFacets []q.Facet + if queue, ok := query.Facets.Queue.ValueOK(); ok { + qFacets = append(qFacets, queueJobQueueFacet(*queue)) + } + if status, ok := query.Facets.Status.ValueOK(); ok { + qFacets = append(qFacets, queueJobStatusFacet(*status)) + } + options = append(options, q.WithFacet(qFacets...)) + } + var criteria []q.Criteria + if query.Queues != nil { + criteria = append(criteria, search.QueueJobQueueCriteria(query.Queues...)) + } + if query.Statuses != nil { + criteria = append(criteria, search.QueueJobStatusCriteria(query.Statuses...)) + } + if len(criteria) > 0 { + options = append(options, q.Where(criteria...)) + } + fullOrderBy := maps.NewInsertMap[search.QueueJobsOrderBy, search.OrderDirection]() + for _, ob := range query.OrderBy { + direction := search.OrderDirectionAscending + if desc, ok := ob.Descending.ValueOK(); ok && *desc { + direction = search.OrderDirectionDescending + } + field, err := search.ParseQueueJobsOrderBy(ob.Field.String()) + if err != nil { + return QueueJobsQueryResult{}, err + } + fullOrderBy.Set(field, direction) + } + options = append(options, search.QueueJobsFullOrderBy(fullOrderBy).Option()) + result, resultErr := r.QueueJobSearch.QueueJobs(ctx, options...) + if resultErr != nil { + return QueueJobsQueryResult{}, resultErr + } + return transformQueueJobsQueryResult(result) +} + +func transformQueueJobsQueryResult(result q.GenericResult[model.QueueJob]) (QueueJobsQueryResult, error) { + aggs, err := transformQueueJobsAggregations(result.Aggregations) + if err != nil { + return QueueJobsQueryResult{}, err + } + return QueueJobsQueryResult{ + TotalCount: result.TotalCount, + HasNextPage: result.HasNextPage, + Items: result.Items, + Aggregations: aggs, + }, nil +} + +func transformQueueJobsAggregations(aggs q.Aggregations) (gen.QueueJobsAggregations, error) { + a := gen.QueueJobsAggregations{} + if queue, ok := aggs[search.QueueJobQueueFacetKey]; ok { + agg, err := queueJobQueueAggs(queue.Items) + if err != nil { + return a, err + } + a.Queue = agg + } + if status, ok := aggs[search.QueueJobStatusFacetKey]; ok { + agg, err := queueJobStatusAggs(status.Items) + if err != nil { + return a, err + } + a.Status = agg + } + return a, nil +} diff --git a/internal/gql/gqlmodel/queue_metrics.go b/internal/gql/gqlmodel/queue_metrics.go new file mode 100644 index 0000000..3c93f7a --- /dev/null +++ b/internal/gql/gqlmodel/queue_metrics.go @@ -0,0 +1,62 @@ +package gqlmodel + +import ( + "context" + "fmt" + "github.com/bitmagnet-io/bitmagnet/internal/database/search" + "github.com/bitmagnet-io/bitmagnet/internal/gql/gqlmodel/gen" + "github.com/bitmagnet-io/bitmagnet/internal/metrics/queuemetrics" + "github.com/bitmagnet-io/bitmagnet/internal/queue/manager" +) + +type QueueQuery struct { + QueueJobSearch search.QueueJobSearch + QueueMetricsClient queuemetrics.Client +} + +func (q QueueQuery) Metrics(ctx context.Context, input gen.QueueMetricsQueryInput) (*gen.QueueMetricsQueryResult, error) { + req := queuemetrics.Request{} + switch input.BucketDuration { + case gen.MetricsBucketDurationMinute: + req.BucketDuration = "minute" + case gen.MetricsBucketDurationHour: + req.BucketDuration = "hour" + case gen.MetricsBucketDurationDay: + req.BucketDuration = "day" + default: + return nil, fmt.Errorf("invalid bucket duration: %s", input.BucketDuration) + } + if t, ok := input.StartTime.ValueOK(); ok && !t.IsZero() { + req.StartTime = *t + } + if t, ok := input.EndTime.ValueOK(); ok && !t.IsZero() { + req.EndTime = *t + } + if statuses, ok := input.Statuses.ValueOK(); ok { + req.Statuses = statuses + } + if queues, ok := input.Queues.ValueOK(); ok { + req.Queues = queues + } + buckets, err := q.QueueMetricsClient.Request(ctx, req) + if err != nil { + return nil, err + } + return &gen.QueueMetricsQueryResult{ + Buckets: buckets, + }, nil +} + +type QueueMutation struct { + QueueManager manager.Manager +} + +func (m *QueueMutation) PurgeJobs(ctx context.Context, input manager.PurgeJobsRequest) (*string, error) { + err := m.QueueManager.PurgeJobs(ctx, input) + return nil, err +} + +func (m *QueueMutation) EnqueueReprocessTorrentsBatch(ctx context.Context, input manager.EnqueueReprocessTorrentsBatchRequest) (*string, error) { + err := m.QueueManager.EnqueueReprocessTorrentsBatch(ctx, input) + return nil, err +} diff --git a/internal/gql/gqlmodel/torrent.go b/internal/gql/gqlmodel/torrent.go index 1d8efbb..d475d1c 100644 --- a/internal/gql/gqlmodel/torrent.go +++ b/internal/gql/gqlmodel/torrent.go @@ -2,25 +2,44 @@ package gqlmodel import ( "context" + "github.com/bitmagnet-io/bitmagnet/internal/database/dao" "github.com/bitmagnet-io/bitmagnet/internal/database/search" "github.com/bitmagnet-io/bitmagnet/internal/gql/gqlmodel/gen" + "github.com/bitmagnet-io/bitmagnet/internal/metrics/torrentmetrics" + "github.com/bitmagnet-io/bitmagnet/internal/model" ) type TorrentQuery struct { - TorrentSearch search.TorrentSearch + Dao *dao.Query + Search search.Search + TorrentMetricsClient torrentmetrics.Client } -func (t TorrentQuery) SuggestTags(ctx context.Context, query *gen.SuggestTagsQueryInput) (search.TorrentSuggestTagsResult, error) { +func (t TorrentQuery) SuggestTags(ctx context.Context, input *gen.SuggestTagsQueryInput) (search.TorrentSuggestTagsResult, error) { suggestTagsQuery := search.SuggestTagsQuery{} - if query != nil { - if prefix, ok := query.Prefix.ValueOK(); ok && prefix != nil { + if input != nil { + if prefix, ok := input.Prefix.ValueOK(); ok && prefix != nil { suggestTagsQuery.Prefix = *prefix } - if exclusions, ok := query.Exclusions.ValueOK(); ok { + if exclusions, ok := input.Exclusions.ValueOK(); ok { suggestTagsQuery.Exclusions = exclusions } } - return t.TorrentSearch.TorrentSuggestTags(ctx, suggestTagsQuery) + return t.Search.TorrentSuggestTags(ctx, suggestTagsQuery) +} + +func (t TorrentQuery) ListSources(ctx context.Context) (gen.TorrentListSourcesResult, error) { + result, err := t.Dao.TorrentSource.WithContext(ctx).Order(t.Dao.TorrentSource.Key.Asc()).Find() + if err != nil { + return gen.TorrentListSourcesResult{}, err + } + sources := make([]model.TorrentSource, len(result)) + for i := range result { + sources[i] = *result[i] + } + return gen.TorrentListSourcesResult{ + Sources: sources, + }, nil } type TorrentMutation struct{} diff --git a/internal/gql/gqlmodel/torrent_content.go b/internal/gql/gqlmodel/torrent_content.go index b32e54f..f9a8692 100644 --- a/internal/gql/gqlmodel/torrent_content.go +++ b/internal/gql/gqlmodel/torrent_content.go @@ -2,6 +2,7 @@ package gqlmodel import ( "context" + "github.com/99designs/gqlgen/graphql" q "github.com/bitmagnet-io/bitmagnet/internal/database/query" "github.com/bitmagnet-io/bitmagnet/internal/database/search" "github.com/bitmagnet-io/bitmagnet/internal/gql/gqlmodel/gen" @@ -82,7 +83,7 @@ func NewTorrentContentFromResultItem(item search.TorrentContentResultItem) Torre return c } -type TorrentSource struct { +type TorrentSourceInfo struct { Key string Name string ImportID model.NullString @@ -90,10 +91,10 @@ type TorrentSource struct { Leechers model.NullUint } -func TorrentSourcesFromTorrent(t model.Torrent) []TorrentSource { - var sources []TorrentSource +func TorrentSourceInfosFromTorrent(t model.Torrent) []TorrentSourceInfo { + var sources []TorrentSourceInfo for _, s := range t.Sources { - sources = append(sources, TorrentSource{ + sources = append(sources, TorrentSourceInfo{ Key: s.Source, Name: s.TorrentSource.Name, ImportID: s.ImportID, @@ -104,6 +105,13 @@ func TorrentSourcesFromTorrent(t model.Torrent) []TorrentSource { return sources } +type TorrentContentSearchQueryInput struct { + q.SearchParams + Facets *gen.TorrentContentFacetsInput + OrderBy []gen.TorrentContentOrderByInput + InfoHashes graphql.Omittable[[]protocol.ID] +} + type TorrentContentSearchResult struct { TotalCount uint TotalCountIsEstimate bool @@ -114,52 +122,53 @@ type TorrentContentSearchResult struct { func (t TorrentContentQuery) Search( ctx context.Context, - query *q.SearchParams, - facets *gen.TorrentContentFacetsInput, - orderBy []gen.TorrentContentOrderByInput, + input TorrentContentSearchQueryInput, ) (TorrentContentSearchResult, error) { options := []q.Option{ - search.TorrentContentDefaultOption(), + q.DefaultOption(), + search.TorrentContentCoreJoins(), + search.HydrateTorrentContentContent(), + search.HydrateTorrentContentTorrent(), } - hasQueryString := false - if query != nil { - options = append(options, query.Option()) - hasQueryString = query.QueryString.Valid - } - if facets != nil { + options = append(options, input.Option()) + hasQueryString := input.QueryString.Valid + if input.Facets != nil { var qFacets []q.Facet - if contentType, ok := facets.ContentType.ValueOK(); ok { + if contentType, ok := input.Facets.ContentType.ValueOK(); ok { qFacets = append(qFacets, torrentContentTypeFacet(*contentType)) } - if torrentSource, ok := facets.TorrentSource.ValueOK(); ok { + if torrentSource, ok := input.Facets.TorrentSource.ValueOK(); ok { qFacets = append(qFacets, torrentSourceFacet(*torrentSource)) } - if torrentTag, ok := facets.TorrentTag.ValueOK(); ok { + if torrentTag, ok := input.Facets.TorrentTag.ValueOK(); ok { qFacets = append(qFacets, torrentTagFacet(*torrentTag)) } - if torrentFileType, ok := facets.TorrentFileType.ValueOK(); ok { + if torrentFileType, ok := input.Facets.TorrentFileType.ValueOK(); ok { qFacets = append(qFacets, torrentFileTypeFacet(*torrentFileType)) } - if language, ok := facets.Language.ValueOK(); ok { + if language, ok := input.Facets.Language.ValueOK(); ok { qFacets = append(qFacets, languageFacet(*language)) } - if genre, ok := facets.Genre.ValueOK(); ok { + if genre, ok := input.Facets.Genre.ValueOK(); ok { qFacets = append(qFacets, genreFacet(*genre)) } - if releaseYear, ok := facets.ReleaseYear.ValueOK(); ok { + if releaseYear, ok := input.Facets.ReleaseYear.ValueOK(); ok { qFacets = append(qFacets, releaseYearFacet(*releaseYear)) } - if videoResolution, ok := facets.VideoResolution.ValueOK(); ok { + if videoResolution, ok := input.Facets.VideoResolution.ValueOK(); ok { qFacets = append(qFacets, videoResolutionFacet(*videoResolution)) } - if videoSource, ok := facets.VideoSource.ValueOK(); ok { + if videoSource, ok := input.Facets.VideoSource.ValueOK(); ok { qFacets = append(qFacets, videoSourceFacet(*videoSource)) } options = append(options, q.WithFacet(qFacets...)) } + if infoHashes, ok := input.InfoHashes.ValueOK(); ok { + options = append(options, q.Where(search.TorrentContentInfoHashCriteria(infoHashes...))) + } fullOrderBy := maps.NewInsertMap[search.TorrentContentOrderBy, search.OrderDirection]() - for _, ob := range orderBy { - if ob.Field == gen.TorrentContentOrderByRelevance && !hasQueryString { + for _, ob := range input.OrderBy { + if ob.Field == gen.TorrentContentOrderByFieldRelevance && !hasQueryString { continue } direction := search.OrderDirectionAscending diff --git a/internal/gql/gqlmodel/torrent_files.go b/internal/gql/gqlmodel/torrent_files.go new file mode 100644 index 0000000..9f35f74 --- /dev/null +++ b/internal/gql/gqlmodel/torrent_files.go @@ -0,0 +1,58 @@ +package gqlmodel + +import ( + "context" + q "github.com/bitmagnet-io/bitmagnet/internal/database/query" + "github.com/bitmagnet-io/bitmagnet/internal/database/search" + "github.com/bitmagnet-io/bitmagnet/internal/gql/gqlmodel/gen" + "github.com/bitmagnet-io/bitmagnet/internal/maps" + "github.com/bitmagnet-io/bitmagnet/internal/model" + "github.com/bitmagnet-io/bitmagnet/internal/protocol" +) + +type TorrentFilesQueryInput struct { + InfoHashes []protocol.ID + Limit model.NullUint + Page model.NullUint + Offset model.NullUint + TotalCount model.NullBool + HasNextPage model.NullBool + Cached model.NullBool + OrderBy []gen.TorrentFilesOrderByInput +} + +func (t TorrentQuery) Files(ctx context.Context, query TorrentFilesQueryInput) (search.TorrentFilesResult, error) { + limit := uint(10) + if query.Limit.Valid { + limit = query.Limit.Uint + } + options := []q.Option{ + q.SearchParams{ + Limit: model.NullUint{Valid: true, Uint: limit}, + Page: query.Page, + Offset: query.Offset, + TotalCount: query.TotalCount, + HasNextPage: query.HasNextPage, + AggregationBudget: model.NullFloat64{Valid: true, Float64: 0}, + }.Option(), + } + var criteria []q.Criteria + if query.InfoHashes != nil { + criteria = append(criteria, search.TorrentFileInfoHashCriteria(query.InfoHashes...)) + } + options = append(options, q.Where(criteria...)) + fullOrderBy := maps.NewInsertMap[search.TorrentFilesOrderBy, search.OrderDirection]() + for _, ob := range query.OrderBy { + direction := search.OrderDirectionAscending + if desc, ok := ob.Descending.ValueOK(); ok && *desc { + direction = search.OrderDirectionDescending + } + field, err := search.ParseTorrentFilesOrderBy(ob.Field.String()) + if err != nil { + return search.TorrentFilesResult{}, err + } + fullOrderBy.Set(field, direction) + } + options = append(options, search.TorrentFilesFullOrderBy(fullOrderBy).Option()) + return t.Search.TorrentFiles(ctx, options...) +} diff --git a/internal/gql/gqlmodel/torrent_metrics.go b/internal/gql/gqlmodel/torrent_metrics.go new file mode 100644 index 0000000..ada856b --- /dev/null +++ b/internal/gql/gqlmodel/torrent_metrics.go @@ -0,0 +1,38 @@ +package gqlmodel + +import ( + "context" + "fmt" + "github.com/bitmagnet-io/bitmagnet/internal/gql/gqlmodel/gen" + "github.com/bitmagnet-io/bitmagnet/internal/metrics/torrentmetrics" +) + +func (t TorrentQuery) Metrics(ctx context.Context, input gen.TorrentMetricsQueryInput) (*gen.TorrentMetricsQueryResult, error) { + req := torrentmetrics.Request{} + switch input.BucketDuration { + case gen.MetricsBucketDurationMinute: + req.BucketDuration = "minute" + case gen.MetricsBucketDurationHour: + req.BucketDuration = "hour" + case gen.MetricsBucketDurationDay: + req.BucketDuration = "day" + default: + return nil, fmt.Errorf("invalid bucket duration: %s", input.BucketDuration) + } + if t, ok := input.StartTime.ValueOK(); ok && !t.IsZero() { + req.StartTime = *t + } + if t, ok := input.EndTime.ValueOK(); ok && !t.IsZero() { + req.EndTime = *t + } + if sources, ok := input.Sources.ValueOK(); ok { + req.Sources = sources + } + buckets, err := t.TorrentMetricsClient.Request(ctx, req) + if err != nil { + return nil, err + } + return &gen.TorrentMetricsQueryResult{ + Buckets: buckets, + }, nil +} diff --git a/internal/gql/resolvers/models.resolvers.go b/internal/gql/resolvers/models.resolvers.go index 2ca2534..71e2ab9 100644 --- a/internal/gql/resolvers/models.resolvers.go +++ b/internal/gql/resolvers/models.resolvers.go @@ -2,7 +2,7 @@ package resolvers // This file will be automatically regenerated based on the schema, any resolver implementations // will be copied through when generating and any unknown code will be moved to the end. -// Code generated by github.com/99designs/gqlgen version v0.17.45 +// Code generated by github.com/99designs/gqlgen version v0.17.55 import ( "context" @@ -22,8 +22,8 @@ func (r *contentResolver) OriginalLanguage(ctx context.Context, obj *model.Conte } // Sources is the resolver for the sources field. -func (r *torrentResolver) Sources(ctx context.Context, obj *model.Torrent) ([]gqlmodel.TorrentSource, error) { - return gqlmodel.TorrentSourcesFromTorrent(*obj), nil +func (r *torrentResolver) Sources(ctx context.Context, obj *model.Torrent) ([]gqlmodel.TorrentSourceInfo, error) { + return gqlmodel.TorrentSourceInfosFromTorrent(*obj), nil } // Content returns gql.ContentResolver implementation. diff --git a/internal/gql/resolvers/mutation.resolvers.go b/internal/gql/resolvers/mutation.resolvers.go index 65d3891..45547d8 100644 --- a/internal/gql/resolvers/mutation.resolvers.go +++ b/internal/gql/resolvers/mutation.resolvers.go @@ -2,7 +2,7 @@ package resolvers // This file will be automatically regenerated based on the schema, any resolver implementations // will be copied through when generating and any unknown code will be moved to the end. -// Code generated by github.com/99designs/gqlgen version v0.17.45 +// Code generated by github.com/99designs/gqlgen version v0.17.55 import ( "context" @@ -17,25 +17,30 @@ func (r *mutationResolver) Torrent(ctx context.Context) (gqlmodel.TorrentMutatio return gqlmodel.TorrentMutation{}, nil } +// Queue is the resolver for the queue field. +func (r *mutationResolver) Queue(ctx context.Context) (gqlmodel.QueueMutation, error) { + return gqlmodel.QueueMutation{QueueManager: r.QueueManager}, nil +} + // Delete is the resolver for the delete field. func (r *torrentMutationResolver) Delete(ctx context.Context, obj *gqlmodel.TorrentMutation, infoHashes []protocol.ID) (*string, error) { - _, err := r.dao.DeleteAndBlockTorrents(ctx, infoHashes) + _, err := r.Dao.DeleteAndBlockTorrents(ctx, infoHashes) return nil, err } // PutTags is the resolver for the putTags field. func (r *torrentMutationResolver) PutTags(ctx context.Context, obj *gqlmodel.TorrentMutation, infoHashes []protocol.ID, tagNames []string) (*string, error) { - return nil, r.dao.TorrentTag.Put(ctx, infoHashes, tagNames) + return nil, r.Dao.TorrentTag.Put(ctx, infoHashes, tagNames) } // SetTags is the resolver for the setTags field. func (r *torrentMutationResolver) SetTags(ctx context.Context, obj *gqlmodel.TorrentMutation, infoHashes []protocol.ID, tagNames []string) (*string, error) { - return nil, r.dao.TorrentTag.Set(ctx, infoHashes, tagNames) + return nil, r.Dao.TorrentTag.Set(ctx, infoHashes, tagNames) } // DeleteTags is the resolver for the deleteTags field. func (r *torrentMutationResolver) DeleteTags(ctx context.Context, obj *gqlmodel.TorrentMutation, infoHashes []protocol.ID, tagNames []string) (*string, error) { - return nil, r.dao.TorrentTag.Delete(ctx, infoHashes, tagNames) + return nil, r.Dao.TorrentTag.Delete(ctx, infoHashes, tagNames) } // Mutation returns gql.MutationResolver implementation. diff --git a/internal/gql/resolvers/query.resolvers.go b/internal/gql/resolvers/query.resolvers.go index e13bfea..e282f1a 100644 --- a/internal/gql/resolvers/query.resolvers.go +++ b/internal/gql/resolvers/query.resolvers.go @@ -2,39 +2,114 @@ package resolvers // This file will be automatically regenerated based on the schema, any resolver implementations // will be copied through when generating and any unknown code will be moved to the end. -// Code generated by github.com/99designs/gqlgen version v0.17.45 +// Code generated by github.com/99designs/gqlgen version v0.17.55 import ( "context" + "sort" + "github.com/bitmagnet-io/bitmagnet/internal/database/query" "github.com/bitmagnet-io/bitmagnet/internal/gql" "github.com/bitmagnet-io/bitmagnet/internal/gql/gqlmodel" "github.com/bitmagnet-io/bitmagnet/internal/gql/gqlmodel/gen" + "github.com/bitmagnet-io/bitmagnet/internal/health" + "github.com/bitmagnet-io/bitmagnet/internal/model" "github.com/bitmagnet-io/bitmagnet/internal/version" ) +// Version is the resolver for the version field. +func (r *queryResolver) Version(ctx context.Context) (string, error) { + return version.GitTag, nil +} + +// Workers is the resolver for the workers field. +func (r *queryResolver) Workers(ctx context.Context) (gen.WorkersQuery, error) { + var workers []gen.Worker + for _, w := range r.Resolver.Workers.Workers() { + workers = append(workers, gen.Worker{ + Key: w.Key(), + Started: w.Started(), + }) + } + return gen.WorkersQuery{ + ListAll: gen.WorkersListAllQueryResult{ + Workers: workers, + }, + }, nil +} + +// Health is the resolver for the health field. +func (r *queryResolver) Health(ctx context.Context) (gen.HealthQuery, error) { + transformHealthCheckStatus := func(s health.AvailabilityStatus) gen.HealthStatus { + switch s { + case health.StatusInactive: + return gen.HealthStatusInactive + case health.StatusDown: + return gen.HealthStatusDown + case health.StatusUp: + return gen.HealthStatusUp + default: + return gen.HealthStatusUnknown + } + } + check := r.Checker.Check(ctx) + checks := make([]gen.HealthCheck, 0, len(check.Details)) + for k, v := range check.Details { + var err *string + if v.Error != nil { + strErr := v.Error.Error() + err = &strErr + } + checks = append(checks, gen.HealthCheck{ + Key: k, + Status: transformHealthCheckStatus(v.Status), + Timestamp: v.Timestamp, + Error: err, + }) + } + sort.Slice(checks, func(i, j int) bool { + return checks[i].Key < checks[j].Key + }) + result := gen.HealthQuery{ + Status: transformHealthCheckStatus(check.Status), + Checks: checks, + } + return result, nil +} + +// Queue is the resolver for the queue field. +func (r *queryResolver) Queue(ctx context.Context) (gqlmodel.QueueQuery, error) { + return gqlmodel.QueueQuery{QueueMetricsClient: r.QueueMetricsClient}, nil +} + // Torrent is the resolver for the torrent field. func (r *queryResolver) Torrent(ctx context.Context) (gqlmodel.TorrentQuery, error) { return gqlmodel.TorrentQuery{ - TorrentSearch: r.search, + Dao: r.Dao, + Search: r.Search, + TorrentMetricsClient: r.TorrentMetricsClient, }, nil } // TorrentContent is the resolver for the torrentContent field. func (r *queryResolver) TorrentContent(ctx context.Context) (gqlmodel.TorrentContentQuery, error) { return gqlmodel.TorrentContentQuery{ - TorrentContentSearch: r.search, + TorrentContentSearch: r.Search, }, nil } -// System is the resolver for the system field. -func (r *queryResolver) System(ctx context.Context) (gen.SystemQuery, error) { - return gen.SystemQuery{ - Version: version.GitTag, - }, nil +// Files is the resolver for the files field. +func (r *torrentQueryResolver) Files(ctx context.Context, obj *gqlmodel.TorrentQuery, input gqlmodel.TorrentFilesQueryInput) (query.GenericResult[model.TorrentFile], error) { + return gqlmodel.TorrentQuery{ + Search: r.Search, + }.Files(ctx, input) } // Query returns gql.QueryResolver implementation. func (r *Resolver) Query() gql.QueryResolver { return &queryResolver{r} } +// TorrentQuery returns gql.TorrentQueryResolver implementation. +func (r *Resolver) TorrentQuery() gql.TorrentQueryResolver { return &torrentQueryResolver{r} } + type queryResolver struct{ *Resolver } +type torrentQueryResolver struct{ *Resolver } diff --git a/internal/gql/resolvers/queue.resolvers.go b/internal/gql/resolvers/queue.resolvers.go new file mode 100644 index 0000000..b9f9de8 --- /dev/null +++ b/internal/gql/resolvers/queue.resolvers.go @@ -0,0 +1,56 @@ +package resolvers + +// This file will be automatically regenerated based on the schema, any resolver implementations +// will be copied through when generating and any unknown code will be moved to the end. +// Code generated by github.com/99designs/gqlgen version v0.17.55 + +import ( + "context" + "time" + + "github.com/bitmagnet-io/bitmagnet/internal/gql" + "github.com/bitmagnet-io/bitmagnet/internal/gql/gqlmodel" + "github.com/bitmagnet-io/bitmagnet/internal/model" + "github.com/bitmagnet-io/bitmagnet/internal/processor" + "github.com/bitmagnet-io/bitmagnet/internal/queue/manager" +) + +// RanAt is the resolver for the ranAt field. +func (r *queueJobResolver) RanAt(ctx context.Context, obj *model.QueueJob) (*time.Time, error) { + if obj == nil { + return nil, nil + } + t := obj.RanAt.Time + if t.IsZero() { + return nil, nil + } + return &t, nil +} + +// Jobs is the resolver for the jobs field. +func (r *queueQueryResolver) Jobs(ctx context.Context, obj *gqlmodel.QueueQuery, input gqlmodel.QueueJobsQueryInput) (gqlmodel.QueueJobsQueryResult, error) { + return gqlmodel.QueueQuery{QueueJobSearch: r.Search}.Jobs(ctx, input) +} + +// ClassifierRematch is the resolver for the classifierRematch field. +func (r *queueEnqueueReprocessTorrentsBatchInputResolver) ClassifierRematch(ctx context.Context, obj *manager.EnqueueReprocessTorrentsBatchRequest, data *bool) error { + if data != nil && *data { + obj.ClassifyMode = processor.ClassifyModeRematch + } + return nil +} + +// QueueJob returns gql.QueueJobResolver implementation. +func (r *Resolver) QueueJob() gql.QueueJobResolver { return &queueJobResolver{r} } + +// QueueQuery returns gql.QueueQueryResolver implementation. +func (r *Resolver) QueueQuery() gql.QueueQueryResolver { return &queueQueryResolver{r} } + +// QueueEnqueueReprocessTorrentsBatchInput returns gql.QueueEnqueueReprocessTorrentsBatchInputResolver implementation. +func (r *Resolver) QueueEnqueueReprocessTorrentsBatchInput() gql.QueueEnqueueReprocessTorrentsBatchInputResolver { + return &queueEnqueueReprocessTorrentsBatchInputResolver{r} +} + +type queueJobResolver struct{ *Resolver } +type queueQueryResolver struct{ *Resolver } +type queueEnqueueReprocessTorrentsBatchInputResolver struct{ *Resolver } diff --git a/internal/gql/resolvers/resolver.go b/internal/gql/resolvers/resolver.go index ccfea20..97074d0 100644 --- a/internal/gql/resolvers/resolver.go +++ b/internal/gql/resolvers/resolver.go @@ -1,9 +1,13 @@ package resolvers import ( + "github.com/bitmagnet-io/bitmagnet/internal/boilerplate/worker" "github.com/bitmagnet-io/bitmagnet/internal/database/dao" "github.com/bitmagnet-io/bitmagnet/internal/database/search" - "github.com/bitmagnet-io/bitmagnet/internal/gql" + "github.com/bitmagnet-io/bitmagnet/internal/health" + "github.com/bitmagnet-io/bitmagnet/internal/metrics/queuemetrics" + "github.com/bitmagnet-io/bitmagnet/internal/metrics/torrentmetrics" + "github.com/bitmagnet-io/bitmagnet/internal/queue/manager" ) // This file will not be regenerated automatically. @@ -11,16 +15,11 @@ import ( // It serves as dependency injection for your app, add any dependencies you require here. type Resolver struct { - dao *dao.Query - search search.Search -} - -func New( - dao *dao.Query, - search search.Search, -) gql.ResolverRoot { - return &Resolver{ - dao: dao, - search: search, - } + Dao *dao.Query + Search search.Search + Workers worker.Registry + Checker health.Checker + QueueMetricsClient queuemetrics.Client + QueueManager manager.Manager + TorrentMetricsClient torrentmetrics.Client } diff --git a/internal/health/check.go b/internal/health/check.go new file mode 100644 index 0000000..1ffe697 --- /dev/null +++ b/internal/health/check.go @@ -0,0 +1,587 @@ +package health + +import ( + "context" + "encoding/json" + "errors" + "fmt" + "sync" + "time" +) + +type ( + checkerConfig struct { + timeout time.Duration + info map[string]interface{} + checks map[string]*Check + cacheTTL time.Duration + statusChangeListener func(context.Context, CheckerState) + interceptors []Interceptor + detailsDisabled bool + autostartDisabled bool + } + + defaultChecker struct { + started bool + startedAt time.Time + mtx sync.Mutex + cfg checkerConfig + state CheckerState + wg sync.WaitGroup + cancel context.CancelFunc + periodicCheckCount int + } + + checkResult struct { + checkName string + newState CheckState + } + + jsonCheckResult struct { + Status string `json:"status"` + Timestamp time.Time `json:"timestamp,omitempty"` + Error string `json:"error,omitempty"` + } + + // Checker is the main checker interface. It provides all health checking logic. + Checker interface { + // Start will start all necessary background workers and prepare + // the checker for further usage. + Start() + // Stop stops will stop the checker. + Stop() + // Check runs all synchronous (i.e., non-periodic) check functions. + // It returns the aggregated health status (combined from the results + // of this executions synchronous checks and the previously reported + // results of asynchronous/periodic checks. This function expects a + // context, that may contain deadlines to which will be adhered to. + // The context will be passed to all downstream calls + // (such as listeners, component check functions, and interceptors). + Check(ctx context.Context) CheckerResult + // GetRunningPeriodicCheckCount returns the number of currently + // running periodic checks. + GetRunningPeriodicCheckCount() int + // IsStarted returns true, if the Checker was started (see Checker.Start) + // and is currently still running. Returns false otherwise. + IsStarted() bool + StartedAt() time.Time + } + + // CheckerState represents the current state of the Checker. + CheckerState struct { + // Status is the aggregated system health status. + Status AvailabilityStatus + // CheckState contains the state of all checks. + CheckState map[string]CheckState + } + + // CheckState represents the current state of a component check. + CheckState struct { + // LastCheckedAt holds the time of when the check was last executed. + LastCheckedAt time.Time + // LastCheckedAt holds the last time of when the check did not return an error. + LastSuccessAt time.Time + // LastFailureAt holds the last time of when the check did return an error. + LastFailureAt time.Time + // FirstCheckStartedAt holds the time of when the first check was started. + FirstCheckStartedAt time.Time + // ContiguousFails holds the number of how often the check failed in a row. + ContiguousFails uint + // Result holds the error of the last check (nil if successful). + Result error + // The current availability status of the check. + Status AvailabilityStatus + } + + // CheckerResult holds the aggregated system availability status and + // detailed information about the individual checks. + CheckerResult struct { + // Info contains additional information about this health result. + Info map[string]interface{} `json:"info,omitempty"` + // Status is the aggregated system availability status. + Status AvailabilityStatus `json:"status"` + // Details contains health information for all checked components. + Details map[string]CheckResult `json:"details,omitempty"` + } + + // CheckResult holds a components health information. + // Attention: This type is converted from/to JSON using a custom + // marshalling/unmarshalling function (see type jsonCheckResult). + // This is required because some fields are not converted automatically + // by the standard json.Marshal/json.Unmarshal functions + // (such as the error interface). The JSON tags you see here, are + // just there for the readers' convenience. + CheckResult struct { + // Status is the availability status of a component. + Status AvailabilityStatus `json:"status"` + // Timestamp holds the time when the check was executed. + Timestamp time.Time `json:"timestamp,omitempty"` + // Error contains the check error message, if the check failed. + Error error `json:"error,omitempty"` + } + + // Interceptor is factory function that allows creating new instances of + // a InterceptorFunc. The concept behind Interceptor is similar to the + // middleware pattern. A InterceptorFunc that is created by calling a + // Interceptor is expected to forward the function call to the next + // InterceptorFunc (passed to the Interceptor in parameter 'next'). + // This way, a chain of interceptors is constructed that will eventually + // invoke of the components health check function. Each interceptor must therefore + // invoke the 'next' interceptor. If the 'next' InterceptorFunc is not called, + // the components check health function will never be executed. + Interceptor func(next InterceptorFunc) InterceptorFunc + + // InterceptorFunc is an interceptor function that intercepts any call to + // a components health check function. + InterceptorFunc func(ctx context.Context, checkName string, state CheckState) CheckState + + // AvailabilityStatus expresses the availability of either + // a component or the whole system. + AvailabilityStatus string +) + +const ( + // StatusUnknown holds the information that the availability + // status is not known, because not all checks were executed yet. + StatusUnknown AvailabilityStatus = "unknown" + // StatusUp holds the information that the system or a component + // is up and running. + StatusUp AvailabilityStatus = "up" + // StatusDown holds the information that the system or a component + // down and not available. + StatusDown AvailabilityStatus = "down" + // StatusInactive holds the information that a component + // is not currently active. + StatusInactive AvailabilityStatus = "inactive" +) + +// MarshalJSON provides a custom marshaller for the CheckResult type. +func (cr CheckResult) MarshalJSON() ([]byte, error) { + errorMsg := "" + if cr.Error != nil { + errorMsg = cr.Error.Error() + } + + return json.Marshal(&jsonCheckResult{ + Status: string(cr.Status), + Timestamp: cr.Timestamp, + Error: errorMsg, + }) +} + +func (cr *CheckResult) UnmarshalJSON(data []byte) error { + var result jsonCheckResult + if err := json.Unmarshal(data, &result); err != nil { + return err + } + + cr.Status = AvailabilityStatus(result.Status) + cr.Timestamp = result.Timestamp + + if result.Error != "" { + cr.Error = errors.New(result.Error) + } + + return nil +} + +func (s AvailabilityStatus) criticality() int { + switch s { + case StatusDown: + return 2 + case StatusUnknown: + return 1 + default: + return 0 + } +} + +var ( + CheckTimeoutErr = errors.New("check timed out") +) + +func newChecker(cfg checkerConfig) *defaultChecker { + checkState := map[string]CheckState{} + for _, check := range cfg.checks { + checkState[check.Name] = CheckState{Status: StatusUnknown} + } + + checker := defaultChecker{ + cfg: cfg, + state: CheckerState{Status: StatusUnknown, CheckState: checkState}, + } + + if !cfg.autostartDisabled { + checker.Start() + } + + return &checker +} + +// Start implements Checker.Start. Please refer to Checker.Start for more information. +func (ck *defaultChecker) Start() { + ck.mtx.Lock() + + if !ck.started { + ctx, cancel := context.WithCancel(context.Background()) + ck.cancel = cancel + + ck.started = true + ck.startedAt = time.Now() + defer ck.startPeriodicChecks(ctx) + + // We run the initial check execution in a separate goroutine so that server startup is not blocked in case of + // a bad check that runs for a longer period of time. + go ck.Check(ctx) + } + + // Attention: We should avoid having this unlock as a deferred function call right after the mutex lock above, + // since this may cause a deadlock (e.g., startPeriodicChecks requires the mutex lock as well and would block + // because of the defer order) + ck.mtx.Unlock() +} + +// Stop implements Checker.Stop. Please refer to Checker.Stop for more information. +func (ck *defaultChecker) Stop() { + ck.cancel() + ck.wg.Wait() + + ck.mtx.Lock() + defer ck.mtx.Unlock() + + ck.started = false + ck.periodicCheckCount = 0 +} + +// GetRunningPeriodicCheckCount implements Checker.GetRunningPeriodicCheckCount. +// Please refer to Checker.GetRunningPeriodicCheckCount for more information. +func (ck *defaultChecker) GetRunningPeriodicCheckCount() int { + ck.mtx.Lock() + defer ck.mtx.Unlock() + return ck.periodicCheckCount +} + +// IsStarted implements Checker.IsStarted. Please refer to Checker.IsStarted for more information. +func (ck *defaultChecker) IsStarted() bool { + ck.mtx.Lock() + defer ck.mtx.Unlock() + return ck.started +} + +// StartedAt implements Checker.StartedAt. +func (ck *defaultChecker) StartedAt() time.Time { + ck.mtx.Lock() + defer ck.mtx.Unlock() + return ck.startedAt +} + +// Check implements Checker.Check. Please refer to Checker.Check for more information. +func (ck *defaultChecker) Check(ctx context.Context) CheckerResult { + ck.mtx.Lock() + defer ck.mtx.Unlock() + + ctx, cancel := context.WithTimeout(ctx, ck.cfg.timeout) + defer cancel() + + ck.runSynchronousChecks(ctx) + + return ck.mapStateToCheckerResult() +} + +func (ck *defaultChecker) runSynchronousChecks(ctx context.Context) { + var ( + numChecks = len(ck.cfg.checks) + numInitiatedChecks = 0 + resChan = make(chan checkResult, numChecks) + ) + + for _, check := range ck.cfg.checks { + check := check + + if !isPeriodicCheck(check) { + checkState := ck.state.CheckState[check.Name] + + if !isCacheExpired(ck.cfg.cacheTTL, &checkState) { + continue + } + + numInitiatedChecks++ + + go func() { + withCheckContext(ctx, check, func(ctx context.Context) { + _, checkState := executeCheck(ctx, &ck.cfg, check, checkState) + resChan <- checkResult{check.Name, checkState} + }) + }() + } + } + + results := make([]checkResult, 0, numInitiatedChecks) + for len(results) < numInitiatedChecks { + results = append(results, <-resChan) + } + + ck.updateState(ctx, results...) +} + +func (ck *defaultChecker) startPeriodicChecks(ctx context.Context) { + ck.mtx.Lock() + defer ck.mtx.Unlock() + + // Start periodic checks. + for _, check := range ck.cfg.checks { + check := check + + if isPeriodicCheck(check) { + // ATTENTION: Access to check and ck.state.CheckState is not synchronized here, + // assuming that the accessed values are never changed, such as + // - ck.state.CheckState[check.Name] + // - check object itself (there will never be a new Check object created for the configured check) + // - check.updateInterval (used by isPeriodicCheck) + // - check.initialDelay + // ALSO: + // - The check state itself is never synchronized on, since the only place where values can be changed are + // within this goroutine. + + ck.periodicCheckCount++ + ck.wg.Add(1) + + go func() { + defer ck.wg.Done() + + if check.initialDelay > 0 { + if waitForStopSignal(ctx, check.initialDelay) { + return + } + } + + for { + withCheckContext(ctx, check, func(ctx context.Context) { + ck.mtx.Lock() + checkState := ck.state.CheckState[check.Name] + ck.mtx.Unlock() + + // ATTENTION: This function may panic, if panic handling is disabled + // via "check.DisablePanicRecovery". + // + // ATTENTION: executeCheck is executed with its own copy of the checks + // state (see checkState above). This means that if there is a global status + // listener that is configured by the user with health.WithStatusListener, + // and that global status listener changes this checks state as long as + // executeCheck is running, the modifications made by the global listener + // will be lost after the function completes, since we overwrite the state + // below using updateState. + // This means that global listeners should not change the checks state + // or accept losing their updates. This will be the case especially for + // long-running checks. Hence, the checkState is read-only for interceptors. + ctx, checkState = executeCheck(ctx, &ck.cfg, check, checkState) + + ck.mtx.Lock() + ck.updateState(ctx, checkResult{check.Name, checkState}) + ck.mtx.Unlock() + }) + + if waitForStopSignal(ctx, check.updateInterval) { + return + } + } + }() + } + } +} + +func (ck *defaultChecker) updateState(ctx context.Context, updates ...checkResult) { + for _, update := range updates { + ck.state.CheckState[update.checkName] = update.newState + } + + oldStatus := ck.state.Status + ck.state.Status = aggregateStatus(ck.state.CheckState) + + if oldStatus != ck.state.Status && ck.cfg.statusChangeListener != nil { + ck.cfg.statusChangeListener(ctx, ck.state) + } +} + +func (ck *defaultChecker) mapStateToCheckerResult() CheckerResult { + var ( + checkResults map[string]CheckResult + numChecks = len(ck.cfg.checks) + status = ck.state.Status + ) + + if numChecks > 0 && !ck.cfg.detailsDisabled { + checkResults = make(map[string]CheckResult, numChecks) + for _, check := range ck.cfg.checks { + checkState := ck.state.CheckState[check.Name] + timestamp := checkState.LastCheckedAt + if timestamp.IsZero() { + timestamp = ck.startedAt + } + checkResults[check.Name] = CheckResult{ + Status: checkState.Status, + Error: checkState.Result, + Timestamp: timestamp, + } + } + } + + return CheckerResult{Status: status, Details: checkResults, Info: ck.cfg.info} +} + +func isCacheExpired(cacheDuration time.Duration, state *CheckState) bool { + return state.LastCheckedAt.IsZero() || state.LastCheckedAt.Before(time.Now().Add(-cacheDuration)) +} + +func isActiveCheck(check *Check) bool { + return check.IsActive == nil || check.IsActive() +} + +func isPeriodicCheck(check *Check) bool { + return check.updateInterval > 0 +} + +func waitForStopSignal(ctx context.Context, waitTime time.Duration) bool { + select { + case <-time.After(waitTime): + return false + case <-ctx.Done(): + return true + } +} + +func withCheckContext(ctx context.Context, check *Check, f func(checkCtx context.Context)) { + cancel := func() {} + if check.Timeout > 0 { + ctx, cancel = context.WithTimeout(ctx, check.Timeout) + } + defer cancel() + f(ctx) +} + +func executeCheck( + ctx context.Context, + cfg *checkerConfig, + check *Check, + oldState CheckState, +) (context.Context, CheckState) { + newState := oldState + + if newState.FirstCheckStartedAt.IsZero() { + newState.FirstCheckStartedAt = time.Now() + } + + // We copy explicitly to not affect the underlying array of the slices as a side effect. + // These slices are being passed to this library as configuration parameters, so we don't know how they + // are being used otherwise in the users program. + interceptors := make([]Interceptor, 0, len(cfg.interceptors)+len(check.Interceptors)) + interceptors = append(interceptors, cfg.interceptors...) + interceptors = append(interceptors, check.Interceptors...) + + if isActiveCheck(check) { + newState = withInterceptors(interceptors, func(ctx context.Context, _ string, state CheckState) CheckState { + checkFuncResult := executeCheckFunc(ctx, check) + return createNextCheckState(checkFuncResult, check, state) + })(ctx, check.Name, newState) + } else { + newState.Status = StatusInactive + } + + if check.StatusListener != nil && oldState.Status != newState.Status { + check.StatusListener(ctx, check.Name, newState) + } + + return ctx, newState +} + +func executeCheckFunc(ctx context.Context, check *Check) error { + // If this channel is not bounded, we may have a goroutine leak (e.g., when ctx.Done signals first then + // sending the check result into the channel will block forever). + res := make(chan error, 1) + + go func() { + defer func() { + if !check.DisablePanicRecovery { + if r := recover(); r != nil { + // TODO: Provide a configurable panic handler configuration option, so developers can decide + // what to do with panics. + err, ok := r.(error) + if ok { + res <- err + } else { + res <- fmt.Errorf("%v", r) + } + } + } + }() + + res <- check.Check(ctx) + }() + + select { + case err := <-res: + return err + case <-ctx.Done(): + return CheckTimeoutErr + } +} + +func createNextCheckState(result error, check *Check, state CheckState) CheckState { + now := time.Now() + + state.Result = result + state.LastCheckedAt = now + + if state.Result == nil { + state.ContiguousFails = 0 + state.LastSuccessAt = now + } else { + state.ContiguousFails++ + state.LastFailureAt = now + } + + state.Status = evaluateCheckStatus(&state, check.MaxTimeInError, check.MaxContiguousFails) + + return state +} + +func evaluateCheckStatus(state *CheckState, maxTimeInError time.Duration, maxFails uint) AvailabilityStatus { + if state.LastCheckedAt.IsZero() { + return StatusUnknown + } else if state.Result != nil { + maxTimeInErrorSinceStartPassed := !state.FirstCheckStartedAt.Add(maxTimeInError).After(time.Now()) + maxTimeInErrorSinceLastSuccessPassed := state.LastSuccessAt.IsZero() || + !state.LastSuccessAt.Add(maxTimeInError).After(time.Now()) + + timeInErrorThresholdCrossed := maxTimeInErrorSinceStartPassed && maxTimeInErrorSinceLastSuccessPassed + failCountThresholdCrossed := state.ContiguousFails >= maxFails + + if failCountThresholdCrossed && timeInErrorThresholdCrossed { + return StatusDown + } + } + + return StatusUp +} + +func aggregateStatus(results map[string]CheckState) AvailabilityStatus { + status := StatusUp + + for _, result := range results { + if result.Status.criticality() > status.criticality() { + status = result.Status + } + } + + return status +} + +func withInterceptors(interceptors []Interceptor, target InterceptorFunc) InterceptorFunc { + chain := target + + for idx := len(interceptors) - 1; idx >= 0; idx-- { + chain = interceptors[idx](chain) + } + + return chain +} diff --git a/internal/health/check_test.go b/internal/health/check_test.go new file mode 100644 index 0000000..a71f7e3 --- /dev/null +++ b/internal/health/check_test.go @@ -0,0 +1,181 @@ +package health + +import ( + "context" + "fmt" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + "testing" + "time" +) + +func TestStatusUnknownBeforeStatusUp(t *testing.T) { + // Arrange + testData := map[string]CheckState{"check1": {Status: StatusUp}, "check2": {Status: StatusUnknown}} + + // Act + result := aggregateStatus(testData) + + // Assert + assert.Equal(t, result, StatusUnknown) +} + +func TestStatusDownBeforeStatusUnknown(t *testing.T) { + // Arrange + testData := map[string]CheckState{"check1": {Status: StatusDown}, "check2": {Status: StatusUnknown}} + + // Act + result := aggregateStatus(testData) + + // Assert + assert.Equal(t, result, StatusDown) +} + +func doTestEvaluateAvailabilityStatus( + t *testing.T, + expectedStatus AvailabilityStatus, + maxTimeInError time.Duration, + maxFails uint, + state CheckState, +) { + // Act + result := evaluateCheckStatus(&state, maxTimeInError, maxFails) + + // Assert + assert.Equal(t, expectedStatus, result) +} + +func TestWhenNoChecksMadeYetThenStatusUnknown(t *testing.T) { + doTestEvaluateAvailabilityStatus(t, StatusUnknown, 0, 0, CheckState{ + LastCheckedAt: time.Time{}, + }) +} + +func TestWhenNoErrorThenStatusUp(t *testing.T) { + doTestEvaluateAvailabilityStatus(t, StatusUp, 0, 0, CheckState{ + LastCheckedAt: time.Now(), + }) +} + +func TestWhenErrorThenStatusDown(t *testing.T) { + doTestEvaluateAvailabilityStatus(t, StatusDown, 0, 0, CheckState{ + LastCheckedAt: time.Now(), + Result: fmt.Errorf("example error"), + }) +} + +func TestWhenErrorAndMaxFailuresThresholdNotCrossedThenStatusWarn(t *testing.T) { + doTestEvaluateAvailabilityStatus(t, StatusUp, 1*time.Second, uint(10), CheckState{ + LastCheckedAt: time.Now(), + Result: fmt.Errorf("example error"), + FirstCheckStartedAt: time.Now().Add(-2 * time.Minute), + LastSuccessAt: time.Now().Add(-3 * time.Minute), + ContiguousFails: 1, + }) +} + +func TestWhenErrorAndMaxTimeInErrorThresholdNotCrossedThenStatusWarn(t *testing.T) { + doTestEvaluateAvailabilityStatus(t, StatusUp, 1*time.Hour, uint(1), CheckState{ + LastCheckedAt: time.Now(), + Result: fmt.Errorf("example error"), + FirstCheckStartedAt: time.Now().Add(-3 * time.Minute), + LastSuccessAt: time.Now().Add(-2 * time.Minute), + ContiguousFails: 100, + }) +} + +func TestWhenErrorAndAllThresholdsCrossedThenStatusDown(t *testing.T) { + doTestEvaluateAvailabilityStatus(t, StatusDown, 1*time.Second, uint(1), CheckState{ + LastCheckedAt: time.Now(), + Result: fmt.Errorf("example error"), + FirstCheckStartedAt: time.Now().Add(-3 * time.Minute), + LastSuccessAt: time.Now().Add(-2 * time.Minute), + ContiguousFails: 5, + }) +} + +func TestStartStopManualPeriodicChecks(t *testing.T) { + ckr := NewChecker( + WithDisabledAutostart(), + WithPeriodicCheck(50*time.Minute, 0, Check{ + Name: "check", + Check: func(ctx context.Context) error { + return nil + }, + })) + + assert.Equal(t, 0, ckr.GetRunningPeriodicCheckCount()) + + ckr.Start() + assert.Equal(t, 1, ckr.GetRunningPeriodicCheckCount()) + + ckr.Stop() + assert.Equal(t, 0, ckr.GetRunningPeriodicCheckCount()) +} + +func doTestCheckerCheckFunc(t *testing.T, updateInterval time.Duration, err error, expectedStatus AvailabilityStatus) { + // Arrange + ckr := NewChecker( + WithTimeout(10*time.Second), + WithCheck(Check{ + Name: "check1", + Check: func(ctx context.Context) error { + return nil + }, + }), + WithPeriodicCheck(updateInterval, 0, Check{ + Name: "check2", + Check: func(ctx context.Context) error { + return err + }, + }), + ) + + // Act + res := ckr.Check(context.Background()) + + // Assert + require.NotNil(t, res.Details) + assert.Equal(t, expectedStatus, res.Status) + for _, checkName := range []string{"check1", "check2"} { + _, checkResultExists := res.Details[checkName] + assert.True(t, checkResultExists) + } +} + +func TestWhenChecksExecutedThenAggregatedResultUp(t *testing.T) { + doTestCheckerCheckFunc(t, 0, nil, StatusUp) +} + +func TestWhenOneCheckFailedThenAggregatedResultDown(t *testing.T) { + doTestCheckerCheckFunc(t, 0, fmt.Errorf("this is a check error"), StatusDown) +} + +func TestCheckSuccessNotAllChecksExecutedYet(t *testing.T) { + doTestCheckerCheckFunc(t, 5*time.Hour, nil, StatusUnknown) +} + +func TestPanicRecovery(t *testing.T) { + // Arrange + expectedPanicMsg := "test message" + ckr := NewChecker( + WithCheck(Check{ + Name: "iPanic", + Check: func(ctx context.Context) error { + panic(expectedPanicMsg) + }, + }), + ) + + // Act + res := ckr.Check(context.Background()) + + // Assert + require.NotNil(t, res.Details) + assert.Equal(t, StatusDown, res.Status) + + checkRes, checkResultExists := res.Details["iPanic"] + assert.True(t, checkResultExists) + assert.NotNil(t, checkRes.Error) + assert.Equal(t, (checkRes.Error).Error(), expectedPanicMsg) +} diff --git a/internal/health/config.go b/internal/health/config.go new file mode 100644 index 0000000..337dcdb --- /dev/null +++ b/internal/health/config.go @@ -0,0 +1,203 @@ +package health + +import ( + "context" + "time" +) + +type ( + // Check allows to configure health checks. + Check struct { + // The Name must be unique among all checks. Name is a required attribute. + Name string // Required + + IsActive func() bool + + // Check is the check function that will be executed to check availability. + // This function must return an error if the checked service is considered + // not available. Check is a required attribute. + Check func(ctx context.Context) error // Required + + // Timeout will override the global timeout value, if it is smaller than + // the global timeout (see WithTimeout). + Timeout time.Duration // Optional + + // MaxTimeInError will set a duration for how long a service must be + // in an error state until it is considered down/unavailable. + MaxTimeInError time.Duration // Optional + + // MaxContiguousFails will set a maximum number of contiguous + // check fails until the service is considered down/unavailable. + MaxContiguousFails uint // Optional + + // StatusListener allows to set a listener that will be called + // whenever the AvailabilityStatus (e.g. from "up" to "down"). + StatusListener func(ctx context.Context, name string, state CheckState) // Optional + + // Interceptors holds a list of Interceptor instances that will be executed one after another in the + // order as they appear in the list. + Interceptors []Interceptor + + // DisablePanicRecovery disables automatic recovery from panics. If left in its default value (false), + // panics will be automatically converted into errors instead. + DisablePanicRecovery bool + + updateInterval time.Duration + initialDelay time.Duration + } + + // CheckerOption is a configuration option for a Checker. + CheckerOption func(config *checkerConfig) + + // HandlerOption is a configuration option for a Handler (see NewHandler). + HandlerOption func(*HandlerConfig) +) + +// NewChecker creates a new Checker. The provided options will be +// used to modify its configuration. If the Checker was not yet started +// (see Checker.IsStarted), it will be started automatically +// (see Checker.Start). You can disable this autostart by +// adding the WithDisabledAutostart configuration option. +func NewChecker(options ...CheckerOption) Checker { + cfg := checkerConfig{ + cacheTTL: 1 * time.Second, + timeout: 10 * time.Second, + checks: map[string]*Check{}, + interceptors: []Interceptor{}, + } + + for _, opt := range options { + opt(&cfg) + } + + return newChecker(cfg) +} + +// WithDisabledDetails disables all data in the JSON response body. The AvailabilityStatus will be the only +// content. Example: { "status":"down" }. Enabled by default. +func WithDisabledDetails() CheckerOption { + return func(cfg *checkerConfig) { + cfg.detailsDisabled = true + } +} + +// WithTimeout defines a timeout duration for all checks. You can override +// this timeout by using the timeout value in the Check configuration. +// Default value is 10 seconds. +func WithTimeout(timeout time.Duration) CheckerOption { + return func(cfg *checkerConfig) { + cfg.timeout = timeout + } +} + +// WithStatusListener registers a listener function that will be called whenever the overall/aggregated system health +// status changes (e.g. from "up" to "down"). Attention: Because this listener is also executed for synchronous +// (i.e, request-based) health checks, it should not block processing. +func WithStatusListener(listener func(ctx context.Context, state CheckerState)) CheckerOption { + return func(cfg *checkerConfig) { + cfg.statusChangeListener = listener + } +} + +// WithMiddleware configures a middleware that will be used by the handler +// to pro- and post-process HTTP requests and health checks. +// Refer to the documentation of type Middleware for more information. +func WithMiddleware(middleware ...Middleware) HandlerOption { + return func(cfg *HandlerConfig) { + cfg.middleware = append(cfg.middleware, middleware...) + } +} + +// WithStatusCodeUp sets an HTTP status code that will be used for responses +// where the system is considered to be available ("up"). +// Default is HTTP status code 200 (OK). +func WithStatusCodeUp(httpStatus int) HandlerOption { + return func(cfg *HandlerConfig) { + cfg.statusCodeUp = httpStatus + } +} + +// WithStatusCodeDown sets an HTTP status code that will be used for responses +// where the system is considered to be unavailable ("down"). +// Default is HTTP status code 503 (Service Unavailable). +func WithStatusCodeDown(httpStatus int) HandlerOption { + return func(cfg *HandlerConfig) { + cfg.statusCodeDown = httpStatus + } +} + +// WithResultWriter is responsible for writing a health check result (see CheckerResult) +// into an HTTP response. By default, JSONResultWriter will be used. +func WithResultWriter(writer ResultWriter) HandlerOption { + return func(cfg *HandlerConfig) { + cfg.resultWriter = writer + } +} + +// WithDisabledAutostart disables automatic startup of a Checker instance. +func WithDisabledAutostart() CheckerOption { + return func(cfg *checkerConfig) { + cfg.autostartDisabled = true + } +} + +// WithDisabledCache disabled the check cache. This is not recommended in most cases. +// This will effectively lead to a health endpoint that initiates a new health check for each incoming HTTP request. +// This may have an impact on the systems that are being checked (especially if health checks are expensive). +// Caching also mitigates "denial of service" attacks. Caching is enabled by default. +func WithDisabledCache() CheckerOption { + return WithCacheDuration(0) +} + +// WithCacheDuration sets the duration for how long the aggregated health check result will be +// cached. By default, the cache TTL (i.e, the duration for how long responses will be cached) is set to 1 second. +// Caching will prevent that each incoming HTTP request triggers a new health check. A duration of 0 will +// effectively disable the cache and has the same effect as WithDisabledCache. +func WithCacheDuration(duration time.Duration) CheckerOption { + return func(cfg *checkerConfig) { + cfg.cacheTTL = duration + } +} + +// WithCheck adds a new health check that contributes to the overall service availability status. +// This check will be triggered each time Checker.Check is called (i.e., for each HTTP request). +// If health checks are expensive, or you expect a higher amount of requests on the health endpoint, +// consider using WithPeriodicCheck instead. +func WithCheck(check Check) CheckerOption { + return func(cfg *checkerConfig) { + cfg.checks[check.Name] = &check + } +} + +// WithPeriodicCheck adds a new health check that contributes to the overall service availability status. +// The health check will be performed on a fixed schedule and will not be executed for each HTTP request +// (as in contrast to WithCheck). This allows to process a much higher number of HTTP requests without +// actually calling the checked services too often or to execute long-running checks. +// This way Checker.Check (and the health endpoint) always returns the last result of the periodic check. +func WithPeriodicCheck(refreshPeriod time.Duration, initialDelay time.Duration, check Check) CheckerOption { + return func(cfg *checkerConfig) { + check.updateInterval = refreshPeriod + check.initialDelay = initialDelay + cfg.checks[check.Name] = &check + } +} + +// WithInterceptors adds a list of interceptors that will be applied to every check function. Interceptors +// may intercept the function call and do some pre- and post-processing, having the check state and check function +// result at hand. The interceptors will be executed in the order they are passed to this function. +func WithInterceptors(interceptors ...Interceptor) CheckerOption { + return func(cfg *checkerConfig) { + cfg.interceptors = interceptors + } +} + +// WithInfo sets values that will be available in every health check result. For example, you can use this option +// if you want to set information about your system that will be returned in every health check result, such as +// version number, Git SHA, build date, etc. These values will be available in CheckerResult.Info. If you use the +// default HTTP handler of this library (see NewHandler) or convert the CheckerResult to JSON on your own, +// these values will be available in the "info" field. +func WithInfo(values map[string]interface{}) CheckerOption { + return func(cfg *checkerConfig) { + cfg.info = values + } +} diff --git a/internal/health/config_test.go b/internal/health/config_test.go new file mode 100644 index 0000000..3e21578 --- /dev/null +++ b/internal/health/config_test.go @@ -0,0 +1,190 @@ +package health + +import ( + "context" + "net/http" + "reflect" + "testing" + "time" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +func TestWithPeriodicCheckConfig(t *testing.T) { + // Arrange + expectedName := "test" + cfg := checkerConfig{checks: map[string]*Check{}} + interval := 5 * time.Second + initialDelay := 1 * time.Minute + check := Check{Name: expectedName, updateInterval: interval, initialDelay: initialDelay} + + // Act + WithPeriodicCheck(interval, initialDelay, check)(&cfg) + + // Assert + assert.Equal(t, 1, len(cfg.checks)) + assert.True(t, reflect.DeepEqual(check, *cfg.checks[expectedName])) +} + +func TestWithCheckConfig(t *testing.T) { + // Arrange + expectedName := "test" + cfg := checkerConfig{checks: map[string]*Check{}} + check := Check{Name: "test"} + + // Act + WithCheck(check)(&cfg) + + // Assert + require.Equal(t, 1, len(cfg.checks)) + assert.True(t, reflect.DeepEqual(&check, cfg.checks[expectedName])) +} + +func TestWithCacheDurationConfig(t *testing.T) { + // Arrange + cfg := checkerConfig{} + duration := 5 * time.Hour + + // Act + WithCacheDuration(duration)(&cfg) + + // Assert + assert.Equal(t, duration, cfg.cacheTTL) +} + +func TestWithDisabledCacheConfig(t *testing.T) { + // Arrange + cfg := checkerConfig{} + + // Act + WithDisabledCache()(&cfg) + + // Assert + assert.Equal(t, 0*time.Second, cfg.cacheTTL) +} + +func TestWithTimeoutStartConfig(t *testing.T) { + // Arrange + cfg := checkerConfig{} + + // Act + WithTimeout(5 * time.Hour)(&cfg) + + // Assert + assert.Equal(t, 5*time.Hour, cfg.timeout) +} + +func TestWithDisabledDetailsConfig(t *testing.T) { + // Arrange + cfg := checkerConfig{} + + // Act + WithDisabledDetails()(&cfg) + + // Assert + assert.Equal(t, true, cfg.detailsDisabled) +} + +func TestWithMiddlewareConfig(t *testing.T) { + // Arrange + cfg := HandlerConfig{} + mw := func(MiddlewareFunc) MiddlewareFunc { + return func(r *http.Request) CheckerResult { + return CheckerResult{nil, StatusUp, nil} + } + } + + // Act + WithMiddleware(mw)(&cfg) + + // Assert + assert.Equal(t, 1, len(cfg.middleware)) +} + +func TestWithInterceptorConfig(t *testing.T) { + // Arrange + cfg := checkerConfig{} + interceptor := func(InterceptorFunc) InterceptorFunc { + return func(ctx context.Context, name string, state CheckState) CheckState { + return CheckState{} + } + } + + // Act + WithInterceptors(interceptor)(&cfg) + + // Assert + assert.Equal(t, 1, len(cfg.interceptors)) +} + +func TestWithResultWriterConfig(t *testing.T) { + // Arrange + cfg := HandlerConfig{} + w := resultWriterMock{} + + // Act + WithResultWriter(&w)(&cfg) + + // Assert + assert.Equal(t, &w, cfg.resultWriter) +} + +func TestWithStatusChangeListenerConfig(t *testing.T) { + // Arrange + cfg := checkerConfig{} + + // Act + // Use of non standard AvailabilityStatus codes. + WithStatusListener(func(ctx context.Context, state CheckerState) {})(&cfg) + + // Assert + assert.NotNil(t, cfg.statusChangeListener) + // Not possible in Go to compare functions. +} + +func TestNewWithDefaults(t *testing.T) { + // Arrange + configApplied := false + opt := func(config *checkerConfig) { configApplied = true } + + // Act + checker := NewChecker(opt) + + // Assert + ckr := checker.(*defaultChecker) + assert.Equal(t, 1*time.Second, ckr.cfg.cacheTTL) + assert.Equal(t, 10*time.Second, ckr.cfg.timeout) + assert.True(t, configApplied) +} + +func TestNewCheckerWithDefaults(t *testing.T) { + // Arrange + configApplied := false + opt := func(config *checkerConfig) { configApplied = true } + + // Act + checker := NewChecker(opt) + + // Assert + ckr := checker.(*defaultChecker) + assert.Equal(t, 1*time.Second, ckr.cfg.cacheTTL) + assert.Equal(t, 10*time.Second, ckr.cfg.timeout) + assert.True(t, configApplied) +} + +func TestCheckerAutostartConfig(t *testing.T) { + // Arrange + Act + c := NewChecker() + + // Assert + assert.True(t, c.IsStarted()) +} + +func TestCheckerAutostartDisabledConfig(t *testing.T) { + // Arrange + c := NewChecker(WithDisabledAutostart()) + + // Assert + assert.False(t, c.IsStarted()) +} diff --git a/internal/health/doc.go b/internal/health/doc.go new file mode 100644 index 0000000..7f3eea1 --- /dev/null +++ b/internal/health/doc.go @@ -0,0 +1,3 @@ +// credit: parts of the health check implementation were copied from https://github.com/alexliesenfeld/health + +package health diff --git a/internal/health/factory.go b/internal/health/factory.go new file mode 100644 index 0000000..e4ca136 --- /dev/null +++ b/internal/health/factory.go @@ -0,0 +1,49 @@ +package health + +import ( + "github.com/bitmagnet-io/bitmagnet/internal/boilerplate/httpserver" + "github.com/bitmagnet-io/bitmagnet/internal/boilerplate/lazy" + "github.com/gin-gonic/gin" + "go.uber.org/fx" +) + +type Params struct { + fx.In + Options []CheckerOption `group:"health_check_options"` +} + +type Result struct { + fx.Out + Checker lazy.Lazy[Checker] + HttpServerOption httpserver.Option `group:"http_server_options"` +} + +func New(params Params) Result { + lChecker := lazy.New[Checker](func() (Checker, error) { + return NewChecker(params.Options...), nil + }) + return Result{ + Checker: lChecker, + HttpServerOption: handlerBuilder{lChecker}, + } +} + +type handlerBuilder struct { + Checker lazy.Lazy[Checker] +} + +func (b handlerBuilder) Key() string { + return "health" +} + +func (b handlerBuilder) Apply(e *gin.Engine) error { + checker, err := b.Checker.Get() + if err != nil { + return err + } + handler := NewHandler(checker) + e.GET("/status", func(c *gin.Context) { + handler(c.Writer, c.Request) + }) + return nil +} diff --git a/internal/health/handler.go b/internal/health/handler.go new file mode 100644 index 0000000..b19f035 --- /dev/null +++ b/internal/health/handler.go @@ -0,0 +1,120 @@ +package health + +import ( + "encoding/json" + "fmt" + "net/http" +) + +type ( + HandlerConfig struct { + statusCodeUp int + statusCodeDown int + middleware []Middleware + resultWriter ResultWriter + } + + // Middleware is factory function that allows creating new instances of + // a MiddlewareFunc. A MiddlewareFunc is expected to forward the function + // call to the next MiddlewareFunc (passed in parameter 'next'). + // This way, a chain of interceptors is constructed that will eventually + // invoke of the Checker.Check function. Each interceptor must therefore + // invoke the 'next' interceptor. If the 'next' MiddlewareFunc is not called, + // Checker.Check will never be executed. + Middleware func(next MiddlewareFunc) MiddlewareFunc + + // MiddlewareFunc is a middleware for a health Handler (see NewHandler). + // It is invoked each time an HTTP request is processed. + MiddlewareFunc func(r *http.Request) CheckerResult + + // ResultWriter enabled a Handler (see NewHandler) to write the CheckerResult + // to an http.ResponseWriter in a specific format. For example, the + // JSONResultWriter writes the result in JSON format into the response body). + ResultWriter interface { + // Write writes a CheckerResult into a http.ResponseWriter in a format + // that the ResultWriter supports (such as XML, JSON, etc.). + // A ResultWriter is expected to write at least the following information into the http.ResponseWriter: + // (1) A MIME type header (e.g., "Content-Type" : "application/json"), + // (2) the HTTP status code that is passed in parameter statusCode (this is necessary due to ordering constraints + // when writing into a http.ResponseWriter (see https://github.com/alexliesenfeld/health/issues/9), and + // (3) the response body in the format that the ResultWriter supports. + Write(result *CheckerResult, statusCode int, w http.ResponseWriter, r *http.Request) error + } + + // JSONResultWriter writes a CheckerResult in JSON format into an + // http.ResponseWriter. This ResultWriter is set by default. + JSONResultWriter struct{} +) + +// Write implements ResultWriter.Write. +func (rw *JSONResultWriter) Write(result *CheckerResult, statusCode int, w http.ResponseWriter, r *http.Request) error { + jsonResp, err := json.Marshal(result) + if err != nil { + return fmt.Errorf("cannot marshal response: %w", err) + } + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(statusCode) + _, err = w.Write(jsonResp) + return err +} + +// NewJSONResultWriter creates a new instance of a JSONResultWriter. +func NewJSONResultWriter() *JSONResultWriter { + return &JSONResultWriter{} +} + +// NewHandler creates a new health check http.Handler. +func NewHandler(checker Checker, options ...HandlerOption) http.HandlerFunc { + cfg := createConfig(options) + return func(w http.ResponseWriter, r *http.Request) { + // Do the check (with configured middleware) + result := withMiddleware(cfg.middleware, func(r *http.Request) CheckerResult { + return checker.Check(r.Context()) + })(r) + + // Write HTTP response + disableResponseCache(w) + statusCode := mapHTTPStatusCode(result.Status, cfg.statusCodeUp, cfg.statusCodeDown) + _ = cfg.resultWriter.Write(&result, statusCode, w, r) + } +} + +func disableResponseCache(w http.ResponseWriter) { + // Avoid caching: https://www.ibm.com/garage/method/practices/manage/health-check-apis/ + w.Header().Set("Cache-Control", "no-cache") + w.Header().Set("Pragma", "no-cache") + w.Header().Set("Expires", "Thu, 01 Jan 1970 00:00:00 GMT") +} + +func mapHTTPStatusCode(status AvailabilityStatus, statusCodeUp int, statusCodeDown int) int { + if status == StatusDown || status == StatusUnknown { + return statusCodeDown + } + return statusCodeUp +} + +func createConfig(options []HandlerOption) HandlerConfig { + cfg := HandlerConfig{ + statusCodeDown: 503, + statusCodeUp: 200, + middleware: []Middleware{}, + } + + for _, opt := range options { + opt(&cfg) + } + + if cfg.resultWriter == nil { + cfg.resultWriter = &JSONResultWriter{} + } + + return cfg +} + +func withMiddleware(interceptors []Middleware, target MiddlewareFunc) MiddlewareFunc { + chain := target + for idx := len(interceptors) - 1; idx >= 0; idx-- { + chain = interceptors[idx](chain) + } + return chain +} diff --git a/internal/health/handler_test.go b/internal/health/handler_test.go new file mode 100644 index 0000000..a04281c --- /dev/null +++ b/internal/health/handler_test.go @@ -0,0 +1,126 @@ +package health + +import ( + "context" + "encoding/json" + "fmt" + "net/http" + "net/http/httptest" + "testing" + "time" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/mock" +) + +type checkerMock struct { + mock.Mock +} + +func (ck *checkerMock) Start() { + ck.Called() +} + +func (ck *checkerMock) Stop() { + ck.Called() +} + +func (ck *checkerMock) Check(ctx context.Context) CheckerResult { + return ck.Called(ctx).Get(0).(CheckerResult) +} + +func (ck *checkerMock) GetRunningPeriodicCheckCount() int { + return ck.Called().Get(0).(int) +} + +func (ck *checkerMock) IsStarted() bool { + return ck.Called().Get(0).(bool) +} + +func (ck *checkerMock) StartedAt() time.Time { + return ck.Called().Get(0).(time.Time) +} + +type resultWriterMock struct { + mock.Mock +} + +func (ck *resultWriterMock) Write(result *CheckerResult, statusCode int, w http.ResponseWriter, r *http.Request) error { + return ck.Called(result, statusCode, w, r).Get(0).(error) +} + +//var testTimestamp = time.Now() + +func doTestHandler(t *testing.T, statusCodeUp, statusCodeDown int, expectedStatus CheckerResult, expectedStatusCode int) { + // Arrange + response := httptest.NewRecorder() + request := httptest.NewRequest("GET", "https://localhost/foo", nil) + + ckr := checkerMock{} + ckr.On("IsStarted").Return(false) + ckr.On("Start") + ckr.On("Check", mock.Anything).Return(expectedStatus) + + handler := NewHandler(&ckr, WithStatusCodeUp(statusCodeUp), WithStatusCodeDown(statusCodeDown)) + + // Act + handler.ServeHTTP(response, request) + + // Assert + ckr.Mock.AssertNumberOfCalls(t, "Check", 1) + assert.Equal(t, response.Header().Get("content-type"), "application/json; charset=utf-8") + assert.Equal(t, response.Result().StatusCode, expectedStatusCode) + + bytes := response.Body.Bytes() + expectedBytes, err := json.Marshal(expectedStatus) + assert.NoError(t, err) + assert.Equal(t, string(expectedBytes), string(bytes)) +} + +func TestHandlerIfCheckFailThenRespondWithNotAvailable(t *testing.T) { + status := CheckerResult{ + Status: StatusUnknown, + Details: map[string]CheckResult{ + "check1": {Status: StatusDown, Timestamp: time.Now(), Error: fmt.Errorf("hello")}, + "check2": {Status: StatusUp, Timestamp: time.Now(), Error: nil}, + }, + } + + doTestHandler(t, http.StatusNoContent, http.StatusTeapot, status, http.StatusTeapot) +} + +func TestHandlerIfCheckSucceedsThenRespondWithAvailable(t *testing.T) { + status := CheckerResult{ + Status: StatusUp, + Details: map[string]CheckResult{ + "check1": {Status: StatusUp, Timestamp: time.Now(), Error: nil}, + }, + } + + doTestHandler(t, http.StatusNoContent, http.StatusTeapot, status, http.StatusNoContent) +} + +func TestHandlerIfAuthFailsThenReturnNoDetails(t *testing.T) { + status := CheckerResult{ + Status: StatusDown, + Details: map[string]CheckResult{ + "check1": {Status: StatusDown, Timestamp: time.Now(), Error: fmt.Errorf("an error message")}, + }, + } + doTestHandler(t, http.StatusNoContent, http.StatusTeapot, status, http.StatusTeapot) +} + +func TestWhenChecksEmptyThenHandlerResultContainNoChecksMap(t *testing.T) { + // Arrange + r := httptest.NewRequest(http.MethodGet, "/health", nil) + w := httptest.NewRecorder() + + // Act + NewHandler(NewChecker()).ServeHTTP(w, r) + + // Assert + if w.Body.String() != "{\"status\":\"up\"}" { + t.Errorf("response does not contain the expected result") + } + +} diff --git a/internal/health/healthfx/module.go b/internal/health/healthfx/module.go new file mode 100644 index 0000000..7e8b9f2 --- /dev/null +++ b/internal/health/healthfx/module.go @@ -0,0 +1,15 @@ +package healthfx + +import ( + "github.com/bitmagnet-io/bitmagnet/internal/health" + "go.uber.org/fx" +) + +func New() fx.Option { + return fx.Module( + "health", + fx.Provide( + health.New, + ), + ) +} diff --git a/internal/metrics/bucket.go b/internal/metrics/bucket.go new file mode 100644 index 0000000..e87dff5 --- /dev/null +++ b/internal/metrics/bucket.go @@ -0,0 +1,5 @@ +package metrics + +// BucketDuration represents the duration of bucketing for queue metrics +// ENUM(minute, hour, day) +type BucketDuration string diff --git a/internal/metrics/metricsfx/module.go b/internal/metrics/metricsfx/module.go new file mode 100644 index 0000000..59aa403 --- /dev/null +++ b/internal/metrics/metricsfx/module.go @@ -0,0 +1,17 @@ +package metricsfx + +import ( + "github.com/bitmagnet-io/bitmagnet/internal/metrics/queuemetrics" + "github.com/bitmagnet-io/bitmagnet/internal/metrics/torrentmetrics" + "go.uber.org/fx" +) + +func New() fx.Option { + return fx.Module( + "queue", + fx.Provide( + queuemetrics.New, + torrentmetrics.New, + ), + ) +} diff --git a/internal/metrics/queuemetrics/client.go b/internal/metrics/queuemetrics/client.go new file mode 100644 index 0000000..1e30dfc --- /dev/null +++ b/internal/metrics/queuemetrics/client.go @@ -0,0 +1,112 @@ +package queuemetrics + +import ( + "context" + "github.com/bitmagnet-io/bitmagnet/internal/metrics" + "github.com/bitmagnet-io/bitmagnet/internal/model" + "gorm.io/gorm" + "strings" + "time" +) + +type Bucket struct { + Queue string + Status model.QueueJobStatus + CreatedAtBucket time.Time + RanAtBucket time.Time + Count uint + Latency *time.Duration +} + +type Request struct { + BucketDuration metrics.BucketDuration + Statuses []model.QueueJobStatus + Queues []string + StartTime time.Time + EndTime time.Time +} + +type Client interface { + Request(context.Context, Request) ([]Bucket, error) +} + +type client struct { + db *gorm.DB +} + +func (c client) Request(ctx context.Context, req Request) ([]Bucket, error) { + params := []any{ + req.BucketDuration, + req.BucketDuration, + } + var conditions []string + if !req.StartTime.IsZero() { + conditions = append(conditions, "status != 'pending' OR created_at >= ?") + conditions = append(conditions, "status = 'pending' OR ran_at >= ?") + params = append(params, req.StartTime, req.StartTime) + } + if !req.EndTime.IsZero() { + conditions = append(conditions, "status != 'pending' OR created_at <= ?") + conditions = append(conditions, "status = 'pending' OR ran_at <= ?") + params = append(params, req.EndTime, req.EndTime) + } + if req.Queues != nil { + conditions = append(conditions, "queue IN ?") + params = append(params, req.Queues) + } + if req.Statuses != nil { + conditions = append(conditions, "status IN ?") + params = append(params, req.Statuses) + } + conditionClause := "" + if len(conditions) > 0 { + conditionClause = "WHERE (" + strings.Join(conditions, " AND ") + ")" + } + var rawResult []rawBucket + if err := c.db.WithContext(ctx).Raw(`select queue, + status, + date_trunc(?, created_at) as created_at_bucket, + date_trunc(?, ran_at) as ran_at_bucket, + count(*) as count, + (date_part('epoch', sum(ran_at-run_after)) * INTERVAL '1 second') as latency + from queue_jobs + `+ + conditionClause+ + ` + group by queue, status, created_at_bucket, ran_at_bucket + order by queue, status, created_at_bucket, ran_at_bucket`, + params..., + ).Scan(&rawResult).Error; err != nil { + return nil, err + } + result := make([]Bucket, len(rawResult)) + for i, raw := range rawResult { + result[i] = raw.bucket() + } + return result, nil +} + +type rawBucket struct { + Queue string + Status model.QueueJobStatus + CreatedAtBucket time.Time + RanAtBucket time.Time + Count uint + Latency model.Duration +} + +func (b rawBucket) bucket() Bucket { + var latency *time.Duration + if b.Latency > 0 { + l := time.Duration(b.Latency) + latency = &l + } + return Bucket{ + Queue: b.Queue, + Status: b.Status, + CreatedAtBucket: b.CreatedAtBucket, + RanAtBucket: b.RanAtBucket, + Count: b.Count, + Latency: latency, + } +} diff --git a/internal/metrics/queuemetrics/factory.go b/internal/metrics/queuemetrics/factory.go new file mode 100644 index 0000000..bd53a6c --- /dev/null +++ b/internal/metrics/queuemetrics/factory.go @@ -0,0 +1,29 @@ +package queuemetrics + +import ( + "github.com/bitmagnet-io/bitmagnet/internal/boilerplate/lazy" + "go.uber.org/fx" + "gorm.io/gorm" +) + +type Params struct { + fx.In + Db lazy.Lazy[*gorm.DB] +} + +type Result struct { + fx.Out + Client lazy.Lazy[Client] +} + +func New(p Params) Result { + return Result{ + Client: lazy.New[Client](func() (Client, error) { + db, err := p.Db.Get() + if err != nil { + return nil, err + } + return client{db}, nil + }), + } +} diff --git a/internal/metrics/torrentmetrics/client.go b/internal/metrics/torrentmetrics/client.go new file mode 100644 index 0000000..d51c6fe --- /dev/null +++ b/internal/metrics/torrentmetrics/client.go @@ -0,0 +1,80 @@ +package torrentmetrics + +import ( + "context" + "github.com/bitmagnet-io/bitmagnet/internal/metrics" + "github.com/bitmagnet-io/bitmagnet/internal/model" + "gorm.io/gorm" + "strings" + "time" +) + +type Bucket struct { + Source string + Bucket time.Time + Updated bool + Count uint +} + +type Request struct { + BucketDuration metrics.BucketDuration + Sources []string + StartTime time.Time + EndTime time.Time + Updated model.NullBool +} + +type Client interface { + Request(context.Context, Request) ([]Bucket, error) +} + +type client struct { + db *gorm.DB +} + +func (c client) Request(ctx context.Context, req Request) ([]Bucket, error) { + params := []any{ + req.BucketDuration, + } + var conditions []string + if !req.StartTime.IsZero() { + conditions = append(conditions, "updated_at >= ?") + params = append(params, req.StartTime) + } + if !req.EndTime.IsZero() { + conditions = append(conditions, "updated_at <= ?") + params = append(params, req.EndTime) + } + if req.Sources != nil { + conditions = append(conditions, "source IN ?") + params = append(params, req.Sources) + } + if req.Updated.Valid { + sign := ">" + if !req.Updated.Bool { + sign = "<=" + } + conditions = append(conditions, "updated_at "+sign+" (created_at + interval '1 hour')") + } + conditionClause := "" + if len(conditions) > 0 { + conditionClause = "WHERE (" + strings.Join(conditions, " AND ") + ")" + } + var result []Bucket + if err := c.db.WithContext(ctx).Raw(`select + source, + date_trunc(?, updated_at) as bucket, + updated_at > (created_at + interval '1 hour') as updated, + count(*) as count + from torrents_torrent_sources + `+ + conditionClause+ + ` + group by source, bucket, updated + order by source, bucket, updated`, + params..., + ).Scan(&result).Error; err != nil { + return nil, err + } + return result, nil +} diff --git a/internal/metrics/torrentmetrics/factory.go b/internal/metrics/torrentmetrics/factory.go new file mode 100644 index 0000000..cb6a48a --- /dev/null +++ b/internal/metrics/torrentmetrics/factory.go @@ -0,0 +1,29 @@ +package torrentmetrics + +import ( + "github.com/bitmagnet-io/bitmagnet/internal/boilerplate/lazy" + "go.uber.org/fx" + "gorm.io/gorm" +) + +type Params struct { + fx.In + Db lazy.Lazy[*gorm.DB] +} + +type Result struct { + fx.Out + Client lazy.Lazy[Client] +} + +func New(p Params) Result { + return Result{ + Client: lazy.New[Client](func() (Client, error) { + db, err := p.Db.Get() + if err != nil { + return nil, err + } + return client{db}, nil + }), + } +} diff --git a/internal/model/languages.csv b/internal/model/languages.csv index 29eb483..754f8c6 100644 --- a/internal/model/languages.csv +++ b/internal/model/languages.csv @@ -1,40 +1,56 @@ alpha2,alpha3,name,aliases +af,afr,Afrikaans, ar,ara,Arabic, -bs,bos,Bosnian, +az,aze,Azerbaijani, +be,bel,Belarusian, bg,bul,Bulgarian,bbgaudio +bs,bos,Bosnian, ca,cat,Catalan,Valencian|catalán -zh,chi,Chinese,cn|Mandarin|Cantonese|简|繁|字幕 +ce,che,Chechen, +co,cos,Corsican, cs,cze,Czech,cz +cy,wel,Welsh, da,dan,Danish, -nl,dut,Dutch,Flemish -en,eng,English,ing -et,est,Estonian, -fi,fin,Finnish, -fr,fre,French,FR|VF|VF2|VFF|VFQ|TRUEFRENCH de,ger,German, el,gre,Greek, +en,eng,English,ing +es,spa,Spanish,Castilian|castellano|Español|esp|Latino|lat +et,est,Estonian, +eu,baq,Basque, +fa,per,Persian, +fi,fin,Finnish, +fr,fre,French,FR|VF|VF2|VFF|VFQ|TRUEFRENCH he,heb,Hebrew,HEBDUB hi,hin,Hindi, hr,hrv,Croatian, hu,hun,Hungarian,HUNDUB -is,ice,Icelandic, +hy,arm,Armenian, id,ind,Indonesian, +is,ice,Icelandic, it,ita,Italian, ja,jpn,Japanese, +ka,geo,Georgian, ko,kor,Korean, -lv,lav,Latvian, +ku,kur,Kurdish, lt,lit,Lithuanian, +lv,lav,Latvian, +mi,mao,Maori, mk,mac,Macedonian, ml,mal,Malayalam, +mn,mon,Mongolian, +ms,may,Malay, +mt,mlt,Maltese, +nl,dut,Dutch,Flemish no,nor,Norwegian, -fa,per,Persian, pl,pol,Polish, pt,por,Portuguese, ro,rum,Romanian,Moldavian|Moldovan|rodubbed ru,rus,Russian, +sa,san,Sanskrit, sk,slo,Slovak, sl,slv,Slovenian, -es,spa,Spanish,Castilian|castellano|Español|esp|Latino|lat +sm,smo,Samoan, +so,som,Somali, sr,srp,Serbian, sv,swe,Swedish, ta,tam,Tamil, @@ -42,22 +58,6 @@ th,tha,Thai, tr,tur,Turkish, uk,ukr,Ukrainian, vi,vie,Vietnamese, -af,afr,Afrikaans, -hy,arm,Armenian, -az,aze,Azerbaijani, -eu,baq,Basque, -be,bel,Belarusian, -ce,che,Chechen, -co,cos,Corsican, -ka,geo,Georgian, -ku,kur,Kurdish, -mi,mao,Maori, -ms,may,Malay, -mt,mlt,Maltese, -mn,mon,Mongolian, -sa,san,Sanskrit, -sm,smo,Samoan, -so,som,Somali, -cy,wel,Welsh, yi,yid,Yiddish, +zh,chi,Chinese,cn|Mandarin|Cantonese|简|繁|字幕 zu,zul,Zulu, diff --git a/internal/model/queue_jobs.go b/internal/model/queue_jobs.go index 93ae712..18524a4 100644 --- a/internal/model/queue_jobs.go +++ b/internal/model/queue_jobs.go @@ -25,7 +25,7 @@ func NewQueueJob(queue string, payload any, opts ...QueueJobOption) (QueueJob, e Status: QueueJobStatusPending, Payload: payloadStr, RunAfter: time.Now(), - ArchivalDuration: Duration(24 * time.Hour), + ArchivalDuration: Duration(7 * 24 * time.Hour), } for _, opt := range opts { opt(&j) diff --git a/internal/processor/batch/message.go b/internal/processor/batch/message.go index cef5be0..99048f0 100644 --- a/internal/processor/batch/message.go +++ b/internal/processor/batch/message.go @@ -35,6 +35,12 @@ func (p MessageParams) ApisDisabled() bool { } func NewQueueJob(msg MessageParams, options ...model.QueueJobOption) (model.QueueJob, error) { + if msg.BatchSize == 0 { + msg.BatchSize = 100 + } + if msg.ChunkSize == 0 { + msg.ChunkSize = 10_000 + } return model.NewQueueJob( MessageName, msg, diff --git a/internal/processor/hook_0_9_0/hook.go b/internal/processor/hook_0_9_0/hook.go deleted file mode 100644 index b8bd07a..0000000 --- a/internal/processor/hook_0_9_0/hook.go +++ /dev/null @@ -1,78 +0,0 @@ -package hook_0_9_0 - -import ( - "context" - "github.com/bitmagnet-io/bitmagnet/internal/boilerplate/lazy" - "github.com/bitmagnet-io/bitmagnet/internal/classifier" - "github.com/bitmagnet-io/bitmagnet/internal/database/dao" - "github.com/bitmagnet-io/bitmagnet/internal/model" - "github.com/bitmagnet-io/bitmagnet/internal/processor/batch" - "go.uber.org/fx" - "gorm.io/gorm/clause" - "time" -) - -type Params struct { - fx.In - Dao lazy.Lazy[*dao.Query] -} - -type Result struct { - fx.Out - Dao lazy.Lazy[*dao.Query] -} - -func NewDecorator(p Params) Result { - return Result{ - Dao: lazy.New(func() (*dao.Query, error) { - d, dErr := p.Dao.Get() - if dErr != nil { - return nil, dErr - } - if execErr := execHook(d); execErr != nil { - return nil, execErr - } - return d, nil - }), - } -} - -const keyName = "0.9.0_reprocess_enqueued" - -func execHook(d *dao.Query) error { - ctx := context.Background() - return d.Transaction(func(tx *dao.Query) error { - if result, err := tx.KeyValue. - WithContext(ctx). - Where(d.KeyValue.Key.Eq(keyName)). - Limit(1). - Find(); err != nil { - return err - } else if len(result) > 0 { - return nil - } - if err := tx.KeyValue. - WithContext(ctx). - Create(&model.KeyValue{ - Key: keyName, - Value: "1", - }); err != nil { - return err - } - job, jobErr := batch.NewQueueJob(batch.MessageParams{ - UpdatedBefore: time.Now(), - ClassifierFlags: classifier.Flags{ - "apis_enabled": false, - "local_search_enabled": false, - }, - ChunkSize: 10_000, - BatchSize: 100, - }) - if jobErr != nil { - return jobErr - } - return tx.QueueJob.WithContext(ctx).Clauses(clause.OnConflict{ - DoNothing: true, - }).Create(&job) - }) -} diff --git a/internal/processor/processorfx/module.go b/internal/processor/processorfx/module.go index c4ff077..127a3b0 100644 --- a/internal/processor/processorfx/module.go +++ b/internal/processor/processorfx/module.go @@ -4,7 +4,6 @@ import ( "github.com/bitmagnet-io/bitmagnet/internal/boilerplate/config/configfx" "github.com/bitmagnet-io/bitmagnet/internal/processor" batchqueue "github.com/bitmagnet-io/bitmagnet/internal/processor/batch/queue" - "github.com/bitmagnet-io/bitmagnet/internal/processor/hook_0_9_0" processorqueue "github.com/bitmagnet-io/bitmagnet/internal/processor/queue" "go.uber.org/fx" ) @@ -18,8 +17,5 @@ func New() fx.Option { processorqueue.New, batchqueue.New, ), - fx.Decorate( - hook_0_9_0.NewDecorator, - ), ) } diff --git a/internal/protobuf/bitmagnet.pb.go b/internal/protobuf/bitmagnet.pb.go index 4698672..364d545 100644 --- a/internal/protobuf/bitmagnet.pb.go +++ b/internal/protobuf/bitmagnet.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.33.0 +// protoc-gen-go v1.34.1 // protoc v4.24.4 // source: internal/protobuf/bitmagnet.proto diff --git a/internal/protocol/dht/ktable/mocks/Table.go b/internal/protocol/dht/ktable/mocks/Table.go index 710c7fd..b2c7c8b 100644 --- a/internal/protocol/dht/ktable/mocks/Table.go +++ b/internal/protocol/dht/ktable/mocks/Table.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.43.0. DO NOT EDIT. +// Code generated by mockery v2.46.2. DO NOT EDIT. package ktable_mocks @@ -10,8 +10,6 @@ import ( netip "net/netip" - protocol "github.com/bitmagnet-io/bitmagnet/internal/protocol" - time "time" ) @@ -75,7 +73,7 @@ func (_c *Table_BatchCommand_Call) RunAndReturn(run func(...ktable.Command)) *Ta } // DropNode provides a mock function with given fields: id, reason -func (_m *Table) DropNode(id protocol.ID, reason error) bool { +func (_m *Table) DropNode(id ktable.ID, reason error) bool { ret := _m.Called(id, reason) if len(ret) == 0 { @@ -83,7 +81,7 @@ func (_m *Table) DropNode(id protocol.ID, reason error) bool { } var r0 bool - if rf, ok := ret.Get(0).(func(protocol.ID, error) bool); ok { + if rf, ok := ret.Get(0).(func(ktable.ID, error) bool); ok { r0 = rf(id, reason) } else { r0 = ret.Get(0).(bool) @@ -98,15 +96,15 @@ type Table_DropNode_Call struct { } // DropNode is a helper method to define mock.On call -// - id protocol.ID +// - id ktable.ID // - reason error func (_e *Table_Expecter) DropNode(id interface{}, reason interface{}) *Table_DropNode_Call { return &Table_DropNode_Call{Call: _e.mock.On("DropNode", id, reason)} } -func (_c *Table_DropNode_Call) Run(run func(id protocol.ID, reason error)) *Table_DropNode_Call { +func (_c *Table_DropNode_Call) Run(run func(id ktable.ID, reason error)) *Table_DropNode_Call { _c.Call.Run(func(args mock.Arguments) { - run(args[0].(protocol.ID), args[1].(error)) + run(args[0].(ktable.ID), args[1].(error)) }) return _c } @@ -116,7 +114,7 @@ func (_c *Table_DropNode_Call) Return(_a0 bool) *Table_DropNode_Call { return _c } -func (_c *Table_DropNode_Call) RunAndReturn(run func(protocol.ID, error) bool) *Table_DropNode_Call { +func (_c *Table_DropNode_Call) RunAndReturn(run func(ktable.ID, error) bool) *Table_DropNode_Call { _c.Call.Return(run) return _c } @@ -170,7 +168,7 @@ func (_c *Table_FilterKnownAddrs_Call) RunAndReturn(run func([]netip.Addr) []net } // GetClosestNodes provides a mock function with given fields: id -func (_m *Table) GetClosestNodes(id protocol.ID) []ktable.Node { +func (_m *Table) GetClosestNodes(id ktable.ID) []ktable.Node { ret := _m.Called(id) if len(ret) == 0 { @@ -178,7 +176,7 @@ func (_m *Table) GetClosestNodes(id protocol.ID) []ktable.Node { } var r0 []ktable.Node - if rf, ok := ret.Get(0).(func(protocol.ID) []ktable.Node); ok { + if rf, ok := ret.Get(0).(func(ktable.ID) []ktable.Node); ok { r0 = rf(id) } else { if ret.Get(0) != nil { @@ -195,14 +193,14 @@ type Table_GetClosestNodes_Call struct { } // GetClosestNodes is a helper method to define mock.On call -// - id protocol.ID +// - id ktable.ID func (_e *Table_Expecter) GetClosestNodes(id interface{}) *Table_GetClosestNodes_Call { return &Table_GetClosestNodes_Call{Call: _e.mock.On("GetClosestNodes", id)} } -func (_c *Table_GetClosestNodes_Call) Run(run func(id protocol.ID)) *Table_GetClosestNodes_Call { +func (_c *Table_GetClosestNodes_Call) Run(run func(id ktable.ID)) *Table_GetClosestNodes_Call { _c.Call.Run(func(args mock.Arguments) { - run(args[0].(protocol.ID)) + run(args[0].(ktable.ID)) }) return _c } @@ -212,13 +210,13 @@ func (_c *Table_GetClosestNodes_Call) Return(_a0 []ktable.Node) *Table_GetCloses return _c } -func (_c *Table_GetClosestNodes_Call) RunAndReturn(run func(protocol.ID) []ktable.Node) *Table_GetClosestNodes_Call { +func (_c *Table_GetClosestNodes_Call) RunAndReturn(run func(ktable.ID) []ktable.Node) *Table_GetClosestNodes_Call { _c.Call.Return(run) return _c } // GetHashOrClosestNodes provides a mock function with given fields: id -func (_m *Table) GetHashOrClosestNodes(id protocol.ID) ktable.GetHashOrClosestNodesResult { +func (_m *Table) GetHashOrClosestNodes(id ktable.ID) ktable.GetHashOrClosestNodesResult { ret := _m.Called(id) if len(ret) == 0 { @@ -226,7 +224,7 @@ func (_m *Table) GetHashOrClosestNodes(id protocol.ID) ktable.GetHashOrClosestNo } var r0 ktable.GetHashOrClosestNodesResult - if rf, ok := ret.Get(0).(func(protocol.ID) ktable.GetHashOrClosestNodesResult); ok { + if rf, ok := ret.Get(0).(func(ktable.ID) ktable.GetHashOrClosestNodesResult); ok { r0 = rf(id) } else { r0 = ret.Get(0).(ktable.GetHashOrClosestNodesResult) @@ -241,14 +239,14 @@ type Table_GetHashOrClosestNodes_Call struct { } // GetHashOrClosestNodes is a helper method to define mock.On call -// - id protocol.ID +// - id ktable.ID func (_e *Table_Expecter) GetHashOrClosestNodes(id interface{}) *Table_GetHashOrClosestNodes_Call { return &Table_GetHashOrClosestNodes_Call{Call: _e.mock.On("GetHashOrClosestNodes", id)} } -func (_c *Table_GetHashOrClosestNodes_Call) Run(run func(id protocol.ID)) *Table_GetHashOrClosestNodes_Call { +func (_c *Table_GetHashOrClosestNodes_Call) Run(run func(id ktable.ID)) *Table_GetHashOrClosestNodes_Call { _c.Call.Run(func(args mock.Arguments) { - run(args[0].(protocol.ID)) + run(args[0].(ktable.ID)) }) return _c } @@ -258,7 +256,7 @@ func (_c *Table_GetHashOrClosestNodes_Call) Return(_a0 ktable.GetHashOrClosestNo return _c } -func (_c *Table_GetHashOrClosestNodes_Call) RunAndReturn(run func(protocol.ID) ktable.GetHashOrClosestNodesResult) *Table_GetHashOrClosestNodes_Call { +func (_c *Table_GetHashOrClosestNodes_Call) RunAndReturn(run func(ktable.ID) ktable.GetHashOrClosestNodesResult) *Table_GetHashOrClosestNodes_Call { _c.Call.Return(run) return _c } @@ -361,19 +359,19 @@ func (_c *Table_GetOldestNodes_Call) RunAndReturn(run func(time.Time, int) []kta } // Origin provides a mock function with given fields: -func (_m *Table) Origin() protocol.ID { +func (_m *Table) Origin() ktable.ID { ret := _m.Called() if len(ret) == 0 { panic("no return value specified for Origin") } - var r0 protocol.ID - if rf, ok := ret.Get(0).(func() protocol.ID); ok { + var r0 ktable.ID + if rf, ok := ret.Get(0).(func() ktable.ID); ok { r0 = rf() } else { if ret.Get(0) != nil { - r0 = ret.Get(0).(protocol.ID) + r0 = ret.Get(0).(ktable.ID) } } @@ -397,18 +395,18 @@ func (_c *Table_Origin_Call) Run(run func()) *Table_Origin_Call { return _c } -func (_c *Table_Origin_Call) Return(_a0 protocol.ID) *Table_Origin_Call { +func (_c *Table_Origin_Call) Return(_a0 ktable.ID) *Table_Origin_Call { _c.Call.Return(_a0) return _c } -func (_c *Table_Origin_Call) RunAndReturn(run func() protocol.ID) *Table_Origin_Call { +func (_c *Table_Origin_Call) RunAndReturn(run func() ktable.ID) *Table_Origin_Call { _c.Call.Return(run) return _c } // PutHash provides a mock function with given fields: id, peers, options -func (_m *Table) PutHash(id protocol.ID, peers []ktable.HashPeer, options ...ktable.HashOption) btree.PutResult { +func (_m *Table) PutHash(id ktable.ID, peers []ktable.HashPeer, options ...ktable.HashOption) btree.PutResult { _va := make([]interface{}, len(options)) for _i := range options { _va[_i] = options[_i] @@ -423,7 +421,7 @@ func (_m *Table) PutHash(id protocol.ID, peers []ktable.HashPeer, options ...kta } var r0 btree.PutResult - if rf, ok := ret.Get(0).(func(protocol.ID, []ktable.HashPeer, ...ktable.HashOption) btree.PutResult); ok { + if rf, ok := ret.Get(0).(func(ktable.ID, []ktable.HashPeer, ...ktable.HashOption) btree.PutResult); ok { r0 = rf(id, peers, options...) } else { r0 = ret.Get(0).(btree.PutResult) @@ -438,7 +436,7 @@ type Table_PutHash_Call struct { } // PutHash is a helper method to define mock.On call -// - id protocol.ID +// - id ktable.ID // - peers []ktable.HashPeer // - options ...ktable.HashOption func (_e *Table_Expecter) PutHash(id interface{}, peers interface{}, options ...interface{}) *Table_PutHash_Call { @@ -446,7 +444,7 @@ func (_e *Table_Expecter) PutHash(id interface{}, peers interface{}, options ... append([]interface{}{id, peers}, options...)...)} } -func (_c *Table_PutHash_Call) Run(run func(id protocol.ID, peers []ktable.HashPeer, options ...ktable.HashOption)) *Table_PutHash_Call { +func (_c *Table_PutHash_Call) Run(run func(id ktable.ID, peers []ktable.HashPeer, options ...ktable.HashOption)) *Table_PutHash_Call { _c.Call.Run(func(args mock.Arguments) { variadicArgs := make([]ktable.HashOption, len(args)-2) for i, a := range args[2:] { @@ -454,7 +452,7 @@ func (_c *Table_PutHash_Call) Run(run func(id protocol.ID, peers []ktable.HashPe variadicArgs[i] = a.(ktable.HashOption) } } - run(args[0].(protocol.ID), args[1].([]ktable.HashPeer), variadicArgs...) + run(args[0].(ktable.ID), args[1].([]ktable.HashPeer), variadicArgs...) }) return _c } @@ -464,13 +462,13 @@ func (_c *Table_PutHash_Call) Return(_a0 btree.PutResult) *Table_PutHash_Call { return _c } -func (_c *Table_PutHash_Call) RunAndReturn(run func(protocol.ID, []ktable.HashPeer, ...ktable.HashOption) btree.PutResult) *Table_PutHash_Call { +func (_c *Table_PutHash_Call) RunAndReturn(run func(ktable.ID, []ktable.HashPeer, ...ktable.HashOption) btree.PutResult) *Table_PutHash_Call { _c.Call.Return(run) return _c } // PutNode provides a mock function with given fields: id, addr, options -func (_m *Table) PutNode(id protocol.ID, addr netip.AddrPort, options ...ktable.NodeOption) btree.PutResult { +func (_m *Table) PutNode(id ktable.ID, addr netip.AddrPort, options ...ktable.NodeOption) btree.PutResult { _va := make([]interface{}, len(options)) for _i := range options { _va[_i] = options[_i] @@ -485,7 +483,7 @@ func (_m *Table) PutNode(id protocol.ID, addr netip.AddrPort, options ...ktable. } var r0 btree.PutResult - if rf, ok := ret.Get(0).(func(protocol.ID, netip.AddrPort, ...ktable.NodeOption) btree.PutResult); ok { + if rf, ok := ret.Get(0).(func(ktable.ID, netip.AddrPort, ...ktable.NodeOption) btree.PutResult); ok { r0 = rf(id, addr, options...) } else { r0 = ret.Get(0).(btree.PutResult) @@ -500,7 +498,7 @@ type Table_PutNode_Call struct { } // PutNode is a helper method to define mock.On call -// - id protocol.ID +// - id ktable.ID // - addr netip.AddrPort // - options ...ktable.NodeOption func (_e *Table_Expecter) PutNode(id interface{}, addr interface{}, options ...interface{}) *Table_PutNode_Call { @@ -508,7 +506,7 @@ func (_e *Table_Expecter) PutNode(id interface{}, addr interface{}, options ...i append([]interface{}{id, addr}, options...)...)} } -func (_c *Table_PutNode_Call) Run(run func(id protocol.ID, addr netip.AddrPort, options ...ktable.NodeOption)) *Table_PutNode_Call { +func (_c *Table_PutNode_Call) Run(run func(id ktable.ID, addr netip.AddrPort, options ...ktable.NodeOption)) *Table_PutNode_Call { _c.Call.Run(func(args mock.Arguments) { variadicArgs := make([]ktable.NodeOption, len(args)-2) for i, a := range args[2:] { @@ -516,7 +514,7 @@ func (_c *Table_PutNode_Call) Run(run func(id protocol.ID, addr netip.AddrPort, variadicArgs[i] = a.(ktable.NodeOption) } } - run(args[0].(protocol.ID), args[1].(netip.AddrPort), variadicArgs...) + run(args[0].(ktable.ID), args[1].(netip.AddrPort), variadicArgs...) }) return _c } @@ -526,7 +524,7 @@ func (_c *Table_PutNode_Call) Return(_a0 btree.PutResult) *Table_PutNode_Call { return _c } -func (_c *Table_PutNode_Call) RunAndReturn(run func(protocol.ID, netip.AddrPort, ...ktable.NodeOption) btree.PutResult) *Table_PutNode_Call { +func (_c *Table_PutNode_Call) RunAndReturn(run func(ktable.ID, netip.AddrPort, ...ktable.NodeOption) btree.PutResult) *Table_PutNode_Call { _c.Call.Return(run) return _c } diff --git a/internal/protocol/dht/responder/mocks/Limiter.go b/internal/protocol/dht/responder/mocks/Limiter.go index 3a5e3b1..36861a2 100644 --- a/internal/protocol/dht/responder/mocks/Limiter.go +++ b/internal/protocol/dht/responder/mocks/Limiter.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.43.0. DO NOT EDIT. +// Code generated by mockery v2.46.2. DO NOT EDIT. package responder_mocks diff --git a/internal/protocol/dht/server/factory.go b/internal/protocol/dht/server/factory.go index 957ac92..812080e 100644 --- a/internal/protocol/dht/server/factory.go +++ b/internal/protocol/dht/server/factory.go @@ -25,32 +25,37 @@ type Params struct { type Result struct { fx.Out Server lazy.Lazy[Server] - AppHook fx.Hook `group:"app_hooks"` - QueryDuration prometheus.Collector `group:"prometheus_collectors"` - QuerySuccessTotal prometheus.Collector `group:"prometheus_collectors"` - QueryErrorTotal prometheus.Collector `group:"prometheus_collectors"` - QueryConcurrency prometheus.Collector `group:"prometheus_collectors"` + LastResponses *concurrency.AtomicValue[LastResponses] `name:"dht_server_last_responses"` + AppHook fx.Hook `group:"app_hooks"` + QueryDuration prometheus.Collector `group:"prometheus_collectors"` + QuerySuccessTotal prometheus.Collector `group:"prometheus_collectors"` + QueryErrorTotal prometheus.Collector `group:"prometheus_collectors"` + QueryConcurrency prometheus.Collector `group:"prometheus_collectors"` } const namespace = "bitmagnet" const subsystem = "dht_server" func New(p Params) Result { + lastResponses := &concurrency.AtomicValue[LastResponses]{} collector := newPrometheusCollector() ls := lazy.New(func() (Server, error) { s := queryLimiter{ server: prometheusServerWrapper{ prometheusCollector: collector, - server: &server{ - stopped: make(chan struct{}), - localAddr: netip.AddrPortFrom(netip.IPv4Unspecified(), p.Config.Port), - socket: NewSocket(), - queries: make(map[string]chan dht.RecvMsg), - queryTimeout: p.Config.QueryTimeout, - responder: p.Responder, - responderTimeout: time.Second * 5, - idIssuer: &variantIdIssuer{}, - logger: p.Logger.Named(subsystem), + server: healthCollector{ + baseServer: &server{ + stopped: make(chan struct{}), + localAddr: netip.AddrPortFrom(netip.IPv4Unspecified(), p.Config.Port), + socket: NewSocket(), + queries: make(map[string]chan dht.RecvMsg), + queryTimeout: p.Config.QueryTimeout, + responder: p.Responder, + responderTimeout: time.Second * 5, + idIssuer: &variantIdIssuer{}, + logger: p.Logger.Named(subsystem), + }, + lastResponses: lastResponses, }, }, queryLimiter: concurrency.NewKeyedLimiter(rate.Every(time.Second), 4, 1000, time.Second*20), @@ -70,6 +75,7 @@ func New(p Params) Result { }) }, }, + LastResponses: lastResponses, QueryDuration: collector.queryDuration, QuerySuccessTotal: collector.querySuccessTotal, QueryErrorTotal: collector.queryErrorTotal, diff --git a/internal/protocol/dht/server/health_collector.go b/internal/protocol/dht/server/health_collector.go new file mode 100644 index 0000000..e545bd2 --- /dev/null +++ b/internal/protocol/dht/server/health_collector.go @@ -0,0 +1,48 @@ +package server + +import ( + "context" + "github.com/bitmagnet-io/bitmagnet/internal/concurrency" + "github.com/bitmagnet-io/bitmagnet/internal/protocol/dht" + "net/netip" + "time" +) + +type LastResponses struct { + StartTime time.Time + LastSuccess time.Time + LastResponse time.Time +} + +type healthCollector struct { + baseServer Server + lastResponses *concurrency.AtomicValue[LastResponses] +} + +func (c healthCollector) start() error { + err := c.baseServer.start() + if err == nil { + c.lastResponses.Update(func(lr LastResponses) LastResponses { + lr.StartTime = time.Now() + return lr + }) + } + return err +} + +func (c healthCollector) stop() { + c.lastResponses.Set(LastResponses{}) + c.baseServer.stop() +} + +func (c healthCollector) Query(ctx context.Context, addr netip.AddrPort, q string, args dht.MsgArgs) (dht.RecvMsg, error) { + res, err := c.baseServer.Query(ctx, addr, q, args) + c.lastResponses.Update(func(lr LastResponses) LastResponses { + lr.LastResponse = time.Now() + if err == nil { + lr.LastSuccess = lr.LastResponse + } + return lr + }) + return res, err +} diff --git a/internal/queue/manager/enqueue_reprocess_torrents_batch.go b/internal/queue/manager/enqueue_reprocess_torrents_batch.go new file mode 100644 index 0000000..808a3e7 --- /dev/null +++ b/internal/queue/manager/enqueue_reprocess_torrents_batch.go @@ -0,0 +1,34 @@ +package manager + +import ( + "context" + "github.com/bitmagnet-io/bitmagnet/internal/classifier" + "github.com/bitmagnet-io/bitmagnet/internal/processor/batch" + "time" +) + +func (m manager) EnqueueReprocessTorrentsBatch(ctx context.Context, req EnqueueReprocessTorrentsBatchRequest) error { + flags := req.ClassifierFlags + if flags == nil { + flags = make(classifier.Flags) + } + if req.ApisDisabled { + flags["apis_enabled"] = false + } + if req.LocalSearchDisabled { + flags["local_search_enabled"] = false + } + job, err := batch.NewQueueJob(batch.MessageParams{ + ClassifyMode: req.ClassifyMode, + ClassifierFlags: flags, + ChunkSize: req.ChunkSize, + BatchSize: req.BatchSize, + ContentTypes: req.ContentTypes, + Orphans: req.Orphans, + UpdatedBefore: time.Now(), + }) + if err != nil { + return err + } + return m.dao.QueueJob.WithContext(ctx).Create(&job) +} diff --git a/internal/queue/manager/factory.go b/internal/queue/manager/factory.go new file mode 100644 index 0000000..344122d --- /dev/null +++ b/internal/queue/manager/factory.go @@ -0,0 +1,29 @@ +package manager + +import ( + "github.com/bitmagnet-io/bitmagnet/internal/boilerplate/lazy" + "github.com/bitmagnet-io/bitmagnet/internal/database/dao" + "go.uber.org/fx" +) + +type Params struct { + fx.In + Dao lazy.Lazy[*dao.Query] +} + +type Result struct { + fx.Out + Manager lazy.Lazy[Manager] +} + +func New(params Params) Result { + return Result{ + Manager: lazy.New[Manager](func() (Manager, error) { + d, err := params.Dao.Get() + if err != nil { + return nil, err + } + return manager{d}, nil + }), + } +} diff --git a/internal/queue/manager/interface.go b/internal/queue/manager/interface.go new file mode 100644 index 0000000..79e75b6 --- /dev/null +++ b/internal/queue/manager/interface.go @@ -0,0 +1,30 @@ +package manager + +import ( + "context" + "github.com/bitmagnet-io/bitmagnet/internal/classifier" + "github.com/bitmagnet-io/bitmagnet/internal/model" + "github.com/bitmagnet-io/bitmagnet/internal/processor" +) + +type PurgeJobsRequest struct { + Queues []string + Statuses []model.QueueJobStatus +} + +type EnqueueReprocessTorrentsBatchRequest struct { + BatchSize uint + ChunkSize uint + ContentTypes []model.NullContentType + Orphans bool + ClassifyMode processor.ClassifyMode + ClassifierWorkflow string + ClassifierFlags classifier.Flags + ApisDisabled bool + LocalSearchDisabled bool +} + +type Manager interface { + PurgeJobs(context.Context, PurgeJobsRequest) error + EnqueueReprocessTorrentsBatch(context.Context, EnqueueReprocessTorrentsBatchRequest) error +} diff --git a/internal/queue/manager/manager.go b/internal/queue/manager/manager.go new file mode 100644 index 0000000..167ad6c --- /dev/null +++ b/internal/queue/manager/manager.go @@ -0,0 +1,7 @@ +package manager + +import "github.com/bitmagnet-io/bitmagnet/internal/database/dao" + +type manager struct { + dao *dao.Query +} diff --git a/internal/queue/manager/purge_jobs.go b/internal/queue/manager/purge_jobs.go new file mode 100644 index 0000000..ca8649d --- /dev/null +++ b/internal/queue/manager/purge_jobs.go @@ -0,0 +1,28 @@ +package manager + +import ( + "context" + "github.com/bitmagnet-io/bitmagnet/internal/model" +) + +func (m manager) PurgeJobs(ctx context.Context, req PurgeJobsRequest) error { + q := m.dao.QueueJob.WithContext(ctx) + where := false + if len(req.Queues) > 0 { + q = q.Where(m.dao.QueueJob.Queue.In(req.Queues...)) + where = true + } + if len(req.Statuses) > 0 { + statuses := make([]string, len(req.Statuses)) + for i, s := range req.Statuses { + statuses[i] = string(s) + } + q = q.Where(m.dao.QueueJob.Status.In(statuses...)) + where = true + } + db := q.UnderlyingDB() + if !where { + db = db.Where("true") + } + return db.Delete(&model.QueueJob{}).Error +} diff --git a/internal/queue/queuefx/module.go b/internal/queue/queuefx/module.go index 51715e8..fccbfcf 100644 --- a/internal/queue/queuefx/module.go +++ b/internal/queue/queuefx/module.go @@ -1,6 +1,7 @@ package queuefx import ( + "github.com/bitmagnet-io/bitmagnet/internal/queue/manager" "github.com/bitmagnet-io/bitmagnet/internal/queue/prometheus" "github.com/bitmagnet-io/bitmagnet/internal/queue/server" "go.uber.org/fx" @@ -11,6 +12,7 @@ func New() fx.Option { "queue", fx.Provide( server.New, + manager.New, prometheus.New, ), ) diff --git a/internal/tmdb/client.go b/internal/tmdb/client.go index 07894ae..4cf4517 100644 --- a/internal/tmdb/client.go +++ b/internal/tmdb/client.go @@ -7,23 +7,8 @@ import ( "strings" ) -//import ( -// "context" -// "fmt" -// "github.com/bitmagnet-io/bitmagnet/internal/concurrency" -// "github.com/go-resty/resty/v2" -// "go.uber.org/zap" -// "golang.org/x/time/rate" -// "strconv" -// "strings" -//) - type client struct { requester Requester - //resty *resty.Client - //limiter *rate.Limiter - //isUnauthorized *concurrency.AtomicValue[bool] - //logger *zap.SugaredLogger } func newError(msg string) error { @@ -117,46 +102,3 @@ func (c client) FindByID(ctx context.Context, request FindByIDRequest) (FindByID _, err := c.requester.Request(ctx, "/find/"+request.ExternalID, queryParams, &response) return response, err } - -// -//func (c client) request(ctx context.Context, path string, queryParams map[string]string, result interface{}) error { -// var ( -// res *resty.Response -// err error -// ) -// if c.isUnauthorized.Get() { -// err = ErrUnauthorized -// } else { -// err = c.limiter.Wait(ctx) -// } -// if err == nil { -// res, err = c.resty.R(). -// SetContext(ctx). -// SetQueryParams(queryParams). -// SetResult(&result). -// Get(path) -// } -// if err == nil { -// if !res.IsSuccess() { -// if res.StatusCode() == 401 { -// c.isUnauthorized.Set(true) -// err = ErrUnauthorized -// } else if res.StatusCode() == 404 { -// err = ErrNotFound -// } else { -// err = newError(res.Status()) -// } -// } -// } -// kvs := []interface{}{"path", path, "queryParams", queryParams} -// if res != nil { -// kvs = append(kvs, "status", res.Status(), "trace", res.Request.TraceInfo()) -// } -// if err == nil { -// c.logger.Debugw("request succeeded", kvs...) -// } else { -// kvs = append(kvs, "error", err) -// c.logger.Errorw("request failed", kvs...) -// } -// return err -//} diff --git a/internal/tmdb/mocks/Client.go b/internal/tmdb/mocks/Client.go index 78acb93..4b3ef3d 100644 --- a/internal/tmdb/mocks/Client.go +++ b/internal/tmdb/mocks/Client.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.43.0. DO NOT EDIT. +// Code generated by mockery v2.46.2. DO NOT EDIT. package tmdb_mocks diff --git a/internal/tmdb/tmdb_health/check.go b/internal/tmdb/tmdb_health/check.go new file mode 100644 index 0000000..20d0ea5 --- /dev/null +++ b/internal/tmdb/tmdb_health/check.go @@ -0,0 +1,29 @@ +package tmdb_health + +import ( + "context" + "github.com/bitmagnet-io/bitmagnet/internal/boilerplate/lazy" + "github.com/bitmagnet-io/bitmagnet/internal/health" + "github.com/bitmagnet-io/bitmagnet/internal/tmdb" + "time" +) + +func NewCheck( + enabled bool, + client lazy.Lazy[tmdb.Client], +) health.Check { + return health.Check{ + Name: "tmdb", + Timeout: time.Second * 30, + IsActive: func() bool { + return enabled + }, + Check: func(ctx context.Context) error { + c, err := client.Get() + if err != nil { + return err + } + return c.ValidateApiKey(ctx) + }, + } +} diff --git a/internal/tmdb/tmdb_health/factory.go b/internal/tmdb/tmdb_health/factory.go new file mode 100644 index 0000000..8b1084f --- /dev/null +++ b/internal/tmdb/tmdb_health/factory.go @@ -0,0 +1,30 @@ +package tmdb_health + +import ( + "github.com/bitmagnet-io/bitmagnet/internal/boilerplate/lazy" + "github.com/bitmagnet-io/bitmagnet/internal/health" + "github.com/bitmagnet-io/bitmagnet/internal/tmdb" + "go.uber.org/fx" + "time" +) + +type Params struct { + fx.In + Config tmdb.Config + Client lazy.Lazy[tmdb.Client] +} + +type Result struct { + fx.Out + Option health.CheckerOption `group:"health_check_options"` +} + +func New(p Params) Result { + return Result{ + Option: health.WithPeriodicCheck( + time.Minute*5, + 0, + NewCheck(p.Config.Enabled, p.Client), + ), + } +} diff --git a/internal/tmdb/tmdbfx/module.go b/internal/tmdb/tmdbfx/module.go index 8ef5b81..dfe439b 100644 --- a/internal/tmdb/tmdbfx/module.go +++ b/internal/tmdb/tmdbfx/module.go @@ -3,6 +3,7 @@ package tmdbfx import ( "github.com/bitmagnet-io/bitmagnet/internal/boilerplate/config/configfx" "github.com/bitmagnet-io/bitmagnet/internal/tmdb" + "github.com/bitmagnet-io/bitmagnet/internal/tmdb/tmdb_health" "go.uber.org/fx" ) @@ -10,6 +11,9 @@ func New() fx.Option { return fx.Module( "tmdb", configfx.NewConfigModule[tmdb.Config]("tmdb", tmdb.NewDefaultConfig()), - fx.Provide(tmdb.New), + fx.Provide( + tmdb.New, + tmdb_health.New, + ), ) } diff --git a/internal/version/healthcheck/healthcheck.go b/internal/version/healthcheck/healthcheck.go index 501d479..f92ac7b 100644 --- a/internal/version/healthcheck/healthcheck.go +++ b/internal/version/healthcheck/healthcheck.go @@ -1,21 +1,21 @@ package healthcheck import ( + "github.com/bitmagnet-io/bitmagnet/internal/health" "github.com/bitmagnet-io/bitmagnet/internal/version" - "github.com/hellofresh/health-go/v5" "go.uber.org/fx" ) type Result struct { fx.Out - HealthcheckOption health.Option `group:"healthcheck_options"` + HealthOption health.CheckerOption `group:"health_check_options"` } func New() Result { return Result{ - HealthcheckOption: health.WithComponent(health.Component{ - Name: "bitmagnet", - Version: version.GitTag, + HealthOption: health.WithInfo(map[string]any{ + "name": "bitmagnet", + "version": version.GitTag, }), } } diff --git a/internal/webui/httpserver.go b/internal/webui/httpserver.go index 12aa6bd..6090a60 100644 --- a/internal/webui/httpserver.go +++ b/internal/webui/httpserver.go @@ -1,13 +1,12 @@ package webui import ( - "fmt" + "errors" "github.com/bitmagnet-io/bitmagnet/internal/boilerplate/httpserver" "github.com/bitmagnet-io/bitmagnet/webui" "github.com/gin-gonic/gin" "go.uber.org/fx" "go.uber.org/zap" - "io" "io/fs" "net/http" ) @@ -40,32 +39,26 @@ func (b *builder) Key() string { func (b *builder) Apply(e *gin.Engine) error { webuiFS := webui.StaticFS() - appRoot, appRootErr := fs.Sub(webuiFS, "dist/bitmagnet") + appRoot, appRootErr := fs.Sub(webuiFS, "dist/bitmagnet/browser") if appRootErr != nil { - b.logger.Errorf("the webui app root directory is missing; run `ng build` within the `webui` folder: %v", appRootErr) + b.logger.Errorf("the webui app root directory is missing; run `npm run build` within the `webui` folder: %v", appRootErr) return nil } - appRootFS := http.FS(appRoot) - if walkErr := fs.WalkDir(appRoot, ".", func(path string, d fs.DirEntry, _ error) error { - if !d.IsDir() { - e.StaticFileFS(fmt.Sprintf("/%s", path), fmt.Sprintf("./%s", path), appRootFS) - } - return nil - }); walkErr != nil { - return fmt.Errorf("failed to walk app root: %w", walkErr) - } - // serving index.html from "/" using e.StaticFileFS seems to result in a redirect loop: - index, indexErr := appRootFS.Open("index.html") - if indexErr != nil { - return fmt.Errorf("failed to open index.html: %w", indexErr) - } - indexBytes, indexBytesErr := io.ReadAll(index) - if indexBytesErr != nil { - return fmt.Errorf("failed to read index.html: %w", indexBytesErr) - } + e.StaticFS("/webui", wrappedFs{http.FS(appRoot)}) e.GET("/", func(c *gin.Context) { - c.Header("Content-Type", "text/html") - _, _ = c.Writer.Write(indexBytes) + c.Redirect(301, "/webui") }) return nil } + +type wrappedFs struct { + http.FileSystem +} + +func (w wrappedFs) Open(name string) (http.File, error) { + f, err := w.FileSystem.Open(name) + if err != nil && errors.Is(err, fs.ErrNotExist) { + return w.FileSystem.Open("/index.html") + } + return f, err +} diff --git a/licenses/LICENSE_alexliesenfeld b/licenses/LICENSE_alexliesenfeld new file mode 100644 index 0000000..72e96ec --- /dev/null +++ b/licenses/LICENSE_alexliesenfeld @@ -0,0 +1,25 @@ +This license applies to portions of the code that were copied from https://github.com/alexliesenfeld/health + +--- + +MIT License + +Copyright (c) 2021 Alexander Liesenfeld + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/webui/.eslintrc.yaml b/webui/.eslintrc.yaml deleted file mode 100644 index ea8e8c2..0000000 --- a/webui/.eslintrc.yaml +++ /dev/null @@ -1,32 +0,0 @@ -parser: "@typescript-eslint/parser" -parserOptions: - ecmaVersion: 2020 - project: "./tsconfig.json" - sourceType: "module" -plugins: - - "@typescript-eslint/eslint-plugin" - - import - - sonarjs -extends: - - "plugin:@typescript-eslint/recommended" - - "plugin:@typescript-eslint/recommended-requiring-type-checking" - - "plugin:import/errors" - - "plugin:import/typescript" - - "plugin:sonarjs/recommended" - - "plugin:prettier/recommended" -settings: - import/resolver: - typescript: true - node: true -root: true -env: - node: true - jest: true -rules: - "@typescript-eslint/return-await": error - "import/order": error - "no-console": error - "prettier/prettier": warn -ignorePatterns: - - "src/app/graphql/generated/**/*.*" - - "**/*.html" diff --git a/webui/.nvmrc b/webui/.nvmrc deleted file mode 100644 index 209e3ef..0000000 --- a/webui/.nvmrc +++ /dev/null @@ -1 +0,0 @@ -20 diff --git a/webui/.prettierignore b/webui/.prettierignore deleted file mode 100644 index 16e32f5..0000000 --- a/webui/.prettierignore +++ /dev/null @@ -1,3 +0,0 @@ -dist/**/*.* -src/app/graphql/generated/**/*.* -.angular/**/*.* diff --git a/webui/README.md b/webui/README.md index 2a66313..de71378 100644 --- a/webui/README.md +++ b/webui/README.md @@ -1,6 +1,6 @@ # Bitmagnet -This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 16.0.4. +This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 18.0.3. ## Development server @@ -24,4 +24,4 @@ Run `ng e2e` to execute the end-to-end tests via a platform of your choice. To u ## Further help -To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page. +To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.dev/tools/cli) page. diff --git a/webui/angular.json b/webui/angular.json index 1c1f98c..86ec3e9 100644 --- a/webui/angular.json +++ b/webui/angular.json @@ -15,21 +15,22 @@ "prefix": "app", "architect": { "build": { - "builder": "@angular-devkit/build-angular:browser", + "builder": "@angular-devkit/build-angular:application", "options": { "outputPath": "dist/bitmagnet", "index": "src/index.html", - "main": "src/main.ts", + "browser": "src/main.ts", "polyfills": ["zone.js"], "tsConfig": "tsconfig.app.json", "inlineStyleLanguage": "scss", - "assets": ["src/favicon.png", "src/assets"], - "styles": [ - "@angular/material/prebuilt-themes/indigo-pink.css", - "src/styles.scss" + "assets": [ + { + "glob": "**/*", + "input": "public" + } ], - "scripts": [], - "allowedCommonJsDependencies": ["filesize"] + "styles": ["src/styles.scss"], + "scripts": [] }, "configurations": { "embedded": { @@ -51,18 +52,17 @@ "maximumError": "40kb" } ], - "outputHashing": "all" + "outputHashing": "all", + "baseHref": "/webui/" }, "development": { - "buildOptimizer": false, "optimization": false, - "vendorChunk": true, "extractLicenses": false, "sourceMap": true, - "namedChunks": true + "baseHref": "/webui/" } }, - "defaultConfiguration": "development" + "defaultConfiguration": "production" }, "serve": { "builder": "@angular-devkit/build-angular:dev-server", @@ -77,10 +77,7 @@ "defaultConfiguration": "development" }, "extract-i18n": { - "builder": "@angular-devkit/build-angular:extract-i18n", - "options": { - "buildTarget": "bitmagnet:build" - } + "builder": "@angular-devkit/build-angular:extract-i18n" }, "test": { "builder": "@angular-devkit/build-angular:karma", @@ -88,11 +85,13 @@ "polyfills": ["zone.js", "zone.js/testing"], "tsConfig": "tsconfig.spec.json", "inlineStyleLanguage": "scss", - "assets": ["src/favicon.png", "src/assets"], - "styles": [ - "@angular/material/prebuilt-themes/indigo-pink.css", - "src/styles.scss" + "assets": [ + { + "glob": "**/*", + "input": "public" + } ], + "styles": ["src/styles.scss"], "scripts": [], "karmaConfig": "karma.conf.js" } diff --git a/webui/dist/bitmagnet/3rdpartylicenses.txt b/webui/dist/bitmagnet/3rdpartylicenses.txt index 66f40a2..e37a1aa 100644 --- a/webui/dist/bitmagnet/3rdpartylicenses.txt +++ b/webui/dist/bitmagnet/3rdpartylicenses.txt @@ -1,8 +1,227 @@ -@angular/animations -MIT -@angular/cdk -MIT +-------------------------------------------------------------------------------- +Package: date-fns +License: "MIT" + +MIT License + +Copyright (c) 2021 Sasha Koss and Lesha Koss https://kossnocorp.mit-license.org + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +-------------------------------------------------------------------------------- +Package: @angular/platform-browser +License: "MIT" + +The MIT License + +Copyright (c) 2010-2024 Google LLC. https://angular.dev/license + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +-------------------------------------------------------------------------------- +Package: @kurkle/color +License: "MIT" + +The MIT License (MIT) + +Copyright (c) 2018-2021 Jukka Kurkela + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +-------------------------------------------------------------------------------- +Package: chart.js +License: "MIT" + +The MIT License (MIT) + +Copyright (c) 2014-2024 Chart.js Contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +-------------------------------------------------------------------------------- +Package: lodash-es +License: "MIT" + +Copyright OpenJS Foundation and other contributors + +Based on Underscore.js, copyright Jeremy Ashkenas, +DocumentCloud and Investigative Reporters & Editors + +This software consists of voluntary contributions made by many +individuals. For exact contribution history, see the revision history +available at https://github.com/lodash/lodash + +The following license applies to all parts of this software except as +documented below: + +==== + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +==== + +Copyright and related rights for sample code are waived via CC0. Sample +code is defined as all source code displayed within the prose of the +documentation. + +CC0: http://creativecommons.org/publicdomain/zero/1.0/ + +==== + +Files located in the node_modules and vendor directories are externally +maintained libraries used by this software which have their own +licenses; we recommend you read them, as their terms may differ from the +terms above. + +-------------------------------------------------------------------------------- +Package: ng2-charts +License: "MIT" + +The MIT License (MIT) + +Copyright (c) 2023 Valor Labs +Copyright (c) 2023 Valor Software +Copyright (c) 2023 Dmitriy Shekhovtsov + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +-------------------------------------------------------------------------------- +Package: @angular/animations +License: "MIT" + +The MIT License + +Copyright (c) 2010-2024 Google LLC. https://angular.dev/license + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +-------------------------------------------------------------------------------- +Package: filesize +License: "BSD-3-Clause" + +Copyright (c) 2024, Jason Mulligan +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +* Neither the name of filesize nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +-------------------------------------------------------------------------------- +Package: @angular/material +License: "MIT" + The MIT License Copyright (c) 2024 Google LLC. @@ -25,18 +244,106 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +-------------------------------------------------------------------------------- +Package: @angular/core +License: "MIT" -@angular/common -MIT +The MIT License -@angular/core -MIT +Copyright (c) 2010-2024 Google LLC. https://angular.dev/license -@angular/forms -MIT +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +-------------------------------------------------------------------------------- +Package: flat +License: "BSD-3-Clause" + +Copyright (c) 2014, Hugh Kennedy +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + +3. Neither the name of the nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +-------------------------------------------------------------------------------- +Package: @jsverse/transloco +License: "MIT" + +MIT License + +Copyright (c) 2019-2024 Netanel Basal, Shahar Kazaz, and Itay Oded. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + +-------------------------------------------------------------------------------- +Package: @angular/forms +License: "MIT" + +The MIT License + +Copyright (c) 2010-2024 Google LLC. https://angular.dev/license + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +-------------------------------------------------------------------------------- +Package: @angular/cdk +License: "MIT" -@angular/material -MIT The MIT License Copyright (c) 2024 Google LLC. @@ -59,15 +366,36 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +-------------------------------------------------------------------------------- +Package: ts-invariant +License: "MIT" -@angular/platform-browser -MIT +MIT License -@angular/router -MIT +Copyright (c) 2019 Apollo GraphQL + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +-------------------------------------------------------------------------------- +Package: @apollo/client +License: "MIT" -@apollo/client -MIT The MIT License (MIT) Copyright (c) 2022 Apollo Graph, Inc. (Formerly Meteor Development Group, Inc.) @@ -91,162 +419,10 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +-------------------------------------------------------------------------------- +Package: graphql +License: "MIT" -@apollo/client/cache - -@apollo/client/core - -@apollo/client/errors - -@apollo/client/link/batch - -@apollo/client/link/core - -@apollo/client/link/http - -@apollo/client/link/utils - -@apollo/client/utilities - -@apollo/client/utilities/globals - -@wry/caches -MIT -MIT License - -Copyright (c) 2019-2021 Ben Newman - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - -@wry/context -MIT - -@wry/equality -MIT -MIT License - -Copyright (c) 2019 Ben Newman - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - -@wry/trie -MIT -MIT License - -Copyright (c) 2019-2021 Ben Newman - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - -apollo-angular -MIT -The MIT License (MIT) - -Copyright (c) 2015 - 2020 Kamil Kisiela - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - -filesize -BSD-3-Clause -Copyright (c) 2022, Jason Mulligan -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -* Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -* Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -* Neither the name of filesize nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - - -graphql -MIT MIT License Copyright (c) GraphQL Contributors @@ -269,12 +445,18 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +-------------------------------------------------------------------------------- +Package: @wry/trie +License: "MIT" -graphql-tag -MIT -The MIT License (MIT) -Copyright (c) 2021 Apollo Graph, Inc. (Formerly Meteor Development Group, Inc.) +-------------------------------------------------------------------------------- +Package: @wry/caches +License: "MIT" + +MIT License + +Copyright (c) 2019-2021 Ben Newman Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -294,12 +476,41 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +-------------------------------------------------------------------------------- +Package: @wry/trie +License: "MIT" -ngx-filesize -MIT +MIT License + +Copyright (c) 2019-2021 Ben Newman + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +-------------------------------------------------------------------------------- +Package: @wry/context +License: "MIT" + + +-------------------------------------------------------------------------------- +Package: optimism +License: "MIT" -optimism -MIT MIT License Copyright (c) 2016 Ben Newman @@ -322,9 +533,193 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +-------------------------------------------------------------------------------- +Package: zen-observable-ts +License: "MIT" + +The MIT License (MIT) + +Copyright (c) 2021 Apollo Graph, Inc. (Formerly Meteor Development Group, Inc.) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +-------------------------------------------------------------------------------- +Package: symbol-observable +License: "MIT" + +The MIT License (MIT) + +Copyright (c) 2021 Sindre Sorhus (sindresorhus.com) +Copyright (c) 2021 Ben Lesh + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +-------------------------------------------------------------------------------- +Package: @wry/equality +License: "MIT" + +MIT License + +Copyright (c) 2019 Ben Newman + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +-------------------------------------------------------------------------------- +Package: graphql-tag +License: "MIT" + +The MIT License (MIT) + +Copyright (c) 2021 Apollo Graph, Inc. (Formerly Meteor Development Group, Inc.) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +-------------------------------------------------------------------------------- +Package: apollo-angular +License: "MIT" + +The MIT License (MIT) + +Copyright (c) 2015 - 2020 Kamil Kisiela + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +-------------------------------------------------------------------------------- +Package: @angular/common +License: "MIT" + +The MIT License + +Copyright (c) 2010-2024 Google LLC. https://angular.dev/license + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +-------------------------------------------------------------------------------- +Package: @angular/router +License: "MIT" + +The MIT License + +Copyright (c) 2010-2024 Google LLC. https://angular.dev/license + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +-------------------------------------------------------------------------------- +Package: rxjs +License: "Apache-2.0" -rxjs -Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -528,62 +923,29 @@ Apache-2.0 limitations under the License. +-------------------------------------------------------------------------------- +Package: tslib +License: "0BSD" -ts-invariant -MIT -MIT License +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. +-------------------------------------------------------------------------------- +Package: zone.js +License: "MIT" -Copyright (c) 2019 Apollo GraphQL - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - -zen-observable-ts -MIT -The MIT License (MIT) - -Copyright (c) 2021 Apollo Graph, Inc. (Formerly Meteor Development Group, Inc.) - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - -zone.js -MIT The MIT License -Copyright (c) 2010-2023 Google LLC. https://angular.io/license +Copyright (c) 2010-2024 Google LLC. https://angular.io/license Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -602,3 +964,5 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +-------------------------------------------------------------------------------- diff --git a/webui/dist/bitmagnet/browser/binary.svg b/webui/dist/bitmagnet/browser/binary.svg new file mode 100644 index 0000000..bc8fb92 --- /dev/null +++ b/webui/dist/bitmagnet/browser/binary.svg @@ -0,0 +1,11 @@ + + + + + + + + + + diff --git a/webui/dist/bitmagnet/browser/chunk-3DR3CJRN.js b/webui/dist/bitmagnet/browser/chunk-3DR3CJRN.js new file mode 100644 index 0000000..ae6ca70 --- /dev/null +++ b/webui/dist/bitmagnet/browser/chunk-3DR3CJRN.js @@ -0,0 +1,7 @@ +var Zf=Object.defineProperty,Yf=Object.defineProperties;var Qf=Object.getOwnPropertyDescriptors;var Ln=Object.getOwnPropertySymbols;var Qa=Object.prototype.hasOwnProperty,Ka=Object.prototype.propertyIsEnumerable;var Ya=(e,t,n)=>t in e?Zf(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,me=(e,t)=>{for(var n in t||={})Qa.call(t,n)&&Ya(e,n,t[n]);if(Ln)for(var n of Ln(t))Ka.call(t,n)&&Ya(e,n,t[n]);return e},ye=(e,t)=>Yf(e,Qf(t));var ow=(e,t)=>{var n={};for(var r in e)Qa.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&Ln)for(var r of Ln(e))t.indexOf(r)<0&&Ka.call(e,r)&&(n[r]=e[r]);return n};var Kf=(e,t,n)=>new Promise((r,o)=>{var i=u=>{try{a(n.next(u))}catch(c){o(c)}},s=u=>{try{a(n.throw(u))}catch(c){o(c)}},a=u=>u.done?r(u.value):Promise.resolve(u.value).then(i,s);a((n=n.apply(e,t)).next())});function g(e){return typeof e=="function"}function Tt(e){let n=e(r=>{Error.call(r),r.stack=new Error().stack});return n.prototype=Object.create(Error.prototype),n.prototype.constructor=n,n}var jn=Tt(e=>function(n){e(this),this.message=n?`${n.length} errors occurred during unsubscription: +${n.map((r,o)=>`${o+1}) ${r.toString()}`).join(` + `)}`:"",this.name="UnsubscriptionError",this.errors=n});function et(e,t){if(e){let n=e.indexOf(t);0<=n&&e.splice(n,1)}}var L=class e{constructor(t){this.initialTeardown=t,this.closed=!1,this._parentage=null,this._finalizers=null}unsubscribe(){let t;if(!this.closed){this.closed=!0;let{_parentage:n}=this;if(n)if(this._parentage=null,Array.isArray(n))for(let i of n)i.remove(this);else n.remove(this);let{initialTeardown:r}=this;if(g(r))try{r()}catch(i){t=i instanceof jn?i.errors:[i]}let{_finalizers:o}=this;if(o){this._finalizers=null;for(let i of o)try{Ja(i)}catch(s){t=t??[],s instanceof jn?t=[...t,...s.errors]:t.push(s)}}if(t)throw new jn(t)}}add(t){var n;if(t&&t!==this)if(this.closed)Ja(t);else{if(t instanceof e){if(t.closed||t._hasParent(this))return;t._addParent(this)}(this._finalizers=(n=this._finalizers)!==null&&n!==void 0?n:[]).push(t)}}_hasParent(t){let{_parentage:n}=this;return n===t||Array.isArray(n)&&n.includes(t)}_addParent(t){let{_parentage:n}=this;this._parentage=Array.isArray(n)?(n.push(t),n):n?[n,t]:t}_removeParent(t){let{_parentage:n}=this;n===t?this._parentage=null:Array.isArray(n)&&et(n,t)}remove(t){let{_finalizers:n}=this;n&&et(n,t),t instanceof e&&t._removeParent(this)}};L.EMPTY=(()=>{let e=new L;return e.closed=!0,e})();var Ho=L.EMPTY;function Vn(e){return e instanceof L||e&&"closed"in e&&g(e.remove)&&g(e.add)&&g(e.unsubscribe)}function Ja(e){g(e)?e():e.unsubscribe()}var ce={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1};var Nt={setTimeout(e,t,...n){let{delegate:r}=Nt;return r?.setTimeout?r.setTimeout(e,t,...n):setTimeout(e,t,...n)},clearTimeout(e){let{delegate:t}=Nt;return(t?.clearTimeout||clearTimeout)(e)},delegate:void 0};function Bn(e){Nt.setTimeout(()=>{let{onUnhandledError:t}=ce;if(t)t(e);else throw e})}function tt(){}var Xa=$o("C",void 0,void 0);function eu(e){return $o("E",void 0,e)}function tu(e){return $o("N",e,void 0)}function $o(e,t,n){return{kind:e,value:t,error:n}}var nt=null;function At(e){if(ce.useDeprecatedSynchronousErrorHandling){let t=!nt;if(t&&(nt={errorThrown:!1,error:null}),e(),t){let{errorThrown:n,error:r}=nt;if(nt=null,n)throw r}}else e()}function nu(e){ce.useDeprecatedSynchronousErrorHandling&&nt&&(nt.errorThrown=!0,nt.error=e)}var rt=class extends L{constructor(t){super(),this.isStopped=!1,t?(this.destination=t,Vn(t)&&t.add(this)):this.destination=ep}static create(t,n,r){return new Te(t,n,r)}next(t){this.isStopped?zo(tu(t),this):this._next(t)}error(t){this.isStopped?zo(eu(t),this):(this.isStopped=!0,this._error(t))}complete(){this.isStopped?zo(Xa,this):(this.isStopped=!0,this._complete())}unsubscribe(){this.closed||(this.isStopped=!0,super.unsubscribe(),this.destination=null)}_next(t){this.destination.next(t)}_error(t){try{this.destination.error(t)}finally{this.unsubscribe()}}_complete(){try{this.destination.complete()}finally{this.unsubscribe()}}},Jf=Function.prototype.bind;function Uo(e,t){return Jf.call(e,t)}var Go=class{constructor(t){this.partialObserver=t}next(t){let{partialObserver:n}=this;if(n.next)try{n.next(t)}catch(r){Hn(r)}}error(t){let{partialObserver:n}=this;if(n.error)try{n.error(t)}catch(r){Hn(r)}else Hn(t)}complete(){let{partialObserver:t}=this;if(t.complete)try{t.complete()}catch(n){Hn(n)}}},Te=class extends rt{constructor(t,n,r){super();let o;if(g(t)||!t)o={next:t??void 0,error:n??void 0,complete:r??void 0};else{let i;this&&ce.useDeprecatedNextContext?(i=Object.create(t),i.unsubscribe=()=>this.unsubscribe(),o={next:t.next&&Uo(t.next,i),error:t.error&&Uo(t.error,i),complete:t.complete&&Uo(t.complete,i)}):o=t}this.destination=new Go(o)}};function Hn(e){ce.useDeprecatedSynchronousErrorHandling?nu(e):Bn(e)}function Xf(e){throw e}function zo(e,t){let{onStoppedNotification:n}=ce;n&&Nt.setTimeout(()=>n(e,t))}var ep={closed:!0,next:tt,error:Xf,complete:tt};var ot=typeof Symbol=="function"&&Symbol.observable||"@@observable";function B(e){return e}function Wo(...e){return qo(e)}function qo(e){return e.length===0?B:e.length===1?e[0]:function(n){return e.reduce((r,o)=>o(r),n)}}var S=(()=>{class e{constructor(n){n&&(this._subscribe=n)}lift(n){let r=new e;return r.source=this,r.operator=n,r}subscribe(n,r,o){let i=np(n)?n:new Te(n,r,o);return At(()=>{let{operator:s,source:a}=this;i.add(s?s.call(i,a):a?this._subscribe(i):this._trySubscribe(i))}),i}_trySubscribe(n){try{return this._subscribe(n)}catch(r){n.error(r)}}forEach(n,r){return r=ru(r),new r((o,i)=>{let s=new Te({next:a=>{try{n(a)}catch(u){i(u),s.unsubscribe()}},error:i,complete:o});this.subscribe(s)})}_subscribe(n){var r;return(r=this.source)===null||r===void 0?void 0:r.subscribe(n)}[ot](){return this}pipe(...n){return qo(n)(this)}toPromise(n){return n=ru(n),new n((r,o)=>{let i;this.subscribe(s=>i=s,s=>o(s),()=>r(i))})}}return e.create=t=>new e(t),e})();function ru(e){var t;return(t=e??ce.Promise)!==null&&t!==void 0?t:Promise}function tp(e){return e&&g(e.next)&&g(e.error)&&g(e.complete)}function np(e){return e&&e instanceof rt||tp(e)&&Vn(e)}var ou=Tt(e=>function(){e(this),this.name="ObjectUnsubscribedError",this.message="object unsubscribed"});var ie=(()=>{class e extends S{constructor(){super(),this.closed=!1,this.currentObservers=null,this.observers=[],this.isStopped=!1,this.hasError=!1,this.thrownError=null}lift(n){let r=new $n(this,this);return r.operator=n,r}_throwIfClosed(){if(this.closed)throw new ou}next(n){At(()=>{if(this._throwIfClosed(),!this.isStopped){this.currentObservers||(this.currentObservers=Array.from(this.observers));for(let r of this.currentObservers)r.next(n)}})}error(n){At(()=>{if(this._throwIfClosed(),!this.isStopped){this.hasError=this.isStopped=!0,this.thrownError=n;let{observers:r}=this;for(;r.length;)r.shift().error(n)}})}complete(){At(()=>{if(this._throwIfClosed(),!this.isStopped){this.isStopped=!0;let{observers:n}=this;for(;n.length;)n.shift().complete()}})}unsubscribe(){this.isStopped=this.closed=!0,this.observers=this.currentObservers=null}get observed(){var n;return((n=this.observers)===null||n===void 0?void 0:n.length)>0}_trySubscribe(n){return this._throwIfClosed(),super._trySubscribe(n)}_subscribe(n){return this._throwIfClosed(),this._checkFinalizedStatuses(n),this._innerSubscribe(n)}_innerSubscribe(n){let{hasError:r,isStopped:o,observers:i}=this;return r||o?Ho:(this.currentObservers=null,i.push(n),new L(()=>{this.currentObservers=null,et(i,n)}))}_checkFinalizedStatuses(n){let{hasError:r,thrownError:o,isStopped:i}=this;r?n.error(o):i&&n.complete()}asObservable(){let n=new S;return n.source=this,n}}return e.create=(t,n)=>new $n(t,n),e})(),$n=class extends ie{constructor(t,n){super(),this.destination=t,this.source=n}next(t){var n,r;(r=(n=this.destination)===null||n===void 0?void 0:n.next)===null||r===void 0||r.call(n,t)}error(t){var n,r;(r=(n=this.destination)===null||n===void 0?void 0:n.error)===null||r===void 0||r.call(n,t)}complete(){var t,n;(n=(t=this.destination)===null||t===void 0?void 0:t.complete)===null||n===void 0||n.call(t)}_subscribe(t){var n,r;return(r=(n=this.source)===null||n===void 0?void 0:n.subscribe(t))!==null&&r!==void 0?r:Ho}};var on=class extends ie{constructor(t){super(),this._value=t}get value(){return this.getValue()}_subscribe(t){let n=super._subscribe(t);return!n.closed&&t.next(this._value),n}getValue(){let{hasError:t,thrownError:n,_value:r}=this;if(t)throw n;return this._throwIfClosed(),r}next(t){super.next(this._value=t)}};var it=new S(e=>e.complete());function Zo(e){return g(e?.lift)}function y(e){return t=>{if(Zo(t))return t.lift(function(n){try{return e(n,this)}catch(r){this.error(r)}});throw new TypeError("Unable to lift unknown Observable type")}}function v(e,t,n,r,o){return new Yo(e,t,n,r,o)}var Yo=class extends rt{constructor(t,n,r,o,i,s){super(t),this.onFinalize=i,this.shouldUnsubscribe=s,this._next=n?function(a){try{n(a)}catch(u){t.error(u)}}:super._next,this._error=o?function(a){try{o(a)}catch(u){t.error(u)}finally{this.unsubscribe()}}:super._error,this._complete=r?function(){try{r()}catch(a){t.error(a)}finally{this.unsubscribe()}}:super._complete}unsubscribe(){var t;if(!this.shouldUnsubscribe||this.shouldUnsubscribe()){let{closed:n}=this;super.unsubscribe(),!n&&((t=this.onFinalize)===null||t===void 0||t.call(this))}}};function ve(e,t){return y((n,r)=>{let o=0;n.subscribe(v(r,i=>{r.next(e.call(t,i,o++))}))})}var{isArray:rp}=Array,{getPrototypeOf:op,prototype:ip,keys:sp}=Object;function Un(e){if(e.length===1){let t=e[0];if(rp(t))return{args:t,keys:null};if(ap(t)){let n=sp(t);return{args:n.map(r=>t[r]),keys:n}}}return{args:e,keys:null}}function ap(e){return e&&typeof e=="object"&&op(e)===ip}var Qo=function(e,t){return Qo=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,r){n.__proto__=r}||function(n,r){for(var o in r)Object.prototype.hasOwnProperty.call(r,o)&&(n[o]=r[o])},Qo(e,t)};function dE(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");Qo(e,t);function n(){this.constructor=e}e.prototype=t===null?Object.create(t):(n.prototype=t.prototype,new n)}var iu=function(){return iu=Object.assign||function(t){for(var n,r=1,o=arguments.length;r0&&i[i.length-1])&&(c[0]===6||c[0]===2)){n=0;continue}if(c[0]===3&&(!i||c[1]>i[0]&&c[1]=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function hE(e,t,n){if(n||arguments.length===2)for(var r=0,o=t.length,i;r1||u(f,m)})},h&&(o[f]=h(o[f])))}function u(f,h){try{c(r[f](h))}catch(m){p(i[0][3],m)}}function c(f){f.value instanceof st?Promise.resolve(f.value.v).then(l,d):p(i[0][2],f)}function l(f){u("next",f)}function d(f){u("throw",f)}function p(f,h){f(h),i.shift(),i.length&&u(i[0][0],i[0][1])}}function cu(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t=e[Symbol.asyncIterator],n;return t?t.call(e):(e=typeof su=="function"?su(e):e[Symbol.iterator](),n={},r("next"),r("throw"),r("return"),n[Symbol.asyncIterator]=function(){return this},n);function r(i){n[i]=e[i]&&function(s){return new Promise(function(a,u){s=e[i](s),o(a,u,s.done,s.value)})}}function o(i,s,a,u){Promise.resolve(u).then(function(c){i({value:c,done:a})},s)}}var Ot=e=>e&&typeof e.length=="number"&&typeof e!="function";function zn(e){return g(e?.then)}function Gn(e){return g(e[ot])}function Wn(e){return Symbol.asyncIterator&&g(e?.[Symbol.asyncIterator])}function qn(e){return new TypeError(`You provided ${e!==null&&typeof e=="object"?"an invalid object":`'${e}'`} where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.`)}function up(){return typeof Symbol!="function"||!Symbol.iterator?"@@iterator":Symbol.iterator}var Zn=up();function Yn(e){return g(e?.[Zn])}function Qn(e){return uu(this,arguments,function*(){let n=e.getReader();try{for(;;){let{value:r,done:o}=yield st(n.read());if(o)return yield st(void 0);yield yield st(r)}}finally{n.releaseLock()}})}function Kn(e){return g(e?.getReader)}function T(e){if(e instanceof S)return e;if(e!=null){if(Gn(e))return cp(e);if(Ot(e))return lp(e);if(zn(e))return dp(e);if(Wn(e))return lu(e);if(Yn(e))return fp(e);if(Kn(e))return pp(e)}throw qn(e)}function cp(e){return new S(t=>{let n=e[ot]();if(g(n.subscribe))return n.subscribe(t);throw new TypeError("Provided object does not correctly implement Symbol.observable")})}function lp(e){return new S(t=>{for(let n=0;n{e.then(n=>{t.closed||(t.next(n),t.complete())},n=>t.error(n)).then(null,Bn)})}function fp(e){return new S(t=>{for(let n of e)if(t.next(n),t.closed)return;t.complete()})}function lu(e){return new S(t=>{hp(e,t).catch(n=>t.error(n))})}function pp(e){return lu(Qn(e))}function hp(e,t){var n,r,o,i;return au(this,void 0,void 0,function*(){try{for(n=cu(e);r=yield n.next(),!r.done;){let s=r.value;if(t.next(s),t.closed)return}}catch(s){o={error:s}}finally{try{r&&!r.done&&(i=n.return)&&(yield i.call(n))}finally{if(o)throw o.error}}t.complete()})}function Q(e,t,n,r=0,o=!1){let i=t.schedule(function(){n(),o?e.add(this.schedule(null,r)):this.unsubscribe()},r);if(e.add(i),!o)return i}function sn(e,t=0){return y((n,r)=>{n.subscribe(v(r,o=>Q(r,e,()=>r.next(o),t),()=>Q(r,e,()=>r.complete(),t),o=>Q(r,e,()=>r.error(o),t)))})}function Jn(e,t=0){return y((n,r)=>{r.add(e.schedule(()=>n.subscribe(r),t))})}function du(e,t){return T(e).pipe(Jn(t),sn(t))}function fu(e,t){return T(e).pipe(Jn(t),sn(t))}function pu(e,t){return new S(n=>{let r=0;return t.schedule(function(){r===e.length?n.complete():(n.next(e[r++]),n.closed||this.schedule())})})}function hu(e,t){return new S(n=>{let r;return Q(n,t,()=>{r=e[Zn](),Q(n,t,()=>{let o,i;try{({value:o,done:i}=r.next())}catch(s){n.error(s);return}i?n.complete():n.next(o)},0,!0)}),()=>g(r?.return)&&r.return()})}function Xn(e,t){if(!e)throw new Error("Iterable cannot be null");return new S(n=>{Q(n,t,()=>{let r=e[Symbol.asyncIterator]();Q(n,t,()=>{r.next().then(o=>{o.done?n.complete():n.next(o.value)})},0,!0)})})}function gu(e,t){return Xn(Qn(e),t)}function mu(e,t){if(e!=null){if(Gn(e))return du(e,t);if(Ot(e))return pu(e,t);if(zn(e))return fu(e,t);if(Wn(e))return Xn(e,t);if(Yn(e))return hu(e,t);if(Kn(e))return gu(e,t)}throw qn(e)}function De(e,t){return t?mu(e,t):T(e)}var{isArray:gp}=Array;function mp(e,t){return gp(t)?e(...t):e(t)}function Ve(e){return ve(t=>mp(e,t))}function er(e){return e&&g(e.schedule)}function Ko(e){return e[e.length-1]}function Rt(e){return g(Ko(e))?e.pop():void 0}function Ie(e){return er(Ko(e))?e.pop():void 0}function yu(e,t){return typeof Ko(e)=="number"?e.pop():t}function tr(e,t){return e.reduce((n,r,o)=>(n[r]=t[o],n),{})}function yp(...e){let t=Ie(e),n=Rt(e),{args:r,keys:o}=Un(e);if(r.length===0)return De([],t);let i=new S(Jo(r,t,o?s=>tr(o,s):B));return n?i.pipe(Ve(n)):i}function Jo(e,t,n=B){return r=>{vu(t,()=>{let{length:o}=e,i=new Array(o),s=o,a=o;for(let u=0;u{let c=De(e[u],t),l=!1;c.subscribe(v(r,d=>{i[u]=d,l||(l=!0,a--),a||r.next(n(i.slice()))},()=>{--s||r.complete()}))},r)},r)}}function vu(e,t,n){e?Q(n,e,t):t()}var{isArray:vp}=Array;function Du(e){return e.length===1&&vp(e[0])?e[0]:e}function Xo(...e){let t=Rt(e);return t?Wo(Xo(...e),Ve(t)):y((n,r)=>{Jo([n,...Du(e)])(r)})}function Dp(...e){return Xo(...e)}function ei(){return y((e,t)=>{let n=null;e._refCount++;let r=v(t,void 0,void 0,void 0,()=>{if(!e||e._refCount<=0||0<--e._refCount){n=null;return}let o=e._connection,i=n;n=null,o&&(!i||o===i)&&o.unsubscribe(),t.unsubscribe()});e.subscribe(r),r.closed||(n=e.connect())})}var ti=class extends S{constructor(t,n){super(),this.source=t,this.subjectFactory=n,this._subject=null,this._refCount=0,this._connection=null,Zo(t)&&(this.lift=t.lift)}_subscribe(t){return this.getSubject().subscribe(t)}getSubject(){let t=this._subject;return(!t||t.isStopped)&&(this._subject=this.subjectFactory()),this._subject}_teardown(){this._refCount=0;let{_connection:t}=this;this._subject=this._connection=null,t?.unsubscribe()}connect(){let t=this._connection;if(!t){t=this._connection=new L;let n=this.getSubject();t.add(this.source.subscribe(v(n,void 0,()=>{this._teardown(),n.complete()},r=>{this._teardown(),n.error(r)},()=>this._teardown()))),t.closed&&(this._connection=null,t=L.EMPTY)}return t}refCount(){return ei()(this)}};var an={now(){return(an.delegate||Date).now()},delegate:void 0};var nr=class extends ie{constructor(t=1/0,n=1/0,r=an){super(),this._bufferSize=t,this._windowTime=n,this._timestampProvider=r,this._buffer=[],this._infiniteTimeWindow=!0,this._infiniteTimeWindow=n===1/0,this._bufferSize=Math.max(1,t),this._windowTime=Math.max(1,n)}next(t){let{isStopped:n,_buffer:r,_infiniteTimeWindow:o,_timestampProvider:i,_windowTime:s}=this;n||(r.push(t),!o&&r.push(i.now()+s)),this._trimBuffer(),super.next(t)}_subscribe(t){this._throwIfClosed(),this._trimBuffer();let n=this._innerSubscribe(t),{_infiniteTimeWindow:r,_buffer:o}=this,i=o.slice();for(let s=0;sIu(t)&&e()),t},clearImmediate(e){Iu(e)}};var{setImmediate:wp,clearImmediate:Ep}=wu,cn={setImmediate(...e){let{delegate:t}=cn;return(t?.setImmediate||wp)(...e)},clearImmediate(e){let{delegate:t}=cn;return(t?.clearImmediate||Ep)(e)},delegate:void 0};var or=class extends Be{constructor(t,n){super(t,n),this.scheduler=t,this.work=n}requestAsyncId(t,n,r=0){return r!==null&&r>0?super.requestAsyncId(t,n,r):(t.actions.push(this),t._scheduled||(t._scheduled=cn.setImmediate(t.flush.bind(t,void 0))))}recycleAsyncId(t,n,r=0){var o;if(r!=null?r>0:this.delay>0)return super.recycleAsyncId(t,n,r);let{actions:i}=t;n!=null&&((o=i[i.length-1])===null||o===void 0?void 0:o.id)!==n&&(cn.clearImmediate(n),t._scheduled===n&&(t._scheduled=void 0))}};var Ft=class e{constructor(t,n=e.now){this.schedulerActionCtor=t,this.now=n}schedule(t,n=0,r){return new this.schedulerActionCtor(this,t).schedule(r,n)}};Ft.now=an.now;var He=class extends Ft{constructor(t,n=Ft.now){super(t,n),this.actions=[],this._active=!1}flush(t){let{actions:n}=this;if(this._active){n.push(t);return}let r;this._active=!0;do if(r=t.execute(t.state,t.delay))break;while(t=n.shift());if(this._active=!1,r){for(;t=n.shift();)t.unsubscribe();throw r}}};var ir=class extends He{flush(t){this._active=!0;let n=this._scheduled;this._scheduled=void 0;let{actions:r}=this,o;t=t||r.shift();do if(o=t.execute(t.state,t.delay))break;while((t=r[0])&&t.id===n&&r.shift());if(this._active=!1,o){for(;(t=r[0])&&t.id===n&&r.shift();)t.unsubscribe();throw o}}};var Cp=new ir(or);var at=new He(Be),Eu=at;var sr=class extends Be{constructor(t,n){super(t,n),this.scheduler=t,this.work=n}schedule(t,n=0){return n>0?super.schedule(t,n):(this.delay=n,this.state=t,this.scheduler.flush(this),this)}execute(t,n){return n>0||this.closed?super.execute(t,n):this._execute(t,n)}requestAsyncId(t,n,r=0){return r!=null&&r>0||r==null&&this.delay>0?super.requestAsyncId(t,n,r):(t.flush(this),0)}};var ar=class extends He{};var bp=new ar(sr);function _p(...e){let t=Ie(e);return De(e,t)}function Mp(e,t){let n=g(e)?e:()=>e,r=o=>o.error(n());return new S(t?o=>t.schedule(r,0,o):r)}function xp(e){return!!e&&(e instanceof S||g(e.lift)&&g(e.subscribe))}var ut=Tt(e=>function(){e(this),this.name="EmptyError",this.message="no elements in sequence"});function Cu(e){return e instanceof Date&&!isNaN(e)}function bu(e,t,n,r,o,i,s,a){let u=[],c=0,l=0,d=!1,p=()=>{d&&!u.length&&!c&&t.complete()},f=m=>c{i&&t.next(m),c++;let A=!1;T(n(m,l++)).subscribe(v(t,b=>{o?.(b),i?f(b):t.next(b)},()=>{A=!0},void 0,()=>{if(A)try{for(c--;u.length&&ch(b)):h(b)}p()}catch(b){t.error(b)}}))};return e.subscribe(v(t,f,()=>{d=!0,p()})),()=>{a?.()}}function le(e,t,n=1/0){return g(t)?le((r,o)=>ve((i,s)=>t(r,i,o,s))(T(e(r,o))),n):(typeof t=="number"&&(n=t),y((r,o)=>bu(r,o,e,n)))}function ln(e=1/0){return le(B,e)}function _u(){return ln(1)}function Pt(...e){return _u()(De(e,Ie(e)))}function Sp(e){return new S(t=>{T(e()).subscribe(t)})}function Tp(...e){let t=Rt(e),{args:n,keys:r}=Un(e),o=new S(i=>{let{length:s}=n;if(!s){i.complete();return}let a=new Array(s),u=s,c=s;for(let l=0;l{d||(d=!0,c--),a[l]=p},()=>u--,void 0,()=>{(!u||!d)&&(c||i.next(r?tr(r,a):a),i.complete())}))}});return t?o.pipe(Ve(t)):o}var Np=["addListener","removeListener"],Ap=["addEventListener","removeEventListener"],Op=["on","off"];function oi(e,t,n,r){if(g(n)&&(r=n,n=void 0),r)return oi(e,t,n).pipe(Ve(r));let[o,i]=Pp(e)?Ap.map(s=>a=>e[s](t,a,n)):Rp(e)?Np.map(Mu(e,t)):Fp(e)?Op.map(Mu(e,t)):[];if(!o&&Ot(e))return le(s=>oi(s,t,n))(T(e));if(!o)throw new TypeError("Invalid event target");return new S(s=>{let a=(...u)=>s.next(1i(a)})}function Mu(e,t){return n=>r=>e[n](t,r)}function Rp(e){return g(e.addListener)&&g(e.removeListener)}function Fp(e){return g(e.on)&&g(e.off)}function Pp(e){return g(e.addEventListener)&&g(e.removeEventListener)}function ct(e=0,t,n=Eu){let r=-1;return t!=null&&(er(t)?n=t:r=t),new S(o=>{let i=Cu(e)?+e-n.now():e;i<0&&(i=0);let s=0;return n.schedule(function(){o.closed||(o.next(s++),0<=r?this.schedule(void 0,r):o.complete())},i)})}function kp(...e){let t=Ie(e),n=yu(e,1/0),r=e;return r.length?r.length===1?T(r[0]):ln(n)(De(r,t)):it}function lt(e,t){return y((n,r)=>{let o=0;n.subscribe(v(r,i=>e.call(t,i,o++)&&r.next(i)))})}function xu(e){return y((t,n)=>{let r=!1,o=null,i=null,s=!1,a=()=>{if(i?.unsubscribe(),i=null,r){r=!1;let c=o;o=null,n.next(c)}s&&n.complete()},u=()=>{i=null,s&&n.complete()};t.subscribe(v(n,c=>{r=!0,o=c,i||T(e(c)).subscribe(i=v(n,a,u))},()=>{s=!0,(!r||!i||i.closed)&&n.complete()}))})}function Lp(e,t=at){return xu(()=>ct(e,t))}function ii(e){return y((t,n)=>{let r=null,o=!1,i;r=t.subscribe(v(n,void 0,void 0,s=>{i=T(e(s,ii(e)(t))),r?(r.unsubscribe(),r=null,i.subscribe(n)):o=!0})),o&&(r.unsubscribe(),r=null,i.subscribe(n))})}function Su(e,t,n,r,o){return(i,s)=>{let a=n,u=t,c=0;i.subscribe(v(s,l=>{let d=c++;u=a?e(u,l,d):(a=!0,l),r&&s.next(u)},o&&(()=>{a&&s.next(u),s.complete()})))}}function jp(e,t){return g(t)?le(e,t,1):le(e,1)}function Tu(e,t=at){return y((n,r)=>{let o=null,i=null,s=null,a=()=>{if(o){o.unsubscribe(),o=null;let c=i;i=null,r.next(c)}};function u(){let c=s+e,l=t.now();if(l{i=c,s=t.now(),o||(o=t.schedule(u,e),r.add(o))},()=>{a(),r.complete()},void 0,()=>{i=o=null}))})}function dn(e){return y((t,n)=>{let r=!1;t.subscribe(v(n,o=>{r=!0,n.next(o)},()=>{r||n.next(e),n.complete()}))})}function dt(e){return e<=0?()=>it:y((t,n)=>{let r=0;t.subscribe(v(n,o=>{++r<=e&&(n.next(o),e<=r&&n.complete())}))})}function Nu(){return y((e,t)=>{e.subscribe(v(t,tt))})}function si(e){return ve(()=>e)}function ai(e,t){return t?n=>Pt(t.pipe(dt(1),Nu()),n.pipe(ai(e))):le((n,r)=>T(e(n,r)).pipe(dt(1),si(n)))}function Vp(e,t=at){let n=ct(e,t);return ai(()=>n)}function Bp(e,t=B){return e=e??Hp,y((n,r)=>{let o,i=!0;n.subscribe(v(r,s=>{let a=t(s);(i||!e(o,a))&&(i=!1,o=a,r.next(s))}))})}function Hp(e,t){return e===t}function ur(e=$p){return y((t,n)=>{let r=!1;t.subscribe(v(n,o=>{r=!0,n.next(o)},()=>r?n.complete():n.error(e())))})}function $p(){return new ut}function Up(e){return y((t,n)=>{try{t.subscribe(n)}finally{n.add(e)}})}function Au(e,t){let n=arguments.length>=2;return r=>r.pipe(e?lt((o,i)=>e(o,i,r)):B,dt(1),n?dn(t):ur(()=>new ut))}function ui(e){return e<=0?()=>it:y((t,n)=>{let r=[];t.subscribe(v(n,o=>{r.push(o),e{for(let o of r)n.next(o);n.complete()},void 0,()=>{r=null}))})}function zp(e,t){let n=arguments.length>=2;return r=>r.pipe(e?lt((o,i)=>e(o,i,r)):B,ui(1),n?dn(t):ur(()=>new ut))}function Gp(e=1/0){let t;e&&typeof e=="object"?t=e:t={count:e};let{count:n=1/0,delay:r,resetOnSuccess:o=!1}=t;return n<=0?B:y((i,s)=>{let a=0,u,c=()=>{let l=!1;u=i.subscribe(v(s,d=>{o&&(a=0),s.next(d)},void 0,d=>{if(a++{u?(u.unsubscribe(),u=null,c()):l=!0};if(r!=null){let f=typeof r=="number"?ct(r):T(r(d,a)),h=v(s,()=>{h.unsubscribe(),p()},()=>{s.complete()});f.subscribe(h)}else p()}else s.error(d)})),l&&(u.unsubscribe(),u=null,c())};c()})}function Ou(e,t){return y(Su(e,t,arguments.length>=2,!0))}function li(e={}){let{connector:t=()=>new ie,resetOnError:n=!0,resetOnComplete:r=!0,resetOnRefCountZero:o=!0}=e;return i=>{let s,a,u,c=0,l=!1,d=!1,p=()=>{a?.unsubscribe(),a=void 0},f=()=>{p(),s=u=void 0,l=d=!1},h=()=>{let m=s;f(),m?.unsubscribe()};return y((m,A)=>{c++,!d&&!l&&p();let b=u=u??t();A.add(()=>{c--,c===0&&!d&&!l&&(a=ci(h,o))}),b.subscribe(A),!s&&c>0&&(s=new Te({next:O=>b.next(O),error:O=>{d=!0,p(),a=ci(f,n,O),b.error(O)},complete:()=>{l=!0,p(),a=ci(f,r),b.complete()}}),T(m).subscribe(s))})(i)}}function ci(e,t,...n){if(t===!0){e();return}if(t===!1)return;let r=new Te({next:()=>{r.unsubscribe(),e()}});return T(t(...n)).subscribe(r)}function Ru(e,t,n){let r,o=!1;return e&&typeof e=="object"?{bufferSize:r=1/0,windowTime:t=1/0,refCount:o=!1,scheduler:n}=e:r=e??1/0,li({connector:()=>new nr(r,t,n),resetOnError:!0,resetOnComplete:!1,resetOnRefCountZero:o})}function Wp(e){return lt((t,n)=>e<=n)}function qp(...e){let t=Ie(e);return y((n,r)=>{(t?Pt(e,n,t):Pt(e,n)).subscribe(r)})}function Fu(e,t){return y((n,r)=>{let o=null,i=0,s=!1,a=()=>s&&!o&&r.complete();n.subscribe(v(r,u=>{o?.unsubscribe();let c=0,l=i++;T(e(u,l)).subscribe(o=v(r,d=>r.next(t?t(u,d,l,c++):d),()=>{o=null,a()}))},()=>{s=!0,a()}))})}function Zp(e){return y((t,n)=>{T(e).subscribe(v(n,()=>n.complete(),tt)),!n.closed&&t.subscribe(n)})}function Yp(e,t=!1){return y((n,r)=>{let o=0;n.subscribe(v(r,i=>{let s=e(i,o++);(s||t)&&r.next(i),!s&&r.complete()}))})}function Pu(e,t,n){let r=g(e)||t||n?{next:e,error:t,complete:n}:e;return r?y((o,i)=>{var s;(s=r.subscribe)===null||s===void 0||s.call(r);let a=!0;o.subscribe(v(i,u=>{var c;(c=r.next)===null||c===void 0||c.call(r,u),i.next(u)},()=>{var u;a=!1,(u=r.complete)===null||u===void 0||u.call(r),i.complete()},u=>{var c;a=!1,(c=r.error)===null||c===void 0||c.call(r,u),i.error(u)},()=>{var u,c;a&&((u=r.unsubscribe)===null||u===void 0||u.call(r)),(c=r.finalize)===null||c===void 0||c.call(r)}))}):B}function ku(e,t){return Object.is(e,t)}var j=null,fn=!1,cr=1,se=Symbol("SIGNAL");function _(e){let t=j;return j=e,t}function Lu(){return j}function Qp(){return fn}var kt={version:0,lastCleanEpoch:0,dirty:!1,producerNode:void 0,producerLastReadVersion:void 0,producerIndexOfThis:void 0,nextProducerIndex:0,liveConsumerNode:void 0,liveConsumerIndexOfThis:void 0,consumerAllowSignalWrites:!1,consumerIsAlwaysLive:!1,producerMustRecompute:()=>!1,producerRecomputeValue:()=>{},consumerMarkedDirty:()=>{},consumerOnSignalRead:()=>{}};function hi(e){if(fn)throw new Error("");if(j===null)return;j.consumerOnSignalRead(e);let t=j.nextProducerIndex++;if(gr(j),te.nextProducerIndex;)e.producerNode.pop(),e.producerLastReadVersion.pop(),e.producerIndexOfThis.pop()}}function fr(e){gr(e);for(let t=0;t0}function gr(e){e.producerNode??=[],e.producerIndexOfThis??=[],e.producerLastReadVersion??=[]}function Uu(e){e.liveConsumerNode??=[],e.liveConsumerIndexOfThis??=[]}function zu(e){return e.producerNode!==void 0}function gi(e){let t=Object.create(Jp);t.computation=e;let n=()=>{if(ju(t),hi(t),t.value===lr)throw t.error;return t.value};return n[se]=t,n}var di=Symbol("UNSET"),fi=Symbol("COMPUTING"),lr=Symbol("ERRORED"),Jp=ye(me({},kt),{value:di,dirty:!0,error:null,equal:ku,producerMustRecompute(e){return e.value===di||e.value===fi},producerRecomputeValue(e){if(e.value===fi)throw new Error("Detected cycle in computations.");let t=e.value;e.value=fi;let n=hn(e),r;try{r=e.computation()}catch(o){r=lr,e.error=o}finally{dr(e,n)}if(t!==di&&t!==lr&&r!==lr&&e.equal(t,r)){e.value=t;return}e.value=r,e.version++}});function Xp(){throw new Error}var Gu=Xp;function Wu(){Gu()}function qu(e){Gu=e}var eh=null;function Zu(e){let t=Object.create(Qu);t.value=e;let n=()=>(hi(t),t.value);return n[se]=t,n}function mi(e,t){Bu()||Wu(),e.equal(e.value,t)||(e.value=t,th(e))}function Yu(e,t){Bu()||Wu(),mi(e,t(e.value))}var Qu=ye(me({},kt),{equal:ku,value:void 0});function th(e){e.version++,Kp(),Vu(e),eh?.()}function Ku(e,t,n){let r=Object.create(nh);n&&(r.consumerAllowSignalWrites=!0),r.fn=e,r.schedule=t;let o=u=>{r.cleanupFn=u};function i(u){return u.fn===null&&u.schedule===null}function s(u){i(u)||(pr(u),u.cleanupFn(),u.fn=null,u.schedule=null,u.cleanupFn=pi)}let a=()=>{if(r.fn===null)return;if(Qp())throw new Error("Schedulers cannot synchronously execute watches while scheduling.");if(r.dirty=!1,r.hasRun&&!fr(r))return;r.hasRun=!0;let u=hn(r);try{r.cleanupFn(),r.cleanupFn=pi,r.fn(o)}finally{dr(r,u)}};return r.ref={notify:()=>Hu(r),run:a,cleanup:()=>r.cleanupFn(),destroy:()=>s(r),[se]:r},r.ref}var pi=()=>{},nh=ye(me({},kt),{consumerIsAlwaysLive:!0,consumerAllowSignalWrites:!1,consumerMarkedDirty:e=>{e.schedule!==null&&e.schedule(e.ref)},hasRun:!1,cleanupFn:pi});var $c="https://g.co/ng/security#xss",x=class extends Error{constructor(t,n){super(Uc(t,n)),this.code=t}};function Uc(e,t){return`${`NG0${Math.abs(e)}`}${t?": "+t:""}`}function _n(e){return{toString:e}.toString()}var mr="__parameters__";function rh(e){return function(...n){if(e){let r=e(...n);for(let o in r)this[o]=r[o]}}}function zc(e,t,n){return _n(()=>{let r=rh(t);function o(...i){if(this instanceof o)return r.apply(this,i),this;let s=new o(...i);return a.annotation=s,a;function a(u,c,l){let d=u.hasOwnProperty(mr)?u[mr]:Object.defineProperty(u,mr,{value:[]})[mr];for(;d.length<=l;)d.push(null);return(d[l]=d[l]||[]).push(s),u}}return n&&(o.prototype=Object.create(n.prototype)),o.prototype.ngMetadataName=e,o.annotationCls=o,o})}var Ue=globalThis;function R(e){for(let t in e)if(e[t]===R)return t;throw Error("Could not find renamed property on target object.")}function oh(e,t){for(let n in t)t.hasOwnProperty(n)&&!e.hasOwnProperty(n)&&(e[n]=t[n])}function J(e){if(typeof e=="string")return e;if(Array.isArray(e))return"["+e.map(J).join(", ")+"]";if(e==null)return""+e;if(e.overriddenName)return`${e.overriddenName}`;if(e.name)return`${e.name}`;let t=e.toString();if(t==null)return""+t;let n=t.indexOf(` +`);return n===-1?t:t.substring(0,n)}function Ai(e,t){return e==null||e===""?t===null?"":t:t==null||t===""?e:e+" "+t}var ih=R({__forward_ref__:R});function Gc(e){return e.__forward_ref__=Gc,e.toString=function(){return J(this())},e}function H(e){return Wc(e)?e():e}function Wc(e){return typeof e=="function"&&e.hasOwnProperty(ih)&&e.__forward_ref__===Gc}function F(e){return{token:e.token,providedIn:e.providedIn||null,factory:e.factory,value:void 0}}function qc(e){return{providers:e.providers||[],imports:e.imports||[]}}function io(e){return Ju(e,Zc)||Ju(e,Yc)}function AS(e){return io(e)!==null}function Ju(e,t){return e.hasOwnProperty(t)?e[t]:null}function sh(e){let t=e&&(e[Zc]||e[Yc]);return t||null}function Xu(e){return e&&(e.hasOwnProperty(ec)||e.hasOwnProperty(ah))?e[ec]:null}var Zc=R({\u0275prov:R}),ec=R({\u0275inj:R}),Yc=R({ngInjectableDef:R}),ah=R({ngInjectorDef:R}),N=class{constructor(t,n){this._desc=t,this.ngMetadataName="InjectionToken",this.\u0275prov=void 0,typeof n=="number"?this.__NG_ELEMENT_ID__=n:n!==void 0&&(this.\u0275prov=F({token:this,providedIn:n.providedIn||"root",factory:n.factory}))}get multi(){return this}toString(){return`InjectionToken ${this._desc}`}};function Qc(e){return e&&!!e.\u0275providers}var uh=R({\u0275cmp:R}),ch=R({\u0275dir:R}),lh=R({\u0275pipe:R}),dh=R({\u0275mod:R}),Nr=R({\u0275fac:R}),mn=R({__NG_ELEMENT_ID__:R}),tc=R({__NG_ENV_ID__:R});function ht(e){return typeof e=="string"?e:e==null?"":String(e)}function fh(e){return typeof e=="function"?e.name||e.toString():typeof e=="object"&&e!=null&&typeof e.type=="function"?e.type.name||e.type.toString():ht(e)}function ph(e,t){let n=t?`. Dependency path: ${t.join(" > ")} > ${e}`:"";throw new x(-200,e)}function zs(e,t){throw new x(-201,!1)}var M=function(e){return e[e.Default=0]="Default",e[e.Host=1]="Host",e[e.Self=2]="Self",e[e.SkipSelf=4]="SkipSelf",e[e.Optional=8]="Optional",e}(M||{}),Oi;function Kc(){return Oi}function K(e){let t=Oi;return Oi=e,t}function Jc(e,t,n){let r=io(e);if(r&&r.providedIn=="root")return r.value===void 0?r.value=r.factory():r.value;if(n&M.Optional)return null;if(t!==void 0)return t;zs(e,"Injector")}var hh={},yn=hh,Ri="__NG_DI_FLAG__",Ar="ngTempTokenPath",gh="ngTokenPath",mh=/\n/gm,yh="\u0275",nc="__source",Ht;function vh(){return Ht}function $e(e){let t=Ht;return Ht=e,t}function Dh(e,t=M.Default){if(Ht===void 0)throw new x(-203,!1);return Ht===null?Jc(e,void 0,t):Ht.get(e,t&M.Optional?null:void 0,t)}function G(e,t=M.Default){return(Kc()||Dh)(H(e),t)}function D(e,t=M.Default){return G(e,so(t))}function so(e){return typeof e>"u"||typeof e=="number"?e:0|(e.optional&&8)|(e.host&&1)|(e.self&&2)|(e.skipSelf&&4)}function Fi(e){let t=[];for(let n=0;n ");else if(typeof t=="object"){let i=[];for(let s in t)if(t.hasOwnProperty(s)){let a=t[s];i.push(s+":"+(typeof a=="string"?JSON.stringify(a):J(a)))}o=`{${i.join(", ")}}`}return`${n}${r?"("+r+")":""}[${o}]: ${e.replace(mh,` + `)}`}var Ch=Xc(zc("Optional"),8);var bh=Xc(zc("SkipSelf"),4);function gt(e,t){let n=e.hasOwnProperty(Nr);return n?e[Nr]:null}function _h(e,t,n){if(e.length!==t.length)return!1;for(let r=0;rArray.isArray(n)?Gs(n,t):t(n))}function el(e,t,n){t>=e.length?e.push(n):e.splice(t,0,n)}function Or(e,t){return t>=e.length-1?e.pop():e.splice(t,1)[0]}function xh(e,t){let n=[];for(let r=0;rt;){let i=o-2;e[o]=e[i],o--}e[t]=n,e[t+1]=r}}function ao(e,t,n){let r=Mn(e,t);return r>=0?e[r|1]=n:(r=~r,Sh(e,r,t,n)),r}function yi(e,t){let n=Mn(e,t);if(n>=0)return e[n|1]}function Mn(e,t){return Th(e,t,1)}function Th(e,t,n){let r=0,o=e.length>>n;for(;o!==r;){let i=r+(o-r>>1),s=e[i<t?o=i:r=i+1}return~(o<t){s=i-1;break}}}for(;i-1){let i;for(;++oi?d="":d=o[l+1].toLowerCase(),r&2&&c!==d){if(de(r))return!1;s=!0}}}}return de(r)||s}function de(e){return(e&1)===0}function Ph(e,t,n,r){if(t===null)return-1;let o=0;if(r||!n){let i=!1;for(;o-1)for(n++;n0?'="'+a+'"':"")+"]"}else r&8?o+="."+s:r&4&&(o+=" "+s);else o!==""&&!de(s)&&(t+=oc(i,o),o=""),r=s,i=i||!de(r);n++}return o!==""&&(t+=oc(i,o)),t}function Hh(e){return e.map(Bh).join(",")}function $h(e){let t=[],n=[],r=1,o=2;for(;r{let t=ll(e),n=ye(me({},t),{decls:e.decls,vars:e.vars,template:e.template,consts:e.consts||null,ngContentSelectors:e.ngContentSelectors,onPush:e.changeDetection===rl.OnPush,directiveDefs:null,pipeDefs:null,dependencies:t.standalone&&e.dependencies||null,getStandaloneInjector:null,signals:e.signals??!1,data:e.data||{},encapsulation:e.encapsulation||vn.Emulated,styles:e.styles||Z,_:null,schemas:e.schemas||null,tView:null,id:""});dl(n);let r=e.dependencies;return n.directiveDefs=sc(r,!1),n.pipeDefs=sc(r,!0),n.id=Wh(n),n})}function Uh(e){return qe(e)||qs(e)}function zh(e){return e!==null}function al(e){return _n(()=>({type:e.type,bootstrap:e.bootstrap||Z,declarations:e.declarations||Z,imports:e.imports||Z,exports:e.exports||Z,transitiveCompileScopes:null,schemas:e.schemas||null,id:e.id||null}))}function ic(e,t){if(e==null)return Ne;let n={};for(let r in e)if(e.hasOwnProperty(r)){let o=e[r],i,s,a=We.None;Array.isArray(o)?(a=o[0],i=o[1],s=o[2]??i):(i=o,s=o),t?(n[i]=a!==We.None?[r,a]:r,t[i]=s):n[i]=r}return n}function uo(e){return _n(()=>{let t=ll(e);return dl(t),t})}function co(e){return{type:e.type,name:e.name,factory:null,pure:e.pure!==!1,standalone:e.standalone===!0,onDestroy:e.type.prototype.ngOnDestroy||null}}function qe(e){return e[uh]||null}function qs(e){return e[ch]||null}function ul(e){return e[lh]||null}function Gh(e){let t=qe(e)||qs(e)||ul(e);return t!==null?t.standalone:!1}function cl(e,t){let n=e[dh]||null;if(!n&&t===!0)throw new Error(`Type ${J(e)} does not have '\u0275mod' property.`);return n}function ll(e){let t={};return{type:e.type,providersResolver:null,factory:null,hostBindings:e.hostBindings||null,hostVars:e.hostVars||0,hostAttrs:e.hostAttrs||null,contentQueries:e.contentQueries||null,declaredInputs:t,inputTransforms:null,inputConfig:e.inputs||Ne,exportAs:e.exportAs||null,standalone:e.standalone===!0,signals:e.signals===!0,selectors:e.selectors||Z,viewQuery:e.viewQuery||null,features:e.features||null,setInput:null,findHostDirectiveDefs:null,hostDirectives:null,inputs:ic(e.inputs,t),outputs:ic(e.outputs),debugInfo:null}}function dl(e){e.features?.forEach(t=>t(e))}function sc(e,t){if(!e)return null;let n=t?ul:Uh;return()=>(typeof e=="function"?e():e).map(r=>n(r)).filter(zh)}function Wh(e){let t=0,n=[e.selectors,e.ngContentSelectors,e.hostVars,e.hostAttrs,e.consts,e.vars,e.decls,e.encapsulation,e.standalone,e.signals,e.exportAs,JSON.stringify(e.inputs),JSON.stringify(e.outputs),Object.getOwnPropertyNames(e.type.prototype),!!e.contentQueries,!!e.viewQuery].join("|");for(let o of n)t=Math.imul(31,t)+o.charCodeAt(0)<<0;return t+=2147483648,"c"+t}function qh(e){return{\u0275providers:e}}function Zh(...e){return{\u0275providers:fl(!0,e),\u0275fromNgModule:!0}}function fl(e,...t){let n=[],r=new Set,o,i=s=>{n.push(s)};return Gs(t,s=>{let a=s;ki(a,i,[],r)&&(o||=[],o.push(a))}),o!==void 0&&pl(o,i),n}function pl(e,t){for(let n=0;n{t(i,r)})}}function ki(e,t,n,r){if(e=H(e),!e)return!1;let o=null,i=Xu(e),s=!i&&qe(e);if(!i&&!s){let u=e.ngModule;if(i=Xu(u),i)o=u;else return!1}else{if(s&&!s.standalone)return!1;o=e}let a=r.has(o);if(s){if(a)return!1;if(r.add(o),s.dependencies){let u=typeof s.dependencies=="function"?s.dependencies():s.dependencies;for(let c of u)ki(c,t,n,r)}}else if(i){if(i.imports!=null&&!a){r.add(o);let c;try{Gs(i.imports,l=>{ki(l,t,n,r)&&(c||=[],c.push(l))})}finally{}c!==void 0&&pl(c,t)}if(!a){let c=gt(o)||(()=>new o);t({provide:o,useFactory:c,deps:Z},o),t({provide:nl,useValue:o,multi:!0},o),t({provide:Rr,useValue:()=>G(o),multi:!0},o)}let u=i.providers;if(u!=null&&!a){let c=e;Zs(u,l=>{t(l,c)})}}else return!1;return o!==e&&e.providers!==void 0}function Zs(e,t){for(let n of e)Qc(n)&&(n=n.\u0275providers),Array.isArray(n)?Zs(n,t):t(n)}var Yh=R({provide:String,useValue:R});function hl(e){return e!==null&&typeof e=="object"&&Yh in e}function Qh(e){return!!(e&&e.useExisting)}function Kh(e){return!!(e&&e.useFactory)}function Ut(e){return typeof e=="function"}function Jh(e){return!!e.useClass}var gl=new N(""),Cr={},Xh={},vi;function Ys(){return vi===void 0&&(vi=new Fr),vi}var Ze=class{},In=class extends Ze{get destroyed(){return this._destroyed}constructor(t,n,r,o){super(),this.parent=n,this.source=r,this.scopes=o,this.records=new Map,this._ngOnDestroyHooks=new Set,this._onDestroyHooks=[],this._destroyed=!1,ji(t,s=>this.processProvider(s)),this.records.set(tl,Lt(void 0,this)),o.has("environment")&&this.records.set(Ze,Lt(void 0,this));let i=this.records.get(gl);i!=null&&typeof i.value=="string"&&this.scopes.add(i.value),this.injectorDefTypes=new Set(this.get(nl,Z,M.Self))}destroy(){this.assertNotDestroyed(),this._destroyed=!0;let t=_(null);try{for(let r of this._ngOnDestroyHooks)r.ngOnDestroy();let n=this._onDestroyHooks;this._onDestroyHooks=[];for(let r of n)r()}finally{this.records.clear(),this._ngOnDestroyHooks.clear(),this.injectorDefTypes.clear(),_(t)}}onDestroy(t){return this.assertNotDestroyed(),this._onDestroyHooks.push(t),()=>this.removeOnDestroy(t)}runInContext(t){this.assertNotDestroyed();let n=$e(this),r=K(void 0),o;try{return t()}finally{$e(n),K(r)}}get(t,n=yn,r=M.Default){if(this.assertNotDestroyed(),t.hasOwnProperty(tc))return t[tc](this);r=so(r);let o,i=$e(this),s=K(void 0);try{if(!(r&M.SkipSelf)){let u=this.records.get(t);if(u===void 0){let c=og(t)&&io(t);c&&this.injectableDefInScope(c)?u=Lt(Li(t),Cr):u=null,this.records.set(t,u)}if(u!=null)return this.hydrate(t,u)}let a=r&M.Self?Ys():this.parent;return n=r&M.Optional&&n===yn?null:n,a.get(t,n)}catch(a){if(a.name==="NullInjectorError"){if((a[Ar]=a[Ar]||[]).unshift(J(t)),i)throw a;return wh(a,t,"R3InjectorError",this.source)}else throw a}finally{K(s),$e(i)}}resolveInjectorInitializers(){let t=_(null),n=$e(this),r=K(void 0),o;try{let i=this.get(Rr,Z,M.Self);for(let s of i)s()}finally{$e(n),K(r),_(t)}}toString(){let t=[],n=this.records;for(let r of n.keys())t.push(J(r));return`R3Injector[${t.join(", ")}]`}assertNotDestroyed(){if(this._destroyed)throw new x(205,!1)}processProvider(t){t=H(t);let n=Ut(t)?t:H(t&&t.provide),r=tg(t);if(!Ut(t)&&t.multi===!0){let o=this.records.get(n);o||(o=Lt(void 0,Cr,!0),o.factory=()=>Fi(o.multi),this.records.set(n,o)),n=t,o.multi.push(t)}this.records.set(n,r)}hydrate(t,n){let r=_(null);try{return n.value===Cr&&(n.value=Xh,n.value=n.factory()),typeof n.value=="object"&&n.value&&rg(n.value)&&this._ngOnDestroyHooks.add(n.value),n.value}finally{_(r)}}injectableDefInScope(t){if(!t.providedIn)return!1;let n=H(t.providedIn);return typeof n=="string"?n==="any"||this.scopes.has(n):this.injectorDefTypes.has(n)}removeOnDestroy(t){let n=this._onDestroyHooks.indexOf(t);n!==-1&&this._onDestroyHooks.splice(n,1)}};function Li(e){let t=io(e),n=t!==null?t.factory:gt(e);if(n!==null)return n;if(e instanceof N)throw new x(204,!1);if(e instanceof Function)return eg(e);throw new x(204,!1)}function eg(e){if(e.length>0)throw new x(204,!1);let n=sh(e);return n!==null?()=>n.factory(e):()=>new e}function tg(e){if(hl(e))return Lt(void 0,e.useValue);{let t=ml(e);return Lt(t,Cr)}}function ml(e,t,n){let r;if(Ut(e)){let o=H(e);return gt(o)||Li(o)}else if(hl(e))r=()=>H(e.useValue);else if(Kh(e))r=()=>e.useFactory(...Fi(e.deps||[]));else if(Qh(e))r=()=>G(H(e.useExisting));else{let o=H(e&&(e.useClass||e.provide));if(ng(e))r=()=>new o(...Fi(e.deps));else return gt(o)||Li(o)}return r}function Lt(e,t,n=!1){return{factory:e,value:t,multi:n?[]:void 0}}function ng(e){return!!e.deps}function rg(e){return e!==null&&typeof e=="object"&&typeof e.ngOnDestroy=="function"}function og(e){return typeof e=="function"||typeof e=="object"&&e instanceof N}function ji(e,t){for(let n of e)Array.isArray(n)?ji(n,t):n&&Qc(n)?ji(n.\u0275providers,t):t(n)}function RS(e,t){e instanceof In&&e.assertNotDestroyed();let n,r=$e(e),o=K(void 0);try{return t()}finally{$e(r),K(o)}}function yl(){return Kc()!==void 0||vh()!=null}function Qs(e){if(!yl())throw new x(-203,!1)}function ig(e){return typeof e=="function"}var Me=0,E=1,w=2,W=3,he=4,X=5,zt=6,Pr=7,U=8,Gt=9,Ce=10,k=11,wn=12,ac=13,Xt=14,ne=15,mt=16,jt=17,Ae=18,lo=19,vl=20,ze=21,br=22,ae=23,V=25,Ks=1;var yt=7,kr=8,Wt=9,z=10,Lr=function(e){return e[e.None=0]="None",e[e.HasTransplantedViews=2]="HasTransplantedViews",e}(Lr||{});function Ge(e){return Array.isArray(e)&&typeof e[Ks]=="object"}function Fe(e){return Array.isArray(e)&&e[Ks]===!0}function Js(e){return(e.flags&4)!==0}function fo(e){return e.componentOffset>-1}function po(e){return(e.flags&1)===1}function Oe(e){return!!e.template}function Vi(e){return(e[w]&512)!==0}var Bi=class{constructor(t,n,r){this.previousValue=t,this.currentValue=n,this.firstChange=r}isFirstChange(){return this.firstChange}};function Dl(e,t,n,r){t!==null?t.applyValueToInputSignal(t,r):e[n]=r}function ho(){return Il}function Il(e){return e.type.prototype.ngOnChanges&&(e.setInput=ag),sg}ho.ngInherit=!0;function sg(){let e=El(this),t=e?.current;if(t){let n=e.previous;if(n===Ne)e.previous=t;else for(let r in t)n[r]=t[r];e.current=null,this.ngOnChanges(t)}}function ag(e,t,n,r,o){let i=this.declaredInputs[r],s=El(e)||ug(e,{previous:Ne,current:null}),a=s.current||(s.current={}),u=s.previous,c=u[i];a[i]=new Bi(c&&c.currentValue,n,u===Ne),Dl(e,t,o,n)}var wl="__ngSimpleChanges__";function El(e){return e[wl]||null}function ug(e,t){return e[wl]=t}var uc=null;var we=function(e,t,n){uc?.(e,t,n)},Cl="svg",cg="math";function be(e){for(;Array.isArray(e);)e=e[Me];return e}function lg(e){for(;Array.isArray(e);){if(typeof e[Ks]=="object")return e;e=e[Me]}return null}function bl(e,t){return be(t[e])}function ue(e,t){return be(t[e.index])}function Xs(e,t){return e.data[t]}function ea(e,t){return e[t]}function Je(e,t){let n=t[e];return Ge(n)?n:n[Me]}function dg(e){return(e[w]&4)===4}function ta(e){return(e[w]&128)===128}function fg(e){return Fe(e[W])}function Ye(e,t){return t==null?null:e[t]}function _l(e){e[jt]=0}function Ml(e){e[w]&1024||(e[w]|=1024,ta(e)&&mo(e))}function pg(e,t){for(;e>0;)t=t[Xt],e--;return t}function go(e){return!!(e[w]&9216||e[ae]?.dirty)}function Hi(e){e[Ce].changeDetectionScheduler?.notify(8),e[w]&64&&(e[w]|=1024),go(e)&&mo(e)}function mo(e){e[Ce].changeDetectionScheduler?.notify(0);let t=vt(e);for(;t!==null&&!(t[w]&8192||(t[w]|=8192,!ta(t)));)t=vt(t)}function xl(e,t){if((e[w]&256)===256)throw new x(911,!1);e[ze]===null&&(e[ze]=[]),e[ze].push(t)}function hg(e,t){if(e[ze]===null)return;let n=e[ze].indexOf(t);n!==-1&&e[ze].splice(n,1)}function vt(e){let t=e[W];return Fe(t)?t[W]:t}var C={lFrame:Pl(null),bindingsEnabled:!0,skipHydrationRootTNode:null};var Sl=!1;function gg(){return C.lFrame.elementDepthCount}function mg(){C.lFrame.elementDepthCount++}function yg(){C.lFrame.elementDepthCount--}function Tl(){return C.bindingsEnabled}function Nl(){return C.skipHydrationRootTNode!==null}function vg(e){return C.skipHydrationRootTNode===e}function Dg(){C.skipHydrationRootTNode=null}function I(){return C.lFrame.lView}function P(){return C.lFrame.tView}function FS(e){return C.lFrame.contextLView=e,e[U]}function PS(e){return C.lFrame.contextLView=null,e}function $(){let e=Al();for(;e!==null&&e.type===64;)e=e.parent;return e}function Al(){return C.lFrame.currentTNode}function Ig(){let e=C.lFrame,t=e.currentTNode;return e.isParent?t:t.parent}function _t(e,t){let n=C.lFrame;n.currentTNode=e,n.isParent=t}function na(){return C.lFrame.isParent}function ra(){C.lFrame.isParent=!1}function wg(){return C.lFrame.contextLView}function Ol(){return Sl}function cc(e){Sl=e}function en(){let e=C.lFrame,t=e.bindingRootIndex;return t===-1&&(t=e.bindingRootIndex=e.tView.bindingStartIndex),t}function Eg(){return C.lFrame.bindingIndex}function Cg(e){return C.lFrame.bindingIndex=e}function Mt(){return C.lFrame.bindingIndex++}function oa(e){let t=C.lFrame,n=t.bindingIndex;return t.bindingIndex=t.bindingIndex+e,n}function bg(){return C.lFrame.inI18n}function _g(e,t){let n=C.lFrame;n.bindingIndex=n.bindingRootIndex=e,$i(t)}function Mg(){return C.lFrame.currentDirectiveIndex}function $i(e){C.lFrame.currentDirectiveIndex=e}function ia(e){let t=C.lFrame.currentDirectiveIndex;return t===-1?null:e[t]}function sa(){return C.lFrame.currentQueryIndex}function yo(e){C.lFrame.currentQueryIndex=e}function xg(e){let t=e[E];return t.type===2?t.declTNode:t.type===1?e[X]:null}function Rl(e,t,n){if(n&M.SkipSelf){let o=t,i=e;for(;o=o.parent,o===null&&!(n&M.Host);)if(o=xg(i),o===null||(i=i[Xt],o.type&10))break;if(o===null)return!1;t=o,e=i}let r=C.lFrame=Fl();return r.currentTNode=t,r.lView=e,!0}function aa(e){let t=Fl(),n=e[E];C.lFrame=t,t.currentTNode=n.firstChild,t.lView=e,t.tView=n,t.contextLView=e,t.bindingIndex=n.bindingStartIndex,t.inI18n=!1}function Fl(){let e=C.lFrame,t=e===null?null:e.child;return t===null?Pl(e):t}function Pl(e){let t={currentTNode:null,isParent:!0,lView:null,tView:null,selectedIndex:-1,contextLView:null,elementDepthCount:0,currentNamespace:null,currentDirectiveIndex:-1,bindingRootIndex:-1,bindingIndex:-1,currentQueryIndex:0,parent:e,child:null,inI18n:!1};return e!==null&&(e.child=t),t}function kl(){let e=C.lFrame;return C.lFrame=e.parent,e.currentTNode=null,e.lView=null,e}var Ll=kl;function ua(){let e=kl();e.isParent=!0,e.tView=null,e.selectedIndex=-1,e.contextLView=null,e.elementDepthCount=0,e.currentDirectiveIndex=-1,e.currentNamespace=null,e.bindingRootIndex=-1,e.bindingIndex=-1,e.currentQueryIndex=0}function Sg(e){return(C.lFrame.contextLView=pg(e,C.lFrame.contextLView))[U]}function Pe(){return C.lFrame.selectedIndex}function Dt(e){C.lFrame.selectedIndex=e}function xn(){let e=C.lFrame;return Xs(e.tView,e.selectedIndex)}function kS(){C.lFrame.currentNamespace=Cl}function LS(){Tg()}function Tg(){C.lFrame.currentNamespace=null}function Ng(){return C.lFrame.currentNamespace}var jl=!0;function vo(){return jl}function Do(e){jl=e}function Ag(e,t,n){let{ngOnChanges:r,ngOnInit:o,ngDoCheck:i}=t.type.prototype;if(r){let s=Il(t);(n.preOrderHooks??=[]).push(e,s),(n.preOrderCheckHooks??=[]).push(e,s)}o&&(n.preOrderHooks??=[]).push(0-e,o),i&&((n.preOrderHooks??=[]).push(e,i),(n.preOrderCheckHooks??=[]).push(e,i))}function Io(e,t){for(let n=t.directiveStart,r=t.directiveEnd;n=r)break}else t[u]<0&&(e[jt]+=65536),(a>14>16&&(e[w]&3)===t&&(e[w]+=16384,lc(a,i)):lc(a,i)}var $t=-1,It=class{constructor(t,n,r){this.factory=t,this.resolving=!1,this.canSeeViewProviders=n,this.injectImpl=r}};function Rg(e){return e instanceof It}function Fg(e){return(e.flags&8)!==0}function Pg(e){return(e.flags&16)!==0}var Ii={},Ui=class{constructor(t,n){this.injector=t,this.parentInjector=n}get(t,n,r){r=so(r);let o=this.injector.get(t,Ii,r);return o!==Ii||n===Ii?o:this.parentInjector.get(t,n,r)}};function Bl(e){return e!==$t}function jr(e){return e&32767}function kg(e){return e>>16}function Vr(e,t){let n=kg(e),r=t;for(;n>0;)r=r[Xt],n--;return r}var zi=!0;function Br(e){let t=zi;return zi=e,t}var Lg=256,Hl=Lg-1,$l=5,jg=0,Ee={};function Vg(e,t,n){let r;typeof n=="string"?r=n.charCodeAt(0)||0:n.hasOwnProperty(mn)&&(r=n[mn]),r==null&&(r=n[mn]=jg++);let o=r&Hl,i=1<>$l)]|=i}function Hr(e,t){let n=Ul(e,t);if(n!==-1)return n;let r=t[E];r.firstCreatePass&&(e.injectorIndex=t.length,wi(r.data,e),wi(t,null),wi(r.blueprint,null));let o=ca(e,t),i=e.injectorIndex;if(Bl(o)){let s=jr(o),a=Vr(o,t),u=a[E].data;for(let c=0;c<8;c++)t[i+c]=a[s+c]|u[s+c]}return t[i+8]=o,i}function wi(e,t){e.push(0,0,0,0,0,0,0,0,t)}function Ul(e,t){return e.injectorIndex===-1||e.parent&&e.parent.injectorIndex===e.injectorIndex||t[e.injectorIndex+8]===null?-1:e.injectorIndex}function ca(e,t){if(e.parent&&e.parent.injectorIndex!==-1)return e.parent.injectorIndex;let n=0,r=null,o=t;for(;o!==null;){if(r=Zl(o),r===null)return $t;if(n++,o=o[Xt],r.injectorIndex!==-1)return r.injectorIndex|n<<16}return $t}function Gi(e,t,n){Vg(e,t,n)}function Bg(e,t){if(t==="class")return e.classes;if(t==="style")return e.styles;let n=e.attrs;if(n){let r=n.length,o=0;for(;o>20,d=r?a:a+l,p=o?a+l:c;for(let f=d;f=u&&h.type===n)return f}if(o){let f=s[u];if(f&&Oe(f)&&f.type===n)return u}return null}function wt(e,t,n,r){let o=e[n],i=t.data;if(Rg(o)){let s=o;s.resolving&&ph(fh(i[n]));let a=Br(s.canSeeViewProviders);s.resolving=!0;let u,c=s.injectImpl?K(s.injectImpl):null,l=Rl(e,r,M.Default);try{o=e[n]=s.factory(void 0,i,e,r),t.firstCreatePass&&n>=r.directiveStart&&Ag(n,i[n],t)}finally{c!==null&&K(c),Br(a),s.resolving=!1,Ll()}}return o}function $g(e){if(typeof e=="string")return e.charCodeAt(0)||0;let t=e.hasOwnProperty(mn)?e[mn]:void 0;return typeof t=="number"?t>=0?t&Hl:Ug:t}function dc(e,t,n){let r=1<>$l)]&r)}function fc(e,t){return!(e&M.Self)&&!(e&M.Host&&t)}var pt=class{constructor(t,n){this._tNode=t,this._lView=n}get(t,n,r){return Wl(this._tNode,this._lView,t,so(r),n)}};function Ug(){return new pt($(),I())}function jS(e){return _n(()=>{let t=e.prototype.constructor,n=t[Nr]||Wi(t),r=Object.prototype,o=Object.getPrototypeOf(e.prototype).constructor;for(;o&&o!==r;){let i=o[Nr]||Wi(o);if(i&&i!==n)return i;o=Object.getPrototypeOf(o)}return i=>new i})}function Wi(e){return Wc(e)?()=>{let t=Wi(H(e));return t&&t()}:gt(e)}function zg(e,t,n,r,o){let i=e,s=t;for(;i!==null&&s!==null&&s[w]&2048&&!(s[w]&512);){let a=ql(i,s,n,r|M.Self,Ee);if(a!==Ee)return a;let u=i.parent;if(!u){let c=s[vl];if(c){let l=c.get(n,Ee,r);if(l!==Ee)return l}u=Zl(s),s=s[Xt]}i=u}return o}function Zl(e){let t=e[E],n=t.type;return n===2?t.declTNode:n===1?e[X]:null}function Gg(e){return Bg($(),e)}function pc(e,t=null,n=null,r){let o=Yl(e,t,n,r);return o.resolveInjectorInitializers(),o}function Yl(e,t=null,n=null,r,o=new Set){let i=[n||Z,Zh(e)];return r=r||(typeof e=="object"?void 0:J(e)),new In(i,t||Ys(),r||null,o)}var _e=class e{static{this.THROW_IF_NOT_FOUND=yn}static{this.NULL=new Fr}static create(t,n){if(Array.isArray(t))return pc({name:""},n,t,"");{let r=t.name??"";return pc({name:r},t.parent,t.providers,r)}}static{this.\u0275prov=F({token:e,providedIn:"any",factory:()=>G(tl)})}static{this.__NG_ELEMENT_ID__=-1}};var Wg=new N("");Wg.__NG_ELEMENT_ID__=e=>{let t=$();if(t===null)throw new x(204,!1);if(t.type&2)return t.value;if(e&M.Optional)return null;throw new x(204,!1)};var qg="ngOriginalError";function Ei(e){return e[qg]}var Ql=!0,wo=(()=>{class e{static{this.__NG_ELEMENT_ID__=Zg}static{this.__NG_ENV_ID__=n=>n}}return e})(),qi=class extends wo{constructor(t){super(),this._lView=t}onDestroy(t){return xl(this._lView,t),()=>hg(this._lView,t)}};function Zg(){return new qi(I())}var Sn=(()=>{class e{constructor(){this.taskId=0,this.pendingTasks=new Set,this.hasPendingTasks=new on(!1)}get _hasPendingTasks(){return this.hasPendingTasks.value}add(){this._hasPendingTasks||this.hasPendingTasks.next(!0);let n=this.taskId++;return this.pendingTasks.add(n),n}remove(n){this.pendingTasks.delete(n),this.pendingTasks.size===0&&this._hasPendingTasks&&this.hasPendingTasks.next(!1)}ngOnDestroy(){this.pendingTasks.clear(),this._hasPendingTasks&&this.hasPendingTasks.next(!1)}static{this.\u0275prov=F({token:e,providedIn:"root",factory:()=>new e})}}return e})();var Zi=class extends ie{constructor(t=!1){super(),this.destroyRef=void 0,this.pendingTasks=void 0,this.__isAsync=t,yl()&&(this.destroyRef=D(wo,{optional:!0})??void 0,this.pendingTasks=D(Sn,{optional:!0})??void 0)}emit(t){let n=_(null);try{super.next(t)}finally{_(n)}}subscribe(t,n,r){let o=t,i=n||(()=>null),s=r;if(t&&typeof t=="object"){let u=t;o=u.next?.bind(u),i=u.error?.bind(u),s=u.complete?.bind(u)}this.__isAsync&&(i=this.wrapInTimeout(i),o&&(o=this.wrapInTimeout(o)),s&&(s=this.wrapInTimeout(s)));let a=super.subscribe({next:o,error:i,complete:s});return t instanceof L&&t.add(a),a}wrapInTimeout(t){return n=>{let r=this.pendingTasks?.add();setTimeout(()=>{t(n),r!==void 0&&this.pendingTasks?.remove(r)})}}},pe=Zi;function $r(...e){}function Kl(e){let t,n;function r(){e=$r;try{n!==void 0&&typeof cancelAnimationFrame=="function"&&cancelAnimationFrame(n),t!==void 0&&clearTimeout(t)}catch{}}return t=setTimeout(()=>{e(),r()}),typeof requestAnimationFrame=="function"&&(n=requestAnimationFrame(()=>{e(),r()})),()=>r()}function hc(e){return queueMicrotask(()=>e()),()=>{e=$r}}var la="isAngularZone",Ur=la+"_ID",Yg=0,Y=class e{constructor(t){this.hasPendingMacrotasks=!1,this.hasPendingMicrotasks=!1,this.isStable=!0,this.onUnstable=new pe(!1),this.onMicrotaskEmpty=new pe(!1),this.onStable=new pe(!1),this.onError=new pe(!1);let{enableLongStackTrace:n=!1,shouldCoalesceEventChangeDetection:r=!1,shouldCoalesceRunChangeDetection:o=!1,scheduleInRootZone:i=Ql}=t;if(typeof Zone>"u")throw new x(908,!1);Zone.assertZonePatched();let s=this;s._nesting=0,s._outer=s._inner=Zone.current,Zone.TaskTrackingZoneSpec&&(s._inner=s._inner.fork(new Zone.TaskTrackingZoneSpec)),n&&Zone.longStackTraceZoneSpec&&(s._inner=s._inner.fork(Zone.longStackTraceZoneSpec)),s.shouldCoalesceEventChangeDetection=!o&&r,s.shouldCoalesceRunChangeDetection=o,s.callbackScheduled=!1,s.scheduleInRootZone=i,Jg(s)}static isInAngularZone(){return typeof Zone<"u"&&Zone.current.get(la)===!0}static assertInAngularZone(){if(!e.isInAngularZone())throw new x(909,!1)}static assertNotInAngularZone(){if(e.isInAngularZone())throw new x(909,!1)}run(t,n,r){return this._inner.run(t,n,r)}runTask(t,n,r,o){let i=this._inner,s=i.scheduleEventTask("NgZoneEvent: "+o,t,Qg,$r,$r);try{return i.runTask(s,n,r)}finally{i.cancelTask(s)}}runGuarded(t,n,r){return this._inner.runGuarded(t,n,r)}runOutsideAngular(t){return this._outer.run(t)}},Qg={};function da(e){if(e._nesting==0&&!e.hasPendingMicrotasks&&!e.isStable)try{e._nesting++,e.onMicrotaskEmpty.emit(null)}finally{if(e._nesting--,!e.hasPendingMicrotasks)try{e.runOutsideAngular(()=>e.onStable.emit(null))}finally{e.isStable=!0}}}function Kg(e){if(e.isCheckStableRunning||e.callbackScheduled)return;e.callbackScheduled=!0;function t(){Kl(()=>{e.callbackScheduled=!1,Yi(e),e.isCheckStableRunning=!0,da(e),e.isCheckStableRunning=!1})}e.scheduleInRootZone?Zone.root.run(()=>{t()}):e._outer.run(()=>{t()}),Yi(e)}function Jg(e){let t=()=>{Kg(e)},n=Yg++;e._inner=e._inner.fork({name:"angular",properties:{[la]:!0,[Ur]:n,[Ur+n]:!0},onInvokeTask:(r,o,i,s,a,u)=>{if(Xg(u))return r.invokeTask(i,s,a,u);try{return gc(e),r.invokeTask(i,s,a,u)}finally{(e.shouldCoalesceEventChangeDetection&&s.type==="eventTask"||e.shouldCoalesceRunChangeDetection)&&t(),mc(e)}},onInvoke:(r,o,i,s,a,u,c)=>{try{return gc(e),r.invoke(i,s,a,u,c)}finally{e.shouldCoalesceRunChangeDetection&&!e.callbackScheduled&&!em(u)&&t(),mc(e)}},onHasTask:(r,o,i,s)=>{r.hasTask(i,s),o===i&&(s.change=="microTask"?(e._hasPendingMicrotasks=s.microTask,Yi(e),da(e)):s.change=="macroTask"&&(e.hasPendingMacrotasks=s.macroTask))},onHandleError:(r,o,i,s)=>(r.handleError(i,s),e.runOutsideAngular(()=>e.onError.emit(s)),!1)})}function Yi(e){e._hasPendingMicrotasks||(e.shouldCoalesceEventChangeDetection||e.shouldCoalesceRunChangeDetection)&&e.callbackScheduled===!0?e.hasPendingMicrotasks=!0:e.hasPendingMicrotasks=!1}function gc(e){e._nesting++,e.isStable&&(e.isStable=!1,e.onUnstable.emit(null))}function mc(e){e._nesting--,da(e)}var Qi=class{constructor(){this.hasPendingMicrotasks=!1,this.hasPendingMacrotasks=!1,this.isStable=!0,this.onUnstable=new pe,this.onMicrotaskEmpty=new pe,this.onStable=new pe,this.onError=new pe}run(t,n,r){return t.apply(n,r)}runGuarded(t,n,r){return t.apply(n,r)}runOutsideAngular(t){return t()}runTask(t,n,r,o){return t.apply(n,r)}};function Xg(e){return Jl(e,"__ignore_ng_zone__")}function em(e){return Jl(e,"__scheduler_tick__")}function Jl(e,t){return!Array.isArray(e)||e.length!==1?!1:e[0]?.data?.[t]===!0}var Et=class{constructor(){this._console=console}handleError(t){let n=this._findOriginalError(t);this._console.error("ERROR",t),n&&this._console.error("ORIGINAL ERROR",n)}_findOriginalError(t){let n=t&&Ei(t);for(;n&&Ei(n);)n=Ei(n);return n||null}},tm=new N("",{providedIn:"root",factory:()=>{let e=D(Y),t=D(Et);return n=>e.runOutsideAngular(()=>t.handleError(n))}});function nm(){return tn($(),I())}function tn(e,t){return new Xe(ue(e,t))}var Xe=(()=>{class e{constructor(n){this.nativeElement=n}static{this.__NG_ELEMENT_ID__=nm}}return e})();function Xl(e){return e instanceof Xe?e.nativeElement:e}function rm(){return this._results[Symbol.iterator]()}var Ki=class e{get changes(){return this._changes??=new pe}constructor(t=!1){this._emitDistinctChangesOnly=t,this.dirty=!0,this._onDirty=void 0,this._results=[],this._changesDetected=!1,this._changes=void 0,this.length=0,this.first=void 0,this.last=void 0;let n=e.prototype;n[Symbol.iterator]||(n[Symbol.iterator]=rm)}get(t){return this._results[t]}map(t){return this._results.map(t)}filter(t){return this._results.filter(t)}find(t){return this._results.find(t)}reduce(t,n){return this._results.reduce(t,n)}forEach(t){this._results.forEach(t)}some(t){return this._results.some(t)}toArray(){return this._results.slice()}toString(){return this._results.toString()}reset(t,n){this.dirty=!1;let r=Mh(t);(this._changesDetected=!_h(this._results,r,n))&&(this._results=r,this.length=r.length,this.last=r[this.length-1],this.first=r[0])}notifyOnChanges(){this._changes!==void 0&&(this._changesDetected||!this._emitDistinctChangesOnly)&&this._changes.emit(this)}onDirty(t){this._onDirty=t}setDirty(){this.dirty=!0,this._onDirty?.()}destroy(){this._changes!==void 0&&(this._changes.complete(),this._changes.unsubscribe())}};function ed(e){return(e.flags&128)===128}var td=new Map,om=0;function im(){return om++}function sm(e){td.set(e[lo],e)}function Ji(e){td.delete(e[lo])}var yc="__ngContext__";function Qe(e,t){Ge(t)?(e[yc]=t[lo],sm(t)):e[yc]=t}function nd(e){return od(e[wn])}function rd(e){return od(e[he])}function od(e){for(;e!==null&&!Fe(e);)e=e[he];return e}var Xi;function VS(e){Xi=e}function id(){if(Xi!==void 0)return Xi;if(typeof document<"u")return document;throw new x(210,!1)}var BS=new N("",{providedIn:"root",factory:()=>am}),am="ng",um=new N(""),Eo=new N("",{providedIn:"platform",factory:()=>"unknown"});var HS=new N(""),$S=new N("",{providedIn:"root",factory:()=>id().body?.querySelector("[ngCspNonce]")?.getAttribute("ngCspNonce")||null}),fa={breakpoints:[16,32,48,64,96,128,256,384,640,750,828,1080,1200,1920,2048,3840],placeholderResolution:30,disableImageSizeWarning:!1,disableImageLazyLoadWarning:!1},sd=new N("",{providedIn:"root",factory:()=>fa});var cm="h",lm="b";var dm=()=>null;function pa(e,t,n=!1){return dm(e,t,n)}var ad=!1,fm=new N("",{providedIn:"root",factory:()=>ad});var yr;function pm(){if(yr===void 0&&(yr=null,Ue.trustedTypes))try{yr=Ue.trustedTypes.createPolicy("angular",{createHTML:e=>e,createScript:e=>e,createScriptURL:e=>e})}catch{}return yr}function Co(e){return pm()?.createHTML(e)||e}var vr;function ud(){if(vr===void 0&&(vr=null,Ue.trustedTypes))try{vr=Ue.trustedTypes.createPolicy("angular#unsafe-bypass",{createHTML:e=>e,createScript:e=>e,createScriptURL:e=>e})}catch{}return vr}function vc(e){return ud()?.createHTML(e)||e}function Dc(e){return ud()?.createScriptURL(e)||e}var Re=class{constructor(t){this.changingThisBreaksApplicationSecurity=t}toString(){return`SafeValue must use [property]=binding: ${this.changingThisBreaksApplicationSecurity} (see ${$c})`}},es=class extends Re{getTypeName(){return"HTML"}},ts=class extends Re{getTypeName(){return"Style"}},ns=class extends Re{getTypeName(){return"Script"}},rs=class extends Re{getTypeName(){return"URL"}},os=class extends Re{getTypeName(){return"ResourceURL"}};function xt(e){return e instanceof Re?e.changingThisBreaksApplicationSecurity:e}function ha(e,t){let n=hm(e);if(n!=null&&n!==t){if(n==="ResourceURL"&&t==="URL")return!0;throw new Error(`Required a safe ${t}, got a ${n} (see ${$c})`)}return n===t}function hm(e){return e instanceof Re&&e.getTypeName()||null}function US(e){return new es(e)}function zS(e){return new ts(e)}function GS(e){return new ns(e)}function WS(e){return new rs(e)}function qS(e){return new os(e)}function gm(e){let t=new ss(e);return mm()?new is(t):t}var is=class{constructor(t){this.inertDocumentHelper=t}getInertBodyElement(t){t=""+t;try{let n=new window.DOMParser().parseFromString(Co(t),"text/html").body;return n===null?this.inertDocumentHelper.getInertBodyElement(t):(n.firstChild?.remove(),n)}catch{return null}}},ss=class{constructor(t){this.defaultDoc=t,this.inertDocument=this.defaultDoc.implementation.createHTMLDocument("sanitization-inert")}getInertBodyElement(t){let n=this.inertDocument.createElement("template");return n.innerHTML=Co(t),n}};function mm(){try{return!!new window.DOMParser().parseFromString(Co(""),"text/html")}catch{return!1}}var ym=/^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:\/?#]*(?:[\/?#]|$))/i;function cd(e){return e=String(e),e.match(ym)?e:"unsafe:"+e}function ke(e){let t={};for(let n of e.split(","))t[n]=!0;return t}function Tn(...e){let t={};for(let n of e)for(let r in n)n.hasOwnProperty(r)&&(t[r]=!0);return t}var ld=ke("area,br,col,hr,img,wbr"),dd=ke("colgroup,dd,dt,li,p,tbody,td,tfoot,th,thead,tr"),fd=ke("rp,rt"),vm=Tn(fd,dd),Dm=Tn(dd,ke("address,article,aside,blockquote,caption,center,del,details,dialog,dir,div,dl,figure,figcaption,footer,h1,h2,h3,h4,h5,h6,header,hgroup,hr,ins,main,map,menu,nav,ol,pre,section,summary,table,ul")),Im=Tn(fd,ke("a,abbr,acronym,audio,b,bdi,bdo,big,br,cite,code,del,dfn,em,font,i,img,ins,kbd,label,map,mark,picture,q,ruby,rp,rt,s,samp,small,source,span,strike,strong,sub,sup,time,track,tt,u,var,video")),Ic=Tn(ld,Dm,Im,vm),pd=ke("background,cite,href,itemtype,longdesc,poster,src,xlink:href"),wm=ke("abbr,accesskey,align,alt,autoplay,axis,bgcolor,border,cellpadding,cellspacing,class,clear,color,cols,colspan,compact,controls,coords,datetime,default,dir,download,face,headers,height,hidden,hreflang,hspace,ismap,itemscope,itemprop,kind,label,lang,language,loop,media,muted,nohref,nowrap,open,preload,rel,rev,role,rows,rowspan,rules,scope,scrolling,shape,size,sizes,span,srclang,srcset,start,summary,tabindex,target,title,translate,type,usemap,valign,value,vspace,width"),Em=ke("aria-activedescendant,aria-atomic,aria-autocomplete,aria-busy,aria-checked,aria-colcount,aria-colindex,aria-colspan,aria-controls,aria-current,aria-describedby,aria-details,aria-disabled,aria-dropeffect,aria-errormessage,aria-expanded,aria-flowto,aria-grabbed,aria-haspopup,aria-hidden,aria-invalid,aria-keyshortcuts,aria-label,aria-labelledby,aria-level,aria-live,aria-modal,aria-multiline,aria-multiselectable,aria-orientation,aria-owns,aria-placeholder,aria-posinset,aria-pressed,aria-readonly,aria-relevant,aria-required,aria-roledescription,aria-rowcount,aria-rowindex,aria-rowspan,aria-selected,aria-setsize,aria-sort,aria-valuemax,aria-valuemin,aria-valuenow,aria-valuetext"),Cm=Tn(pd,wm,Em),bm=ke("script,style,template"),as=class{constructor(){this.sanitizedSomething=!1,this.buf=[]}sanitizeChildren(t){let n=t.firstChild,r=!0,o=[];for(;n;){if(n.nodeType===Node.ELEMENT_NODE?r=this.startElement(n):n.nodeType===Node.TEXT_NODE?this.chars(n.nodeValue):this.sanitizedSomething=!0,r&&n.firstChild){o.push(n),n=xm(n);continue}for(;n;){n.nodeType===Node.ELEMENT_NODE&&this.endElement(n);let i=Mm(n);if(i){n=i;break}n=o.pop()}}return this.buf.join("")}startElement(t){let n=wc(t).toLowerCase();if(!Ic.hasOwnProperty(n))return this.sanitizedSomething=!0,!bm.hasOwnProperty(n);this.buf.push("<"),this.buf.push(n);let r=t.attributes;for(let o=0;o"),!0}endElement(t){let n=wc(t).toLowerCase();Ic.hasOwnProperty(n)&&!ld.hasOwnProperty(n)&&(this.buf.push(""))}chars(t){this.buf.push(Ec(t))}};function _m(e,t){return(e.compareDocumentPosition(t)&Node.DOCUMENT_POSITION_CONTAINED_BY)!==Node.DOCUMENT_POSITION_CONTAINED_BY}function Mm(e){let t=e.nextSibling;if(t&&e!==t.previousSibling)throw hd(t);return t}function xm(e){let t=e.firstChild;if(t&&_m(e,t))throw hd(t);return t}function wc(e){let t=e.nodeName;return typeof t=="string"?t:"FORM"}function hd(e){return new Error(`Failed to sanitize html because the element is clobbered: ${e.outerHTML}`)}var Sm=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,Tm=/([^\#-~ |!])/g;function Ec(e){return e.replace(/&/g,"&").replace(Sm,function(t){let n=t.charCodeAt(0),r=t.charCodeAt(1);return"&#"+((n-55296)*1024+(r-56320)+65536)+";"}).replace(Tm,function(t){return"&#"+t.charCodeAt(0)+";"}).replace(//g,">")}var Dr;function Nm(e,t){let n=null;try{Dr=Dr||gm(e);let r=t?String(t):"";n=Dr.getInertBodyElement(r);let o=5,i=r;do{if(o===0)throw new Error("Failed to sanitize html because the input is unstable");o--,r=i,i=n.innerHTML,n=Dr.getInertBodyElement(r)}while(r!==i);let a=new as().sanitizeChildren(Cc(n)||n);return Co(a)}finally{if(n){let r=Cc(n)||n;for(;r.firstChild;)r.firstChild.remove()}}}function Cc(e){return"content"in e&&Am(e)?e.content:null}function Am(e){return e.nodeType===Node.ELEMENT_NODE&&e.nodeName==="TEMPLATE"}var bo=function(e){return e[e.NONE=0]="NONE",e[e.HTML=1]="HTML",e[e.STYLE=2]="STYLE",e[e.SCRIPT=3]="SCRIPT",e[e.URL=4]="URL",e[e.RESOURCE_URL=5]="RESOURCE_URL",e}(bo||{});function ZS(e){let t=ga();return t?vc(t.sanitize(bo.HTML,e)||""):ha(e,"HTML")?vc(xt(e)):Nm(id(),ht(e))}function Om(e){let t=ga();return t?t.sanitize(bo.URL,e)||"":ha(e,"URL")?xt(e):cd(ht(e))}function Rm(e){let t=ga();if(t)return Dc(t.sanitize(bo.RESOURCE_URL,e)||"");if(ha(e,"ResourceURL"))return Dc(xt(e));throw new x(904,!1)}function Fm(e,t){return t==="src"&&(e==="embed"||e==="frame"||e==="iframe"||e==="media"||e==="script")||t==="href"&&(e==="base"||e==="link")?Rm:Om}function YS(e,t,n){return Fm(t,n)(e)}function ga(){let e=I();return e&&e[Ce].sanitizer}var Pm=/^>|^->||--!>|)/g,Lm="\u200B$1\u200B";function jm(e){return e.replace(Pm,t=>t.replace(km,Lm))}function gd(e){return e instanceof Function?e():e}function md(e){return(e??D(_e)).get(Eo)==="browser"}var zr=function(e){return e[e.Important=1]="Important",e[e.DashCase=2]="DashCase",e}(zr||{}),Vm;function ma(e,t){return Vm(e,t)}function Vt(e,t,n,r,o){if(r!=null){let i,s=!1;Fe(r)?i=r:Ge(r)&&(s=!0,r=r[Me]);let a=be(r);e===0&&n!==null?o==null?wd(t,n,a):Gr(t,n,a,o||null,!0):e===1&&n!==null?Gr(t,n,a,o||null,!0):e===2?Xm(t,a,s):e===3&&t.destroyNode(a),i!=null&&ty(t,e,i,n,o)}}function Bm(e,t){return e.createText(t)}function Hm(e,t,n){e.setValue(t,n)}function $m(e,t){return e.createComment(jm(t))}function yd(e,t,n){return e.createElement(t,n)}function Um(e,t){vd(e,t),t[Me]=null,t[X]=null}function zm(e,t,n,r,o,i){r[Me]=o,r[X]=t,xo(e,r,n,1,o,i)}function vd(e,t){t[Ce].changeDetectionScheduler?.notify(9),xo(e,t,t[k],2,null,null)}function Gm(e){let t=e[wn];if(!t)return Ci(e[E],e);for(;t;){let n=null;if(Ge(t))n=t[wn];else{let r=t[z];r&&(n=r)}if(!n){for(;t&&!t[he]&&t!==e;)Ge(t)&&Ci(t[E],t),t=t[W];t===null&&(t=e),Ge(t)&&Ci(t[E],t),n=t&&t[he]}t=n}}function Wm(e,t,n,r){let o=z+r,i=n.length;r>0&&(n[o-1][he]=t),r0&&(e[n-1][he]=r[he]);let i=Or(e,z+t);Um(r[E],r);let s=i[Ae];s!==null&&s.detachView(i[E]),r[W]=null,r[he]=null,r[w]&=-129}return r}function _o(e,t){if(!(t[w]&256)){let n=t[k];n.destroyNode&&xo(e,t,n,3,null,null),Gm(t)}}function Ci(e,t){if(t[w]&256)return;let n=_(null);try{t[w]&=-129,t[w]|=256,t[ae]&&pr(t[ae]),Zm(e,t),qm(e,t),t[E].type===1&&t[k].destroy();let r=t[mt];if(r!==null&&Fe(t[W])){r!==t[W]&&ya(r,t);let o=t[Ae];o!==null&&o.detachView(e)}Ji(t)}finally{_(n)}}function qm(e,t){let n=e.cleanup,r=t[Pr];if(n!==null)for(let i=0;i=0?r[s]():r[-s].unsubscribe(),i+=2}else{let s=r[n[i+1]];n[i].call(s)}r!==null&&(t[Pr]=null);let o=t[ze];if(o!==null){t[ze]=null;for(let i=0;i-1){let{encapsulation:i}=e.data[r.directiveStart+o];if(i===vn.None||i===vn.Emulated)return null}return ue(r,n)}}function Gr(e,t,n,r,o){e.insertBefore(t,n,r,o)}function wd(e,t,n){e.appendChild(t,n)}function bc(e,t,n,r,o){r!==null?Gr(e,t,n,r,o):wd(e,t,n)}function Ed(e,t){return e.parentNode(t)}function Qm(e,t){return e.nextSibling(t)}function Cd(e,t,n){return Jm(e,t,n)}function Km(e,t,n){return e.type&40?ue(e,n):null}var Jm=Km,_c;function Mo(e,t,n,r){let o=Id(e,r,t),i=t[k],s=r.parent||t[X],a=Cd(s,r,t);if(o!=null)if(Array.isArray(n))for(let u=0;uV&&Sd(e,t,V,!1),we(s?2:0,o),n(r,o)}finally{Dt(i),we(s?3:1,o)}}function Da(e,t,n){if(Js(t)){let r=_(null);try{let o=t.directiveStart,i=t.directiveEnd;for(let s=o;snull;function ly(e,t,n,r){let o=Ld(t);o.push(n),e.firstCreatePass&&jd(e).push(r,o.length-1)}function dy(e,t,n,r,o,i){let s=t?t.injectorIndex:-1,a=0;return Nl()&&(a|=128),{type:n,index:r,insertBeforeIndex:null,injectorIndex:s,directiveStart:-1,directiveEnd:-1,directiveStylingLast:-1,componentOffset:-1,propertyBindings:null,flags:a,providerIndexes:0,value:o,attrs:i,mergedAttrs:null,localNames:null,initialInputs:void 0,inputs:null,outputs:null,tView:null,next:null,prev:null,projectionNext:null,child:null,parent:t,projection:null,styles:null,stylesWithoutHost:null,residualStyles:void 0,classes:null,classesWithoutHost:null,residualClasses:void 0,classBindings:0,styleBindings:0}}function Mc(e,t,n,r,o){for(let i in t){if(!t.hasOwnProperty(i))continue;let s=t[i];if(s===void 0)continue;r??={};let a,u=We.None;Array.isArray(s)?(a=s[0],u=s[1]):a=s;let c=i;if(o!==null){if(!o.hasOwnProperty(i))continue;c=o[i]}e===0?xc(r,n,c,a,u):xc(r,n,c,a)}return r}function xc(e,t,n,r,o){let i;e.hasOwnProperty(n)?(i=e[n]).push(t,r):i=e[n]=[t,r],o!==void 0&&i.push(o)}function fy(e,t,n){let r=t.directiveStart,o=t.directiveEnd,i=e.data,s=t.attrs,a=[],u=null,c=null;for(let l=r;l0;){let n=e[--t];if(typeof n=="number"&&n<0)return n}return 0}function yy(e,t,n,r){let o=n.directiveStart,i=n.directiveEnd;fo(n)&&by(t,n,e.data[o+n.componentOffset]),e.firstCreatePass||Hr(n,t),Qe(r,t);let s=n.initialInputs;for(let a=o;a{mo(e.lView)},consumerOnSignalRead(){this.lView[ae]=this}});function Ly(e){let t=e[ae]??Object.create(jy);return t.lView=e,t}var jy=ye(me({},kt),{consumerIsAlwaysLive:!0,consumerMarkedDirty:e=>{let t=vt(e.lView);for(;t&&!Gd(t[E]);)t=vt(t);t&&Ml(t)},consumerOnSignalRead(){this.lView[ae]=this}});function Gd(e){return e.type!==2}var Vy=100;function Wd(e,t=!0,n=0){let r=e[Ce],o=r.rendererFactory,i=!1;i||o.begin?.();try{By(e,n)}catch(s){throw t&&Bd(e,s),s}finally{i||(o.end?.(),r.inlineEffectRunner?.flush())}}function By(e,t){let n=Ol();try{cc(!0),ds(e,t);let r=0;for(;go(e);){if(r===Vy)throw new x(103,!1);r++,ds(e,1)}}finally{cc(n)}}function Hy(e,t,n,r){let o=t[w];if((o&256)===256)return;let i=!1,s=!1;!i&&t[Ce].inlineEffectRunner?.flush(),aa(t);let a=!0,u=null,c=null;i||(Gd(e)?(c=Ry(t),u=hn(c)):Lu()===null?(a=!1,c=Ly(t),u=hn(c)):t[ae]&&(pr(t[ae]),t[ae]=null));try{_l(t),Cg(e.bindingStartIndex),n!==null&&Ad(e,t,n,2,r);let l=(o&3)===3;if(!i)if(l){let f=e.preOrderCheckHooks;f!==null&&_r(t,f,null)}else{let f=e.preOrderHooks;f!==null&&Mr(t,f,0,null),Di(t,0)}if(s||$y(t),qd(t,0),e.contentQueries!==null&&kd(e,t),!i)if(l){let f=e.contentCheckHooks;f!==null&&_r(t,f)}else{let f=e.contentHooks;f!==null&&Mr(t,f,1),Di(t,1)}oy(e,t);let d=e.components;d!==null&&Yd(t,d,0);let p=e.viewQuery;if(p!==null&&ls(2,p,r),!i)if(l){let f=e.viewCheckHooks;f!==null&&_r(t,f)}else{let f=e.viewHooks;f!==null&&Mr(t,f,2),Di(t,2)}if(e.firstUpdatePass===!0&&(e.firstUpdatePass=!1),t[br]){for(let f of t[br])f();t[br]=null}i||(t[w]&=-73)}catch(l){throw i||mo(t),l}finally{c!==null&&(dr(c,u),a&&Py(c)),ua()}}function qd(e,t){for(let n=nd(e);n!==null;n=rd(n))for(let r=z;r-1&&(En(t,r),Or(n,r))}this._attachedToViewContainer=!1}_o(this._lView[E],this._lView)}onDestroy(t){xl(this._lView,t)}markForCheck(){Ma(this._cdRefInjectingView||this._lView,4)}detach(){this._lView[w]&=-129}reattach(){Hi(this._lView),this._lView[w]|=128}detectChanges(){this._lView[w]|=1024,Wd(this._lView,this.notifyErrorHandler)}checkNoChanges(){}attachToViewContainerRef(){if(this._appRef)throw new x(902,!1);this._attachedToViewContainer=!0}detachFromAppRef(){this._appRef=null;let t=Vi(this._lView),n=this._lView[mt];n!==null&&!t&&ya(n,this._lView),vd(this._lView[E],this._lView)}attachToAppRef(t){if(this._attachedToViewContainer)throw new x(902,!1);this._appRef=t;let n=Vi(this._lView),r=this._lView[mt];r!==null&&!n&&Dd(r,this._lView),Hi(this._lView)}},Cn=(()=>{class e{static{this.__NG_ELEMENT_ID__=Wy}}return e})(),zy=Cn,Gy=class extends zy{constructor(t,n,r){super(),this._declarationLView=t,this._declarationTContainer=n,this.elementRef=r}get ssrId(){return this._declarationTContainer.tView?.ssrId||null}createEmbeddedView(t,n){return this.createEmbeddedViewImpl(t,n)}createEmbeddedViewImpl(t,n,r){let o=Nn(this._declarationLView,this._declarationTContainer,t,{embeddedViewInjector:n,dehydratedView:r});return new Ct(o)}};function Wy(){return Ao($(),I())}function Ao(e,t){return e.type&4?new Gy(t,e,tn(e,t)):null}var XS=new RegExp(`^(\\d+)*(${lm}|${cm})*(.*)`);var qy=()=>null;function Zt(e,t){return qy(e,t)}var Yt=class{},xa=new N("",{providedIn:"root",factory:()=>!1});var Qd=new N(""),Kd=new N(""),fs=class{},qr=class{};function Zy(e){let t=Error(`No component factory found for ${J(e)}.`);return t[Yy]=e,t}var Yy="ngComponent";var ps=class{resolveComponentFactory(t){throw Zy(t)}},Qt=class{static{this.NULL=new ps}},Zr=class{},Oo=(()=>{class e{constructor(){this.destroyNode=null}static{this.__NG_ELEMENT_ID__=()=>Qy()}}return e})();function Qy(){let e=I(),t=$(),n=Je(t.index,e);return(Ge(n)?n:e)[k]}var Ky=(()=>{class e{static{this.\u0275prov=F({token:e,providedIn:"root",factory:()=>null})}}return e})();function Yr(e,t,n){let r=n?e.styles:null,o=n?e.classes:null,i=0;if(t!==null)for(let s=0;s0&&Md(e,n,i.join(" "))}}function ov(e,t,n){let r=e.projection=[];for(let o=0;o{class e{static{this.__NG_ELEMENT_ID__=sv}}return e})();function sv(){let e=$();return Xd(e,I())}var av=On,Jd=class extends av{constructor(t,n,r){super(),this._lContainer=t,this._hostTNode=n,this._hostLView=r}get element(){return tn(this._hostTNode,this._hostLView)}get injector(){return new pt(this._hostTNode,this._hostLView)}get parentInjector(){let t=ca(this._hostTNode,this._hostLView);if(Bl(t)){let n=Vr(t,this._hostLView),r=jr(t),o=n[E].data[r+8];return new pt(o,n)}else return new pt(null,this._hostLView)}clear(){for(;this.length>0;)this.remove(this.length-1)}get(t){let n=Tc(this._lContainer);return n!==null&&n[t]||null}get length(){return this._lContainer.length-z}createEmbeddedView(t,n,r){let o,i;typeof r=="number"?o=r:r!=null&&(o=r.index,i=r.injector);let s=Zt(this._lContainer,t.ssrId),a=t.createEmbeddedViewImpl(n||{},i,s);return this.insertImpl(a,o,qt(this._hostTNode,s)),a}createComponent(t,n,r,o,i){let s=t&&!ig(t),a;if(s)a=n;else{let h=n||{};a=h.index,r=h.injector,o=h.projectableNodes,i=h.environmentInjector||h.ngModuleRef}let u=s?t:new Kt(qe(t)),c=r||this.parentInjector;if(!i&&u.ngModule==null){let m=(s?c:this.parentInjector).get(Ze,null);m&&(i=m)}let l=qe(u.componentType??{}),d=Zt(this._lContainer,l?.id??null),p=d?.firstChild??null,f=u.create(c,o,p,i);return this.insertImpl(f.hostView,a,qt(this._hostTNode,d)),f}insert(t,n){return this.insertImpl(t,n,!0)}insertImpl(t,n,r){let o=t._lView;if(fg(o)){let a=this.indexOf(t);if(a!==-1)this.detach(a);else{let u=o[W],c=new Jd(u,u[X],u[W]);c.detach(c.indexOf(t))}}let i=this._adjustIndex(n),s=this._lContainer;return An(s,o,i,r),t.attachToViewContainerRef(),el(bi(s),i,t),t}move(t,n){return this.insert(t,n)}indexOf(t){let n=Tc(this._lContainer);return n!==null?n.indexOf(t):-1}remove(t){let n=this._adjustIndex(t,-1),r=En(this._lContainer,n);r&&(Or(bi(this._lContainer),n),_o(r[E],r))}detach(t){let n=this._adjustIndex(t,-1),r=En(this._lContainer,n);return r&&Or(bi(this._lContainer),n)!=null?new Ct(r):null}_adjustIndex(t,n=0){return t??this.length+n}};function Tc(e){return e[kr]}function bi(e){return e[kr]||(e[kr]=[])}function Xd(e,t){let n,r=t[e.index];return Fe(r)?n=r:(n=Pd(r,t,null,e),t[e.index]=n,No(t,n)),cv(n,t,e,r),new Jd(n,e,t)}function uv(e,t){let n=e[k],r=n.createComment(""),o=ue(t,e),i=Ed(n,o);return Gr(n,i,r,Qm(n,o),!1),r}var cv=fv,lv=()=>!1;function dv(e,t,n){return lv(e,t,n)}function fv(e,t,n,r){if(e[yt])return;let o;n.type&8?o=be(r):o=uv(t,n),e[yt]=o}var gs=class e{constructor(t){this.queryList=t,this.matches=null}clone(){return new e(this.queryList)}setDirty(){this.queryList.setDirty()}},ms=class e{constructor(t=[]){this.queries=t}createEmbeddedView(t){let n=t.queries;if(n!==null){let r=t.contentQueries!==null?t.contentQueries[0]:n.length,o=[];for(let i=0;i0)r.push(s[a/2]);else{let c=i[a+1],l=t[-u];for(let d=z;dt.trim())}function rf(e,t,n){e.queries===null&&(e.queries=new ys),e.queries.track(new vs(t,n))}function Dv(e,t){let n=e.contentQueries||(e.contentQueries=[]),r=n.length?n[n.length-1]:-1;t!==r&&n.push(e.queries.length-1,t)}function Ta(e,t){return e.queries.getByIndex(t)}function of(e,t){let n=e[E],r=Ta(n,t);return r.crossesNgTemplate?Ds(n,e,t,[]):ef(n,e,r,t)}var Nc=new Set;function ge(e){Nc.has(e)||(Nc.add(e),performance?.mark?.("mark_feature_usage",{detail:{feature:e}}))}function tT(e){return typeof e=="function"&&e[se]!==void 0}function Iv(e,t){ge("NgSignals");let n=Zu(e),r=n[se];return t?.equal&&(r.equal=t.equal),n.set=o=>mi(r,o),n.update=o=>Yu(r,o),n.asReadonly=wv.bind(n),n}function wv(){let e=this[se];if(e.readonlyFn===void 0){let t=()=>this();t[se]=e,e.readonlyFn=t}return e.readonlyFn}function sf(e,t){let n,r=gi(()=>{n._dirtyCounter();let o=_v(n,e);if(t&&o===void 0)throw new x(-951,!1);return o});return n=r[se],n._dirtyCounter=Iv(0),n._flatValue=void 0,r}function Ev(){return sf(!0,!1)}function Cv(){return sf(!0,!0)}function bv(e,t){let n=e[se];n._lView=I(),n._queryIndex=t,n._queryList=Sa(n._lView,t),n._queryList.onDirty(()=>n._dirtyCounter.update(r=>r+1))}function _v(e,t){let n=e._lView,r=e._queryIndex;if(n===void 0||r===void 0||n[w]&4)return t?void 0:Z;let o=Sa(n,r),i=of(n,r);return o.reset(i,Xl),t?o.first:o._changesDetected||e._flatValue===void 0?e._flatValue=o.toArray():e._flatValue}function Ac(e,t){return Ev()}function Mv(e,t){return Cv()}var nT=(Ac.required=Mv,Ac);function xv(e){return Object.getPrototypeOf(e.prototype).constructor}function Sv(e){let t=xv(e.type),n=!0,r=[e];for(;t;){let o;if(Oe(e))o=t.\u0275cmp||t.\u0275dir;else{if(t.\u0275cmp)throw new x(903,!1);o=t.\u0275dir}if(o){if(n){r.push(o);let s=e;s.inputs=Ir(e.inputs),s.inputTransforms=Ir(e.inputTransforms),s.declaredInputs=Ir(e.declaredInputs),s.outputs=Ir(e.outputs);let a=o.hostBindings;a&&Rv(e,a);let u=o.viewQuery,c=o.contentQueries;if(u&&Av(e,u),c&&Ov(e,c),Tv(e,o),oh(e.outputs,o.outputs),Oe(o)&&o.data.animation){let l=e.data;l.animation=(l.animation||[]).concat(o.data.animation)}}let i=o.features;if(i)for(let s=0;s=0;r--){let o=e[r];o.hostVars=t+=o.hostVars,o.hostAttrs=Dn(o.hostAttrs,n=Dn(n,o.hostAttrs))}}function Ir(e){return e===Ne?{}:e===Z?[]:e}function Av(e,t){let n=e.viewQuery;n?e.viewQuery=(r,o)=>{t(r,o),n(r,o)}:e.viewQuery=t}function Ov(e,t){let n=e.contentQueries;n?e.contentQueries=(r,o,i)=>{t(r,o,i),n(r,o,i)}:e.contentQueries=t}function Rv(e,t){let n=e.hostBindings;n?e.hostBindings=(r,o)=>{t(r,o),n(r,o)}:e.hostBindings=t}function rT(e){let t=n=>{let r=(Array.isArray(e)?e:e()).map(o=>typeof o=="function"?{directive:H(o),inputs:Ne,outputs:Ne}:{directive:H(o.directive),inputs:Oc(o.inputs),outputs:Oc(o.outputs)});n.hostDirectives===null?(n.findHostDirectiveDefs=af,n.hostDirectives=r):n.hostDirectives.unshift(...r)};return t.ngInherit=!0,t}function af(e,t,n){if(e.hostDirectives!==null)for(let r of e.hostDirectives){let o=qs(r.directive);Fv(o.declaredInputs,r.inputs),af(o,t,n),n.set(o,r),t.push(o)}}function Oc(e){if(e===void 0||e.length===0)return Ne;let t={};for(let n=0;nn()),this.destroyCbs=null}onDestroy(t){this.destroyCbs.push(t)}},Es=class extends Is{constructor(t){super(),this.moduleType=t}create(t){return new ws(this.moduleType,t,[])}};var Jr=class extends Ke{constructor(t){super(),this.componentFactoryResolver=new Qr(this),this.instance=null;let n=new In([...t.providers,{provide:Ke,useValue:this},{provide:Qt,useValue:this.componentFactoryResolver}],t.parent||Ys(),t.debugName,new Set(["environment"]));this.injector=n,t.runEnvironmentInitializers&&n.resolveInjectorInitializers()}destroy(){this.injector.destroy()}onDestroy(t){this.injector.onDestroy(t)}};function Pv(e,t,n=null){return new Jr({providers:e,parent:t,debugName:n,runEnvironmentInitializers:!0}).injector}function cf(e){return Lv(e)?Array.isArray(e)||!(e instanceof Map)&&Symbol.iterator in e:!1}function kv(e,t){if(Array.isArray(e))for(let n=0;n{class e{constructor(){this.impl=null}execute(){this.impl?.execute()}static{this.\u0275prov=F({token:e,providedIn:"root",factory:()=>new e})}}return e})(),Cs=class e{constructor(){this.ngZone=D(Y),this.scheduler=D(Yt),this.errorHandler=D(Et,{optional:!0}),this.sequences=new Set,this.deferredRegistrations=new Set,this.executing=!1}static{this.PHASES=[Bt.EarlyRead,Bt.Write,Bt.MixedReadWrite,Bt.Read]}execute(){this.executing=!0;for(let t of e.PHASES)for(let n of this.sequences)if(!(n.erroredOrDestroyed||!n.hooks[t]))try{n.pipelinedValue=this.ngZone.runOutsideAngular(()=>n.hooks[t](n.pipelinedValue))}catch(r){n.erroredOrDestroyed=!0,this.errorHandler?.handleError(r)}this.executing=!1;for(let t of this.sequences)t.afterRun(),t.once&&(this.sequences.delete(t),t.destroy());for(let t of this.deferredRegistrations)this.sequences.add(t);this.deferredRegistrations.size>0&&this.scheduler.notify(7),this.deferredRegistrations.clear()}register(t){this.executing?this.deferredRegistrations.add(t):(this.sequences.add(t),this.scheduler.notify(6))}unregister(t){this.executing&&this.sequences.has(t)?(t.erroredOrDestroyed=!0,t.pipelinedValue=void 0,t.once=!0):(this.sequences.delete(t),this.deferredRegistrations.delete(t))}static{this.\u0275prov=F({token:e,providedIn:"root",factory:()=>new e})}},bs=class{constructor(t,n,r,o){this.impl=t,this.hooks=n,this.once=r,this.erroredOrDestroyed=!1,this.pipelinedValue=void 0,this.unregisterOnDestroy=o?.onDestroy(()=>this.destroy())}afterRun(){this.erroredOrDestroyed=!1,this.pipelinedValue=void 0}destroy(){this.impl.unregister(this),this.unregisterOnDestroy?.()}};function Gv(e,t){!t?.injector&&Qs(Gv);let n=t?.injector??D(_e);return md(n)?(ge("NgAfterRender"),df(e,n,t,!1)):ff}function Wv(e,t){!t?.injector&&Qs(Wv);let n=t?.injector??D(_e);return md(n)?(ge("NgAfterNextRender"),df(e,n,t,!0)):ff}function qv(e,t){if(e instanceof Function){let n=[void 0,void 0,void 0,void 0];return n[t]=e,n}else return[e.earlyRead,e.write,e.mixedReadWrite,e.read]}function df(e,t,n,r){let o=t.get(lf);o.impl??=t.get(Cs);let i=n?.phase??Bt.MixedReadWrite,s=n?.manualCleanup!==!0?t.get(wo):null,a=new bs(o.impl,qv(e,i),r,s);return o.impl.register(a),a}var ff={destroy(){}};function Zv(e,t,n,r){let o=I(),i=Mt();if(re(o,i,t)){let s=P(),a=xn();_y(a,o,e,t,n,r)}return Zv}function Aa(e,t,n,r){return re(e,Mt(),n)?t+ht(n)+r:ee}function Yv(e,t,n,r,o,i){let s=Eg(),a=Na(e,s,n,o);return oa(2),a?t+ht(n)+r+ht(o)+i:ee}function wr(e,t){return e<<17|t<<2}function bt(e){return e>>17&32767}function Qv(e){return(e&2)==2}function Kv(e,t){return e&131071|t<<17}function _s(e){return e|2}function Jt(e){return(e&131068)>>2}function _i(e,t){return e&-131069|t<<2}function Jv(e){return(e&1)===1}function Ms(e){return e|1}function Xv(e,t,n,r,o,i){let s=i?t.classBindings:t.styleBindings,a=bt(s),u=Jt(s);e[r]=n;let c=!1,l;if(Array.isArray(n)){let d=n;l=d[1],(l===null||Mn(d,l)>0)&&(c=!0)}else l=n;if(o)if(u!==0){let p=bt(e[a+1]);e[r+1]=wr(p,a),p!==0&&(e[p+1]=_i(e[p+1],r)),e[a+1]=Kv(e[a+1],r)}else e[r+1]=wr(a,0),a!==0&&(e[a+1]=_i(e[a+1],r)),a=r;else e[r+1]=wr(u,0),a===0?a=r:e[u+1]=_i(e[u+1],r),u=r;c&&(e[r+1]=_s(e[r+1])),Rc(e,l,r,!0),Rc(e,l,r,!1),eD(t,l,e,r,i),s=wr(a,u),i?t.classBindings=s:t.styleBindings=s}function eD(e,t,n,r,o){let i=o?e.residualClasses:e.residualStyles;i!=null&&typeof t=="string"&&Mn(i,t)>=0&&(n[r+1]=Ms(n[r+1]))}function Rc(e,t,n,r){let o=e[n+1],i=t===null,s=r?bt(o):Jt(o),a=!1;for(;s!==0&&(a===!1||i);){let u=e[s],c=e[s+1];tD(u,t)&&(a=!0,e[s+1]=r?Ms(c):_s(c)),s=r?bt(c):Jt(c)}a&&(e[n+1]=r?_s(o):Ms(o))}function tD(e,t){return e===null||t==null||(Array.isArray(e)?e[1]:e)===t?!0:Array.isArray(e)&&typeof t=="string"?Mn(e,t)>=0:!1}var fe={textEnd:0,key:0,keyEnd:0,value:0,valueEnd:0};function nD(e){return e.substring(fe.key,fe.keyEnd)}function rD(e){return oD(e),pf(e,hf(e,0,fe.textEnd))}function pf(e,t){let n=fe.textEnd;return n===t?-1:(t=fe.keyEnd=iD(e,fe.key=t,n),hf(e,t,n))}function oD(e){fe.key=0,fe.keyEnd=0,fe.value=0,fe.valueEnd=0,fe.textEnd=e.length}function hf(e,t,n){for(;t32;)t++;return t}function sD(e,t,n){let r=I(),o=Mt();if(re(r,o,t)){let i=P(),s=xn();To(i,s,r,e,t,r[k],n,!1)}return sD}function xs(e,t,n,r,o){let i=t.inputs,s=o?"class":"style";ba(e,n,i[s],s,r)}function Oa(e,t,n){return mf(e,t,n,!1),Oa}function aD(e,t){return mf(e,t,null,!0),aD}function oT(e){yf(pD,gf,e,!0)}function gf(e,t){for(let n=rD(t);n>=0;n=pf(t,n))ao(e,nD(t),!0)}function mf(e,t,n,r){let o=I(),i=P(),s=oa(2);if(i.firstUpdatePass&&Df(i,e,s,r),t!==ee&&re(o,s,t)){let a=i.data[Pe()];If(i,a,o,o[k],e,o[s+1]=gD(t,n),r,s)}}function yf(e,t,n,r){let o=P(),i=oa(2);o.firstUpdatePass&&Df(o,null,i,r);let s=I();if(n!==ee&&re(s,i,n)){let a=o.data[Pe()];if(wf(a,r)&&!vf(o,i)){let u=r?a.classesWithoutHost:a.stylesWithoutHost;u!==null&&(n=Ai(u,n||"")),xs(o,a,s,n,r)}else hD(o,a,s,s[k],s[i+1],s[i+1]=fD(e,t,n),r,i)}}function vf(e,t){return t>=e.expandoStartIndex}function Df(e,t,n,r){let o=e.data;if(o[n+1]===null){let i=o[Pe()],s=vf(e,n);wf(i,r)&&t===null&&!s&&(t=!1),t=uD(o,i,t,r),Xv(o,i,t,n,s,r)}}function uD(e,t,n,r){let o=ia(e),i=r?t.residualClasses:t.residualStyles;if(o===null)(r?t.classBindings:t.styleBindings)===0&&(n=Mi(null,e,t,n,r),n=bn(n,t.attrs,r),i=null);else{let s=t.directiveStylingLast;if(s===-1||e[s]!==o)if(n=Mi(o,e,t,n,r),i===null){let u=cD(e,t,r);u!==void 0&&Array.isArray(u)&&(u=Mi(null,e,t,u[1],r),u=bn(u,t.attrs,r),lD(e,t,r,u))}else i=dD(e,t,r)}return i!==void 0&&(r?t.residualClasses=i:t.residualStyles=i),n}function cD(e,t,n){let r=n?t.classBindings:t.styleBindings;if(Jt(r)!==0)return e[bt(r)]}function lD(e,t,n,r){let o=n?t.classBindings:t.styleBindings;e[bt(o)]=r}function dD(e,t,n){let r,o=t.directiveEnd;for(let i=1+t.directiveStylingLast;i0;){let u=e[o],c=Array.isArray(u),l=c?u[1]:u,d=l===null,p=n[o+1];p===ee&&(p=d?Z:void 0);let f=d?yi(p,r):l===r?p:void 0;if(c&&!eo(f)&&(f=yi(u,r)),eo(f)&&(a=f,s))return a;let h=e[o+1];o=s?bt(h):Jt(h)}if(t!==null){let u=i?t.residualClasses:t.residualStyles;u!=null&&(a=yi(u,r))}return a}function eo(e){return e!==void 0}function gD(e,t){return e==null||e===""||(typeof t=="string"?e=e+t:typeof e=="object"&&(e=J(xt(e)))),e}function wf(e,t){return(e.flags&(t?8:16))!==0}function iT(e,t,n){let r=I(),o=Aa(r,e,t,n);yf(ao,gf,o,!0)}var Ss=class{destroy(t){}updateValue(t,n){}swap(t,n){let r=Math.min(t,n),o=Math.max(t,n),i=this.detach(o);if(o-r>1){let s=this.detach(r);this.attach(r,i),this.attach(o,s)}else this.attach(r,i)}move(t,n){this.attach(n,this.detach(t))}};function xi(e,t,n,r,o){return e===n&&Object.is(t,r)?1:Object.is(o(e,t),o(n,r))?-1:0}function mD(e,t,n){let r,o,i=0,s=e.length-1,a=void 0;if(Array.isArray(t)){let u=t.length-1;for(;i<=s&&i<=u;){let c=e.at(i),l=t[i],d=xi(i,c,i,l,n);if(d!==0){d<0&&e.updateValue(i,l),i++;continue}let p=e.at(s),f=t[u],h=xi(s,p,u,f,n);if(h!==0){h<0&&e.updateValue(s,f),s--,u--;continue}let m=n(i,c),A=n(s,p),b=n(i,l);if(Object.is(b,A)){let O=n(u,f);Object.is(O,m)?(e.swap(i,s),e.updateValue(s,f),u--,s--):e.move(s,i),e.updateValue(i,l),i++;continue}if(r??=new to,o??=kc(e,i,s,n),Ts(e,r,i,b))e.updateValue(i,l),i++,s++;else if(o.has(b))r.set(m,e.detach(i)),s--;else{let O=e.create(i,t[i]);e.attach(i,O),i++,s++}}for(;i<=u;)Pc(e,r,n,i,t[i]),i++}else if(t!=null){let u=t[Symbol.iterator](),c=u.next();for(;!c.done&&i<=s;){let l=e.at(i),d=c.value,p=xi(i,l,i,d,n);if(p!==0)p<0&&e.updateValue(i,d),i++,c=u.next();else{r??=new to,o??=kc(e,i,s,n);let f=n(i,d);if(Ts(e,r,i,f))e.updateValue(i,d),i++,s++,c=u.next();else if(!o.has(f))e.attach(i,e.create(i,d)),i++,s++,c=u.next();else{let h=n(i,l);r.set(h,e.detach(i)),s--}}}for(;!c.done;)Pc(e,r,n,e.length,c.value),c=u.next()}for(;i<=s;)e.destroy(e.detach(s--));r?.forEach(u=>{e.destroy(u)})}function Ts(e,t,n,r){return t!==void 0&&t.has(r)?(e.attach(n,t.get(r)),t.delete(r),!0):!1}function Pc(e,t,n,r,o){if(Ts(e,t,r,n(r,o)))e.updateValue(r,o);else{let i=e.create(r,o);e.attach(r,i)}}function kc(e,t,n,r){let o=new Set;for(let i=t;i<=n;i++)o.add(r(i,e.at(i)));return o}var to=class{constructor(){this.kvMap=new Map,this._vMap=void 0}has(t){return this.kvMap.has(t)}delete(t){if(!this.has(t))return!1;let n=this.kvMap.get(t);return this._vMap!==void 0&&this._vMap.has(n)?(this.kvMap.set(t,this._vMap.get(n)),this._vMap.delete(n)):this.kvMap.delete(t),!0}get(t){return this.kvMap.get(t)}set(t,n){if(this.kvMap.has(t)){let r=this.kvMap.get(t);this._vMap===void 0&&(this._vMap=new Map);let o=this._vMap;for(;o.has(r);)r=o.get(r);o.set(r,n)}else this.kvMap.set(t,n)}forEach(t){for(let[n,r]of this.kvMap)if(t(r,n),this._vMap!==void 0){let o=this._vMap;for(;o.has(r);)r=o.get(r),t(r,n)}}};function sT(e,t){ge("NgControlFlow");let n=I(),r=Mt(),o=n[r]!==ee?n[r]:-1,i=o!==-1?no(n,V+o):void 0,s=0;if(re(n,r,e)){let a=_(null);try{if(i!==void 0&&Ud(i,s),e!==-1){let u=V+e,c=no(n,u),l=Rs(n[E],u),d=Zt(c,l.tView.ssrId),p=Nn(n,l,t,{dehydratedView:d});An(c,p,s,qt(l,d))}}finally{_(a)}}else if(i!==void 0){let a=$d(i,s);a!==void 0&&(a[U]=t)}}var Ns=class{constructor(t,n,r){this.lContainer=t,this.$implicit=n,this.$index=r}get $count(){return this.lContainer.length-z}};function aT(e,t){return t}var As=class{constructor(t,n,r){this.hasEmptyBlock=t,this.trackByFn=n,this.liveCollection=r}};function uT(e,t,n,r,o,i,s,a,u,c,l,d,p){ge("NgControlFlow");let f=I(),h=P(),m=u!==void 0,A=I(),b=a?s.bind(A[ne][U]):s,O=new As(m,b);A[V+e]=O,Xr(f,h,e+1,t,n,r,o,Ye(h.consts,i)),m&&Xr(f,h,e+2,u,c,l,d,Ye(h.consts,p))}var Os=class extends Ss{constructor(t,n,r){super(),this.lContainer=t,this.hostLView=n,this.templateTNode=r,this.operationsCounter=void 0,this.needsIndexUpdate=!1}get length(){return this.lContainer.length-z}at(t){return this.getLView(t)[U].$implicit}attach(t,n){let r=n[zt];this.needsIndexUpdate||=t!==this.length,An(this.lContainer,n,t,qt(this.templateTNode,r))}detach(t){return this.needsIndexUpdate||=t!==this.length-1,yD(this.lContainer,t)}create(t,n){let r=Zt(this.lContainer,this.templateTNode.tView.ssrId),o=Nn(this.hostLView,this.templateTNode,new Ns(this.lContainer,n,t),{dehydratedView:r});return this.operationsCounter?.recordCreate(),o}destroy(t){_o(t[E],t),this.operationsCounter?.recordDestroy()}updateValue(t,n){this.getLView(t)[U].$implicit=n}reset(){this.needsIndexUpdate=!1,this.operationsCounter?.reset()}updateIndexes(){if(this.needsIndexUpdate)for(let t=0;t(Do(!0),yd(r,o,Ng()));function ED(e,t,n,r,o){let i=t.consts,s=Ye(i,r),a=nn(t,e,8,"ng-container",s);s!==null&&Yr(a,s,!0);let u=Ye(i,o);return Ca(t,n,a,u),t.queries!==null&&t.queries.elementStart(t,a),a}function bf(e,t,n){let r=I(),o=P(),i=e+V,s=o.firstCreatePass?ED(i,o,r,t,n):o.data[i];_t(s,!0);let a=bD(o,r,s,e);return r[i]=a,vo()&&Mo(o,r,a,s),Qe(a,r),po(s)&&(Ia(o,r,s),Da(o,s,r)),n!=null&&wa(r,s),bf}function _f(){let e=$(),t=P();return na()?ra():(e=e.parent,_t(e,!1)),t.firstCreatePass&&(Io(t,e),Js(e)&&t.queries.elementEnd(e)),_f}function CD(e,t,n){return bf(e,t,n),_f(),CD}var bD=(e,t,n,r)=>(Do(!0),$m(t[k],""));function lT(){return I()}function _D(e,t,n){let r=I(),o=Mt();if(re(r,o,t)){let i=P(),s=xn();To(i,s,r,e,t,r[k],n,!0)}return _D}function MD(e,t,n){let r=I(),o=Mt();if(re(r,o,t)){let i=P(),s=xn(),a=ia(i.data),u=Vd(a,s,r);To(i,s,r,e,t,u,n,!0)}return MD}var ft=void 0;function xD(e){let t=e,n=Math.floor(Math.abs(e)),r=e.toString().replace(/^[^.]*\.?/,"").length;return n===1&&r===0?1:5}var SD=["en",[["a","p"],["AM","PM"],ft],[["AM","PM"],ft,ft],[["S","M","T","W","T","F","S"],["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],["Su","Mo","Tu","We","Th","Fr","Sa"]],ft,[["J","F","M","A","M","J","J","A","S","O","N","D"],["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],["January","February","March","April","May","June","July","August","September","October","November","December"]],ft,[["B","A"],["BC","AD"],["Before Christ","Anno Domini"]],0,[6,0],["M/d/yy","MMM d, y","MMMM d, y","EEEE, MMMM d, y"],["h:mm a","h:mm:ss a","h:mm:ss a z","h:mm:ss a zzzz"],["{1}, {0}",ft,"{1} 'at' {0}",ft],[".",",",";","%","+","-","E","\xD7","\u2030","\u221E","NaN",":"],["#,##0.###","#,##0%","\xA4#,##0.00","#E0"],"USD","$","US Dollar",{},"ltr",xD],Si={};function Ra(e){let t=TD(e),n=Lc(t);if(n)return n;let r=t.split("-")[0];if(n=Lc(r),n)return n;if(r==="en")return SD;throw new x(701,!1)}function Lc(e){return e in Si||(Si[e]=Ue.ng&&Ue.ng.common&&Ue.ng.common.locales&&Ue.ng.common.locales[e]),Si[e]}var rn=function(e){return e[e.LocaleId=0]="LocaleId",e[e.DayPeriodsFormat=1]="DayPeriodsFormat",e[e.DayPeriodsStandalone=2]="DayPeriodsStandalone",e[e.DaysFormat=3]="DaysFormat",e[e.DaysStandalone=4]="DaysStandalone",e[e.MonthsFormat=5]="MonthsFormat",e[e.MonthsStandalone=6]="MonthsStandalone",e[e.Eras=7]="Eras",e[e.FirstDayOfWeek=8]="FirstDayOfWeek",e[e.WeekendRange=9]="WeekendRange",e[e.DateFormat=10]="DateFormat",e[e.TimeFormat=11]="TimeFormat",e[e.DateTimeFormat=12]="DateTimeFormat",e[e.NumberSymbols=13]="NumberSymbols",e[e.NumberFormats=14]="NumberFormats",e[e.CurrencyCode=15]="CurrencyCode",e[e.CurrencySymbol=16]="CurrencySymbol",e[e.CurrencyName=17]="CurrencyName",e[e.Currencies=18]="Currencies",e[e.Directionality=19]="Directionality",e[e.PluralCase=20]="PluralCase",e[e.ExtraData=21]="ExtraData",e}(rn||{});function TD(e){return e.toLowerCase().replace(/_/g,"-")}var ro="en-US";var ND=ro;function AD(e){typeof e=="string"&&(ND=e.toLowerCase().replace(/_/g,"-"))}var OD=(e,t,n)=>{};function RD(e,t,n,r){let o=I(),i=P(),s=$();return Mf(i,o,o[k],s,e,t,r),RD}function FD(e,t){let n=$(),r=I(),o=P(),i=ia(o.data),s=Vd(i,n,r);return Mf(o,r,s,n,e,t),FD}function PD(e,t,n,r){let o=e.cleanup;if(o!=null)for(let i=0;iu?a[u]:null}typeof s=="string"&&(i+=2)}return null}function Mf(e,t,n,r,o,i,s){let a=po(r),c=e.firstCreatePass&&jd(e),l=t[U],d=Ld(t),p=!0;if(r.type&3||s){let m=ue(r,t),A=s?s(m):m,b=d.length,O=s?q=>s(be(q[r.index])):r.index,oe=null;if(!s&&a&&(oe=PD(e,t,o,r.index)),oe!==null){let q=oe.__ngLastListenerFn__||oe;q.__ngNextListenerFn__=i,oe.__ngLastListenerFn__=i,p=!1}else{i=Vc(r,t,l,i),OD(m,o,i);let q=n.listen(A,o,i);d.push(i,q),c&&c.push(o,O,b,b+1)}}else i=Vc(r,t,l,i);let f=r.outputs,h;if(p&&f!==null&&(h=f[o])){let m=h.length;if(m)for(let A=0;A-1?Je(e.index,t):t;Ma(s,5);let a=jc(t,n,r,i),u=o.__ngNextListenerFn__;for(;u;)a=jc(t,n,u,i)&&a,u=u.__ngNextListenerFn__;return a}}function dT(e=1){return Sg(e)}function kD(e,t){let n=null,r=kh(e);for(let o=0;o=e.data.length&&(e.data[n]=null,e.blueprint[n]=null),t[n]=r}function IT(e){let t=wg();return ea(t,V+e)}function wT(e,t=""){let n=I(),r=P(),o=e+V,i=r.firstCreatePass?nn(r,o,1,t,null):r.data[o],s=BD(r,n,i,t,e);n[o]=s,vo()&&Mo(r,n,s,i),_t(i,!1)}var BD=(e,t,n,r,o)=>(Do(!0),Bm(t[k],r));function HD(e){return Sf("",e,""),HD}function Sf(e,t,n){let r=I(),o=Aa(r,e,t,n);return o!==ee&&Hd(r,Pe(),o),Sf}function $D(e,t,n,r,o){let i=I(),s=Yv(i,e,t,n,r,o);return s!==ee&&Hd(i,Pe(),s),$D}function UD(e,t,n){let r=P();if(r.firstCreatePass){let o=Oe(e);Fs(n,r.data,r.blueprint,o,!0),Fs(t,r.data,r.blueprint,o,!1)}}function Fs(e,t,n,r,o){if(e=H(e),Array.isArray(e))for(let i=0;i>20;if(Ut(e)||!e.multi){let f=new It(c,o,xe),h=Ni(u,t,o?l:l+p,d);h===-1?(Gi(Hr(a,s),i,u),Ti(i,e,t.length),t.push(u),a.directiveStart++,a.directiveEnd++,o&&(a.providerIndexes+=1048576),n.push(f),s.push(f)):(n[h]=f,s[h]=f)}else{let f=Ni(u,t,l+p,d),h=Ni(u,t,l,l+p),m=f>=0&&n[f],A=h>=0&&n[h];if(o&&!A||!o&&!m){Gi(Hr(a,s),i,u);let b=WD(o?GD:zD,n.length,o,r,c);!o&&A&&(n[h].providerFactory=b),Ti(i,e,t.length,0),t.push(u),a.directiveStart++,a.directiveEnd++,o&&(a.providerIndexes+=1048576),n.push(b),s.push(b)}else{let b=Tf(n[o?h:f],c,!o&&r);Ti(i,e,f>-1?f:h,b)}!o&&r&&A&&n[h].componentProviders++}}}function Ti(e,t,n,r){let o=Ut(t),i=Jh(t);if(o||i){let u=(i?H(t.useClass):t).prototype.ngOnDestroy;if(u){let c=e.destroyHooks||(e.destroyHooks=[]);if(!o&&t.multi){let l=c.indexOf(n);l===-1?c.push(n,[r,u]):c[l+1].push(r,u)}else c.push(n,u)}}}function Tf(e,t,n){return n&&e.componentProviders++,e.multi.push(t)-1}function Ni(e,t,n,r){for(let o=n;o{n.providersResolver=(r,o)=>UD(r,o?o(e):e,t)}}var qD=(()=>{class e{constructor(n){this._injector=n,this.cachedInjectors=new Map}getOrCreateStandaloneInjector(n){if(!n.standalone)return null;if(!this.cachedInjectors.has(n)){let r=fl(!1,n.type),o=r.length>0?Pv([r],this._injector,`Standalone[${n.type.name}]`):null;this.cachedInjectors.set(n,o)}return this.cachedInjectors.get(n)}ngOnDestroy(){try{for(let n of this.cachedInjectors.values())n!==null&&n.destroy()}finally{this.cachedInjectors.clear()}}static{this.\u0275prov=F({token:e,providedIn:"environment",factory:()=>new e(G(Ze))})}}return e})();function CT(e){ge("NgStandalone"),e.getStandaloneInjector=t=>t.get(qD).getOrCreateStandaloneInjector(e)}function bT(e,t,n){let r=en()+e,o=I();return o[r]===ee?Ro(o,r,n?t.call(n):t()):jv(o,r)}function _T(e,t,n,r){return Nf(I(),en(),e,t,n,r)}function MT(e,t,n,r,o){return ZD(I(),en(),e,t,n,r,o)}function xT(e,t,n,r,o,i){return Af(I(),en(),e,t,n,r,o,i)}function Fa(e,t){let n=e[t];return n===ee?void 0:n}function Nf(e,t,n,r,o,i){let s=t+n;return re(e,s,o)?Ro(e,s+1,i?r.call(i,o):r(o)):Fa(e,s+1)}function ZD(e,t,n,r,o,i,s){let a=t+n;return Na(e,a,o,i)?Ro(e,a+2,s?r.call(s,o,i):r(o,i)):Fa(e,a+2)}function Af(e,t,n,r,o,i,s,a){let u=t+n;return Vv(e,u,o,i,s)?Ro(e,u+3,a?r.call(a,o,i,s):r(o,i,s)):Fa(e,u+3)}function ST(e,t){let n=P(),r,o=e+V;n.firstCreatePass?(r=YD(t,n.pipeRegistry),n.data[o]=r,r.onDestroy&&(n.destroyHooks??=[]).push(o,r.onDestroy)):r=n.data[o];let i=r.factory||(r.factory=gt(r.type,!0)),s,a=K(xe);try{let u=Br(!1),c=i();return Br(u),VD(n,I(),o,c),c}finally{K(a)}}function YD(e,t){if(t)for(let n=t.length-1;n>=0;n--){let r=t[n];if(e===r.name)return r}}function TT(e,t,n){let r=e+V,o=I(),i=ea(o,r);return Of(o,r)?Nf(o,en(),t,i.transform,n,i):i.transform(n)}function NT(e,t,n,r,o){let i=e+V,s=I(),a=ea(s,i);return Of(s,i)?Af(s,en(),t,a.transform,n,r,o,a):a.transform(n,r,o)}function Of(e,t){return e[E].data[t].pure}function AT(e,t){return Ao(e,t)}var OT=(()=>{class e{log(n){console.log(n)}warn(n){console.warn(n)}static{this.\u0275fac=function(r){return new(r||e)}}static{this.\u0275prov=F({token:e,factory:e.\u0275fac,providedIn:"platform"})}}return e})();var QD=new N("");function Fo(e){return!!e&&typeof e.then=="function"}function Pa(e){return!!e&&typeof e.subscribe=="function"}var KD=new N(""),Rf=(()=>{class e{constructor(){this.initialized=!1,this.done=!1,this.donePromise=new Promise((n,r)=>{this.resolve=n,this.reject=r}),this.appInits=D(KD,{optional:!0})??[]}runInitializers(){if(this.initialized)return;let n=[];for(let o of this.appInits){let i=o();if(Fo(i))n.push(i);else if(Pa(i)){let s=new Promise((a,u)=>{i.subscribe({complete:a,error:u})});n.push(s)}}let r=()=>{this.done=!0,this.resolve()};Promise.all(n).then(()=>{r()}).catch(o=>{this.reject(o)}),n.length===0&&r(),this.initialized=!0}static{this.\u0275fac=function(r){return new(r||e)}}static{this.\u0275prov=F({token:e,factory:e.\u0275fac,providedIn:"root"})}}return e})(),JD=new N("");function XD(){qu(()=>{throw new x(600,!1)})}function eI(e){return e.isBoundToModule}var tI=10;function nI(e,t,n){try{let r=n();return Fo(r)?r.catch(o=>{throw t.runOutsideAngular(()=>e.handleError(o)),o}):r}catch(r){throw t.runOutsideAngular(()=>e.handleError(r)),r}}var Po=(()=>{class e{constructor(){this._bootstrapListeners=[],this._runningTick=!1,this._destroyed=!1,this._destroyListeners=[],this._views=[],this.internalErrorHandler=D(tm),this.afterRenderManager=D(lf),this.zonelessEnabled=D(xa),this.dirtyFlags=0,this.deferredDirtyFlags=0,this.externalTestViews=new Set,this.beforeRender=new ie,this.afterTick=new ie,this.componentTypes=[],this.components=[],this.isStable=D(Sn).hasPendingTasks.pipe(ve(n=>!n)),this._injector=D(Ze)}get allViews(){return[...this.externalTestViews.keys(),...this._views]}get destroyed(){return this._destroyed}whenStable(){let n;return new Promise(r=>{n=this.isStable.subscribe({next:o=>{o&&r()}})}).finally(()=>{n.unsubscribe()})}get injector(){return this._injector}bootstrap(n,r){let o=n instanceof qr;if(!this._injector.get(Rf).done){let p=!o&&Gh(n),f=!1;throw new x(405,f)}let s;o?s=n:s=this._injector.get(Qt).resolveComponentFactory(n),this.componentTypes.push(s.componentType);let a=eI(s)?void 0:this._injector.get(Ke),u=r||s.selector,c=s.create(_e.NULL,[],u,a),l=c.location.nativeElement,d=c.injector.get(QD,null);return d?.registerApplication(l),c.onDestroy(()=>{this.detachView(c.hostView),Sr(this.components,c),d?.unregisterApplication(l)}),this._loadComponent(c),c}tick(){this.zonelessEnabled||(this.dirtyFlags|=1),this._tick()}_tick(){if(this._runningTick)throw new x(101,!1);let n=_(null);try{this._runningTick=!0,this.synchronize()}catch(r){this.internalErrorHandler(r)}finally{this._runningTick=!1,_(n),this.afterTick.next()}}synchronize(){let n=null;this._injector.destroyed||(n=this._injector.get(Zr,null,{optional:!0})),this.dirtyFlags|=this.deferredDirtyFlags,this.deferredDirtyFlags=0;let r=0;for(;this.dirtyFlags!==0&&r++go(n))){this.dirtyFlags|=2;return}else this.dirtyFlags&=-8}attachView(n){let r=n;this._views.push(r),r.attachToAppRef(this)}detachView(n){let r=n;Sr(this._views,r),r.detachFromAppRef()}_loadComponent(n){this.attachView(n.hostView),this.tick(),this.components.push(n);let r=this._injector.get(JD,[]);[...this._bootstrapListeners,...r].forEach(o=>o(n))}ngOnDestroy(){if(!this._destroyed)try{this._destroyListeners.forEach(n=>n()),this._views.slice().forEach(n=>n.destroy())}finally{this._destroyed=!0,this._views=[],this._bootstrapListeners=[],this._destroyListeners=[]}}onDestroy(n){return this._destroyListeners.push(n),()=>Sr(this._destroyListeners,n)}destroy(){if(this._destroyed)throw new x(406,!1);let n=this._injector;n.destroy&&!n.destroyed&&n.destroy()}get viewCount(){return this._views.length}warnIfDestroyed(){}static{this.\u0275fac=function(r){return new(r||e)}}static{this.\u0275prov=F({token:e,factory:e.\u0275fac,providedIn:"root"})}}return e})();function Sr(e,t){let n=e.indexOf(t);n>-1&&e.splice(n,1)}function rI(e,t,n,r){if(!n&&!go(e))return;Wd(e,t,n&&!r?0:1)}var ks=class{constructor(t,n){this.ngModuleFactory=t,this.componentFactories=n}},RT=(()=>{class e{compileModuleSync(n){return new Es(n)}compileModuleAsync(n){return Promise.resolve(this.compileModuleSync(n))}compileModuleAndAllComponentsSync(n){let r=this.compileModuleSync(n),o=cl(n),i=gd(o.declarations).reduce((s,a)=>{let u=qe(a);return u&&s.push(new Kt(u)),s},[]);return new ks(r,i)}compileModuleAndAllComponentsAsync(n){return Promise.resolve(this.compileModuleAndAllComponentsSync(n))}clearCache(){}clearCacheFor(n){}getModuleId(n){}static{this.\u0275fac=function(r){return new(r||e)}}static{this.\u0275prov=F({token:e,factory:e.\u0275fac,providedIn:"root"})}}return e})();var oI=(()=>{class e{constructor(){this.zone=D(Y),this.changeDetectionScheduler=D(Yt),this.applicationRef=D(Po)}initialize(){this._onMicrotaskEmptySubscription||(this._onMicrotaskEmptySubscription=this.zone.onMicrotaskEmpty.subscribe({next:()=>{this.changeDetectionScheduler.runningTick||this.zone.run(()=>{this.applicationRef.tick()})}}))}ngOnDestroy(){this._onMicrotaskEmptySubscription?.unsubscribe()}static{this.\u0275fac=function(r){return new(r||e)}}static{this.\u0275prov=F({token:e,factory:e.\u0275fac,providedIn:"root"})}}return e})(),iI=new N("",{factory:()=>!1});function Ff({ngZoneFactory:e,ignoreChangesOutsideZone:t,scheduleInRootZone:n}){return e??=()=>new Y(ye(me({},Pf()),{scheduleInRootZone:n})),[{provide:Y,useFactory:e},{provide:Rr,multi:!0,useFactory:()=>{let r=D(oI,{optional:!0});return()=>r.initialize()}},{provide:Rr,multi:!0,useFactory:()=>{let r=D(sI);return()=>{r.initialize()}}},t===!0?{provide:Qd,useValue:!0}:[],{provide:Kd,useValue:n??Ql}]}function FT(e){let t=e?.ignoreChangesOutsideZone,n=e?.scheduleInRootZone,r=Ff({ngZoneFactory:()=>{let o=Pf(e);return o.scheduleInRootZone=n,o.shouldCoalesceEventChangeDetection&&ge("NgZone_CoalesceEvent"),new Y(o)},ignoreChangesOutsideZone:t,scheduleInRootZone:n});return qh([{provide:iI,useValue:!0},{provide:xa,useValue:!1},r])}function Pf(e){return{enableLongStackTrace:!1,shouldCoalesceEventChangeDetection:e?.eventCoalescing??!1,shouldCoalesceRunChangeDetection:e?.runCoalescing??!1}}var sI=(()=>{class e{constructor(){this.subscription=new L,this.initialized=!1,this.zone=D(Y),this.pendingTasks=D(Sn)}initialize(){if(this.initialized)return;this.initialized=!0;let n=null;!this.zone.isStable&&!this.zone.hasPendingMacrotasks&&!this.zone.hasPendingMicrotasks&&(n=this.pendingTasks.add()),this.zone.runOutsideAngular(()=>{this.subscription.add(this.zone.onStable.subscribe(()=>{Y.assertNotInAngularZone(),queueMicrotask(()=>{n!==null&&!this.zone.hasPendingMacrotasks&&!this.zone.hasPendingMicrotasks&&(this.pendingTasks.remove(n),n=null)})}))}),this.subscription.add(this.zone.onUnstable.subscribe(()=>{Y.assertInAngularZone(),n??=this.pendingTasks.add()}))}ngOnDestroy(){this.subscription.unsubscribe()}static{this.\u0275fac=function(r){return new(r||e)}}static{this.\u0275prov=F({token:e,factory:e.\u0275fac,providedIn:"root"})}}return e})();var aI=(()=>{class e{constructor(){this.appRef=D(Po),this.taskService=D(Sn),this.ngZone=D(Y),this.zonelessEnabled=D(xa),this.disableScheduling=D(Qd,{optional:!0})??!1,this.zoneIsDefined=typeof Zone<"u"&&!!Zone.root.run,this.schedulerTickApplyArgs=[{data:{__scheduler_tick__:!0}}],this.subscriptions=new L,this.angularZoneId=this.zoneIsDefined?this.ngZone._inner?.get(Ur):null,this.scheduleInRootZone=!this.zonelessEnabled&&this.zoneIsDefined&&(D(Kd,{optional:!0})??!1),this.cancelScheduledCallback=null,this.useMicrotaskScheduler=!1,this.runningTick=!1,this.pendingRenderTaskId=null,this.subscriptions.add(this.appRef.afterTick.subscribe(()=>{this.runningTick||this.cleanup()})),this.subscriptions.add(this.ngZone.onUnstable.subscribe(()=>{this.runningTick||this.cleanup()})),this.disableScheduling||=!this.zonelessEnabled&&(this.ngZone instanceof Qi||!this.zoneIsDefined)}notify(n){if(!this.zonelessEnabled&&n===5)return;switch(n){case 0:{this.appRef.dirtyFlags|=2;break}case 3:case 2:case 4:case 5:case 1:{this.appRef.dirtyFlags|=4;break}case 7:{this.appRef.deferredDirtyFlags|=8;break}case 9:case 8:case 6:case 10:default:this.appRef.dirtyFlags|=8}if(!this.shouldScheduleTick())return;let r=this.useMicrotaskScheduler?hc:Kl;this.pendingRenderTaskId=this.taskService.add(),this.scheduleInRootZone?this.cancelScheduledCallback=Zone.root.run(()=>r(()=>this.tick())):this.cancelScheduledCallback=this.ngZone.runOutsideAngular(()=>r(()=>this.tick()))}shouldScheduleTick(){return!(this.disableScheduling||this.pendingRenderTaskId!==null||this.runningTick||this.appRef._runningTick||!this.zonelessEnabled&&this.zoneIsDefined&&Zone.current.get(Ur+this.angularZoneId))}tick(){if(this.runningTick||this.appRef.destroyed)return;!this.zonelessEnabled&&this.appRef.dirtyFlags&7&&(this.appRef.dirtyFlags|=1);let n=this.taskService.add();try{this.ngZone.run(()=>{this.runningTick=!0,this.appRef._tick()},void 0,this.schedulerTickApplyArgs)}catch(r){throw this.taskService.remove(n),r}finally{this.cleanup()}this.useMicrotaskScheduler=!0,hc(()=>{this.useMicrotaskScheduler=!1,this.taskService.remove(n)})}ngOnDestroy(){this.subscriptions.unsubscribe(),this.cleanup()}cleanup(){if(this.runningTick=!1,this.cancelScheduledCallback?.(),this.cancelScheduledCallback=null,this.pendingRenderTaskId!==null){let n=this.pendingRenderTaskId;this.pendingRenderTaskId=null,this.taskService.remove(n)}}static{this.\u0275fac=function(r){return new(r||e)}}static{this.\u0275prov=F({token:e,factory:e.\u0275fac,providedIn:"root"})}}return e})();function uI(){return typeof $localize<"u"&&$localize.locale||ro}var ko=new N("",{providedIn:"root",factory:()=>D(ko,M.Optional|M.SkipSelf)||uI()});var Ls=new N("");function Er(e){return!e.moduleRef}function cI(e){let t=Er(e)?e.r3Injector:e.moduleRef.injector,n=t.get(Y);return n.run(()=>{Er(e)?e.r3Injector.resolveInjectorInitializers():e.moduleRef.resolveInjectorInitializers();let r=t.get(Et,null),o;if(n.runOutsideAngular(()=>{o=n.onError.subscribe({next:i=>{r.handleError(i)}})}),Er(e)){let i=()=>t.destroy(),s=e.platformInjector.get(Ls);s.add(i),t.onDestroy(()=>{o.unsubscribe(),s.delete(i)})}else{let i=()=>e.moduleRef.destroy(),s=e.platformInjector.get(Ls);s.add(i),e.moduleRef.onDestroy(()=>{Sr(e.allPlatformModules,e.moduleRef),o.unsubscribe(),s.delete(i)})}return nI(r,n,()=>{let i=t.get(Rf);return i.runInitializers(),i.donePromise.then(()=>{let s=t.get(ko,ro);if(AD(s||ro),Er(e)){let a=t.get(Po);return e.rootComponent!==void 0&&a.bootstrap(e.rootComponent),a}else return lI(e.moduleRef,e.allPlatformModules),e.moduleRef})})})}function lI(e,t){let n=e.injector.get(Po);if(e._bootstrapComponents.length>0)e._bootstrapComponents.forEach(r=>n.bootstrap(r));else if(e.instance.ngDoBootstrap)e.instance.ngDoBootstrap(n);else throw new x(-403,!1);t.push(e)}var Tr=null;function dI(e=[],t){return _e.create({name:t,providers:[{provide:gl,useValue:"platform"},{provide:Ls,useValue:new Set([()=>Tr=null])},...e]})}function fI(e=[]){if(Tr)return Tr;let t=dI(e);return Tr=t,XD(),pI(t),t}function pI(e){e.get(um,null)?.forEach(n=>n())}var Rn=(()=>{class e{static{this.__NG_ELEMENT_ID__=hI}}return e})();function hI(e){return gI($(),I(),(e&16)===16)}function gI(e,t,n){if(fo(e)&&!n){let r=Je(e.index,t);return new Ct(r,r)}else if(e.type&175){let r=t[ne];return new Ct(r,t)}return null}var js=class{constructor(){}supports(t){return cf(t)}create(t){return new Vs(t)}},mI=(e,t)=>t,Vs=class{constructor(t){this.length=0,this._linkedRecords=null,this._unlinkedRecords=null,this._previousItHead=null,this._itHead=null,this._itTail=null,this._additionsHead=null,this._additionsTail=null,this._movesHead=null,this._movesTail=null,this._removalsHead=null,this._removalsTail=null,this._identityChangesHead=null,this._identityChangesTail=null,this._trackByFn=t||mI}forEachItem(t){let n;for(n=this._itHead;n!==null;n=n._next)t(n)}forEachOperation(t){let n=this._itHead,r=this._removalsHead,o=0,i=null;for(;n||r;){let s=!r||n&&n.currentIndex{s=this._trackByFn(o,a),n===null||!Object.is(n.trackById,s)?(n=this._mismatch(n,a,s,o),r=!0):(r&&(n=this._verifyReinsertion(n,a,s,o)),Object.is(n.item,a)||this._addIdentityChange(n,a)),n=n._next,o++}),this.length=o;return this._truncate(n),this.collection=t,this.isDirty}get isDirty(){return this._additionsHead!==null||this._movesHead!==null||this._removalsHead!==null||this._identityChangesHead!==null}_reset(){if(this.isDirty){let t;for(t=this._previousItHead=this._itHead;t!==null;t=t._next)t._nextPrevious=t._next;for(t=this._additionsHead;t!==null;t=t._nextAdded)t.previousIndex=t.currentIndex;for(this._additionsHead=this._additionsTail=null,t=this._movesHead;t!==null;t=t._nextMoved)t.previousIndex=t.currentIndex;this._movesHead=this._movesTail=null,this._removalsHead=this._removalsTail=null,this._identityChangesHead=this._identityChangesTail=null}}_mismatch(t,n,r,o){let i;return t===null?i=this._itTail:(i=t._prev,this._remove(t)),t=this._unlinkedRecords===null?null:this._unlinkedRecords.get(r,null),t!==null?(Object.is(t.item,n)||this._addIdentityChange(t,n),this._reinsertAfter(t,i,o)):(t=this._linkedRecords===null?null:this._linkedRecords.get(r,o),t!==null?(Object.is(t.item,n)||this._addIdentityChange(t,n),this._moveAfter(t,i,o)):t=this._addAfter(new Bs(n,r),i,o)),t}_verifyReinsertion(t,n,r,o){let i=this._unlinkedRecords===null?null:this._unlinkedRecords.get(r,null);return i!==null?t=this._reinsertAfter(i,t._prev,o):t.currentIndex!=o&&(t.currentIndex=o,this._addToMoves(t,o)),t}_truncate(t){for(;t!==null;){let n=t._next;this._addToRemovals(this._unlink(t)),t=n}this._unlinkedRecords!==null&&this._unlinkedRecords.clear(),this._additionsTail!==null&&(this._additionsTail._nextAdded=null),this._movesTail!==null&&(this._movesTail._nextMoved=null),this._itTail!==null&&(this._itTail._next=null),this._removalsTail!==null&&(this._removalsTail._nextRemoved=null),this._identityChangesTail!==null&&(this._identityChangesTail._nextIdentityChange=null)}_reinsertAfter(t,n,r){this._unlinkedRecords!==null&&this._unlinkedRecords.remove(t);let o=t._prevRemoved,i=t._nextRemoved;return o===null?this._removalsHead=i:o._nextRemoved=i,i===null?this._removalsTail=o:i._prevRemoved=o,this._insertAfter(t,n,r),this._addToMoves(t,r),t}_moveAfter(t,n,r){return this._unlink(t),this._insertAfter(t,n,r),this._addToMoves(t,r),t}_addAfter(t,n,r){return this._insertAfter(t,n,r),this._additionsTail===null?this._additionsTail=this._additionsHead=t:this._additionsTail=this._additionsTail._nextAdded=t,t}_insertAfter(t,n,r){let o=n===null?this._itHead:n._next;return t._next=o,t._prev=n,o===null?this._itTail=t:o._prev=t,n===null?this._itHead=t:n._next=t,this._linkedRecords===null&&(this._linkedRecords=new oo),this._linkedRecords.put(t),t.currentIndex=r,t}_remove(t){return this._addToRemovals(this._unlink(t))}_unlink(t){this._linkedRecords!==null&&this._linkedRecords.remove(t);let n=t._prev,r=t._next;return n===null?this._itHead=r:n._next=r,r===null?this._itTail=n:r._prev=n,t}_addToMoves(t,n){return t.previousIndex===n||(this._movesTail===null?this._movesTail=this._movesHead=t:this._movesTail=this._movesTail._nextMoved=t),t}_addToRemovals(t){return this._unlinkedRecords===null&&(this._unlinkedRecords=new oo),this._unlinkedRecords.put(t),t.currentIndex=null,t._nextRemoved=null,this._removalsTail===null?(this._removalsTail=this._removalsHead=t,t._prevRemoved=null):(t._prevRemoved=this._removalsTail,this._removalsTail=this._removalsTail._nextRemoved=t),t}_addIdentityChange(t,n){return t.item=n,this._identityChangesTail===null?this._identityChangesTail=this._identityChangesHead=t:this._identityChangesTail=this._identityChangesTail._nextIdentityChange=t,t}},Bs=class{constructor(t,n){this.item=t,this.trackById=n,this.currentIndex=null,this.previousIndex=null,this._nextPrevious=null,this._prev=null,this._next=null,this._prevDup=null,this._nextDup=null,this._prevRemoved=null,this._nextRemoved=null,this._nextAdded=null,this._nextMoved=null,this._nextIdentityChange=null}},Hs=class{constructor(){this._head=null,this._tail=null}add(t){this._head===null?(this._head=this._tail=t,t._nextDup=null,t._prevDup=null):(this._tail._nextDup=t,t._prevDup=this._tail,t._nextDup=null,this._tail=t)}get(t,n){let r;for(r=this._head;r!==null;r=r._nextDup)if((n===null||n<=r.currentIndex)&&Object.is(r.trackById,t))return r;return null}remove(t){let n=t._prevDup,r=t._nextDup;return n===null?this._head=r:n._nextDup=r,r===null?this._tail=n:r._prevDup=n,this._head===null}},oo=class{constructor(){this.map=new Map}put(t){let n=t.trackById,r=this.map.get(n);r||(r=new Hs,this.map.set(n,r)),r.add(t)}get(t,n){let r=t,o=this.map.get(r);return o?o.get(t,n):null}remove(t){let n=t.trackById;return this.map.get(n).remove(t)&&this.map.delete(n),t}get isEmpty(){return this.map.size===0}clear(){this.map.clear()}};function Bc(e,t,n){let r=e.previousIndex;if(r===null)return r;let o=0;return n&&r{class e{static{this.\u0275prov=F({token:e,providedIn:"root",factory:Hc})}constructor(n){this.factories=n}static create(n,r){if(r!=null){let o=r.factories.slice();n=n.concat(o)}return new e(n)}static extend(n){return{provide:e,useFactory:r=>e.create(n,r||Hc()),deps:[[e,new bh,new Ch]]}}find(n){let r=this.factories.find(o=>o.supports(n));if(r!=null)return r;throw new x(901,!1)}}return e})();function PT(e){try{let{rootComponent:t,appProviders:n,platformProviders:r}=e,o=fI(r),i=[Ff({}),{provide:Yt,useExisting:aI},...n||[]],s=new Jr({providers:i,parent:o,debugName:"",runEnvironmentInitializers:!1});return cI({r3Injector:s.injector,platformInjector:o,rootComponent:t})}catch(t){return Promise.reject(t)}}function Fn(e){return typeof e=="boolean"?e:e!=null&&e!=="false"}function ka(e,t=NaN){return!isNaN(parseFloat(e))&&!isNaN(Number(e))?Number(e):t}function kT(e,t){ge("NgSignals");let n=gi(e);return t?.equal&&(n[se].equal=t.equal),n}function La(e){let t=_(null);try{return e()}finally{_(t)}}var yI=new N("",{providedIn:"root",factory:()=>D(vI)}),vI=(()=>{class e{static{this.\u0275prov=F({token:e,providedIn:"root",factory:()=>new $s})}}return e})(),$s=class{constructor(){this.queuedEffectCount=0,this.queues=new Map,this.pendingTasks=D(Sn),this.taskId=null}scheduleEffect(t){if(this.enqueue(t),this.taskId===null){let n=this.taskId=this.pendingTasks.add();queueMicrotask(()=>{this.flush(),this.pendingTasks.remove(n),this.taskId=null})}}enqueue(t){let n=t.creationZone;this.queues.has(n)||this.queues.set(n,new Set);let r=this.queues.get(n);r.has(t)||(this.queuedEffectCount++,r.add(t))}flush(){for(;this.queuedEffectCount>0;)for(let[t,n]of this.queues)t===null?this.flushQueue(n):t.run(()=>this.flushQueue(n))}flushQueue(t){for(let n of t)t.delete(n),this.queuedEffectCount--,n.run()}},Us=class{constructor(t,n,r,o,i,s){this.scheduler=t,this.effectFn=n,this.creationZone=r,this.injector=i,this.watcher=Ku(a=>this.runEffect(a),()=>this.schedule(),s),this.unregisterOnDestroy=o?.onDestroy(()=>this.destroy())}runEffect(t){try{this.effectFn(t)}catch(n){this.injector.get(Et,null,{optional:!0})?.handleError(n)}}run(){this.watcher.run()}schedule(){this.scheduler.scheduleEffect(this)}destroy(){this.watcher.destroy(),this.unregisterOnDestroy?.()}};function DI(e,t){ge("NgSignals"),!t?.injector&&Qs(DI);let n=t?.injector??D(_e),r=t?.manualCleanup!==!0?n.get(wo):null,o=new Us(n.get(yI),e,typeof Zone>"u"?null:Zone.current,r,n,t?.allowSignalWrites??!1),i=n.get(Rn,null,{optional:!0});return!i||!(i._lView[w]&8)?o.watcher.notify():(i._lView[br]??=[]).push(o.watcher.notify),o}function LT(e){let t=qe(e);if(!t)return null;let n=new Kt(t);return{get selector(){return n.selector},get type(){return n.componentType},get inputs(){return n.inputs},get outputs(){return n.outputs},get ngContentSelectors(){return n.ngContentSelectors},get isStandalone(){return t.standalone},get isSignal(){return t.signals}}}var Uf=null;function ja(){return Uf}function oN(e){Uf??=e}var Lf=class{};var jo=new N(""),Wa=(()=>{class e{historyGo(n){throw new Error("")}static{this.\u0275fac=function(r){return new(r||e)}}static{this.\u0275prov=F({token:e,factory:()=>D(wI),providedIn:"platform"})}}return e})(),iN=new N(""),wI=(()=>{class e extends Wa{constructor(){super(),this._doc=D(jo),this._location=window.location,this._history=window.history}getBaseHrefFromDOM(){return ja().getBaseHref(this._doc)}onPopState(n){let r=ja().getGlobalEventTarget(this._doc,"window");return r.addEventListener("popstate",n,!1),()=>r.removeEventListener("popstate",n)}onHashChange(n){let r=ja().getGlobalEventTarget(this._doc,"window");return r.addEventListener("hashchange",n,!1),()=>r.removeEventListener("hashchange",n)}get href(){return this._location.href}get protocol(){return this._location.protocol}get hostname(){return this._location.hostname}get port(){return this._location.port}get pathname(){return this._location.pathname}get search(){return this._location.search}get hash(){return this._location.hash}set pathname(n){this._location.pathname=n}pushState(n,r,o){this._history.pushState(n,r,o)}replaceState(n,r,o){this._history.replaceState(n,r,o)}forward(){this._history.forward()}back(){this._history.back()}historyGo(n=0){this._history.go(n)}getState(){return this._history.state}static{this.\u0275fac=function(r){return new(r||e)}}static{this.\u0275prov=F({token:e,factory:()=>new e,providedIn:"platform"})}}return e})();function qa(e,t){if(e.length==0)return t;if(t.length==0)return e;let n=0;return e.endsWith("/")&&n++,t.startsWith("/")&&n++,n==2?e+t.substring(1):n==1?e+t:e+"/"+t}function jf(e){let t=e.match(/#|\?|$/),n=t&&t.index||e.length,r=n-(e[n-1]==="/"?1:0);return e.slice(0,r)+e.slice(n)}function Le(e){return e&&e[0]!=="?"?"?"+e:e}var Vo=(()=>{class e{historyGo(n){throw new Error("")}static{this.\u0275fac=function(r){return new(r||e)}}static{this.\u0275prov=F({token:e,factory:()=>D(EI),providedIn:"root"})}}return e})(),zf=new N(""),EI=(()=>{class e extends Vo{constructor(n,r){super(),this._platformLocation=n,this._removeListenerFns=[],this._baseHref=r??this._platformLocation.getBaseHrefFromDOM()??D(jo).location?.origin??""}ngOnDestroy(){for(;this._removeListenerFns.length;)this._removeListenerFns.pop()()}onPopState(n){this._removeListenerFns.push(this._platformLocation.onPopState(n),this._platformLocation.onHashChange(n))}getBaseHref(){return this._baseHref}prepareExternalUrl(n){return qa(this._baseHref,n)}path(n=!1){let r=this._platformLocation.pathname+Le(this._platformLocation.search),o=this._platformLocation.hash;return o&&n?`${r}${o}`:r}pushState(n,r,o,i){let s=this.prepareExternalUrl(o+Le(i));this._platformLocation.pushState(n,r,s)}replaceState(n,r,o,i){let s=this.prepareExternalUrl(o+Le(i));this._platformLocation.replaceState(n,r,s)}forward(){this._platformLocation.forward()}back(){this._platformLocation.back()}getState(){return this._platformLocation.getState()}historyGo(n=0){this._platformLocation.historyGo?.(n)}static{this.\u0275fac=function(r){return new(r||e)(G(Wa),G(zf,8))}}static{this.\u0275prov=F({token:e,factory:e.\u0275fac,providedIn:"root"})}}return e})(),sN=(()=>{class e extends Vo{constructor(n,r){super(),this._platformLocation=n,this._baseHref="",this._removeListenerFns=[],r!=null&&(this._baseHref=r)}ngOnDestroy(){for(;this._removeListenerFns.length;)this._removeListenerFns.pop()()}onPopState(n){this._removeListenerFns.push(this._platformLocation.onPopState(n),this._platformLocation.onHashChange(n))}getBaseHref(){return this._baseHref}path(n=!1){let r=this._platformLocation.hash??"#";return r.length>0?r.substring(1):r}prepareExternalUrl(n){let r=qa(this._baseHref,n);return r.length>0?"#"+r:r}pushState(n,r,o,i){let s=this.prepareExternalUrl(o+Le(i));s.length==0&&(s=this._platformLocation.pathname),this._platformLocation.pushState(n,r,s)}replaceState(n,r,o,i){let s=this.prepareExternalUrl(o+Le(i));s.length==0&&(s=this._platformLocation.pathname),this._platformLocation.replaceState(n,r,s)}forward(){this._platformLocation.forward()}back(){this._platformLocation.back()}getState(){return this._platformLocation.getState()}historyGo(n=0){this._platformLocation.historyGo?.(n)}static{this.\u0275fac=function(r){return new(r||e)(G(Wa),G(zf,8))}}static{this.\u0275prov=F({token:e,factory:e.\u0275fac})}}return e})(),CI=(()=>{class e{constructor(n){this._subject=new pe,this._urlChangeListeners=[],this._urlChangeSubscription=null,this._locationStrategy=n;let r=this._locationStrategy.getBaseHref();this._basePath=MI(jf(Vf(r))),this._locationStrategy.onPopState(o=>{this._subject.emit({url:this.path(!0),pop:!0,state:o.state,type:o.type})})}ngOnDestroy(){this._urlChangeSubscription?.unsubscribe(),this._urlChangeListeners=[]}path(n=!1){return this.normalize(this._locationStrategy.path(n))}getState(){return this._locationStrategy.getState()}isCurrentPathEqualTo(n,r=""){return this.path()==this.normalize(n+Le(r))}normalize(n){return e.stripTrailingSlash(_I(this._basePath,Vf(n)))}prepareExternalUrl(n){return n&&n[0]!=="/"&&(n="/"+n),this._locationStrategy.prepareExternalUrl(n)}go(n,r="",o=null){this._locationStrategy.pushState(o,"",n,r),this._notifyUrlChangeListeners(this.prepareExternalUrl(n+Le(r)),o)}replaceState(n,r="",o=null){this._locationStrategy.replaceState(o,"",n,r),this._notifyUrlChangeListeners(this.prepareExternalUrl(n+Le(r)),o)}forward(){this._locationStrategy.forward()}back(){this._locationStrategy.back()}historyGo(n=0){this._locationStrategy.historyGo?.(n)}onUrlChange(n){return this._urlChangeListeners.push(n),this._urlChangeSubscription??=this.subscribe(r=>{this._notifyUrlChangeListeners(r.url,r.state)}),()=>{let r=this._urlChangeListeners.indexOf(n);this._urlChangeListeners.splice(r,1),this._urlChangeListeners.length===0&&(this._urlChangeSubscription?.unsubscribe(),this._urlChangeSubscription=null)}}_notifyUrlChangeListeners(n="",r){this._urlChangeListeners.forEach(o=>o(n,r))}subscribe(n,r,o){return this._subject.subscribe({next:n,error:r,complete:o})}static{this.normalizeQueryParams=Le}static{this.joinWithSlash=qa}static{this.stripTrailingSlash=jf}static{this.\u0275fac=function(r){return new(r||e)(G(Vo))}}static{this.\u0275prov=F({token:e,factory:()=>bI(),providedIn:"root"})}}return e})();function bI(){return new CI(G(Vo))}function _I(e,t){if(!e||!t.startsWith(e))return t;let n=t.substring(e.length);return n===""||["/",";","?","#"].includes(n[0])?n:t}function Vf(e){return e.replace(/\/index.html$/,"")}function MI(e){if(new RegExp("^(https?:)?//").test(e)){let[,n]=e.split(/\/\/[^\/]+/);return n}return e}var Gf=function(e){return e[e.Decimal=0]="Decimal",e[e.Percent=1]="Percent",e[e.Currency=2]="Currency",e[e.Scientific=3]="Scientific",e}(Gf||{});var je={Decimal:0,Group:1,List:2,PercentSign:3,PlusSign:4,MinusSign:5,Exponential:6,SuperscriptingExponent:7,PerMille:8,Infinity:9,NaN:10,TimeSeparator:11,CurrencyDecimal:12,CurrencyGroup:13};function Pn(e,t){let n=Ra(e),r=n[rn.NumberSymbols][t];if(typeof r>"u"){if(t===je.CurrencyDecimal)return n[rn.NumberSymbols][je.Decimal];if(t===je.CurrencyGroup)return n[rn.NumberSymbols][je.Group]}return r}function xI(e,t){return Ra(e)[rn.NumberFormats][t]}var SI=/^(\d+)?\.((\d+)(-(\d+))?)?$/,Bf=22,Lo=".",kn="0",TI=";",NI=",",Va="#";function AI(e,t,n,r,o,i,s=!1){let a="",u=!1;if(!isFinite(e))a=Pn(n,je.Infinity);else{let c=PI(e);s&&(c=FI(c));let l=t.minInt,d=t.minFrac,p=t.maxFrac;if(i){let O=i.match(SI);if(O===null)throw new Error(`${i} is not a valid digit info`);let oe=O[1],q=O[3],Se=O[5];oe!=null&&(l=Ba(oe)),q!=null&&(d=Ba(q)),Se!=null?p=Ba(Se):q!=null&&d>p&&(p=d)}kI(c,d,p);let f=c.digits,h=c.integerLen,m=c.exponent,A=[];for(u=f.every(O=>!O);h0?A=f.splice(h,f.length):(A=f,f=[0]);let b=[];for(f.length>=t.lgSize&&b.unshift(f.splice(-t.lgSize,f.length).join(""));f.length>t.gSize;)b.unshift(f.splice(-t.gSize,f.length).join(""));f.length&&b.unshift(f.join("")),a=b.join(Pn(n,r)),A.length&&(a+=Pn(n,o)+A.join("")),m&&(a+=Pn(n,je.Exponential)+"+"+m)}return e<0&&!u?a=t.negPre+a+t.negSuf:a=t.posPre+a+t.posSuf,a}function OI(e,t,n){let r=xI(t,Gf.Decimal),o=RI(r,Pn(t,je.MinusSign));return AI(e,o,t,je.Group,je.Decimal,n)}function RI(e,t="-"){let n={minInt:1,minFrac:0,maxFrac:0,posPre:"",posSuf:"",negPre:"",negSuf:"",gSize:0,lgSize:0},r=e.split(TI),o=r[0],i=r[1],s=o.indexOf(Lo)!==-1?o.split(Lo):[o.substring(0,o.lastIndexOf(kn)+1),o.substring(o.lastIndexOf(kn)+1)],a=s[0],u=s[1]||"";n.posPre=a.substring(0,a.indexOf(Va));for(let l=0;l-1&&(t=t.replace(Lo,"")),(i=t.search(/e/i))>0?(o<0&&(o=i),o+=+t.slice(i+1),t=t.substring(0,i)):o<0&&(o=t.length),i=0;t.charAt(i)===kn;i++);if(i===(a=t.length))r=[0],o=1;else{for(a--;t.charAt(a)===kn;)a--;for(o-=i,r=[],s=0;i<=a;i++,s++)r[s]=Number(t.charAt(i))}return o>Bf&&(r=r.splice(0,Bf-1),n=o-1,o=1),{digits:r,exponent:n,integerLen:o}}function kI(e,t,n){if(t>n)throw new Error(`The minimum number of digits after fraction (${t}) is higher than the maximum (${n}).`);let r=e.digits,o=r.length-e.integerLen,i=Math.min(Math.max(t,o),n),s=i+e.integerLen,a=r[s];if(s>0){r.splice(Math.max(e.integerLen,s));for(let d=s;d=5)if(s-1<0){for(let d=0;d>s;d--)r.unshift(0),e.integerLen++;r.unshift(1),e.integerLen++}else r[s-1]++;for(;o=c?h.pop():u=!1),p>=10?1:0},0);l&&(r.unshift(l),e.integerLen++)}function Ba(e){let t=parseInt(e);if(isNaN(t))throw new Error("Invalid integer literal when parsing "+e);return t}function aN(e,t){t=encodeURIComponent(t);for(let n of e.split(";")){let r=n.indexOf("="),[o,i]=r==-1?[n,""]:[n.slice(0,r),n.slice(r+1)];if(o.trim()===t)return decodeURIComponent(i)}return null}var Ha=/\s+/,Hf=[],uN=(()=>{class e{constructor(n,r){this._ngEl=n,this._renderer=r,this.initialClasses=Hf,this.stateMap=new Map}set klass(n){this.initialClasses=n!=null?n.trim().split(Ha):Hf}set ngClass(n){this.rawClass=typeof n=="string"?n.trim().split(Ha):n}ngDoCheck(){for(let r of this.initialClasses)this._updateState(r,!0);let n=this.rawClass;if(Array.isArray(n)||n instanceof Set)for(let r of n)this._updateState(r,!0);else if(n!=null)for(let r of Object.keys(n))this._updateState(r,!!n[r]);this._applyStateDiff()}_updateState(n,r){let o=this.stateMap.get(n);o!==void 0?(o.enabled!==r&&(o.changed=!0,o.enabled=r),o.touched=!0):this.stateMap.set(n,{enabled:r,changed:!0,touched:!0})}_applyStateDiff(){for(let n of this.stateMap){let r=n[0],o=n[1];o.changed?(this._toggleClass(r,o.enabled),o.changed=!1):o.touched||(o.enabled&&this._toggleClass(r,!1),this.stateMap.delete(r)),o.touched=!1}}_toggleClass(n,r){n=n.trim(),n.length>0&&n.split(Ha).forEach(o=>{r?this._renderer.addClass(this._ngEl.nativeElement,o):this._renderer.removeClass(this._ngEl.nativeElement,o)})}static{this.\u0275fac=function(r){return new(r||e)(xe(Xe),xe(Oo))}}static{this.\u0275dir=uo({type:e,selectors:[["","ngClass",""]],inputs:{klass:[0,"class","klass"],ngClass:"ngClass"},standalone:!0})}}return e})();var cN=(()=>{class e{constructor(n){this._viewContainerRef=n,this._viewRef=null,this.ngTemplateOutletContext=null,this.ngTemplateOutlet=null,this.ngTemplateOutletInjector=null}ngOnChanges(n){if(this._shouldRecreateView(n)){let r=this._viewContainerRef;if(this._viewRef&&r.remove(r.indexOf(this._viewRef)),!this.ngTemplateOutlet){this._viewRef=null;return}let o=this._createContextForwardProxy();this._viewRef=r.createEmbeddedView(this.ngTemplateOutlet,o,{injector:this.ngTemplateOutletInjector??void 0})}}_shouldRecreateView(n){return!!n.ngTemplateOutlet||!!n.ngTemplateOutletInjector}_createContextForwardProxy(){return new Proxy({},{set:(n,r,o)=>this.ngTemplateOutletContext?Reflect.set(this.ngTemplateOutletContext,r,o):!1,get:(n,r,o)=>{if(this.ngTemplateOutletContext)return Reflect.get(this.ngTemplateOutletContext,r,o)}})}static{this.\u0275fac=function(r){return new(r||e)(xe(On))}}static{this.\u0275dir=uo({type:e,selectors:[["","ngTemplateOutlet",""]],inputs:{ngTemplateOutletContext:"ngTemplateOutletContext",ngTemplateOutlet:"ngTemplateOutlet",ngTemplateOutletInjector:"ngTemplateOutletInjector"},standalone:!0,features:[ho]})}}return e})();function Za(e,t){return new x(2100,!1)}var $a=class{createSubscription(t,n){return La(()=>t.subscribe({next:n,error:r=>{throw r}}))}dispose(t){La(()=>t.unsubscribe())}},Ua=class{createSubscription(t,n){return t.then(n,r=>{throw r})}dispose(t){}},LI=new Ua,jI=new $a,lN=(()=>{class e{constructor(n){this._latestValue=null,this.markForCheckOnValueUpdate=!0,this._subscription=null,this._obj=null,this._strategy=null,this._ref=n}ngOnDestroy(){this._subscription&&this._dispose(),this._ref=null}transform(n){if(!this._obj){if(n)try{this.markForCheckOnValueUpdate=!1,this._subscribe(n)}finally{this.markForCheckOnValueUpdate=!0}return this._latestValue}return n!==this._obj?(this._dispose(),this.transform(n)):this._latestValue}_subscribe(n){this._obj=n,this._strategy=this._selectStrategy(n),this._subscription=this._strategy.createSubscription(n,r=>this._updateLatestValue(n,r))}_selectStrategy(n){if(Fo(n))return LI;if(Pa(n))return jI;throw Za(e,n)}_dispose(){this._strategy.dispose(this._subscription),this._latestValue=null,this._subscription=null,this._obj=null}_updateLatestValue(n,r){n===this._obj&&(this._latestValue=r,this.markForCheckOnValueUpdate&&this._ref?.markForCheck())}static{this.\u0275fac=function(r){return new(r||e)(xe(Rn,16))}}static{this.\u0275pipe=co({name:"async",type:e,pure:!1,standalone:!0})}}return e})();var dN=(()=>{class e{constructor(n){this._locale=n}transform(n,r,o){if(!VI(n))return null;o||=this._locale;try{let i=BI(n);return OI(i,o,r)}catch(i){throw Za(e,i.message)}}static{this.\u0275fac=function(r){return new(r||e)(xe(ko,16))}}static{this.\u0275pipe=co({name:"number",type:e,pure:!0,standalone:!0})}}return e})();function VI(e){return!(e==null||e===""||e!==e)}function BI(e){if(typeof e=="string"&&!isNaN(Number(e)-parseFloat(e)))return Number(e);if(typeof e!="number")throw new Error(`${e} is not a number`);return e}var fN=(()=>{class e{transform(n,r,o){if(n==null)return null;if(!this.supports(n))throw Za(e,n);return n.slice(r,o)}supports(n){return typeof n=="string"||Array.isArray(n)}static{this.\u0275fac=function(r){return new(r||e)}}static{this.\u0275pipe=co({name:"slice",type:e,pure:!1,standalone:!0})}}return e})();var pN=(()=>{class e{static{this.\u0275fac=function(r){return new(r||e)}}static{this.\u0275mod=al({type:e})}static{this.\u0275inj=qc({})}}return e})(),HI="browser",$I="server";function UI(e){return e===HI}function zI(e){return e===$I}var hN=(()=>{class e{static{this.\u0275prov=F({token:e,providedIn:"root",factory:()=>UI(D(Eo))?new za(D(jo),window):new Ga})}}return e})(),za=class{constructor(t,n){this.document=t,this.window=n,this.offset=()=>[0,0]}setOffset(t){Array.isArray(t)?this.offset=()=>t:this.offset=t}getScrollPosition(){return[this.window.scrollX,this.window.scrollY]}scrollToPosition(t){this.window.scrollTo(t[0],t[1])}scrollToAnchor(t){let n=GI(this.document,t);n&&(this.scrollToElement(n),n.focus())}setHistoryScrollRestoration(t){this.window.history.scrollRestoration=t}scrollToElement(t){let n=t.getBoundingClientRect(),r=n.left+this.window.pageXOffset,o=n.top+this.window.pageYOffset,i=this.offset();this.window.scrollTo(r-i[0],o-i[1])}};function GI(e,t){let n=e.getElementById(t)||e.getElementsByName(t)[0];if(n)return n;if(typeof e.createTreeWalker=="function"&&e.body&&typeof e.body.attachShadow=="function"){let r=e.createTreeWalker(e.body,NodeFilter.SHOW_ELEMENT),o=r.currentNode;for(;o;){let i=o.shadowRoot;if(i){let s=i.getElementById(t)||i.querySelector(`[name="${t}"]`);if(s)return s}o=r.nextNode()}}return null}var Ga=class{setOffset(t){}getScrollPosition(){return[0,0]}scrollToPosition(t){}scrollToAnchor(t){}setHistoryScrollRestoration(t){}},$f=class{};var Wf=e=>e.src,WI=new N("",{providedIn:"root",factory:()=>Wf});var qI=new N("NG_OPTIMIZED_PRELOADED_IMAGES",{providedIn:"root",factory:()=>new Set}),ZI=(()=>{class e{constructor(){this.preloadedImages=D(qI),this.document=D(jo)}createPreloadLinkTag(n,r,o,i){if(this.preloadedImages.has(r))return;this.preloadedImages.add(r);let s=n.createElement("link");n.setAttribute(s,"as","image"),n.setAttribute(s,"href",r),n.setAttribute(s,"rel","preload"),n.setAttribute(s,"fetchpriority","high"),i&&n.setAttribute(s,"imageSizes",i),o&&n.setAttribute(s,"imageSrcset",o),n.appendChild(this.document.head,s)}static{this.\u0275fac=function(r){return new(r||e)}}static{this.\u0275prov=F({token:e,factory:e.\u0275fac,providedIn:"root"})}}return e})();var YI=/^((\s*\d+w\s*(,|$)){1,})$/;var QI=[1,2],KI=640;var JI=1920,XI=1080;var gN=(()=>{class e{constructor(){this.imageLoader=D(WI),this.config=ew(D(sd)),this.renderer=D(Oo),this.imgElement=D(Xe).nativeElement,this.injector=D(_e),this.isServer=zI(D(Eo)),this.preloadLinkCreator=D(ZI),this.lcpObserver=null,this._renderedSrc=null,this.priority=!1,this.disableOptimizedSrcset=!1,this.fill=!1}ngOnInit(){ge("NgOptimizedImage"),this.placeholder&&this.removePlaceholderOnLoad(this.imgElement),this.setHostAttributes()}setHostAttributes(){this.fill?this.sizes||="100vw":(this.setHostAttribute("width",this.width.toString()),this.setHostAttribute("height",this.height.toString())),this.setHostAttribute("loading",this.getLoadingBehavior()),this.setHostAttribute("fetchpriority",this.getFetchPriority()),this.setHostAttribute("ng-img","true");let n=this.updateSrcAndSrcset();this.sizes&&this.setHostAttribute("sizes",this.sizes),this.isServer&&this.priority&&this.preloadLinkCreator.createPreloadLinkTag(this.renderer,this.getRewrittenSrc(),n,this.sizes)}ngOnChanges(n){if(n.ngSrc&&!n.ngSrc.isFirstChange()){let r=this._renderedSrc;this.updateSrcAndSrcset(!0);let o=this._renderedSrc;this.lcpObserver!==null&&r&&o&&r!==o&&this.injector.get(Y).runOutsideAngular(()=>{this.lcpObserver?.updateImage(r,o)})}}callImageLoader(n){let r=n;return this.loaderParams&&(r.loaderParams=this.loaderParams),this.imageLoader(r)}getLoadingBehavior(){return!this.priority&&this.loading!==void 0?this.loading:this.priority?"eager":"lazy"}getFetchPriority(){return this.priority?"high":"auto"}getRewrittenSrc(){if(!this._renderedSrc){let n={src:this.ngSrc};this._renderedSrc=this.callImageLoader(n)}return this._renderedSrc}getRewrittenSrcset(){let n=YI.test(this.ngSrcset);return this.ngSrcset.split(",").filter(o=>o!=="").map(o=>{o=o.trim();let i=n?parseFloat(o):parseFloat(o)*this.width;return`${this.callImageLoader({src:this.ngSrc,width:i})} ${o}`}).join(", ")}getAutomaticSrcset(){return this.sizes?this.getResponsiveSrcset():this.getFixedSrcset()}getResponsiveSrcset(){let{breakpoints:n}=this.config,r=n;return this.sizes?.trim()==="100vw"&&(r=n.filter(i=>i>=KI)),r.map(i=>`${this.callImageLoader({src:this.ngSrc,width:i})} ${i}w`).join(", ")}updateSrcAndSrcset(n=!1){n&&(this._renderedSrc=null);let r=this.getRewrittenSrc();this.setHostAttribute("src",r);let o;return this.ngSrcset?o=this.getRewrittenSrcset():this.shouldGenerateAutomaticSrcset()&&(o=this.getAutomaticSrcset()),o&&this.setHostAttribute("srcset",o),o}getFixedSrcset(){return QI.map(r=>`${this.callImageLoader({src:this.ngSrc,width:this.width*r})} ${r}x`).join(", ")}shouldGenerateAutomaticSrcset(){let n=!1;return this.sizes||(n=this.width>JI||this.height>XI),!this.disableOptimizedSrcset&&!this.srcset&&this.imageLoader!==Wf&&!n}generatePlaceholder(n){let{placeholderResolution:r}=this.config;return n===!0?`url(${this.callImageLoader({src:this.ngSrc,width:r,isPlaceholder:!0})})`:typeof n=="string"?`url(${n})`:null}shouldBlurPlaceholder(n){return!n||!n.hasOwnProperty("blur")?!0:!!n.blur}removePlaceholderOnLoad(n){let r=()=>{let s=this.injector.get(Rn);o(),i(),this.placeholder=!1,s.markForCheck()},o=this.renderer.listen(n,"load",r),i=this.renderer.listen(n,"error",r);tw(n,r)}ngOnDestroy(){}setHostAttribute(n,r){this.renderer.setAttribute(this.imgElement,n,r)}static{this.\u0275fac=function(r){return new(r||e)}}static{this.\u0275dir=uo({type:e,selectors:[["img","ngSrc",""]],hostVars:18,hostBindings:function(r,o){r&2&&Oa("position",o.fill?"absolute":null)("width",o.fill?"100%":null)("height",o.fill?"100%":null)("inset",o.fill?"0":null)("background-size",o.placeholder?"cover":null)("background-position",o.placeholder?"50% 50%":null)("background-repeat",o.placeholder?"no-repeat":null)("background-image",o.placeholder?o.generatePlaceholder(o.placeholder):null)("filter",o.placeholder&&o.shouldBlurPlaceholder(o.placeholderConfig)?"blur(15px)":null)},inputs:{ngSrc:[2,"ngSrc","ngSrc",nw],ngSrcset:"ngSrcset",sizes:"sizes",width:[2,"width","width",ka],height:[2,"height","height",ka],loading:"loading",priority:[2,"priority","priority",Fn],loaderParams:"loaderParams",disableOptimizedSrcset:[2,"disableOptimizedSrcset","disableOptimizedSrcset",Fn],fill:[2,"fill","fill",Fn],placeholder:[2,"placeholder","placeholder",rw],placeholderConfig:"placeholderConfig",src:"src",srcset:"srcset"},standalone:!0,features:[uf,ho]})}}return e})();function ew(e){let t={};return e.breakpoints&&(t.breakpoints=e.breakpoints.sort((n,r)=>n-r)),Object.assign({},fa,e,t)}function tw(e,t){e.complete&&e.naturalWidth&&t()}function nw(e){return typeof e=="string"?e:xt(e)}function rw(e){return typeof e=="string"&&e!=="true"&&e!=="false"&&e!==""?e:Fn(e)}export{me as a,ye as b,ow as c,Kf as d,L as e,ot as f,Wo as g,S as h,ei as i,ti as j,ie as k,on as l,Cp as m,bp as n,it as o,dE as p,iu as q,fE as r,au as s,pE as t,hE as u,sn as v,De as w,_p as x,Mp as y,xp as z,ut as A,ve as B,yp as C,le as D,ln as E,Pt as F,Sp as G,Tp as H,oi as I,ct as J,kp as K,lt as L,Lp as M,ii as N,Dp as O,jp as P,Tu as Q,dn as R,dt as S,si as T,Vp as U,Bp as V,Up as W,Au as X,ui as Y,zp as Z,Gp as _,Ou as $,li as aa,Ru as ba,Wp as ca,qp as da,Fu as ea,Zp as fa,Yp as ga,Pu as ha,x as ia,Gc as ja,F as ka,qc as la,AS as ma,N as na,M as oa,G as pa,D as qa,Ch as ra,bh as sa,vn as ta,OS as ua,al as va,uo as wa,co as xa,qh as ya,gl as za,Ze as Aa,RS as Ba,Qs as Ca,ho as Da,FS as Ea,PS as Fa,kS as Ga,LS as Ha,jS as Ia,Gg as Ja,_e as Ka,wo as La,Sn as Ma,pe as Na,Y as Oa,Et as Pa,Xe as Qa,Ki as Ra,VS as Sa,BS as Ta,um as Ua,Eo as Va,HS as Wa,$S as Xa,xt as Ya,ha as Za,US as _a,zS as $a,GS as ab,WS as bb,qS as cb,cd as db,Nm as eb,bo as fb,ZS as gb,Om as hb,YS as ib,zr as jb,QS as kb,xe as lb,KS as mb,Cn as nb,Yt as ob,Qt as pb,Zr as qb,Oo as rb,On as sb,ge as tb,tT as ub,Iv as vb,nT as wb,Sv as xb,rT as yb,uf as zb,Is as Ab,Pv as Bb,$v as Cb,Bt as Db,Gv as Eb,Wv as Fb,Zv as Gb,sD as Hb,Oa as Ib,aD as Jb,oT as Kb,iT as Lb,sT as Mb,aT as Nb,uT as Ob,cT as Pb,Ef as Qb,Cf as Rb,ID as Sb,bf as Tb,_f as Ub,CD as Vb,lT as Wb,_D as Xb,MD as Yb,RD as Zb,FD as _b,dT as $b,fT as ac,pT as bc,jD as cc,hT as dc,gT as ec,mT as fc,yT as gc,vT as hc,DT as ic,IT as jc,wT as kc,HD as lc,Sf as mc,$D as nc,ET as oc,CT as pc,bT as qc,_T as rc,MT as sc,xT as tc,ST as uc,TT as vc,NT as wc,AT as xc,OT as yc,Fo as zc,KD as Ac,JD as Bc,Po as Cc,RT as Dc,FT as Ec,Rn as Fc,kf as Gc,PT as Hc,Fn as Ic,ka as Jc,kT as Kc,La as Lc,DI as Mc,LT as Nc,ja as Oc,oN as Pc,Lf as Qc,jo as Rc,iN as Sc,Vo as Tc,EI as Uc,sN as Vc,CI as Wc,aN as Xc,uN as Yc,cN as Zc,lN as _c,dN as $c,fN as ad,pN as bd,HI as cd,UI as dd,zI as ed,hN as fd,$f as gd,gN as hd}; diff --git a/webui/dist/bitmagnet/browser/chunk-3PIWRAOL.js b/webui/dist/bitmagnet/browser/chunk-3PIWRAOL.js new file mode 100644 index 0000000..47de777 --- /dev/null +++ b/webui/dist/bitmagnet/browser/chunk-3PIWRAOL.js @@ -0,0 +1,2 @@ +import{j as Me,k as ke,l as xe,m as We,o as De,t as $,u as Se,v as _e,w as K,x as ze,y as Ce}from"./chunk-4NEHCUZ2.js";import{c as Pe,d as Y,g as T,h as J,i as Q}from"./chunk-6XXA7HXI.js";import{$b as H,Cb as G,Ea as oe,Fa as se,Fc as ye,Gb as le,Ka as k,Mb as he,Oa as de,Qa as me,Qb as j,Rb as W,Rc as we,Sb as fe,Wb as pe,Yb as ge,Zb as ve,_b as be,a as P,ec as O,fa as ie,fc as X,gc as R,k as y,ka as z,kb as x,kc as I,lb as g,mc as q,na as L,nb as ue,pa as p,pc as B,qa as re,ua as V,wa as C,xb as ce}from"./chunk-3DR3CJRN.js";function la(e,n){if(e&1){let t=pe();j(0,"div",1)(1,"button",2),ve("click",function(){oe(t);let i=H();return se(i.action())}),I(2),W()()}if(e&2){let t=H();x(2),q(" ",t.data.action," ")}}var ha=["label"];function fa(e,n){}var pa=Math.pow(2,31)-1,D=class{constructor(n,t){this._overlayRef=t,this._afterDismissed=new y,this._afterOpened=new y,this._onAction=new y,this._dismissedByAction=!1,this.containerInstance=n,n._onExit.subscribe(()=>this._finishDismiss())}dismiss(){this._afterDismissed.closed||this.containerInstance.exit(),clearTimeout(this._durationTimeoutId)}dismissWithAction(){this._onAction.closed||(this._dismissedByAction=!0,this._onAction.next(),this._onAction.complete(),this.dismiss()),clearTimeout(this._durationTimeoutId)}closeWithAction(){this.dismissWithAction()}_dismissAfter(n){this._durationTimeoutId=setTimeout(()=>this.dismiss(),Math.min(n,pa))}_open(){this._afterOpened.closed||(this._afterOpened.next(),this._afterOpened.complete())}_finishDismiss(){this._overlayRef.dispose(),this._onAction.closed||this._onAction.complete(),this._afterDismissed.next({dismissedByAction:this._dismissedByAction}),this._afterDismissed.complete(),this._dismissedByAction=!1}afterDismissed(){return this._afterDismissed}afterOpened(){return this.containerInstance._onEnter}onAction(){return this._onAction}},je=new L("MatSnackBarData"),M=class{constructor(){this.politeness="assertive",this.announcementMessage="",this.duration=0,this.data=null,this.horizontalPosition="center",this.verticalPosition="bottom"}},ga=(()=>{class e{static{this.\u0275fac=function(a){return new(a||e)}}static{this.\u0275dir=C({type:e,selectors:[["","matSnackBarLabel",""]],hostAttrs:[1,"mat-mdc-snack-bar-label","mdc-snackbar__label"],standalone:!0})}}return e})(),va=(()=>{class e{static{this.\u0275fac=function(a){return new(a||e)}}static{this.\u0275dir=C({type:e,selectors:[["","matSnackBarActions",""]],hostAttrs:[1,"mat-mdc-snack-bar-actions","mdc-snackbar__actions"],standalone:!0})}}return e})(),ba=(()=>{class e{static{this.\u0275fac=function(a){return new(a||e)}}static{this.\u0275dir=C({type:e,selectors:[["","matSnackBarAction",""]],hostAttrs:[1,"mat-mdc-snack-bar-action","mdc-snackbar__action"],standalone:!0})}}return e})(),ya=(()=>{class e{constructor(t,a){this.snackBarRef=t,this.data=a}action(){this.snackBarRef.dismissWithAction()}get hasAction(){return!!this.data.action}static{this.\u0275fac=function(a){return new(a||e)(g(D),g(je))}}static{this.\u0275cmp=V({type:e,selectors:[["simple-snack-bar"]],hostAttrs:[1,"mat-mdc-simple-snack-bar"],exportAs:["matSnackBar"],standalone:!0,features:[B],decls:3,vars:2,consts:[["matSnackBarLabel",""],["matSnackBarActions",""],["mat-button","","matSnackBarAction","",3,"click"]],template:function(a,i){a&1&&(j(0,"div",0),I(1),W(),G(2,la,3,1,"div",1)),a&2&&(x(),q(" ",i.data.message,` +`),x(),he(i.hasAction?2:-1))},dependencies:[De,ga,va,ba],styles:[".mat-mdc-simple-snack-bar{display:flex}"],encapsulation:2,changeDetection:0})}}return e})(),wa={snackBarState:Pe("state",[J("void, hidden",T({transform:"scale(0.8)",opacity:0})),J("visible",T({transform:"scale(1)",opacity:1})),Q("* => visible",Y("150ms cubic-bezier(0, 0, 0.2, 1)")),Q("* => void, * => hidden",Y("75ms cubic-bezier(0.4, 0.0, 1, 1)",T({opacity:0})))])},Pa=0,Ma=(()=>{class e extends _e{constructor(t,a,i,d,m){super(),this._ngZone=t,this._elementRef=a,this._changeDetectorRef=i,this._platform=d,this.snackBarConfig=m,this._document=re(we),this._trackedModals=new Set,this._announceDelay=150,this._destroyed=!1,this._onAnnounce=new y,this._onExit=new y,this._onEnter=new y,this._animationState="void",this._liveElementId=`mat-snack-bar-container-live-${Pa++}`,this.attachDomPortal=c=>{this._assertNotAttached();let f=this._portalOutlet.attachDomPortal(c);return this._afterPortalAttached(),f},m.politeness==="assertive"&&!m.announcementMessage?this._live="assertive":m.politeness==="off"?this._live="off":this._live="polite",this._platform.FIREFOX&&(this._live==="polite"&&(this._role="status"),this._live==="assertive"&&(this._role="alert"))}attachComponentPortal(t){this._assertNotAttached();let a=this._portalOutlet.attachComponentPortal(t);return this._afterPortalAttached(),a}attachTemplatePortal(t){this._assertNotAttached();let a=this._portalOutlet.attachTemplatePortal(t);return this._afterPortalAttached(),a}onAnimationEnd(t){let{fromState:a,toState:i}=t;if((i==="void"&&a!=="void"||i==="hidden")&&this._completeExit(),i==="visible"){let d=this._onEnter;this._ngZone.run(()=>{d.next(),d.complete()})}}enter(){this._destroyed||(this._animationState="visible",this._changeDetectorRef.markForCheck(),this._changeDetectorRef.detectChanges(),this._screenReaderAnnounce())}exit(){return this._ngZone.run(()=>{this._animationState="hidden",this._changeDetectorRef.markForCheck(),this._elementRef.nativeElement.setAttribute("mat-exit",""),clearTimeout(this._announceTimeoutId)}),this._onExit}ngOnDestroy(){this._destroyed=!0,this._clearFromModals(),this._completeExit()}_completeExit(){queueMicrotask(()=>{this._onExit.next(),this._onExit.complete()})}_afterPortalAttached(){let t=this._elementRef.nativeElement,a=this.snackBarConfig.panelClass;a&&(Array.isArray(a)?a.forEach(m=>t.classList.add(m)):t.classList.add(a)),this._exposeToModals();let i=this._label.nativeElement,d="mdc-snackbar__label";i.classList.toggle(d,!i.querySelector(`.${d}`))}_exposeToModals(){let t=this._liveElementId,a=this._document.querySelectorAll('body > .cdk-overlay-container [aria-modal="true"]');for(let i=0;i{let a=t.getAttribute("aria-owns");if(a){let i=a.replace(this._liveElementId,"").trim();i.length>0?t.setAttribute("aria-owns",i):t.removeAttribute("aria-owns")}}),this._trackedModals.clear()}_assertNotAttached(){this._portalOutlet.hasAttached()}_screenReaderAnnounce(){this._announceTimeoutId||this._ngZone.runOutsideAngular(()=>{this._announceTimeoutId=setTimeout(()=>{let t=this._elementRef.nativeElement.querySelector("[aria-hidden]"),a=this._elementRef.nativeElement.querySelector("[aria-live]");if(t&&a){let i=null;this._platform.isBrowser&&document.activeElement instanceof HTMLElement&&t.contains(document.activeElement)&&(i=document.activeElement),t.removeAttribute("aria-hidden"),a.appendChild(t),i?.focus(),this._onAnnounce.next(),this._onAnnounce.complete()}},this._announceDelay)})}static{this.\u0275fac=function(a){return new(a||e)(g(de),g(me),g(ye),g(Me),g(M))}}static{this.\u0275cmp=V({type:e,selectors:[["mat-snack-bar-container"]],viewQuery:function(a,i){if(a&1&&(O(K,7),O(ha,7)),a&2){let d;X(d=R())&&(i._portalOutlet=d.first),X(d=R())&&(i._label=d.first)}},hostAttrs:[1,"mdc-snackbar","mat-mdc-snack-bar-container"],hostVars:1,hostBindings:function(a,i){a&1&&be("@state.done",function(m){return i.onAnimationEnd(m)}),a&2&&ge("@state",i._animationState)},standalone:!0,features:[ce,B],decls:6,vars:3,consts:[["label",""],[1,"mdc-snackbar__surface","mat-mdc-snackbar-surface"],[1,"mat-mdc-snack-bar-label"],["aria-hidden","true"],["cdkPortalOutlet",""]],template:function(a,i){a&1&&(j(0,"div",1)(1,"div",2,0)(3,"div",3),G(4,fa,0,0,"ng-template",4),W(),fe(5,"div"),W()()),a&2&&(x(5),le("aria-live",i._live)("role",i._role)("id",i._liveElementId))},dependencies:[K],styles:[".mat-mdc-snack-bar-container{display:flex;align-items:center;justify-content:center;box-sizing:border-box;-webkit-tap-highlight-color:rgba(0,0,0,0);margin:8px}.mat-mdc-snack-bar-handset .mat-mdc-snack-bar-container{width:100vw}.mat-mdc-snackbar-surface{box-shadow:0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 6px 10px 0px rgba(0, 0, 0, 0.14), 0px 1px 18px 0px rgba(0, 0, 0, 0.12);display:flex;align-items:center;justify-content:flex-start;box-sizing:border-box;padding-left:0;padding-right:8px}[dir=rtl] .mat-mdc-snackbar-surface{padding-right:0;padding-left:8px}.mat-mdc-snack-bar-container .mat-mdc-snackbar-surface{min-width:344px;max-width:672px}.mat-mdc-snack-bar-handset .mat-mdc-snackbar-surface{width:100%;min-width:0}.cdk-high-contrast-active .mat-mdc-snackbar-surface{outline:solid 1px}.mat-mdc-snack-bar-container .mat-mdc-snackbar-surface{color:var(--mdc-snackbar-supporting-text-color, var(--mat-app-inverse-on-surface));border-radius:var(--mdc-snackbar-container-shape, var(--mat-app-corner-extra-small));background-color:var(--mdc-snackbar-container-color, var(--mat-app-inverse-surface))}.mdc-snackbar__label{width:100%;flex-grow:1;box-sizing:border-box;margin:0;padding:14px 8px 14px 16px}[dir=rtl] .mdc-snackbar__label{padding-left:8px;padding-right:16px}.mat-mdc-snack-bar-container .mdc-snackbar__label{font-family:var(--mdc-snackbar-supporting-text-font, var(--mat-app-body-medium-font));font-size:var(--mdc-snackbar-supporting-text-size, var(--mat-app-body-medium-size));font-weight:var(--mdc-snackbar-supporting-text-weight, var(--mat-app-body-medium-weight));line-height:var(--mdc-snackbar-supporting-text-line-height, var(--mat-app-body-medium-line-height))}.mat-mdc-snack-bar-actions{display:flex;flex-shrink:0;align-items:center;box-sizing:border-box}.mat-mdc-snack-bar-handset,.mat-mdc-snack-bar-container,.mat-mdc-snack-bar-label{flex:1 1 auto}.mat-mdc-snack-bar-container .mat-mdc-button.mat-mdc-snack-bar-action:not(:disabled){color:var(--mat-snack-bar-button-color, var(--mat-app-inverse-primary));--mat-text-button-state-layer-color:currentColor;--mat-text-button-ripple-color:currentColor}.mat-mdc-snack-bar-container .mat-mdc-button.mat-mdc-snack-bar-action:not(:disabled) .mat-ripple-element{opacity:.1}"],encapsulation:2,data:{animation:[wa.snackBarState]}})}}return e})();function ka(){return new M}var xa=new L("mat-snack-bar-default-options",{providedIn:"root",factory:ka}),Te=(()=>{class e{get _openedSnackBarRef(){let t=this._parentSnackBar;return t?t._openedSnackBarRef:this._snackBarRefAtThisLevel}set _openedSnackBarRef(t){this._parentSnackBar?this._parentSnackBar._openedSnackBarRef=t:this._snackBarRefAtThisLevel=t}constructor(t,a,i,d,m,c){this._overlay=t,this._live=a,this._injector=i,this._breakpointObserver=d,this._parentSnackBar=m,this._defaultConfig=c,this._snackBarRefAtThisLevel=null,this.simpleSnackBarComponent=ya,this.snackBarContainerComponent=Ma,this.handsetCssClass="mat-mdc-snack-bar-handset"}openFromComponent(t,a){return this._attach(t,a)}openFromTemplate(t,a){return this._attach(t,a)}open(t,a="",i){let d=P(P({},this._defaultConfig),i);return d.data={message:t,action:a},d.announcementMessage===t&&(d.announcementMessage=void 0),this.openFromComponent(this.simpleSnackBarComponent,d)}dismiss(){this._openedSnackBarRef&&this._openedSnackBarRef.dismiss()}ngOnDestroy(){this._snackBarRefAtThisLevel&&this._snackBarRefAtThisLevel.dismiss()}_attachSnackBarContainer(t,a){let i=a&&a.viewContainerRef&&a.viewContainerRef.injector,d=k.create({parent:i||this._injector,providers:[{provide:M,useValue:a}]}),m=new $(this.snackBarContainerComponent,a.viewContainerRef,d),c=t.attach(m);return c.instance.snackBarConfig=a,c.instance}_attach(t,a){let i=P(P(P({},new M),this._defaultConfig),a),d=this._createOverlay(i),m=this._attachSnackBarContainer(d,i),c=new D(m,d);if(t instanceof ue){let f=new Se(t,null,{$implicit:i.data,snackBarRef:c});c.instance=m.attachTemplatePortal(f)}else{let f=this._createInjector(i,c),b=new $(t,void 0,f),A=m.attachComponentPortal(b);c.instance=A.instance}return this._breakpointObserver.observe(xe.HandsetPortrait).pipe(ie(d.detachments())).subscribe(f=>{d.overlayElement.classList.toggle(this.handsetCssClass,f.matches)}),i.announcementMessage&&m._onAnnounce.subscribe(()=>{this._live.announce(i.announcementMessage,i.politeness)}),this._animateSnackBar(c,i),this._openedSnackBarRef=c,this._openedSnackBarRef}_animateSnackBar(t,a){t.afterDismissed().subscribe(()=>{this._openedSnackBarRef==t&&(this._openedSnackBarRef=null),a.announcementMessage&&this._live.clear()}),this._openedSnackBarRef?(this._openedSnackBarRef.afterDismissed().subscribe(()=>{t.containerInstance.enter()}),this._openedSnackBarRef.dismiss()):t.containerInstance.enter(),a.duration&&a.duration>0&&t.afterOpened().subscribe(()=>t._dismissAfter(a.duration))}_createOverlay(t){let a=new ze;a.direction=t.direction;let i=this._overlay.position().global(),d=t.direction==="rtl",m=t.horizontalPosition==="left"||t.horizontalPosition==="start"&&!d||t.horizontalPosition==="end"&&d,c=!m&&t.horizontalPosition!=="center";return m?i.left("0"):c?i.right("0"):i.centerHorizontally(),t.verticalPosition==="top"?i.top("0"):i.bottom("0"),a.positionStrategy=i,this._overlay.create(a)}_createInjector(t,a){let i=t&&t.viewContainerRef&&t.viewContainerRef.injector;return k.create({parent:i||this._injector,providers:[{provide:D,useValue:a},{provide:je,useValue:t.data}]})}static{this.\u0275fac=function(a){return new(a||e)(p(Ce),p(We),p(k),p(ke),p(e,12),p(xa))}}static{this.\u0275prov=z({token:e,factory:e.\u0275fac,providedIn:"root"})}}return e})();var sm=(()=>{class e{constructor(t){this.snackBar=t,this.expiry=1e3*10}addError(t,a=this.expiry){this.snackBar.open(t,"Dismiss",{duration:a,panelClass:["snack-bar-error"]})}static{this.\u0275fac=function(a){return new(a||e)(p(Te))}}static{this.\u0275prov=z({token:e,factory:e.\u0275fac,providedIn:"root"})}}return e})();var Da={lessThanXSeconds:{one:"\u0623\u0642\u0644 \u0645\u0646 \u062B\u0627\u0646\u064A\u0629",two:"\u0623\u0642\u0644 \u0645\u0646 \u062B\u0627\u0646\u064A\u062A\u064A\u0646",threeToTen:"\u0623\u0642\u0644 \u0645\u0646 {{count}} \u062B\u0648\u0627\u0646\u064A",other:"\u0623\u0642\u0644 \u0645\u0646 {{count}} \u062B\u0627\u0646\u064A\u0629"},xSeconds:{one:"\u062B\u0627\u0646\u064A\u0629 \u0648\u0627\u062D\u062F\u0629",two:"\u062B\u0627\u0646\u064A\u062A\u0627\u0646",threeToTen:"{{count}} \u062B\u0648\u0627\u0646\u064A",other:"{{count}} \u062B\u0627\u0646\u064A\u0629"},halfAMinute:"\u0646\u0635\u0641 \u062F\u0642\u064A\u0642\u0629",lessThanXMinutes:{one:"\u0623\u0642\u0644 \u0645\u0646 \u062F\u0642\u064A\u0642\u0629",two:"\u0623\u0642\u0644 \u0645\u0646 \u062F\u0642\u064A\u0642\u062A\u064A\u0646",threeToTen:"\u0623\u0642\u0644 \u0645\u0646 {{count}} \u062F\u0642\u0627\u0626\u0642",other:"\u0623\u0642\u0644 \u0645\u0646 {{count}} \u062F\u0642\u064A\u0642\u0629"},xMinutes:{one:"\u062F\u0642\u064A\u0642\u0629 \u0648\u0627\u062D\u062F\u0629",two:"\u062F\u0642\u064A\u0642\u062A\u0627\u0646",threeToTen:"{{count}} \u062F\u0642\u0627\u0626\u0642",other:"{{count}} \u062F\u0642\u064A\u0642\u0629"},aboutXHours:{one:"\u0633\u0627\u0639\u0629 \u0648\u0627\u062D\u062F\u0629 \u062A\u0642\u0631\u064A\u0628\u0627\u064B",two:"\u0633\u0627\u0639\u062A\u064A\u0646 \u062A\u0642\u0631\u064A\u0628\u0627",threeToTen:"{{count}} \u0633\u0627\u0639\u0627\u062A \u062A\u0642\u0631\u064A\u0628\u0627\u064B",other:"{{count}} \u0633\u0627\u0639\u0629 \u062A\u0642\u0631\u064A\u0628\u0627\u064B"},xHours:{one:"\u0633\u0627\u0639\u0629 \u0648\u0627\u062D\u062F\u0629",two:"\u0633\u0627\u0639\u062A\u0627\u0646",threeToTen:"{{count}} \u0633\u0627\u0639\u0627\u062A",other:"{{count}} \u0633\u0627\u0639\u0629"},xDays:{one:"\u064A\u0648\u0645 \u0648\u0627\u062D\u062F",two:"\u064A\u0648\u0645\u0627\u0646",threeToTen:"{{count}} \u0623\u064A\u0627\u0645",other:"{{count}} \u064A\u0648\u0645"},aboutXWeeks:{one:"\u0623\u0633\u0628\u0648\u0639 \u0648\u0627\u062D\u062F \u062A\u0642\u0631\u064A\u0628\u0627",two:"\u0623\u0633\u0628\u0648\u0639\u064A\u0646 \u062A\u0642\u0631\u064A\u0628\u0627",threeToTen:"{{count}} \u0623\u0633\u0627\u0628\u064A\u0639 \u062A\u0642\u0631\u064A\u0628\u0627",other:"{{count}} \u0623\u0633\u0628\u0648\u0639\u0627 \u062A\u0642\u0631\u064A\u0628\u0627"},xWeeks:{one:"\u0623\u0633\u0628\u0648\u0639 \u0648\u0627\u062D\u062F",two:"\u0623\u0633\u0628\u0648\u0639\u0627\u0646",threeToTen:"{{count}} \u0623\u0633\u0627\u0628\u064A\u0639",other:"{{count}} \u0623\u0633\u0628\u0648\u0639\u0627"},aboutXMonths:{one:"\u0634\u0647\u0631 \u0648\u0627\u062D\u062F \u062A\u0642\u0631\u064A\u0628\u0627\u064B",two:"\u0634\u0647\u0631\u064A\u0646 \u062A\u0642\u0631\u064A\u0628\u0627",threeToTen:"{{count}} \u0623\u0634\u0647\u0631 \u062A\u0642\u0631\u064A\u0628\u0627",other:"{{count}} \u0634\u0647\u0631\u0627 \u062A\u0642\u0631\u064A\u0628\u0627\u064B"},xMonths:{one:"\u0634\u0647\u0631 \u0648\u0627\u062D\u062F",two:"\u0634\u0647\u0631\u0627\u0646",threeToTen:"{{count}} \u0623\u0634\u0647\u0631",other:"{{count}} \u0634\u0647\u0631\u0627"},aboutXYears:{one:"\u0633\u0646\u0629 \u0648\u0627\u062D\u062F\u0629 \u062A\u0642\u0631\u064A\u0628\u0627\u064B",two:"\u0633\u0646\u062A\u064A\u0646 \u062A\u0642\u0631\u064A\u0628\u0627",threeToTen:"{{count}} \u0633\u0646\u0648\u0627\u062A \u062A\u0642\u0631\u064A\u0628\u0627\u064B",other:"{{count}} \u0633\u0646\u0629 \u062A\u0642\u0631\u064A\u0628\u0627\u064B"},xYears:{one:"\u0633\u0646\u0629 \u0648\u0627\u062D\u062F",two:"\u0633\u0646\u062A\u0627\u0646",threeToTen:"{{count}} \u0633\u0646\u0648\u0627\u062A",other:"{{count}} \u0633\u0646\u0629"},overXYears:{one:"\u0623\u0643\u062B\u0631 \u0645\u0646 \u0633\u0646\u0629",two:"\u0623\u0643\u062B\u0631 \u0645\u0646 \u0633\u0646\u062A\u064A\u0646",threeToTen:"\u0623\u0643\u062B\u0631 \u0645\u0646 {{count}} \u0633\u0646\u0648\u0627\u062A",other:"\u0623\u0643\u062B\u0631 \u0645\u0646 {{count}} \u0633\u0646\u0629"},almostXYears:{one:"\u0645\u0627 \u064A\u0642\u0627\u0631\u0628 \u0633\u0646\u0629 \u0648\u0627\u062D\u062F\u0629",two:"\u0645\u0627 \u064A\u0642\u0627\u0631\u0628 \u0633\u0646\u062A\u064A\u0646",threeToTen:"\u0645\u0627 \u064A\u0642\u0627\u0631\u0628 {{count}} \u0633\u0646\u0648\u0627\u062A",other:"\u0645\u0627 \u064A\u0642\u0627\u0631\u0628 {{count}} \u0633\u0646\u0629"}},Fe=(e,n,t)=>{let a=Da[e],i;return typeof a=="string"?i=a:n===1?i=a.one:n===2?i=a.two:n<=10?i=a.threeToTen.replace("{{count}}",String(n)):i=a.other.replace("{{count}}",String(n)),t?.addSuffix?t.comparison&&t.comparison>0?"\u062E\u0644\u0627\u0644 "+i:"\u0645\u0646\u0630 "+i:i};function s(e){return(n={})=>{let t=n.width?String(n.width):e.defaultWidth;return e.formats[t]||e.formats[e.defaultWidth]}}var Sa={full:"EEEE\u060C do MMMM y",long:"do MMMM y",medium:"d MMM y",short:"dd/MM/yyyy"},_a={full:"HH:mm:ss",long:"HH:mm:ss",medium:"HH:mm:ss",short:"HH:mm"},za={full:"{{date}} '\u0639\u0646\u062F \u0627\u0644\u0633\u0627\u0639\u0629' {{time}}",long:"{{date}} '\u0639\u0646\u062F \u0627\u0644\u0633\u0627\u0639\u0629' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},Ne={date:s({formats:Sa,defaultWidth:"full"}),time:s({formats:_a,defaultWidth:"full"}),dateTime:s({formats:za,defaultWidth:"full"})};var Ca={lastWeek:"eeee '\u0627\u0644\u0645\u0627\u0636\u064A \u0639\u0646\u062F \u0627\u0644\u0633\u0627\u0639\u0629' p",yesterday:"'\u0627\u0644\u0623\u0645\u0633 \u0639\u0646\u062F \u0627\u0644\u0633\u0627\u0639\u0629' p",today:"'\u0627\u0644\u064A\u0648\u0645 \u0639\u0646\u062F \u0627\u0644\u0633\u0627\u0639\u0629' p",tomorrow:"'\u063A\u062F\u0627 \u0639\u0646\u062F \u0627\u0644\u0633\u0627\u0639\u0629' p",nextWeek:"eeee '\u0627\u0644\u0642\u0627\u062F\u0645 \u0639\u0646\u062F \u0627\u0644\u0633\u0627\u0639\u0629' p",other:"P"},Ae=e=>Ca[e];function r(e){return(n,t)=>{let a=t?.context?String(t.context):"standalone",i;if(a==="formatting"&&e.formattingValues){let m=e.defaultFormattingWidth||e.defaultWidth,c=t?.width?String(t.width):m;i=e.formattingValues[c]||e.formattingValues[m]}else{let m=e.defaultWidth,c=t?.width?String(t.width):e.defaultWidth;i=e.values[c]||e.values[m]}let d=e.argumentCallback?e.argumentCallback(n):n;return i[d]}}var ja={narrow:["\u0642","\u0628"],abbreviated:["\u0642.\u0645.","\u0628.\u0645."],wide:["\u0642\u0628\u0644 \u0627\u0644\u0645\u064A\u0644\u0627\u062F","\u0628\u0639\u062F \u0627\u0644\u0645\u064A\u0644\u0627\u062F"]},Ta={narrow:["1","2","3","4"],abbreviated:["\u06311","\u06312","\u06313","\u06314"],wide:["\u0627\u0644\u0631\u0628\u0639 \u0627\u0644\u0623\u0648\u0644","\u0627\u0644\u0631\u0628\u0639 \u0627\u0644\u062B\u0627\u0646\u064A","\u0627\u0644\u0631\u0628\u0639 \u0627\u0644\u062B\u0627\u0644\u062B","\u0627\u0644\u0631\u0628\u0639 \u0627\u0644\u0631\u0627\u0628\u0639"]},Fa={narrow:["\u064A","\u0641","\u0645","\u0623","\u0645","\u064A","\u064A","\u0623","\u0633","\u0623","\u0646","\u062F"],abbreviated:["\u064A\u0646\u0627\u064A\u0631","\u0641\u0628\u0631\u0627\u064A\u0631","\u0645\u0627\u0631\u0633","\u0623\u0628\u0631\u064A\u0644","\u0645\u0627\u064A\u0648","\u064A\u0648\u0646\u064A\u0648","\u064A\u0648\u0644\u064A\u0648","\u0623\u063A\u0633\u0637\u0633","\u0633\u0628\u062A\u0645\u0628\u0631","\u0623\u0643\u062A\u0648\u0628\u0631","\u0646\u0648\u0641\u0645\u0628\u0631","\u062F\u064A\u0633\u0645\u0628\u0631"],wide:["\u064A\u0646\u0627\u064A\u0631","\u0641\u0628\u0631\u0627\u064A\u0631","\u0645\u0627\u0631\u0633","\u0623\u0628\u0631\u064A\u0644","\u0645\u0627\u064A\u0648","\u064A\u0648\u0646\u064A\u0648","\u064A\u0648\u0644\u064A\u0648","\u0623\u063A\u0633\u0637\u0633","\u0633\u0628\u062A\u0645\u0628\u0631","\u0623\u0643\u062A\u0648\u0628\u0631","\u0646\u0648\u0641\u0645\u0628\u0631","\u062F\u064A\u0633\u0645\u0628\u0631"]},Na={narrow:["\u062D","\u0646","\u062B","\u0631","\u062E","\u062C","\u0633"],short:["\u0623\u062D\u062F","\u0627\u062B\u0646\u064A\u0646","\u062B\u0644\u0627\u062B\u0627\u0621","\u0623\u0631\u0628\u0639\u0627\u0621","\u062E\u0645\u064A\u0633","\u062C\u0645\u0639\u0629","\u0633\u0628\u062A"],abbreviated:["\u0623\u062D\u062F","\u0627\u062B\u0646\u064A\u0646","\u062B\u0644\u0627\u062B\u0627\u0621","\u0623\u0631\u0628\u0639\u0627\u0621","\u062E\u0645\u064A\u0633","\u062C\u0645\u0639\u0629","\u0633\u0628\u062A"],wide:["\u0627\u0644\u0623\u062D\u062F","\u0627\u0644\u0627\u062B\u0646\u064A\u0646","\u0627\u0644\u062B\u0644\u0627\u062B\u0627\u0621","\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621","\u0627\u0644\u062E\u0645\u064A\u0633","\u0627\u0644\u062C\u0645\u0639\u0629","\u0627\u0644\u0633\u0628\u062A"]},Aa={narrow:{am:"\u0635",pm:"\u0645",morning:"\u0627\u0644\u0635\u0628\u0627\u062D",noon:"\u0627\u0644\u0638\u0647\u0631",afternoon:"\u0628\u0639\u062F \u0627\u0644\u0638\u0647\u0631",evening:"\u0627\u0644\u0645\u0633\u0627\u0621",night:"\u0627\u0644\u0644\u064A\u0644",midnight:"\u0645\u0646\u062A\u0635\u0641 \u0627\u0644\u0644\u064A\u0644"},abbreviated:{am:"\u0635",pm:"\u0645",morning:"\u0627\u0644\u0635\u0628\u0627\u062D",noon:"\u0627\u0644\u0638\u0647\u0631",afternoon:"\u0628\u0639\u062F \u0627\u0644\u0638\u0647\u0631",evening:"\u0627\u0644\u0645\u0633\u0627\u0621",night:"\u0627\u0644\u0644\u064A\u0644",midnight:"\u0645\u0646\u062A\u0635\u0641 \u0627\u0644\u0644\u064A\u0644"},wide:{am:"\u0635",pm:"\u0645",morning:"\u0627\u0644\u0635\u0628\u0627\u062D",noon:"\u0627\u0644\u0638\u0647\u0631",afternoon:"\u0628\u0639\u062F \u0627\u0644\u0638\u0647\u0631",evening:"\u0627\u0644\u0645\u0633\u0627\u0621",night:"\u0627\u0644\u0644\u064A\u0644",midnight:"\u0645\u0646\u062A\u0635\u0641 \u0627\u0644\u0644\u064A\u0644"}},Ea={narrow:{am:"\u0635",pm:"\u0645",morning:"\u0641\u064A \u0627\u0644\u0635\u0628\u0627\u062D",noon:"\u0627\u0644\u0638\u0647\u0631",afternoon:"\u0628\u0639\u062F \u0627\u0644\u0638\u0647\u0631",evening:"\u0641\u064A \u0627\u0644\u0645\u0633\u0627\u0621",night:"\u0641\u064A \u0627\u0644\u0644\u064A\u0644",midnight:"\u0645\u0646\u062A\u0635\u0641 \u0627\u0644\u0644\u064A\u0644"},abbreviated:{am:"\u0635",pm:"\u0645",morning:"\u0641\u064A \u0627\u0644\u0635\u0628\u0627\u062D",noon:"\u0627\u0644\u0638\u0647\u0631",afternoon:"\u0628\u0639\u062F \u0627\u0644\u0638\u0647\u0631",evening:"\u0641\u064A \u0627\u0644\u0645\u0633\u0627\u0621",night:"\u0641\u064A \u0627\u0644\u0644\u064A\u0644",midnight:"\u0645\u0646\u062A\u0635\u0641 \u0627\u0644\u0644\u064A\u0644"},wide:{am:"\u0635",pm:"\u0645",morning:"\u0641\u064A \u0627\u0644\u0635\u0628\u0627\u062D",noon:"\u0627\u0644\u0638\u0647\u0631",afternoon:"\u0628\u0639\u062F \u0627\u0644\u0638\u0647\u0631",evening:"\u0641\u064A \u0627\u0644\u0645\u0633\u0627\u0621",night:"\u0641\u064A \u0627\u0644\u0644\u064A\u0644",midnight:"\u0645\u0646\u062A\u0635\u0641 \u0627\u0644\u0644\u064A\u0644"}},La=e=>String(e),Ee={ordinalNumber:La,era:r({values:ja,defaultWidth:"wide"}),quarter:r({values:Ta,defaultWidth:"wide",argumentCallback:e=>e-1}),month:r({values:Fa,defaultWidth:"wide"}),day:r({values:Na,defaultWidth:"wide"}),dayPeriod:r({values:Aa,defaultWidth:"wide",formattingValues:Ea,defaultFormattingWidth:"wide"})};function u(e){return(n,t={})=>{let a=n.match(e.matchPattern);if(!a)return null;let i=a[0],d=n.match(e.parsePattern);if(!d)return null;let m=e.valueCallback?e.valueCallback(d[0]):d[0];m=t.valueCallback?t.valueCallback(m):m;let c=n.slice(i.length);return{value:m,rest:c}}}function o(e){return(n,t={})=>{let a=t.width,i=a&&e.matchPatterns[a]||e.matchPatterns[e.defaultMatchWidth],d=n.match(i);if(!d)return null;let m=d[0],c=a&&e.parsePatterns[a]||e.parsePatterns[e.defaultParseWidth],f=Array.isArray(c)?Ga(c,E=>E.test(m)):Va(c,E=>E.test(m)),b;b=e.valueCallback?e.valueCallback(f):f,b=t.valueCallback?t.valueCallback(b):b;let A=n.slice(m.length);return{value:b,rest:A}}}function Va(e,n){for(let t in e)if(Object.prototype.hasOwnProperty.call(e,t)&&n(e[t]))return t}function Ga(e,n){for(let t=0;tparseInt(e,10)}),era:o({matchPatterns:Xa,defaultMatchWidth:"wide",parsePatterns:Ra,defaultParseWidth:"any"}),quarter:o({matchPatterns:Ia,defaultMatchWidth:"wide",parsePatterns:qa,defaultParseWidth:"any",valueCallback:e=>e+1}),month:o({matchPatterns:Ba,defaultMatchWidth:"wide",parsePatterns:Ya,defaultParseWidth:"any"}),day:o({matchPatterns:Ja,defaultMatchWidth:"wide",parsePatterns:Qa,defaultParseWidth:"any"}),dayPeriod:o({matchPatterns:$a,defaultMatchWidth:"any",parsePatterns:Ka,defaultParseWidth:"any"})};var Ve={code:"ar",formatDistance:Fe,formatLong:Ne,formatRelative:Ae,localize:Ee,match:Le,options:{weekStartsOn:6,firstWeekContainsDate:1}};var Ge={lessThanXSeconds:{standalone:{one:"weniger als 1 Sekunde",other:"weniger als {{count}} Sekunden"},withPreposition:{one:"weniger als 1 Sekunde",other:"weniger als {{count}} Sekunden"}},xSeconds:{standalone:{one:"1 Sekunde",other:"{{count}} Sekunden"},withPreposition:{one:"1 Sekunde",other:"{{count}} Sekunden"}},halfAMinute:{standalone:"eine halbe Minute",withPreposition:"einer halben Minute"},lessThanXMinutes:{standalone:{one:"weniger als 1 Minute",other:"weniger als {{count}} Minuten"},withPreposition:{one:"weniger als 1 Minute",other:"weniger als {{count}} Minuten"}},xMinutes:{standalone:{one:"1 Minute",other:"{{count}} Minuten"},withPreposition:{one:"1 Minute",other:"{{count}} Minuten"}},aboutXHours:{standalone:{one:"etwa 1 Stunde",other:"etwa {{count}} Stunden"},withPreposition:{one:"etwa 1 Stunde",other:"etwa {{count}} Stunden"}},xHours:{standalone:{one:"1 Stunde",other:"{{count}} Stunden"},withPreposition:{one:"1 Stunde",other:"{{count}} Stunden"}},xDays:{standalone:{one:"1 Tag",other:"{{count}} Tage"},withPreposition:{one:"1 Tag",other:"{{count}} Tagen"}},aboutXWeeks:{standalone:{one:"etwa 1 Woche",other:"etwa {{count}} Wochen"},withPreposition:{one:"etwa 1 Woche",other:"etwa {{count}} Wochen"}},xWeeks:{standalone:{one:"1 Woche",other:"{{count}} Wochen"},withPreposition:{one:"1 Woche",other:"{{count}} Wochen"}},aboutXMonths:{standalone:{one:"etwa 1 Monat",other:"etwa {{count}} Monate"},withPreposition:{one:"etwa 1 Monat",other:"etwa {{count}} Monaten"}},xMonths:{standalone:{one:"1 Monat",other:"{{count}} Monate"},withPreposition:{one:"1 Monat",other:"{{count}} Monaten"}},aboutXYears:{standalone:{one:"etwa 1 Jahr",other:"etwa {{count}} Jahre"},withPreposition:{one:"etwa 1 Jahr",other:"etwa {{count}} Jahren"}},xYears:{standalone:{one:"1 Jahr",other:"{{count}} Jahre"},withPreposition:{one:"1 Jahr",other:"{{count}} Jahren"}},overXYears:{standalone:{one:"mehr als 1 Jahr",other:"mehr als {{count}} Jahre"},withPreposition:{one:"mehr als 1 Jahr",other:"mehr als {{count}} Jahren"}},almostXYears:{standalone:{one:"fast 1 Jahr",other:"fast {{count}} Jahre"},withPreposition:{one:"fast 1 Jahr",other:"fast {{count}} Jahren"}}},He=(e,n,t)=>{let a,i=t?.addSuffix?Ge[e].withPreposition:Ge[e].standalone;return typeof i=="string"?a=i:n===1?a=i.one:a=i.other.replace("{{count}}",String(n)),t?.addSuffix?t.comparison&&t.comparison>0?"in "+a:"vor "+a:a};var Ua={full:"EEEE, do MMMM y",long:"do MMMM y",medium:"do MMM y",short:"dd.MM.y"},Za={full:"HH:mm:ss zzzz",long:"HH:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},en={full:"{{date}} 'um' {{time}}",long:"{{date}} 'um' {{time}}",medium:"{{date}} {{time}}",short:"{{date}} {{time}}"},Oe={date:s({formats:Ua,defaultWidth:"full"}),time:s({formats:Za,defaultWidth:"full"}),dateTime:s({formats:en,defaultWidth:"full"})};var tn={lastWeek:"'letzten' eeee 'um' p",yesterday:"'gestern um' p",today:"'heute um' p",tomorrow:"'morgen um' p",nextWeek:"eeee 'um' p",other:"P"},Xe=(e,n,t,a)=>tn[e];var an={narrow:["v.Chr.","n.Chr."],abbreviated:["v.Chr.","n.Chr."],wide:["vor Christus","nach Christus"]},nn={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1. Quartal","2. Quartal","3. Quartal","4. Quartal"]},U={narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","M\xE4r","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],wide:["Januar","Februar","M\xE4rz","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"]},rn={narrow:U.narrow,abbreviated:["Jan.","Feb.","M\xE4rz","Apr.","Mai","Juni","Juli","Aug.","Sep.","Okt.","Nov.","Dez."],wide:U.wide},on={narrow:["S","M","D","M","D","F","S"],short:["So","Mo","Di","Mi","Do","Fr","Sa"],abbreviated:["So.","Mo.","Di.","Mi.","Do.","Fr.","Sa."],wide:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"]},sn={narrow:{am:"vm.",pm:"nm.",midnight:"Mitternacht",noon:"Mittag",morning:"Morgen",afternoon:"Nachm.",evening:"Abend",night:"Nacht"},abbreviated:{am:"vorm.",pm:"nachm.",midnight:"Mitternacht",noon:"Mittag",morning:"Morgen",afternoon:"Nachmittag",evening:"Abend",night:"Nacht"},wide:{am:"vormittags",pm:"nachmittags",midnight:"Mitternacht",noon:"Mittag",morning:"Morgen",afternoon:"Nachmittag",evening:"Abend",night:"Nacht"}},dn={narrow:{am:"vm.",pm:"nm.",midnight:"Mitternacht",noon:"Mittag",morning:"morgens",afternoon:"nachm.",evening:"abends",night:"nachts"},abbreviated:{am:"vorm.",pm:"nachm.",midnight:"Mitternacht",noon:"Mittag",morning:"morgens",afternoon:"nachmittags",evening:"abends",night:"nachts"},wide:{am:"vormittags",pm:"nachmittags",midnight:"Mitternacht",noon:"Mittag",morning:"morgens",afternoon:"nachmittags",evening:"abends",night:"nachts"}},mn=e=>Number(e)+".",Re={ordinalNumber:mn,era:r({values:an,defaultWidth:"wide"}),quarter:r({values:nn,defaultWidth:"wide",argumentCallback:e=>e-1}),month:r({values:U,formattingValues:rn,defaultWidth:"wide"}),day:r({values:on,defaultWidth:"wide"}),dayPeriod:r({values:sn,defaultWidth:"wide",formattingValues:dn,defaultFormattingWidth:"wide"})};var un=/^(\d+)(\.)?/i,cn=/\d+/i,ln={narrow:/^(v\.? ?Chr\.?|n\.? ?Chr\.?)/i,abbreviated:/^(v\.? ?Chr\.?|n\.? ?Chr\.?)/i,wide:/^(vor Christus|vor unserer Zeitrechnung|nach Christus|unserer Zeitrechnung)/i},hn={any:[/^v/i,/^n/i]},fn={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](\.)? Quartal/i},pn={any:[/1/i,/2/i,/3/i,/4/i]},gn={narrow:/^[jfmasond]/i,abbreviated:/^(j[aä]n|feb|mär[z]?|apr|mai|jun[i]?|jul[i]?|aug|sep|okt|nov|dez)\.?/i,wide:/^(januar|februar|märz|april|mai|juni|juli|august|september|oktober|november|dezember)/i},vn={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^j[aä]/i,/^f/i,/^mär/i,/^ap/i,/^mai/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},bn={narrow:/^[smdmf]/i,short:/^(so|mo|di|mi|do|fr|sa)/i,abbreviated:/^(son?|mon?|die?|mit?|don?|fre?|sam?)\.?/i,wide:/^(sonntag|montag|dienstag|mittwoch|donnerstag|freitag|samstag)/i},yn={any:[/^so/i,/^mo/i,/^di/i,/^mi/i,/^do/i,/^f/i,/^sa/i]},wn={narrow:/^(vm\.?|nm\.?|Mitternacht|Mittag|morgens|nachm\.?|abends|nachts)/i,abbreviated:/^(vorm\.?|nachm\.?|Mitternacht|Mittag|morgens|nachm\.?|abends|nachts)/i,wide:/^(vormittags|nachmittags|Mitternacht|Mittag|morgens|nachmittags|abends|nachts)/i},Pn={any:{am:/^v/i,pm:/^n/i,midnight:/^Mitte/i,noon:/^Mitta/i,morning:/morgens/i,afternoon:/nachmittags/i,evening:/abends/i,night:/nachts/i}},Ie={ordinalNumber:u({matchPattern:un,parsePattern:cn,valueCallback:e=>parseInt(e)}),era:o({matchPatterns:ln,defaultMatchWidth:"wide",parsePatterns:hn,defaultParseWidth:"any"}),quarter:o({matchPatterns:fn,defaultMatchWidth:"wide",parsePatterns:pn,defaultParseWidth:"any",valueCallback:e=>e+1}),month:o({matchPatterns:gn,defaultMatchWidth:"wide",parsePatterns:vn,defaultParseWidth:"any"}),day:o({matchPatterns:bn,defaultMatchWidth:"wide",parsePatterns:yn,defaultParseWidth:"any"}),dayPeriod:o({matchPatterns:wn,defaultMatchWidth:"wide",parsePatterns:Pn,defaultParseWidth:"any"})};var qe={code:"de",formatDistance:He,formatLong:Oe,formatRelative:Xe,localize:Re,match:Ie,options:{weekStartsOn:1,firstWeekContainsDate:4}};var Mn={lessThanXSeconds:{one:"less than a second",other:"less than {{count}} seconds"},xSeconds:{one:"1 second",other:"{{count}} seconds"},halfAMinute:"half a minute",lessThanXMinutes:{one:"less than a minute",other:"less than {{count}} minutes"},xMinutes:{one:"1 minute",other:"{{count}} minutes"},aboutXHours:{one:"about 1 hour",other:"about {{count}} hours"},xHours:{one:"1 hour",other:"{{count}} hours"},xDays:{one:"1 day",other:"{{count}} days"},aboutXWeeks:{one:"about 1 week",other:"about {{count}} weeks"},xWeeks:{one:"1 week",other:"{{count}} weeks"},aboutXMonths:{one:"about 1 month",other:"about {{count}} months"},xMonths:{one:"1 month",other:"{{count}} months"},aboutXYears:{one:"about 1 year",other:"about {{count}} years"},xYears:{one:"1 year",other:"{{count}} years"},overXYears:{one:"over 1 year",other:"over {{count}} years"},almostXYears:{one:"almost 1 year",other:"almost {{count}} years"}},Be=(e,n,t)=>{let a,i=Mn[e];return typeof i=="string"?a=i:n===1?a=i.one:a=i.other.replace("{{count}}",n.toString()),t?.addSuffix?t.comparison&&t.comparison>0?"in "+a:a+" ago":a};var kn={full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},xn={full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},Wn={full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},Ye={date:s({formats:kn,defaultWidth:"full"}),time:s({formats:xn,defaultWidth:"full"}),dateTime:s({formats:Wn,defaultWidth:"full"})};var Dn={lastWeek:"'last' eeee 'at' p",yesterday:"'yesterday at' p",today:"'today at' p",tomorrow:"'tomorrow at' p",nextWeek:"eeee 'at' p",other:"P"},Je=(e,n,t,a)=>Dn[e];var Sn={narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},_n={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},zn={narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],wide:["January","February","March","April","May","June","July","August","September","October","November","December"]},Cn={narrow:["S","M","T","W","T","F","S"],short:["Su","Mo","Tu","We","Th","Fr","Sa"],abbreviated:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],wide:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},jn={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"}},Tn={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"}},Fn=(e,n)=>{let t=Number(e),a=t%100;if(a>20||a<10)switch(a%10){case 1:return t+"st";case 2:return t+"nd";case 3:return t+"rd"}return t+"th"},Qe={ordinalNumber:Fn,era:r({values:Sn,defaultWidth:"wide"}),quarter:r({values:_n,defaultWidth:"wide",argumentCallback:e=>e-1}),month:r({values:zn,defaultWidth:"wide"}),day:r({values:Cn,defaultWidth:"wide"}),dayPeriod:r({values:jn,defaultWidth:"wide",formattingValues:Tn,defaultFormattingWidth:"wide"})};var Nn=/^(\d+)(th|st|nd|rd)?/i,An=/\d+/i,En={narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},Ln={any:[/^b/i,/^(a|c)/i]},Vn={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},Gn={any:[/1/i,/2/i,/3/i,/4/i]},Hn={narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},On={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},Xn={narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},Rn={narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},In={narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},qn={any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},$e={ordinalNumber:u({matchPattern:Nn,parsePattern:An,valueCallback:e=>parseInt(e,10)}),era:o({matchPatterns:En,defaultMatchWidth:"wide",parsePatterns:Ln,defaultParseWidth:"any"}),quarter:o({matchPatterns:Vn,defaultMatchWidth:"wide",parsePatterns:Gn,defaultParseWidth:"any",valueCallback:e=>e+1}),month:o({matchPatterns:Hn,defaultMatchWidth:"wide",parsePatterns:On,defaultParseWidth:"any"}),day:o({matchPatterns:Xn,defaultMatchWidth:"wide",parsePatterns:Rn,defaultParseWidth:"any"}),dayPeriod:o({matchPatterns:In,defaultMatchWidth:"any",parsePatterns:qn,defaultParseWidth:"any"})};var F={code:"en-US",formatDistance:Be,formatLong:Ye,formatRelative:Je,localize:Qe,match:$e,options:{weekStartsOn:0,firstWeekContainsDate:1}};var Bn={lessThanXSeconds:{one:"menos de un segundo",other:"menos de {{count}} segundos"},xSeconds:{one:"1 segundo",other:"{{count}} segundos"},halfAMinute:"medio minuto",lessThanXMinutes:{one:"menos de un minuto",other:"menos de {{count}} minutos"},xMinutes:{one:"1 minuto",other:"{{count}} minutos"},aboutXHours:{one:"alrededor de 1 hora",other:"alrededor de {{count}} horas"},xHours:{one:"1 hora",other:"{{count}} horas"},xDays:{one:"1 d\xEDa",other:"{{count}} d\xEDas"},aboutXWeeks:{one:"alrededor de 1 semana",other:"alrededor de {{count}} semanas"},xWeeks:{one:"1 semana",other:"{{count}} semanas"},aboutXMonths:{one:"alrededor de 1 mes",other:"alrededor de {{count}} meses"},xMonths:{one:"1 mes",other:"{{count}} meses"},aboutXYears:{one:"alrededor de 1 a\xF1o",other:"alrededor de {{count}} a\xF1os"},xYears:{one:"1 a\xF1o",other:"{{count}} a\xF1os"},overXYears:{one:"m\xE1s de 1 a\xF1o",other:"m\xE1s de {{count}} a\xF1os"},almostXYears:{one:"casi 1 a\xF1o",other:"casi {{count}} a\xF1os"}},Ke=(e,n,t)=>{let a,i=Bn[e];return typeof i=="string"?a=i:n===1?a=i.one:a=i.other.replace("{{count}}",n.toString()),t?.addSuffix?t.comparison&&t.comparison>0?"en "+a:"hace "+a:a};var Yn={full:"EEEE, d 'de' MMMM 'de' y",long:"d 'de' MMMM 'de' y",medium:"d MMM y",short:"dd/MM/y"},Jn={full:"HH:mm:ss zzzz",long:"HH:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},Qn={full:"{{date}} 'a las' {{time}}",long:"{{date}} 'a las' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},Ue={date:s({formats:Yn,defaultWidth:"full"}),time:s({formats:Jn,defaultWidth:"full"}),dateTime:s({formats:Qn,defaultWidth:"full"})};var $n={lastWeek:"'el' eeee 'pasado a la' p",yesterday:"'ayer a la' p",today:"'hoy a la' p",tomorrow:"'ma\xF1ana a la' p",nextWeek:"eeee 'a la' p",other:"P"},Kn={lastWeek:"'el' eeee 'pasado a las' p",yesterday:"'ayer a las' p",today:"'hoy a las' p",tomorrow:"'ma\xF1ana a las' p",nextWeek:"eeee 'a las' p",other:"P"},Ze=(e,n,t,a)=>n.getHours()!==1?Kn[e]:$n[e];var Un={narrow:["AC","DC"],abbreviated:["AC","DC"],wide:["antes de cristo","despu\xE9s de cristo"]},Zn={narrow:["1","2","3","4"],abbreviated:["T1","T2","T3","T4"],wide:["1\xBA trimestre","2\xBA trimestre","3\xBA trimestre","4\xBA trimestre"]},ei={narrow:["e","f","m","a","m","j","j","a","s","o","n","d"],abbreviated:["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic"],wide:["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"]},ti={narrow:["d","l","m","m","j","v","s"],short:["do","lu","ma","mi","ju","vi","s\xE1"],abbreviated:["dom","lun","mar","mi\xE9","jue","vie","s\xE1b"],wide:["domingo","lunes","martes","mi\xE9rcoles","jueves","viernes","s\xE1bado"]},ai={narrow:{am:"a",pm:"p",midnight:"mn",noon:"md",morning:"ma\xF1ana",afternoon:"tarde",evening:"tarde",night:"noche"},abbreviated:{am:"AM",pm:"PM",midnight:"medianoche",noon:"mediodia",morning:"ma\xF1ana",afternoon:"tarde",evening:"tarde",night:"noche"},wide:{am:"a.m.",pm:"p.m.",midnight:"medianoche",noon:"mediodia",morning:"ma\xF1ana",afternoon:"tarde",evening:"tarde",night:"noche"}},ni={narrow:{am:"a",pm:"p",midnight:"mn",noon:"md",morning:"de la ma\xF1ana",afternoon:"de la tarde",evening:"de la tarde",night:"de la noche"},abbreviated:{am:"AM",pm:"PM",midnight:"medianoche",noon:"mediodia",morning:"de la ma\xF1ana",afternoon:"de la tarde",evening:"de la tarde",night:"de la noche"},wide:{am:"a.m.",pm:"p.m.",midnight:"medianoche",noon:"mediodia",morning:"de la ma\xF1ana",afternoon:"de la tarde",evening:"de la tarde",night:"de la noche"}},ii=(e,n)=>Number(e)+"\xBA",et={ordinalNumber:ii,era:r({values:Un,defaultWidth:"wide"}),quarter:r({values:Zn,defaultWidth:"wide",argumentCallback:e=>Number(e)-1}),month:r({values:ei,defaultWidth:"wide"}),day:r({values:ti,defaultWidth:"wide"}),dayPeriod:r({values:ai,defaultWidth:"wide",formattingValues:ni,defaultFormattingWidth:"wide"})};var ri=/^(\d+)(º)?/i,oi=/\d+/i,si={narrow:/^(ac|dc|a|d)/i,abbreviated:/^(a\.?\s?c\.?|a\.?\s?e\.?\s?c\.?|d\.?\s?c\.?|e\.?\s?c\.?)/i,wide:/^(antes de cristo|antes de la era com[uú]n|despu[eé]s de cristo|era com[uú]n)/i},di={any:[/^ac/i,/^dc/i],wide:[/^(antes de cristo|antes de la era com[uú]n)/i,/^(despu[eé]s de cristo|era com[uú]n)/i]},mi={narrow:/^[1234]/i,abbreviated:/^T[1234]/i,wide:/^[1234](º)? trimestre/i},ui={any:[/1/i,/2/i,/3/i,/4/i]},ci={narrow:/^[efmajsond]/i,abbreviated:/^(ene|feb|mar|abr|may|jun|jul|ago|sep|oct|nov|dic)/i,wide:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i},li={narrow:[/^e/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^en/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i]},hi={narrow:/^[dlmjvs]/i,short:/^(do|lu|ma|mi|ju|vi|s[áa])/i,abbreviated:/^(dom|lun|mar|mi[ée]|jue|vie|s[áa]b)/i,wide:/^(domingo|lunes|martes|mi[ée]rcoles|jueves|viernes|s[áa]bado)/i},fi={narrow:[/^d/i,/^l/i,/^m/i,/^m/i,/^j/i,/^v/i,/^s/i],any:[/^do/i,/^lu/i,/^ma/i,/^mi/i,/^ju/i,/^vi/i,/^sa/i]},pi={narrow:/^(a|p|mn|md|(de la|a las) (mañana|tarde|noche))/i,any:/^([ap]\.?\s?m\.?|medianoche|mediodia|(de la|a las) (mañana|tarde|noche))/i},gi={any:{am:/^a/i,pm:/^p/i,midnight:/^mn/i,noon:/^md/i,morning:/mañana/i,afternoon:/tarde/i,evening:/tarde/i,night:/noche/i}},tt={ordinalNumber:u({matchPattern:ri,parsePattern:oi,valueCallback:function(e){return parseInt(e,10)}}),era:o({matchPatterns:si,defaultMatchWidth:"wide",parsePatterns:di,defaultParseWidth:"any"}),quarter:o({matchPatterns:mi,defaultMatchWidth:"wide",parsePatterns:ui,defaultParseWidth:"any",valueCallback:e=>e+1}),month:o({matchPatterns:ci,defaultMatchWidth:"wide",parsePatterns:li,defaultParseWidth:"any"}),day:o({matchPatterns:hi,defaultMatchWidth:"wide",parsePatterns:fi,defaultParseWidth:"any"}),dayPeriod:o({matchPatterns:pi,defaultMatchWidth:"any",parsePatterns:gi,defaultParseWidth:"any"})};var at={code:"es",formatDistance:Ke,formatLong:Ue,formatRelative:Ze,localize:et,match:tt,options:{weekStartsOn:1,firstWeekContainsDate:1}};var vi={lessThanXSeconds:{one:"moins d\u2019une seconde",other:"moins de {{count}} secondes"},xSeconds:{one:"1 seconde",other:"{{count}} secondes"},halfAMinute:"30 secondes",lessThanXMinutes:{one:"moins d\u2019une minute",other:"moins de {{count}} minutes"},xMinutes:{one:"1 minute",other:"{{count}} minutes"},aboutXHours:{one:"environ 1 heure",other:"environ {{count}} heures"},xHours:{one:"1 heure",other:"{{count}} heures"},xDays:{one:"1 jour",other:"{{count}} jours"},aboutXWeeks:{one:"environ 1 semaine",other:"environ {{count}} semaines"},xWeeks:{one:"1 semaine",other:"{{count}} semaines"},aboutXMonths:{one:"environ 1 mois",other:"environ {{count}} mois"},xMonths:{one:"1 mois",other:"{{count}} mois"},aboutXYears:{one:"environ 1 an",other:"environ {{count}} ans"},xYears:{one:"1 an",other:"{{count}} ans"},overXYears:{one:"plus d\u2019un an",other:"plus de {{count}} ans"},almostXYears:{one:"presqu\u2019un an",other:"presque {{count}} ans"}},nt=(e,n,t)=>{let a,i=vi[e];return typeof i=="string"?a=i:n===1?a=i.one:a=i.other.replace("{{count}}",String(n)),t?.addSuffix?t.comparison&&t.comparison>0?"dans "+a:"il y a "+a:a};var bi={full:"EEEE d MMMM y",long:"d MMMM y",medium:"d MMM y",short:"dd/MM/y"},yi={full:"HH:mm:ss zzzz",long:"HH:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},wi={full:"{{date}} '\xE0' {{time}}",long:"{{date}} '\xE0' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},it={date:s({formats:bi,defaultWidth:"full"}),time:s({formats:yi,defaultWidth:"full"}),dateTime:s({formats:wi,defaultWidth:"full"})};var Pi={lastWeek:"eeee 'dernier \xE0' p",yesterday:"'hier \xE0' p",today:"'aujourd\u2019hui \xE0' p",tomorrow:"'demain \xE0' p'",nextWeek:"eeee 'prochain \xE0' p",other:"P"},rt=(e,n,t,a)=>Pi[e];var Mi={narrow:["av. J.-C","ap. J.-C"],abbreviated:["av. J.-C","ap. J.-C"],wide:["avant J\xE9sus-Christ","apr\xE8s J\xE9sus-Christ"]},ki={narrow:["T1","T2","T3","T4"],abbreviated:["1er trim.","2\xE8me trim.","3\xE8me trim.","4\xE8me trim."],wide:["1er trimestre","2\xE8me trimestre","3\xE8me trimestre","4\xE8me trimestre"]},xi={narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["janv.","f\xE9vr.","mars","avr.","mai","juin","juil.","ao\xFBt","sept.","oct.","nov.","d\xE9c."],wide:["janvier","f\xE9vrier","mars","avril","mai","juin","juillet","ao\xFBt","septembre","octobre","novembre","d\xE9cembre"]},Wi={narrow:["D","L","M","M","J","V","S"],short:["di","lu","ma","me","je","ve","sa"],abbreviated:["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],wide:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"]},Di={narrow:{am:"AM",pm:"PM",midnight:"minuit",noon:"midi",morning:"mat.",afternoon:"ap.m.",evening:"soir",night:"mat."},abbreviated:{am:"AM",pm:"PM",midnight:"minuit",noon:"midi",morning:"matin",afternoon:"apr\xE8s-midi",evening:"soir",night:"matin"},wide:{am:"AM",pm:"PM",midnight:"minuit",noon:"midi",morning:"du matin",afternoon:"de l\u2019apr\xE8s-midi",evening:"du soir",night:"du matin"}},Si=(e,n)=>{let t=Number(e),a=n?.unit;if(t===0)return"0";let i=["year","week","hour","minute","second"],d;return t===1?d=a&&i.includes(a)?"\xE8re":"er":d="\xE8me",t+d},_i=["MMM","MMMM"],ot={preprocessor:(e,n)=>e.getDate()===1||!n.some(a=>a.isToken&&_i.includes(a.value))?n:n.map(a=>a.isToken&&a.value==="do"?{isToken:!0,value:"d"}:a),ordinalNumber:Si,era:r({values:Mi,defaultWidth:"wide"}),quarter:r({values:ki,defaultWidth:"wide",argumentCallback:e=>e-1}),month:r({values:xi,defaultWidth:"wide"}),day:r({values:Wi,defaultWidth:"wide"}),dayPeriod:r({values:Di,defaultWidth:"wide"})};var zi=/^(\d+)(ième|ère|ème|er|e)?/i,Ci=/\d+/i,ji={narrow:/^(av\.J\.C|ap\.J\.C|ap\.J\.-C)/i,abbreviated:/^(av\.J\.-C|av\.J-C|apr\.J\.-C|apr\.J-C|ap\.J-C)/i,wide:/^(avant Jésus-Christ|après Jésus-Christ)/i},Ti={any:[/^av/i,/^ap/i]},Fi={narrow:/^T?[1234]/i,abbreviated:/^[1234](er|ème|e)? trim\.?/i,wide:/^[1234](er|ème|e)? trimestre/i},Ni={any:[/1/i,/2/i,/3/i,/4/i]},Ai={narrow:/^[jfmasond]/i,abbreviated:/^(janv|févr|mars|avr|mai|juin|juill|juil|août|sept|oct|nov|déc)\.?/i,wide:/^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i},Ei={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^av/i,/^ma/i,/^juin/i,/^juil/i,/^ao/i,/^s/i,/^o/i,/^n/i,/^d/i]},Li={narrow:/^[lmjvsd]/i,short:/^(di|lu|ma|me|je|ve|sa)/i,abbreviated:/^(dim|lun|mar|mer|jeu|ven|sam)\.?/i,wide:/^(dimanche|lundi|mardi|mercredi|jeudi|vendredi|samedi)/i},Vi={narrow:[/^d/i,/^l/i,/^m/i,/^m/i,/^j/i,/^v/i,/^s/i],any:[/^di/i,/^lu/i,/^ma/i,/^me/i,/^je/i,/^ve/i,/^sa/i]},Gi={narrow:/^(a|p|minuit|midi|mat\.?|ap\.?m\.?|soir|nuit)/i,any:/^([ap]\.?\s?m\.?|du matin|de l'après[-\s]midi|du soir|de la nuit)/i},Hi={any:{am:/^a/i,pm:/^p/i,midnight:/^min/i,noon:/^mid/i,morning:/mat/i,afternoon:/ap/i,evening:/soir/i,night:/nuit/i}},st={ordinalNumber:u({matchPattern:zi,parsePattern:Ci,valueCallback:e=>parseInt(e)}),era:o({matchPatterns:ji,defaultMatchWidth:"wide",parsePatterns:Ti,defaultParseWidth:"any"}),quarter:o({matchPatterns:Fi,defaultMatchWidth:"wide",parsePatterns:Ni,defaultParseWidth:"any",valueCallback:e=>e+1}),month:o({matchPatterns:Ai,defaultMatchWidth:"wide",parsePatterns:Ei,defaultParseWidth:"any"}),day:o({matchPatterns:Li,defaultMatchWidth:"wide",parsePatterns:Vi,defaultParseWidth:"any"}),dayPeriod:o({matchPatterns:Gi,defaultMatchWidth:"any",parsePatterns:Hi,defaultParseWidth:"any"})};var dt={code:"fr",formatDistance:nt,formatLong:it,formatRelative:rt,localize:ot,match:st,options:{weekStartsOn:1,firstWeekContainsDate:4}};var mt={locale:{1:"\u0967",2:"\u0968",3:"\u0969",4:"\u096A",5:"\u096B",6:"\u096C",7:"\u096D",8:"\u096E",9:"\u096F",0:"\u0966"},number:{"\u0967":"1","\u0968":"2","\u0969":"3","\u096A":"4","\u096B":"5","\u096C":"6","\u096D":"7","\u096E":"8","\u096F":"9","\u0966":"0"}},Oi={narrow:["\u0908\u0938\u093E-\u092A\u0942\u0930\u094D\u0935","\u0908\u0938\u094D\u0935\u0940"],abbreviated:["\u0908\u0938\u093E-\u092A\u0942\u0930\u094D\u0935","\u0908\u0938\u094D\u0935\u0940"],wide:["\u0908\u0938\u093E-\u092A\u0942\u0930\u094D\u0935","\u0908\u0938\u0935\u0940 \u0938\u0928"]},Xi={narrow:["1","2","3","4"],abbreviated:["\u0924\u093F1","\u0924\u093F2","\u0924\u093F3","\u0924\u093F4"],wide:["\u092A\u0939\u0932\u0940 \u0924\u093F\u092E\u093E\u0939\u0940","\u0926\u0942\u0938\u0930\u0940 \u0924\u093F\u092E\u093E\u0939\u0940","\u0924\u0940\u0938\u0930\u0940 \u0924\u093F\u092E\u093E\u0939\u0940","\u091A\u094C\u0925\u0940 \u0924\u093F\u092E\u093E\u0939\u0940"]},Ri={narrow:["\u091C","\u092B\u093C","\u092E\u093E","\u0905","\u092E\u0908","\u091C\u0942","\u091C\u0941","\u0905\u0917","\u0938\u093F","\u0905\u0915\u094D\u091F\u0942","\u0928","\u0926\u093F"],abbreviated:["\u091C\u0928","\u092B\u093C\u0930","\u092E\u093E\u0930\u094D\u091A","\u0905\u092A\u094D\u0930\u0948\u0932","\u092E\u0908","\u091C\u0942\u0928","\u091C\u0941\u0932","\u0905\u0917","\u0938\u093F\u0924","\u0905\u0915\u094D\u091F\u0942","\u0928\u0935","\u0926\u093F\u0938"],wide:["\u091C\u0928\u0935\u0930\u0940","\u092B\u093C\u0930\u0935\u0930\u0940","\u092E\u093E\u0930\u094D\u091A","\u0905\u092A\u094D\u0930\u0948\u0932","\u092E\u0908","\u091C\u0942\u0928","\u091C\u0941\u0932\u093E\u0908","\u0905\u0917\u0938\u094D\u0924","\u0938\u093F\u0924\u0902\u092C\u0930","\u0905\u0915\u094D\u091F\u0942\u092C\u0930","\u0928\u0935\u0902\u092C\u0930","\u0926\u093F\u0938\u0902\u092C\u0930"]},Ii={narrow:["\u0930","\u0938\u094B","\u092E\u0902","\u092C\u0941","\u0917\u0941","\u0936\u0941","\u0936"],short:["\u0930","\u0938\u094B","\u092E\u0902","\u092C\u0941","\u0917\u0941","\u0936\u0941","\u0936"],abbreviated:["\u0930\u0935\u093F","\u0938\u094B\u092E","\u092E\u0902\u0917\u0932","\u092C\u0941\u0927","\u0917\u0941\u0930\u0941","\u0936\u0941\u0915\u094D\u0930","\u0936\u0928\u093F"],wide:["\u0930\u0935\u093F\u0935\u093E\u0930","\u0938\u094B\u092E\u0935\u093E\u0930","\u092E\u0902\u0917\u0932\u0935\u093E\u0930","\u092C\u0941\u0927\u0935\u093E\u0930","\u0917\u0941\u0930\u0941\u0935\u093E\u0930","\u0936\u0941\u0915\u094D\u0930\u0935\u093E\u0930","\u0936\u0928\u093F\u0935\u093E\u0930"]},qi={narrow:{am:"\u092A\u0942\u0930\u094D\u0935\u093E\u0939\u094D\u0928",pm:"\u0905\u092A\u0930\u093E\u0939\u094D\u0928",midnight:"\u092E\u0927\u094D\u092F\u0930\u093E\u0924\u094D\u0930\u093F",noon:"\u0926\u094B\u092A\u0939\u0930",morning:"\u0938\u0941\u092C\u0939",afternoon:"\u0926\u094B\u092A\u0939\u0930",evening:"\u0936\u093E\u092E",night:"\u0930\u093E\u0924"},abbreviated:{am:"\u092A\u0942\u0930\u094D\u0935\u093E\u0939\u094D\u0928",pm:"\u0905\u092A\u0930\u093E\u0939\u094D\u0928",midnight:"\u092E\u0927\u094D\u092F\u0930\u093E\u0924\u094D\u0930\u093F",noon:"\u0926\u094B\u092A\u0939\u0930",morning:"\u0938\u0941\u092C\u0939",afternoon:"\u0926\u094B\u092A\u0939\u0930",evening:"\u0936\u093E\u092E",night:"\u0930\u093E\u0924"},wide:{am:"\u092A\u0942\u0930\u094D\u0935\u093E\u0939\u094D\u0928",pm:"\u0905\u092A\u0930\u093E\u0939\u094D\u0928",midnight:"\u092E\u0927\u094D\u092F\u0930\u093E\u0924\u094D\u0930\u093F",noon:"\u0926\u094B\u092A\u0939\u0930",morning:"\u0938\u0941\u092C\u0939",afternoon:"\u0926\u094B\u092A\u0939\u0930",evening:"\u0936\u093E\u092E",night:"\u0930\u093E\u0924"}},Bi={narrow:{am:"\u092A\u0942\u0930\u094D\u0935\u093E\u0939\u094D\u0928",pm:"\u0905\u092A\u0930\u093E\u0939\u094D\u0928",midnight:"\u092E\u0927\u094D\u092F\u0930\u093E\u0924\u094D\u0930\u093F",noon:"\u0926\u094B\u092A\u0939\u0930",morning:"\u0938\u0941\u092C\u0939",afternoon:"\u0926\u094B\u092A\u0939\u0930",evening:"\u0936\u093E\u092E",night:"\u0930\u093E\u0924"},abbreviated:{am:"\u092A\u0942\u0930\u094D\u0935\u093E\u0939\u094D\u0928",pm:"\u0905\u092A\u0930\u093E\u0939\u094D\u0928",midnight:"\u092E\u0927\u094D\u092F\u0930\u093E\u0924\u094D\u0930\u093F",noon:"\u0926\u094B\u092A\u0939\u0930",morning:"\u0938\u0941\u092C\u0939",afternoon:"\u0926\u094B\u092A\u0939\u0930",evening:"\u0936\u093E\u092E",night:"\u0930\u093E\u0924"},wide:{am:"\u092A\u0942\u0930\u094D\u0935\u093E\u0939\u094D\u0928",pm:"\u0905\u092A\u0930\u093E\u0939\u094D\u0928",midnight:"\u092E\u0927\u094D\u092F\u0930\u093E\u0924\u094D\u0930\u093F",noon:"\u0926\u094B\u092A\u0939\u0930",morning:"\u0938\u0941\u092C\u0939",afternoon:"\u0926\u094B\u092A\u0939\u0930",evening:"\u0936\u093E\u092E",night:"\u0930\u093E\u0924"}},Yi=(e,n)=>{let t=Number(e);return Z(t)};function ut(e){let n=e.toString().replace(/[१२३४५६७८९०]/g,function(t){return mt.number[t]});return Number(n)}function Z(e){return e.toString().replace(/\d/g,function(n){return mt.locale[n]})}var ct={ordinalNumber:Yi,era:r({values:Oi,defaultWidth:"wide"}),quarter:r({values:Xi,defaultWidth:"wide",argumentCallback:e=>e-1}),month:r({values:Ri,defaultWidth:"wide"}),day:r({values:Ii,defaultWidth:"wide"}),dayPeriod:r({values:qi,defaultWidth:"wide",formattingValues:Bi,defaultFormattingWidth:"wide"})};var Ji={lessThanXSeconds:{one:"\u0967 \u0938\u0947\u0915\u0902\u0921 \u0938\u0947 \u0915\u092E",other:"{{count}} \u0938\u0947\u0915\u0902\u0921 \u0938\u0947 \u0915\u092E"},xSeconds:{one:"\u0967 \u0938\u0947\u0915\u0902\u0921",other:"{{count}} \u0938\u0947\u0915\u0902\u0921"},halfAMinute:"\u0906\u0927\u093E \u092E\u093F\u0928\u091F",lessThanXMinutes:{one:"\u0967 \u092E\u093F\u0928\u091F \u0938\u0947 \u0915\u092E",other:"{{count}} \u092E\u093F\u0928\u091F \u0938\u0947 \u0915\u092E"},xMinutes:{one:"\u0967 \u092E\u093F\u0928\u091F",other:"{{count}} \u092E\u093F\u0928\u091F"},aboutXHours:{one:"\u0932\u0917\u092D\u0917 \u0967 \u0918\u0902\u091F\u093E",other:"\u0932\u0917\u092D\u0917 {{count}} \u0918\u0902\u091F\u0947"},xHours:{one:"\u0967 \u0918\u0902\u091F\u093E",other:"{{count}} \u0918\u0902\u091F\u0947"},xDays:{one:"\u0967 \u0926\u093F\u0928",other:"{{count}} \u0926\u093F\u0928"},aboutXWeeks:{one:"\u0932\u0917\u092D\u0917 \u0967 \u0938\u092A\u094D\u0924\u093E\u0939",other:"\u0932\u0917\u092D\u0917 {{count}} \u0938\u092A\u094D\u0924\u093E\u0939"},xWeeks:{one:"\u0967 \u0938\u092A\u094D\u0924\u093E\u0939",other:"{{count}} \u0938\u092A\u094D\u0924\u093E\u0939"},aboutXMonths:{one:"\u0932\u0917\u092D\u0917 \u0967 \u092E\u0939\u0940\u0928\u093E",other:"\u0932\u0917\u092D\u0917 {{count}} \u092E\u0939\u0940\u0928\u0947"},xMonths:{one:"\u0967 \u092E\u0939\u0940\u0928\u093E",other:"{{count}} \u092E\u0939\u0940\u0928\u0947"},aboutXYears:{one:"\u0932\u0917\u092D\u0917 \u0967 \u0935\u0930\u094D\u0937",other:"\u0932\u0917\u092D\u0917 {{count}} \u0935\u0930\u094D\u0937"},xYears:{one:"\u0967 \u0935\u0930\u094D\u0937",other:"{{count}} \u0935\u0930\u094D\u0937"},overXYears:{one:"\u0967 \u0935\u0930\u094D\u0937 \u0938\u0947 \u0905\u0927\u093F\u0915",other:"{{count}} \u0935\u0930\u094D\u0937 \u0938\u0947 \u0905\u0927\u093F\u0915"},almostXYears:{one:"\u0932\u0917\u092D\u0917 \u0967 \u0935\u0930\u094D\u0937",other:"\u0932\u0917\u092D\u0917 {{count}} \u0935\u0930\u094D\u0937"}},lt=(e,n,t)=>{let a,i=Ji[e];return typeof i=="string"?a=i:n===1?a=i.one:a=i.other.replace("{{count}}",Z(n)),t?.addSuffix?t.comparison&&t.comparison>0?a+"\u092E\u0947 ":a+" \u092A\u0939\u0932\u0947":a};var Qi={full:"EEEE, do MMMM, y",long:"do MMMM, y",medium:"d MMM, y",short:"dd/MM/yyyy"},$i={full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},Ki={full:"{{date}} '\u0915\u094B' {{time}}",long:"{{date}} '\u0915\u094B' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},ht={date:s({formats:Qi,defaultWidth:"full"}),time:s({formats:$i,defaultWidth:"full"}),dateTime:s({formats:Ki,defaultWidth:"full"})};var Ui={lastWeek:"'\u092A\u093F\u091B\u0932\u0947' eeee p",yesterday:"'\u0915\u0932' p",today:"'\u0906\u091C' p",tomorrow:"'\u0915\u0932' p",nextWeek:"eeee '\u0915\u094B' p",other:"P"},ft=(e,n,t,a)=>Ui[e];var Zi=/^[०१२३४५६७८९]+/i,er=/^[०१२३४५६७८९]+/i,tr={narrow:/^(ईसा-पूर्व|ईस्वी)/i,abbreviated:/^(ईसा\.?\s?पूर्व\.?|ईसा\.?)/i,wide:/^(ईसा-पूर्व|ईसवी पूर्व|ईसवी सन|ईसवी)/i},ar={any:[/^b/i,/^(a|c)/i]},nr={narrow:/^[1234]/i,abbreviated:/^ति[1234]/i,wide:/^[1234](पहली|दूसरी|तीसरी|चौथी)? तिमाही/i},ir={any:[/1/i,/2/i,/3/i,/4/i]},rr={narrow:/^[जफ़माअप्मईजूनजुअगसिअक्तनदि]/i,abbreviated:/^(जन|फ़र|मार्च|अप्|मई|जून|जुल|अग|सित|अक्तू|नव|दिस)/i,wide:/^(जनवरी|फ़रवरी|मार्च|अप्रैल|मई|जून|जुलाई|अगस्त|सितंबर|अक्तूबर|नवंबर|दिसंबर)/i},or={narrow:[/^ज/i,/^फ़/i,/^मा/i,/^अप्/i,/^मई/i,/^जू/i,/^जु/i,/^अग/i,/^सि/i,/^अक्तू/i,/^न/i,/^दि/i],any:[/^जन/i,/^फ़/i,/^मा/i,/^अप्/i,/^मई/i,/^जू/i,/^जु/i,/^अग/i,/^सि/i,/^अक्तू/i,/^नव/i,/^दिस/i]},sr={narrow:/^[रविसोममंगलबुधगुरुशुक्रशनि]/i,short:/^(रवि|सोम|मंगल|बुध|गुरु|शुक्र|शनि)/i,abbreviated:/^(रवि|सोम|मंगल|बुध|गुरु|शुक्र|शनि)/i,wide:/^(रविवार|सोमवार|मंगलवार|बुधवार|गुरुवार|शुक्रवार|शनिवार)/i},dr={narrow:[/^रवि/i,/^सोम/i,/^मंगल/i,/^बुध/i,/^गुरु/i,/^शुक्र/i,/^शनि/i],any:[/^रवि/i,/^सोम/i,/^मंगल/i,/^बुध/i,/^गुरु/i,/^शुक्र/i,/^शनि/i]},mr={narrow:/^(पू|अ|म|द.\?|सु|दो|शा|रा)/i,any:/^(पूर्वाह्न|अपराह्न|म|द.\?|सु|दो|शा|रा)/i},ur={any:{am:/^पूर्वाह्न/i,pm:/^अपराह्न/i,midnight:/^मध्य/i,noon:/^दो/i,morning:/सु/i,afternoon:/दो/i,evening:/शा/i,night:/रा/i}},pt={ordinalNumber:u({matchPattern:Zi,parsePattern:er,valueCallback:ut}),era:o({matchPatterns:tr,defaultMatchWidth:"wide",parsePatterns:ar,defaultParseWidth:"any"}),quarter:o({matchPatterns:nr,defaultMatchWidth:"wide",parsePatterns:ir,defaultParseWidth:"any",valueCallback:e=>e+1}),month:o({matchPatterns:rr,defaultMatchWidth:"wide",parsePatterns:or,defaultParseWidth:"any"}),day:o({matchPatterns:sr,defaultMatchWidth:"wide",parsePatterns:dr,defaultParseWidth:"any"}),dayPeriod:o({matchPatterns:mr,defaultMatchWidth:"any",parsePatterns:ur,defaultParseWidth:"any"})};var gt={code:"hi",formatDistance:lt,formatLong:ht,formatRelative:ft,localize:ct,match:pt,options:{weekStartsOn:0,firstWeekContainsDate:4}};var cr={lessThanXSeconds:{one:"1\u79D2\u672A\u6E80",other:"{{count}}\u79D2\u672A\u6E80",oneWithSuffix:"\u7D041\u79D2",otherWithSuffix:"\u7D04{{count}}\u79D2"},xSeconds:{one:"1\u79D2",other:"{{count}}\u79D2"},halfAMinute:"30\u79D2",lessThanXMinutes:{one:"1\u5206\u672A\u6E80",other:"{{count}}\u5206\u672A\u6E80",oneWithSuffix:"\u7D041\u5206",otherWithSuffix:"\u7D04{{count}}\u5206"},xMinutes:{one:"1\u5206",other:"{{count}}\u5206"},aboutXHours:{one:"\u7D041\u6642\u9593",other:"\u7D04{{count}}\u6642\u9593"},xHours:{one:"1\u6642\u9593",other:"{{count}}\u6642\u9593"},xDays:{one:"1\u65E5",other:"{{count}}\u65E5"},aboutXWeeks:{one:"\u7D041\u9031\u9593",other:"\u7D04{{count}}\u9031\u9593"},xWeeks:{one:"1\u9031\u9593",other:"{{count}}\u9031\u9593"},aboutXMonths:{one:"\u7D041\u304B\u6708",other:"\u7D04{{count}}\u304B\u6708"},xMonths:{one:"1\u304B\u6708",other:"{{count}}\u304B\u6708"},aboutXYears:{one:"\u7D041\u5E74",other:"\u7D04{{count}}\u5E74"},xYears:{one:"1\u5E74",other:"{{count}}\u5E74"},overXYears:{one:"1\u5E74\u4EE5\u4E0A",other:"{{count}}\u5E74\u4EE5\u4E0A"},almostXYears:{one:"1\u5E74\u8FD1\u304F",other:"{{count}}\u5E74\u8FD1\u304F"}},vt=(e,n,t)=>{t=t||{};let a,i=cr[e];return typeof i=="string"?a=i:n===1?t.addSuffix&&i.oneWithSuffix?a=i.oneWithSuffix:a=i.one:t.addSuffix&&i.otherWithSuffix?a=i.otherWithSuffix.replace("{{count}}",String(n)):a=i.other.replace("{{count}}",String(n)),t.addSuffix?t.comparison&&t.comparison>0?a+"\u5F8C":a+"\u524D":a};var lr={full:"y\u5E74M\u6708d\u65E5EEEE",long:"y\u5E74M\u6708d\u65E5",medium:"y/MM/dd",short:"y/MM/dd"},hr={full:"H\u6642mm\u5206ss\u79D2 zzzz",long:"H:mm:ss z",medium:"H:mm:ss",short:"H:mm"},fr={full:"{{date}} {{time}}",long:"{{date}} {{time}}",medium:"{{date}} {{time}}",short:"{{date}} {{time}}"},bt={date:s({formats:lr,defaultWidth:"full"}),time:s({formats:hr,defaultWidth:"full"}),dateTime:s({formats:fr,defaultWidth:"full"})};var pr={lastWeek:"\u5148\u9031\u306Eeeee\u306Ep",yesterday:"\u6628\u65E5\u306Ep",today:"\u4ECA\u65E5\u306Ep",tomorrow:"\u660E\u65E5\u306Ep",nextWeek:"\u7FCC\u9031\u306Eeeee\u306Ep",other:"P"},yt=(e,n,t,a)=>pr[e];var gr={narrow:["BC","AC"],abbreviated:["\u7D00\u5143\u524D","\u897F\u66A6"],wide:["\u7D00\u5143\u524D","\u897F\u66A6"]},vr={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["\u7B2C1\u56DB\u534A\u671F","\u7B2C2\u56DB\u534A\u671F","\u7B2C3\u56DB\u534A\u671F","\u7B2C4\u56DB\u534A\u671F"]},br={narrow:["1","2","3","4","5","6","7","8","9","10","11","12"],abbreviated:["1\u6708","2\u6708","3\u6708","4\u6708","5\u6708","6\u6708","7\u6708","8\u6708","9\u6708","10\u6708","11\u6708","12\u6708"],wide:["1\u6708","2\u6708","3\u6708","4\u6708","5\u6708","6\u6708","7\u6708","8\u6708","9\u6708","10\u6708","11\u6708","12\u6708"]},yr={narrow:["\u65E5","\u6708","\u706B","\u6C34","\u6728","\u91D1","\u571F"],short:["\u65E5","\u6708","\u706B","\u6C34","\u6728","\u91D1","\u571F"],abbreviated:["\u65E5","\u6708","\u706B","\u6C34","\u6728","\u91D1","\u571F"],wide:["\u65E5\u66DC\u65E5","\u6708\u66DC\u65E5","\u706B\u66DC\u65E5","\u6C34\u66DC\u65E5","\u6728\u66DC\u65E5","\u91D1\u66DC\u65E5","\u571F\u66DC\u65E5"]},wr={narrow:{am:"\u5348\u524D",pm:"\u5348\u5F8C",midnight:"\u6DF1\u591C",noon:"\u6B63\u5348",morning:"\u671D",afternoon:"\u5348\u5F8C",evening:"\u591C",night:"\u6DF1\u591C"},abbreviated:{am:"\u5348\u524D",pm:"\u5348\u5F8C",midnight:"\u6DF1\u591C",noon:"\u6B63\u5348",morning:"\u671D",afternoon:"\u5348\u5F8C",evening:"\u591C",night:"\u6DF1\u591C"},wide:{am:"\u5348\u524D",pm:"\u5348\u5F8C",midnight:"\u6DF1\u591C",noon:"\u6B63\u5348",morning:"\u671D",afternoon:"\u5348\u5F8C",evening:"\u591C",night:"\u6DF1\u591C"}},Pr={narrow:{am:"\u5348\u524D",pm:"\u5348\u5F8C",midnight:"\u6DF1\u591C",noon:"\u6B63\u5348",morning:"\u671D",afternoon:"\u5348\u5F8C",evening:"\u591C",night:"\u6DF1\u591C"},abbreviated:{am:"\u5348\u524D",pm:"\u5348\u5F8C",midnight:"\u6DF1\u591C",noon:"\u6B63\u5348",morning:"\u671D",afternoon:"\u5348\u5F8C",evening:"\u591C",night:"\u6DF1\u591C"},wide:{am:"\u5348\u524D",pm:"\u5348\u5F8C",midnight:"\u6DF1\u591C",noon:"\u6B63\u5348",morning:"\u671D",afternoon:"\u5348\u5F8C",evening:"\u591C",night:"\u6DF1\u591C"}},Mr=(e,n)=>{let t=Number(e);switch(String(n?.unit)){case"year":return`${t}\u5E74`;case"quarter":return`\u7B2C${t}\u56DB\u534A\u671F`;case"month":return`${t}\u6708`;case"week":return`\u7B2C${t}\u9031`;case"date":return`${t}\u65E5`;case"hour":return`${t}\u6642`;case"minute":return`${t}\u5206`;case"second":return`${t}\u79D2`;default:return`${t}`}},wt={ordinalNumber:Mr,era:r({values:gr,defaultWidth:"wide"}),quarter:r({values:vr,defaultWidth:"wide",argumentCallback:e=>Number(e)-1}),month:r({values:br,defaultWidth:"wide"}),day:r({values:yr,defaultWidth:"wide"}),dayPeriod:r({values:wr,defaultWidth:"wide",formattingValues:Pr,defaultFormattingWidth:"wide"})};var kr=/^第?\d+(年|四半期|月|週|日|時|分|秒)?/i,xr=/\d+/i,Wr={narrow:/^(B\.?C\.?|A\.?D\.?)/i,abbreviated:/^(紀元[前後]|西暦)/i,wide:/^(紀元[前後]|西暦)/i},Dr={narrow:[/^B/i,/^A/i],any:[/^(紀元前)/i,/^(西暦|紀元後)/i]},Sr={narrow:/^[1234]/i,abbreviated:/^Q[1234]/i,wide:/^第[1234一二三四1234]四半期/i},_r={any:[/(1|一|1)/i,/(2|二|2)/i,/(3|三|3)/i,/(4|四|4)/i]},zr={narrow:/^([123456789]|1[012])/,abbreviated:/^([123456789]|1[012])月/i,wide:/^([123456789]|1[012])月/i},Cr={any:[/^1\D/,/^2/,/^3/,/^4/,/^5/,/^6/,/^7/,/^8/,/^9/,/^10/,/^11/,/^12/]},jr={narrow:/^[日月火水木金土]/,short:/^[日月火水木金土]/,abbreviated:/^[日月火水木金土]/,wide:/^[日月火水木金土]曜日/},Tr={any:[/^日/,/^月/,/^火/,/^水/,/^木/,/^金/,/^土/]},Fr={any:/^(AM|PM|午前|午後|正午|深夜|真夜中|夜|朝)/i},Nr={any:{am:/^(A|午前)/i,pm:/^(P|午後)/i,midnight:/^深夜|真夜中/i,noon:/^正午/i,morning:/^朝/i,afternoon:/^午後/i,evening:/^夜/i,night:/^深夜/i}},Pt={ordinalNumber:u({matchPattern:kr,parsePattern:xr,valueCallback:function(e){return parseInt(e,10)}}),era:o({matchPatterns:Wr,defaultMatchWidth:"wide",parsePatterns:Dr,defaultParseWidth:"any"}),quarter:o({matchPatterns:Sr,defaultMatchWidth:"wide",parsePatterns:_r,defaultParseWidth:"any",valueCallback:e=>e+1}),month:o({matchPatterns:zr,defaultMatchWidth:"wide",parsePatterns:Cr,defaultParseWidth:"any"}),day:o({matchPatterns:jr,defaultMatchWidth:"wide",parsePatterns:Tr,defaultParseWidth:"any"}),dayPeriod:o({matchPatterns:Fr,defaultMatchWidth:"any",parsePatterns:Nr,defaultParseWidth:"any"})};var Mt={code:"ja",formatDistance:vt,formatLong:bt,formatRelative:yt,localize:wt,match:Pt,options:{weekStartsOn:0,firstWeekContainsDate:1}};var Ar={lessThanXSeconds:{one:"minder dan een seconde",other:"minder dan {{count}} seconden"},xSeconds:{one:"1 seconde",other:"{{count}} seconden"},halfAMinute:"een halve minuut",lessThanXMinutes:{one:"minder dan een minuut",other:"minder dan {{count}} minuten"},xMinutes:{one:"een minuut",other:"{{count}} minuten"},aboutXHours:{one:"ongeveer 1 uur",other:"ongeveer {{count}} uur"},xHours:{one:"1 uur",other:"{{count}} uur"},xDays:{one:"1 dag",other:"{{count}} dagen"},aboutXWeeks:{one:"ongeveer 1 week",other:"ongeveer {{count}} weken"},xWeeks:{one:"1 week",other:"{{count}} weken"},aboutXMonths:{one:"ongeveer 1 maand",other:"ongeveer {{count}} maanden"},xMonths:{one:"1 maand",other:"{{count}} maanden"},aboutXYears:{one:"ongeveer 1 jaar",other:"ongeveer {{count}} jaar"},xYears:{one:"1 jaar",other:"{{count}} jaar"},overXYears:{one:"meer dan 1 jaar",other:"meer dan {{count}} jaar"},almostXYears:{one:"bijna 1 jaar",other:"bijna {{count}} jaar"}},kt=(e,n,t)=>{let a,i=Ar[e];return typeof i=="string"?a=i:n===1?a=i.one:a=i.other.replace("{{count}}",String(n)),t?.addSuffix?t.comparison&&t.comparison>0?"over "+a:a+" geleden":a};var Er={full:"EEEE d MMMM y",long:"d MMMM y",medium:"d MMM y",short:"dd-MM-y"},Lr={full:"HH:mm:ss zzzz",long:"HH:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},Vr={full:"{{date}} 'om' {{time}}",long:"{{date}} 'om' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},xt={date:s({formats:Er,defaultWidth:"full"}),time:s({formats:Lr,defaultWidth:"full"}),dateTime:s({formats:Vr,defaultWidth:"full"})};var Gr={lastWeek:"'afgelopen' eeee 'om' p",yesterday:"'gisteren om' p",today:"'vandaag om' p",tomorrow:"'morgen om' p",nextWeek:"eeee 'om' p",other:"P"},Wt=(e,n,t,a)=>Gr[e];var Hr={narrow:["v.C.","n.C."],abbreviated:["v.Chr.","n.Chr."],wide:["voor Christus","na Christus"]},Or={narrow:["1","2","3","4"],abbreviated:["K1","K2","K3","K4"],wide:["1e kwartaal","2e kwartaal","3e kwartaal","4e kwartaal"]},Xr={narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["jan.","feb.","mrt.","apr.","mei","jun.","jul.","aug.","sep.","okt.","nov.","dec."],wide:["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"]},Rr={narrow:["Z","M","D","W","D","V","Z"],short:["zo","ma","di","wo","do","vr","za"],abbreviated:["zon","maa","din","woe","don","vri","zat"],wide:["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"]},Ir={narrow:{am:"AM",pm:"PM",midnight:"middernacht",noon:"het middaguur",morning:"'s ochtends",afternoon:"'s middags",evening:"'s avonds",night:"'s nachts"},abbreviated:{am:"AM",pm:"PM",midnight:"middernacht",noon:"het middaguur",morning:"'s ochtends",afternoon:"'s middags",evening:"'s avonds",night:"'s nachts"},wide:{am:"AM",pm:"PM",midnight:"middernacht",noon:"het middaguur",morning:"'s ochtends",afternoon:"'s middags",evening:"'s avonds",night:"'s nachts"}},qr=(e,n)=>Number(e)+"e",Dt={ordinalNumber:qr,era:r({values:Hr,defaultWidth:"wide"}),quarter:r({values:Or,defaultWidth:"wide",argumentCallback:e=>e-1}),month:r({values:Xr,defaultWidth:"wide"}),day:r({values:Rr,defaultWidth:"wide"}),dayPeriod:r({values:Ir,defaultWidth:"wide"})};var Br=/^(\d+)e?/i,Yr=/\d+/i,Jr={narrow:/^([vn]\.? ?C\.?)/,abbreviated:/^([vn]\. ?Chr\.?)/,wide:/^((voor|na) Christus)/},Qr={any:[/^v/,/^n/]},$r={narrow:/^[1234]/i,abbreviated:/^K[1234]/i,wide:/^[1234]e kwartaal/i},Kr={any:[/1/i,/2/i,/3/i,/4/i]},Ur={narrow:/^[jfmasond]/i,abbreviated:/^(jan.|feb.|mrt.|apr.|mei|jun.|jul.|aug.|sep.|okt.|nov.|dec.)/i,wide:/^(januari|februari|maart|april|mei|juni|juli|augustus|september|oktober|november|december)/i},Zr={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^jan/i,/^feb/i,/^m(r|a)/i,/^apr/i,/^mei/i,/^jun/i,/^jul/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i]},eo={narrow:/^[zmdwv]/i,short:/^(zo|ma|di|wo|do|vr|za)/i,abbreviated:/^(zon|maa|din|woe|don|vri|zat)/i,wide:/^(zondag|maandag|dinsdag|woensdag|donderdag|vrijdag|zaterdag)/i},to={narrow:[/^z/i,/^m/i,/^d/i,/^w/i,/^d/i,/^v/i,/^z/i],any:[/^zo/i,/^ma/i,/^di/i,/^wo/i,/^do/i,/^vr/i,/^za/i]},ao={any:/^(am|pm|middernacht|het middaguur|'s (ochtends|middags|avonds|nachts))/i},no={any:{am:/^am/i,pm:/^pm/i,midnight:/^middernacht/i,noon:/^het middaguur/i,morning:/ochtend/i,afternoon:/middag/i,evening:/avond/i,night:/nacht/i}},St={ordinalNumber:u({matchPattern:Br,parsePattern:Yr,valueCallback:e=>parseInt(e,10)}),era:o({matchPatterns:Jr,defaultMatchWidth:"wide",parsePatterns:Qr,defaultParseWidth:"any"}),quarter:o({matchPatterns:$r,defaultMatchWidth:"wide",parsePatterns:Kr,defaultParseWidth:"any",valueCallback:e=>e+1}),month:o({matchPatterns:Ur,defaultMatchWidth:"wide",parsePatterns:Zr,defaultParseWidth:"any"}),day:o({matchPatterns:eo,defaultMatchWidth:"wide",parsePatterns:to,defaultParseWidth:"any"}),dayPeriod:o({matchPatterns:ao,defaultMatchWidth:"any",parsePatterns:no,defaultParseWidth:"any"})};var _t={code:"nl",formatDistance:kt,formatLong:xt,formatRelative:Wt,localize:Dt,match:St,options:{weekStartsOn:1,firstWeekContainsDate:4}};var io={lessThanXSeconds:{one:"menos de um segundo",other:"menos de {{count}} segundos"},xSeconds:{one:"1 segundo",other:"{{count}} segundos"},halfAMinute:"meio minuto",lessThanXMinutes:{one:"menos de um minuto",other:"menos de {{count}} minutos"},xMinutes:{one:"1 minuto",other:"{{count}} minutos"},aboutXHours:{one:"aproximadamente 1 hora",other:"aproximadamente {{count}} horas"},xHours:{one:"1 hora",other:"{{count}} horas"},xDays:{one:"1 dia",other:"{{count}} dias"},aboutXWeeks:{one:"aproximadamente 1 semana",other:"aproximadamente {{count}} semanas"},xWeeks:{one:"1 semana",other:"{{count}} semanas"},aboutXMonths:{one:"aproximadamente 1 m\xEAs",other:"aproximadamente {{count}} meses"},xMonths:{one:"1 m\xEAs",other:"{{count}} meses"},aboutXYears:{one:"aproximadamente 1 ano",other:"aproximadamente {{count}} anos"},xYears:{one:"1 ano",other:"{{count}} anos"},overXYears:{one:"mais de 1 ano",other:"mais de {{count}} anos"},almostXYears:{one:"quase 1 ano",other:"quase {{count}} anos"}},zt=(e,n,t)=>{let a,i=io[e];return typeof i=="string"?a=i:n===1?a=i.one:a=i.other.replace("{{count}}",String(n)),t?.addSuffix?t.comparison&&t.comparison>0?"daqui a "+a:"h\xE1 "+a:a};var ro={full:"EEEE, d 'de' MMMM 'de' y",long:"d 'de' MMMM 'de' y",medium:"d 'de' MMM 'de' y",short:"dd/MM/y"},oo={full:"HH:mm:ss zzzz",long:"HH:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},so={full:"{{date}} '\xE0s' {{time}}",long:"{{date}} '\xE0s' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},Ct={date:s({formats:ro,defaultWidth:"full"}),time:s({formats:oo,defaultWidth:"full"}),dateTime:s({formats:so,defaultWidth:"full"})};var mo={lastWeek:e=>{let n=e.getDay();return"'"+(n===0||n===6?"\xFAltimo":"\xFAltima")+"' eeee '\xE0s' p"},yesterday:"'ontem \xE0s' p",today:"'hoje \xE0s' p",tomorrow:"'amanh\xE3 \xE0s' p",nextWeek:"eeee '\xE0s' p",other:"P"},jt=(e,n,t,a)=>{let i=mo[e];return typeof i=="function"?i(n):i};var uo={narrow:["aC","dC"],abbreviated:["a.C.","d.C."],wide:["antes de Cristo","depois de Cristo"]},co={narrow:["1","2","3","4"],abbreviated:["T1","T2","T3","T4"],wide:["1\xBA trimestre","2\xBA trimestre","3\xBA trimestre","4\xBA trimestre"]},lo={narrow:["j","f","m","a","m","j","j","a","s","o","n","d"],abbreviated:["jan","fev","mar","abr","mai","jun","jul","ago","set","out","nov","dez"],wide:["janeiro","fevereiro","mar\xE7o","abril","maio","junho","julho","agosto","setembro","outubro","novembro","dezembro"]},ho={narrow:["d","s","t","q","q","s","s"],short:["dom","seg","ter","qua","qui","sex","s\xE1b"],abbreviated:["dom","seg","ter","qua","qui","sex","s\xE1b"],wide:["domingo","segunda-feira","ter\xE7a-feira","quarta-feira","quinta-feira","sexta-feira","s\xE1bado"]},fo={narrow:{am:"AM",pm:"PM",midnight:"meia-noite",noon:"meio-dia",morning:"manh\xE3",afternoon:"tarde",evening:"noite",night:"madrugada"},abbreviated:{am:"AM",pm:"PM",midnight:"meia-noite",noon:"meio-dia",morning:"manh\xE3",afternoon:"tarde",evening:"noite",night:"madrugada"},wide:{am:"AM",pm:"PM",midnight:"meia-noite",noon:"meio-dia",morning:"manh\xE3",afternoon:"tarde",evening:"noite",night:"madrugada"}},po={narrow:{am:"AM",pm:"PM",midnight:"meia-noite",noon:"meio-dia",morning:"da manh\xE3",afternoon:"da tarde",evening:"da noite",night:"da madrugada"},abbreviated:{am:"AM",pm:"PM",midnight:"meia-noite",noon:"meio-dia",morning:"da manh\xE3",afternoon:"da tarde",evening:"da noite",night:"da madrugada"},wide:{am:"AM",pm:"PM",midnight:"meia-noite",noon:"meio-dia",morning:"da manh\xE3",afternoon:"da tarde",evening:"da noite",night:"da madrugada"}},go=(e,n)=>Number(e)+"\xBA",Tt={ordinalNumber:go,era:r({values:uo,defaultWidth:"wide"}),quarter:r({values:co,defaultWidth:"wide",argumentCallback:e=>e-1}),month:r({values:lo,defaultWidth:"wide"}),day:r({values:ho,defaultWidth:"wide"}),dayPeriod:r({values:fo,defaultWidth:"wide",formattingValues:po,defaultFormattingWidth:"wide"})};var vo=/^(\d+)(º|ª)?/i,bo=/\d+/i,yo={narrow:/^(ac|dc|a|d)/i,abbreviated:/^(a\.?\s?c\.?|a\.?\s?e\.?\s?c\.?|d\.?\s?c\.?|e\.?\s?c\.?)/i,wide:/^(antes de cristo|antes da era comum|depois de cristo|era comum)/i},wo={any:[/^ac/i,/^dc/i],wide:[/^(antes de cristo|antes da era comum)/i,/^(depois de cristo|era comum)/i]},Po={narrow:/^[1234]/i,abbreviated:/^T[1234]/i,wide:/^[1234](º|ª)? trimestre/i},Mo={any:[/1/i,/2/i,/3/i,/4/i]},ko={narrow:/^[jfmasond]/i,abbreviated:/^(jan|fev|mar|abr|mai|jun|jul|ago|set|out|nov|dez)/i,wide:/^(janeiro|fevereiro|março|abril|maio|junho|julho|agosto|setembro|outubro|novembro|dezembro)/i},xo={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ab/i,/^mai/i,/^jun/i,/^jul/i,/^ag/i,/^s/i,/^o/i,/^n/i,/^d/i]},Wo={narrow:/^[dstq]/i,short:/^(dom|seg|ter|qua|qui|sex|s[áa]b)/i,abbreviated:/^(dom|seg|ter|qua|qui|sex|s[áa]b)/i,wide:/^(domingo|segunda-?\s?feira|terça-?\s?feira|quarta-?\s?feira|quinta-?\s?feira|sexta-?\s?feira|s[áa]bado)/i},Do={narrow:[/^d/i,/^s/i,/^t/i,/^q/i,/^q/i,/^s/i,/^s/i],any:[/^d/i,/^seg/i,/^t/i,/^qua/i,/^qui/i,/^sex/i,/^s[áa]/i]},So={narrow:/^(a|p|meia-?\s?noite|meio-?\s?dia|(da) (manh[ãa]|tarde|noite|madrugada))/i,any:/^([ap]\.?\s?m\.?|meia-?\s?noite|meio-?\s?dia|(da) (manh[ãa]|tarde|noite|madrugada))/i},_o={any:{am:/^a/i,pm:/^p/i,midnight:/^meia/i,noon:/^meio/i,morning:/manh[ãa]/i,afternoon:/tarde/i,evening:/noite/i,night:/madrugada/i}},Ft={ordinalNumber:u({matchPattern:vo,parsePattern:bo,valueCallback:e=>parseInt(e,10)}),era:o({matchPatterns:yo,defaultMatchWidth:"wide",parsePatterns:wo,defaultParseWidth:"any"}),quarter:o({matchPatterns:Po,defaultMatchWidth:"wide",parsePatterns:Mo,defaultParseWidth:"any",valueCallback:e=>e+1}),month:o({matchPatterns:ko,defaultMatchWidth:"wide",parsePatterns:xo,defaultParseWidth:"any"}),day:o({matchPatterns:Wo,defaultMatchWidth:"wide",parsePatterns:Do,defaultParseWidth:"any"}),dayPeriod:o({matchPatterns:So,defaultMatchWidth:"any",parsePatterns:_o,defaultParseWidth:"any"})};var Nt={code:"pt",formatDistance:zt,formatLong:Ct,formatRelative:jt,localize:Tt,match:Ft,options:{weekStartsOn:1,firstWeekContainsDate:4}};function S(e,n){if(e.one!==void 0&&n===1)return e.one;let t=n%10,a=n%100;return t===1&&a!==11?e.singularNominative.replace("{{count}}",String(n)):t>=2&&t<=4&&(a<10||a>20)?e.singularGenitive.replace("{{count}}",String(n)):e.pluralGenitive.replace("{{count}}",String(n))}function l(e){return(n,t)=>t?.addSuffix?t.comparison&&t.comparison>0?e.future?S(e.future,n):"\u0447\u0435\u0440\u0435\u0437 "+S(e.regular,n):e.past?S(e.past,n):S(e.regular,n)+" \u043D\u0430\u0437\u0430\u0434":S(e.regular,n)}var zo={lessThanXSeconds:l({regular:{one:"\u043C\u0435\u043D\u044C\u0448\u0435 \u0441\u0435\u043A\u0443\u043D\u0434\u044B",singularNominative:"\u043C\u0435\u043D\u044C\u0448\u0435 {{count}} \u0441\u0435\u043A\u0443\u043D\u0434\u044B",singularGenitive:"\u043C\u0435\u043D\u044C\u0448\u0435 {{count}} \u0441\u0435\u043A\u0443\u043D\u0434",pluralGenitive:"\u043C\u0435\u043D\u044C\u0448\u0435 {{count}} \u0441\u0435\u043A\u0443\u043D\u0434"},future:{one:"\u043C\u0435\u043D\u044C\u0448\u0435, \u0447\u0435\u043C \u0447\u0435\u0440\u0435\u0437 \u0441\u0435\u043A\u0443\u043D\u0434\u0443",singularNominative:"\u043C\u0435\u043D\u044C\u0448\u0435, \u0447\u0435\u043C \u0447\u0435\u0440\u0435\u0437 {{count}} \u0441\u0435\u043A\u0443\u043D\u0434\u0443",singularGenitive:"\u043C\u0435\u043D\u044C\u0448\u0435, \u0447\u0435\u043C \u0447\u0435\u0440\u0435\u0437 {{count}} \u0441\u0435\u043A\u0443\u043D\u0434\u044B",pluralGenitive:"\u043C\u0435\u043D\u044C\u0448\u0435, \u0447\u0435\u043C \u0447\u0435\u0440\u0435\u0437 {{count}} \u0441\u0435\u043A\u0443\u043D\u0434"}}),xSeconds:l({regular:{singularNominative:"{{count}} \u0441\u0435\u043A\u0443\u043D\u0434\u0430",singularGenitive:"{{count}} \u0441\u0435\u043A\u0443\u043D\u0434\u044B",pluralGenitive:"{{count}} \u0441\u0435\u043A\u0443\u043D\u0434"},past:{singularNominative:"{{count}} \u0441\u0435\u043A\u0443\u043D\u0434\u0443 \u043D\u0430\u0437\u0430\u0434",singularGenitive:"{{count}} \u0441\u0435\u043A\u0443\u043D\u0434\u044B \u043D\u0430\u0437\u0430\u0434",pluralGenitive:"{{count}} \u0441\u0435\u043A\u0443\u043D\u0434 \u043D\u0430\u0437\u0430\u0434"},future:{singularNominative:"\u0447\u0435\u0440\u0435\u0437 {{count}} \u0441\u0435\u043A\u0443\u043D\u0434\u0443",singularGenitive:"\u0447\u0435\u0440\u0435\u0437 {{count}} \u0441\u0435\u043A\u0443\u043D\u0434\u044B",pluralGenitive:"\u0447\u0435\u0440\u0435\u0437 {{count}} \u0441\u0435\u043A\u0443\u043D\u0434"}}),halfAMinute:(e,n)=>n?.addSuffix?n.comparison&&n.comparison>0?"\u0447\u0435\u0440\u0435\u0437 \u043F\u043E\u043B\u043C\u0438\u043D\u0443\u0442\u044B":"\u043F\u043E\u043B\u043C\u0438\u043D\u0443\u0442\u044B \u043D\u0430\u0437\u0430\u0434":"\u043F\u043E\u043B\u043C\u0438\u043D\u0443\u0442\u044B",lessThanXMinutes:l({regular:{one:"\u043C\u0435\u043D\u044C\u0448\u0435 \u043C\u0438\u043D\u0443\u0442\u044B",singularNominative:"\u043C\u0435\u043D\u044C\u0448\u0435 {{count}} \u043C\u0438\u043D\u0443\u0442\u044B",singularGenitive:"\u043C\u0435\u043D\u044C\u0448\u0435 {{count}} \u043C\u0438\u043D\u0443\u0442",pluralGenitive:"\u043C\u0435\u043D\u044C\u0448\u0435 {{count}} \u043C\u0438\u043D\u0443\u0442"},future:{one:"\u043C\u0435\u043D\u044C\u0448\u0435, \u0447\u0435\u043C \u0447\u0435\u0440\u0435\u0437 \u043C\u0438\u043D\u0443\u0442\u0443",singularNominative:"\u043C\u0435\u043D\u044C\u0448\u0435, \u0447\u0435\u043C \u0447\u0435\u0440\u0435\u0437 {{count}} \u043C\u0438\u043D\u0443\u0442\u0443",singularGenitive:"\u043C\u0435\u043D\u044C\u0448\u0435, \u0447\u0435\u043C \u0447\u0435\u0440\u0435\u0437 {{count}} \u043C\u0438\u043D\u0443\u0442\u044B",pluralGenitive:"\u043C\u0435\u043D\u044C\u0448\u0435, \u0447\u0435\u043C \u0447\u0435\u0440\u0435\u0437 {{count}} \u043C\u0438\u043D\u0443\u0442"}}),xMinutes:l({regular:{singularNominative:"{{count}} \u043C\u0438\u043D\u0443\u0442\u0430",singularGenitive:"{{count}} \u043C\u0438\u043D\u0443\u0442\u044B",pluralGenitive:"{{count}} \u043C\u0438\u043D\u0443\u0442"},past:{singularNominative:"{{count}} \u043C\u0438\u043D\u0443\u0442\u0443 \u043D\u0430\u0437\u0430\u0434",singularGenitive:"{{count}} \u043C\u0438\u043D\u0443\u0442\u044B \u043D\u0430\u0437\u0430\u0434",pluralGenitive:"{{count}} \u043C\u0438\u043D\u0443\u0442 \u043D\u0430\u0437\u0430\u0434"},future:{singularNominative:"\u0447\u0435\u0440\u0435\u0437 {{count}} \u043C\u0438\u043D\u0443\u0442\u0443",singularGenitive:"\u0447\u0435\u0440\u0435\u0437 {{count}} \u043C\u0438\u043D\u0443\u0442\u044B",pluralGenitive:"\u0447\u0435\u0440\u0435\u0437 {{count}} \u043C\u0438\u043D\u0443\u0442"}}),aboutXHours:l({regular:{singularNominative:"\u043E\u043A\u043E\u043B\u043E {{count}} \u0447\u0430\u0441\u0430",singularGenitive:"\u043E\u043A\u043E\u043B\u043E {{count}} \u0447\u0430\u0441\u043E\u0432",pluralGenitive:"\u043E\u043A\u043E\u043B\u043E {{count}} \u0447\u0430\u0441\u043E\u0432"},future:{singularNominative:"\u043F\u0440\u0438\u0431\u043B\u0438\u0437\u0438\u0442\u0435\u043B\u044C\u043D\u043E \u0447\u0435\u0440\u0435\u0437 {{count}} \u0447\u0430\u0441",singularGenitive:"\u043F\u0440\u0438\u0431\u043B\u0438\u0437\u0438\u0442\u0435\u043B\u044C\u043D\u043E \u0447\u0435\u0440\u0435\u0437 {{count}} \u0447\u0430\u0441\u0430",pluralGenitive:"\u043F\u0440\u0438\u0431\u043B\u0438\u0437\u0438\u0442\u0435\u043B\u044C\u043D\u043E \u0447\u0435\u0440\u0435\u0437 {{count}} \u0447\u0430\u0441\u043E\u0432"}}),xHours:l({regular:{singularNominative:"{{count}} \u0447\u0430\u0441",singularGenitive:"{{count}} \u0447\u0430\u0441\u0430",pluralGenitive:"{{count}} \u0447\u0430\u0441\u043E\u0432"}}),xDays:l({regular:{singularNominative:"{{count}} \u0434\u0435\u043D\u044C",singularGenitive:"{{count}} \u0434\u043D\u044F",pluralGenitive:"{{count}} \u0434\u043D\u0435\u0439"}}),aboutXWeeks:l({regular:{singularNominative:"\u043E\u043A\u043E\u043B\u043E {{count}} \u043D\u0435\u0434\u0435\u043B\u0438",singularGenitive:"\u043E\u043A\u043E\u043B\u043E {{count}} \u043D\u0435\u0434\u0435\u043B\u044C",pluralGenitive:"\u043E\u043A\u043E\u043B\u043E {{count}} \u043D\u0435\u0434\u0435\u043B\u044C"},future:{singularNominative:"\u043F\u0440\u0438\u0431\u043B\u0438\u0437\u0438\u0442\u0435\u043B\u044C\u043D\u043E \u0447\u0435\u0440\u0435\u0437 {{count}} \u043D\u0435\u0434\u0435\u043B\u044E",singularGenitive:"\u043F\u0440\u0438\u0431\u043B\u0438\u0437\u0438\u0442\u0435\u043B\u044C\u043D\u043E \u0447\u0435\u0440\u0435\u0437 {{count}} \u043D\u0435\u0434\u0435\u043B\u0438",pluralGenitive:"\u043F\u0440\u0438\u0431\u043B\u0438\u0437\u0438\u0442\u0435\u043B\u044C\u043D\u043E \u0447\u0435\u0440\u0435\u0437 {{count}} \u043D\u0435\u0434\u0435\u043B\u044C"}}),xWeeks:l({regular:{singularNominative:"{{count}} \u043D\u0435\u0434\u0435\u043B\u044F",singularGenitive:"{{count}} \u043D\u0435\u0434\u0435\u043B\u0438",pluralGenitive:"{{count}} \u043D\u0435\u0434\u0435\u043B\u044C"}}),aboutXMonths:l({regular:{singularNominative:"\u043E\u043A\u043E\u043B\u043E {{count}} \u043C\u0435\u0441\u044F\u0446\u0430",singularGenitive:"\u043E\u043A\u043E\u043B\u043E {{count}} \u043C\u0435\u0441\u044F\u0446\u0435\u0432",pluralGenitive:"\u043E\u043A\u043E\u043B\u043E {{count}} \u043C\u0435\u0441\u044F\u0446\u0435\u0432"},future:{singularNominative:"\u043F\u0440\u0438\u0431\u043B\u0438\u0437\u0438\u0442\u0435\u043B\u044C\u043D\u043E \u0447\u0435\u0440\u0435\u0437 {{count}} \u043C\u0435\u0441\u044F\u0446",singularGenitive:"\u043F\u0440\u0438\u0431\u043B\u0438\u0437\u0438\u0442\u0435\u043B\u044C\u043D\u043E \u0447\u0435\u0440\u0435\u0437 {{count}} \u043C\u0435\u0441\u044F\u0446\u0430",pluralGenitive:"\u043F\u0440\u0438\u0431\u043B\u0438\u0437\u0438\u0442\u0435\u043B\u044C\u043D\u043E \u0447\u0435\u0440\u0435\u0437 {{count}} \u043C\u0435\u0441\u044F\u0446\u0435\u0432"}}),xMonths:l({regular:{singularNominative:"{{count}} \u043C\u0435\u0441\u044F\u0446",singularGenitive:"{{count}} \u043C\u0435\u0441\u044F\u0446\u0430",pluralGenitive:"{{count}} \u043C\u0435\u0441\u044F\u0446\u0435\u0432"}}),aboutXYears:l({regular:{singularNominative:"\u043E\u043A\u043E\u043B\u043E {{count}} \u0433\u043E\u0434\u0430",singularGenitive:"\u043E\u043A\u043E\u043B\u043E {{count}} \u043B\u0435\u0442",pluralGenitive:"\u043E\u043A\u043E\u043B\u043E {{count}} \u043B\u0435\u0442"},future:{singularNominative:"\u043F\u0440\u0438\u0431\u043B\u0438\u0437\u0438\u0442\u0435\u043B\u044C\u043D\u043E \u0447\u0435\u0440\u0435\u0437 {{count}} \u0433\u043E\u0434",singularGenitive:"\u043F\u0440\u0438\u0431\u043B\u0438\u0437\u0438\u0442\u0435\u043B\u044C\u043D\u043E \u0447\u0435\u0440\u0435\u0437 {{count}} \u0433\u043E\u0434\u0430",pluralGenitive:"\u043F\u0440\u0438\u0431\u043B\u0438\u0437\u0438\u0442\u0435\u043B\u044C\u043D\u043E \u0447\u0435\u0440\u0435\u0437 {{count}} \u043B\u0435\u0442"}}),xYears:l({regular:{singularNominative:"{{count}} \u0433\u043E\u0434",singularGenitive:"{{count}} \u0433\u043E\u0434\u0430",pluralGenitive:"{{count}} \u043B\u0435\u0442"}}),overXYears:l({regular:{singularNominative:"\u0431\u043E\u043B\u044C\u0448\u0435 {{count}} \u0433\u043E\u0434\u0430",singularGenitive:"\u0431\u043E\u043B\u044C\u0448\u0435 {{count}} \u043B\u0435\u0442",pluralGenitive:"\u0431\u043E\u043B\u044C\u0448\u0435 {{count}} \u043B\u0435\u0442"},future:{singularNominative:"\u0431\u043E\u043B\u044C\u0448\u0435, \u0447\u0435\u043C \u0447\u0435\u0440\u0435\u0437 {{count}} \u0433\u043E\u0434",singularGenitive:"\u0431\u043E\u043B\u044C\u0448\u0435, \u0447\u0435\u043C \u0447\u0435\u0440\u0435\u0437 {{count}} \u0433\u043E\u0434\u0430",pluralGenitive:"\u0431\u043E\u043B\u044C\u0448\u0435, \u0447\u0435\u043C \u0447\u0435\u0440\u0435\u0437 {{count}} \u043B\u0435\u0442"}}),almostXYears:l({regular:{singularNominative:"\u043F\u043E\u0447\u0442\u0438 {{count}} \u0433\u043E\u0434",singularGenitive:"\u043F\u043E\u0447\u0442\u0438 {{count}} \u0433\u043E\u0434\u0430",pluralGenitive:"\u043F\u043E\u0447\u0442\u0438 {{count}} \u043B\u0435\u0442"},future:{singularNominative:"\u043F\u043E\u0447\u0442\u0438 \u0447\u0435\u0440\u0435\u0437 {{count}} \u0433\u043E\u0434",singularGenitive:"\u043F\u043E\u0447\u0442\u0438 \u0447\u0435\u0440\u0435\u0437 {{count}} \u0433\u043E\u0434\u0430",pluralGenitive:"\u043F\u043E\u0447\u0442\u0438 \u0447\u0435\u0440\u0435\u0437 {{count}} \u043B\u0435\u0442"}})},At=(e,n,t)=>zo[e](n,t);var Co={full:"EEEE, d MMMM y '\u0433.'",long:"d MMMM y '\u0433.'",medium:"d MMM y '\u0433.'",short:"dd.MM.y"},jo={full:"H:mm:ss zzzz",long:"H:mm:ss z",medium:"H:mm:ss",short:"H:mm"},To={any:"{{date}}, {{time}}"},Et={date:s({formats:Co,defaultWidth:"full"}),time:s({formats:jo,defaultWidth:"full"}),dateTime:s({formats:To,defaultWidth:"any"})};var Fo=Math.pow(10,8)*24*60*60*1e3,qc=-Fo,Bc=6048e5,Yc=864e5;var Jc=43200,Qc=1440;var No=3600;var Lt=No*24,$c=Lt*7,Ao=Lt*365.2425,Eo=Ao/12,Kc=Eo*3,ee=Symbol.for("constructDateFrom");function N(e,n){return typeof e=="function"?e(n):e&&typeof e=="object"&&ee in e?e[ee](n):e instanceof Date?new e.constructor(n):new Date(n)}function Vt(e,...n){let t=N.bind(null,e||n.find(a=>typeof a=="object"));return n.map(t)}var Lo={};function Gt(){return Lo}function w(e,n){return N(n||e,e)}function te(e,n){let t=Gt(),a=n?.weekStartsOn??n?.locale?.options?.weekStartsOn??t.weekStartsOn??t.locale?.options?.weekStartsOn??0,i=w(e,n?.in),d=i.getDay(),m=(d{let a=e.getDay();return v(e,n,t)?Ht(a):Vo(a)},yesterday:"'\u0432\u0447\u0435\u0440\u0430 \u0432' p",today:"'\u0441\u0435\u0433\u043E\u0434\u043D\u044F \u0432' p",tomorrow:"'\u0437\u0430\u0432\u0442\u0440\u0430 \u0432' p",nextWeek:(e,n,t)=>{let a=e.getDay();return v(e,n,t)?Ht(a):Go(a)},other:"P"},Ot=(e,n,t,a)=>{let i=Ho[e];return typeof i=="function"?i(n,t,a):i};var Oo={narrow:["\u0434\u043E \u043D.\u044D.","\u043D.\u044D."],abbreviated:["\u0434\u043E \u043D. \u044D.","\u043D. \u044D."],wide:["\u0434\u043E \u043D\u0430\u0448\u0435\u0439 \u044D\u0440\u044B","\u043D\u0430\u0448\u0435\u0439 \u044D\u0440\u044B"]},Xo={narrow:["1","2","3","4"],abbreviated:["1-\u0439 \u043A\u0432.","2-\u0439 \u043A\u0432.","3-\u0439 \u043A\u0432.","4-\u0439 \u043A\u0432."],wide:["1-\u0439 \u043A\u0432\u0430\u0440\u0442\u0430\u043B","2-\u0439 \u043A\u0432\u0430\u0440\u0442\u0430\u043B","3-\u0439 \u043A\u0432\u0430\u0440\u0442\u0430\u043B","4-\u0439 \u043A\u0432\u0430\u0440\u0442\u0430\u043B"]},Ro={narrow:["\u042F","\u0424","\u041C","\u0410","\u041C","\u0418","\u0418","\u0410","\u0421","\u041E","\u041D","\u0414"],abbreviated:["\u044F\u043D\u0432.","\u0444\u0435\u0432.","\u043C\u0430\u0440\u0442","\u0430\u043F\u0440.","\u043C\u0430\u0439","\u0438\u044E\u043D\u044C","\u0438\u044E\u043B\u044C","\u0430\u0432\u0433.","\u0441\u0435\u043D\u0442.","\u043E\u043A\u0442.","\u043D\u043E\u044F\u0431.","\u0434\u0435\u043A."],wide:["\u044F\u043D\u0432\u0430\u0440\u044C","\u0444\u0435\u0432\u0440\u0430\u043B\u044C","\u043C\u0430\u0440\u0442","\u0430\u043F\u0440\u0435\u043B\u044C","\u043C\u0430\u0439","\u0438\u044E\u043D\u044C","\u0438\u044E\u043B\u044C","\u0430\u0432\u0433\u0443\u0441\u0442","\u0441\u0435\u043D\u0442\u044F\u0431\u0440\u044C","\u043E\u043A\u0442\u044F\u0431\u0440\u044C","\u043D\u043E\u044F\u0431\u0440\u044C","\u0434\u0435\u043A\u0430\u0431\u0440\u044C"]},Io={narrow:["\u042F","\u0424","\u041C","\u0410","\u041C","\u0418","\u0418","\u0410","\u0421","\u041E","\u041D","\u0414"],abbreviated:["\u044F\u043D\u0432.","\u0444\u0435\u0432.","\u043C\u0430\u0440.","\u0430\u043F\u0440.","\u043C\u0430\u044F","\u0438\u044E\u043D.","\u0438\u044E\u043B.","\u0430\u0432\u0433.","\u0441\u0435\u043D\u0442.","\u043E\u043A\u0442.","\u043D\u043E\u044F\u0431.","\u0434\u0435\u043A."],wide:["\u044F\u043D\u0432\u0430\u0440\u044F","\u0444\u0435\u0432\u0440\u0430\u043B\u044F","\u043C\u0430\u0440\u0442\u0430","\u0430\u043F\u0440\u0435\u043B\u044F","\u043C\u0430\u044F","\u0438\u044E\u043D\u044F","\u0438\u044E\u043B\u044F","\u0430\u0432\u0433\u0443\u0441\u0442\u0430","\u0441\u0435\u043D\u0442\u044F\u0431\u0440\u044F","\u043E\u043A\u0442\u044F\u0431\u0440\u044F","\u043D\u043E\u044F\u0431\u0440\u044F","\u0434\u0435\u043A\u0430\u0431\u0440\u044F"]},qo={narrow:["\u0412","\u041F","\u0412","\u0421","\u0427","\u041F","\u0421"],short:["\u0432\u0441","\u043F\u043D","\u0432\u0442","\u0441\u0440","\u0447\u0442","\u043F\u0442","\u0441\u0431"],abbreviated:["\u0432\u0441\u043A","\u043F\u043D\u0434","\u0432\u0442\u0440","\u0441\u0440\u0434","\u0447\u0442\u0432","\u043F\u0442\u043D","\u0441\u0443\u0431"],wide:["\u0432\u043E\u0441\u043A\u0440\u0435\u0441\u0435\u043D\u044C\u0435","\u043F\u043E\u043D\u0435\u0434\u0435\u043B\u044C\u043D\u0438\u043A","\u0432\u0442\u043E\u0440\u043D\u0438\u043A","\u0441\u0440\u0435\u0434\u0430","\u0447\u0435\u0442\u0432\u0435\u0440\u0433","\u043F\u044F\u0442\u043D\u0438\u0446\u0430","\u0441\u0443\u0431\u0431\u043E\u0442\u0430"]},Bo={narrow:{am:"\u0414\u041F",pm:"\u041F\u041F",midnight:"\u043F\u043E\u043B\u043D.",noon:"\u043F\u043E\u043B\u0434.",morning:"\u0443\u0442\u0440\u043E",afternoon:"\u0434\u0435\u043D\u044C",evening:"\u0432\u0435\u0447.",night:"\u043D\u043E\u0447\u044C"},abbreviated:{am:"\u0414\u041F",pm:"\u041F\u041F",midnight:"\u043F\u043E\u043B\u043D.",noon:"\u043F\u043E\u043B\u0434.",morning:"\u0443\u0442\u0440\u043E",afternoon:"\u0434\u0435\u043D\u044C",evening:"\u0432\u0435\u0447.",night:"\u043D\u043E\u0447\u044C"},wide:{am:"\u0414\u041F",pm:"\u041F\u041F",midnight:"\u043F\u043E\u043B\u043D\u043E\u0447\u044C",noon:"\u043F\u043E\u043B\u0434\u0435\u043D\u044C",morning:"\u0443\u0442\u0440\u043E",afternoon:"\u0434\u0435\u043D\u044C",evening:"\u0432\u0435\u0447\u0435\u0440",night:"\u043D\u043E\u0447\u044C"}},Yo={narrow:{am:"\u0414\u041F",pm:"\u041F\u041F",midnight:"\u043F\u043E\u043B\u043D.",noon:"\u043F\u043E\u043B\u0434.",morning:"\u0443\u0442\u0440\u0430",afternoon:"\u0434\u043D\u044F",evening:"\u0432\u0435\u0447.",night:"\u043D\u043E\u0447\u0438"},abbreviated:{am:"\u0414\u041F",pm:"\u041F\u041F",midnight:"\u043F\u043E\u043B\u043D.",noon:"\u043F\u043E\u043B\u0434.",morning:"\u0443\u0442\u0440\u0430",afternoon:"\u0434\u043D\u044F",evening:"\u0432\u0435\u0447.",night:"\u043D\u043E\u0447\u0438"},wide:{am:"\u0414\u041F",pm:"\u041F\u041F",midnight:"\u043F\u043E\u043B\u043D\u043E\u0447\u044C",noon:"\u043F\u043E\u043B\u0434\u0435\u043D\u044C",morning:"\u0443\u0442\u0440\u0430",afternoon:"\u0434\u043D\u044F",evening:"\u0432\u0435\u0447\u0435\u0440\u0430",night:"\u043D\u043E\u0447\u0438"}},Jo=(e,n)=>{let t=Number(e),a=n?.unit,i;return a==="date"?i="-\u0435":a==="week"||a==="minute"||a==="second"?i="-\u044F":i="-\u0439",t+i},Xt={ordinalNumber:Jo,era:r({values:Oo,defaultWidth:"wide"}),quarter:r({values:Xo,defaultWidth:"wide",argumentCallback:e=>e-1}),month:r({values:Ro,defaultWidth:"wide",formattingValues:Io,defaultFormattingWidth:"wide"}),day:r({values:qo,defaultWidth:"wide"}),dayPeriod:r({values:Bo,defaultWidth:"any",formattingValues:Yo,defaultFormattingWidth:"wide"})};var Qo=/^(\d+)(-?(е|я|й|ое|ье|ая|ья|ый|ой|ий|ый))?/i,$o=/\d+/i,Ko={narrow:/^((до )?н\.?\s?э\.?)/i,abbreviated:/^((до )?н\.?\s?э\.?)/i,wide:/^(до нашей эры|нашей эры|наша эра)/i},Uo={any:[/^д/i,/^н/i]},Zo={narrow:/^[1234]/i,abbreviated:/^[1234](-?[ыои]?й?)? кв.?/i,wide:/^[1234](-?[ыои]?й?)? квартал/i},es={any:[/1/i,/2/i,/3/i,/4/i]},ts={narrow:/^[яфмаисонд]/i,abbreviated:/^(янв|фев|март?|апр|ма[йя]|июн[ья]?|июл[ья]?|авг|сент?|окт|нояб?|дек)\.?/i,wide:/^(январ[ья]|феврал[ья]|марта?|апрел[ья]|ма[йя]|июн[ья]|июл[ья]|августа?|сентябр[ья]|октябр[ья]|октябр[ья]|ноябр[ья]|декабр[ья])/i},as={narrow:[/^я/i,/^ф/i,/^м/i,/^а/i,/^м/i,/^и/i,/^и/i,/^а/i,/^с/i,/^о/i,/^н/i,/^я/i],any:[/^я/i,/^ф/i,/^мар/i,/^ап/i,/^ма[йя]/i,/^июн/i,/^июл/i,/^ав/i,/^с/i,/^о/i,/^н/i,/^д/i]},ns={narrow:/^[впсч]/i,short:/^(вс|во|пн|по|вт|ср|чт|че|пт|пя|сб|су)\.?/i,abbreviated:/^(вск|вос|пнд|пон|втр|вто|срд|сре|чтв|чет|птн|пят|суб).?/i,wide:/^(воскресень[ея]|понедельника?|вторника?|сред[аы]|четверга?|пятниц[аы]|суббот[аы])/i},is={narrow:[/^в/i,/^п/i,/^в/i,/^с/i,/^ч/i,/^п/i,/^с/i],any:[/^в[ос]/i,/^п[он]/i,/^в/i,/^ср/i,/^ч/i,/^п[ят]/i,/^с[уб]/i]},rs={narrow:/^([дп]п|полн\.?|полд\.?|утр[оа]|день|дня|веч\.?|ноч[ьи])/i,abbreviated:/^([дп]п|полн\.?|полд\.?|утр[оа]|день|дня|веч\.?|ноч[ьи])/i,wide:/^([дп]п|полночь|полдень|утр[оа]|день|дня|вечера?|ноч[ьи])/i},os={any:{am:/^дп/i,pm:/^пп/i,midnight:/^полн/i,noon:/^полд/i,morning:/^у/i,afternoon:/^д[ен]/i,evening:/^в/i,night:/^н/i}},Rt={ordinalNumber:u({matchPattern:Qo,parsePattern:$o,valueCallback:e=>parseInt(e,10)}),era:o({matchPatterns:Ko,defaultMatchWidth:"wide",parsePatterns:Uo,defaultParseWidth:"any"}),quarter:o({matchPatterns:Zo,defaultMatchWidth:"wide",parsePatterns:es,defaultParseWidth:"any",valueCallback:e=>e+1}),month:o({matchPatterns:ts,defaultMatchWidth:"wide",parsePatterns:as,defaultParseWidth:"any"}),day:o({matchPatterns:ns,defaultMatchWidth:"wide",parsePatterns:is,defaultParseWidth:"any"}),dayPeriod:o({matchPatterns:rs,defaultMatchWidth:"wide",parsePatterns:os,defaultParseWidth:"any"})};var It={code:"ru",formatDistance:At,formatLong:Et,formatRelative:Ot,localize:Xt,match:Rt,options:{weekStartsOn:1,firstWeekContainsDate:1}};var ss={lessThanXSeconds:{one:"bir saniyeden az",other:"{{count}} saniyeden az"},xSeconds:{one:"1 saniye",other:"{{count}} saniye"},halfAMinute:"yar\u0131m dakika",lessThanXMinutes:{one:"bir dakikadan az",other:"{{count}} dakikadan az"},xMinutes:{one:"1 dakika",other:"{{count}} dakika"},aboutXHours:{one:"yakla\u015F\u0131k 1 saat",other:"yakla\u015F\u0131k {{count}} saat"},xHours:{one:"1 saat",other:"{{count}} saat"},xDays:{one:"1 g\xFCn",other:"{{count}} g\xFCn"},aboutXWeeks:{one:"yakla\u015F\u0131k 1 hafta",other:"yakla\u015F\u0131k {{count}} hafta"},xWeeks:{one:"1 hafta",other:"{{count}} hafta"},aboutXMonths:{one:"yakla\u015F\u0131k 1 ay",other:"yakla\u015F\u0131k {{count}} ay"},xMonths:{one:"1 ay",other:"{{count}} ay"},aboutXYears:{one:"yakla\u015F\u0131k 1 y\u0131l",other:"yakla\u015F\u0131k {{count}} y\u0131l"},xYears:{one:"1 y\u0131l",other:"{{count}} y\u0131l"},overXYears:{one:"1 y\u0131ldan fazla",other:"{{count}} y\u0131ldan fazla"},almostXYears:{one:"neredeyse 1 y\u0131l",other:"neredeyse {{count}} y\u0131l"}},qt=(e,n,t)=>{let a,i=ss[e];return typeof i=="string"?a=i:n===1?a=i.one:a=i.other.replace("{{count}}",n.toString()),t?.addSuffix?t.comparison&&t.comparison>0?a+" sonra":a+" \xF6nce":a};var ds={full:"d MMMM y EEEE",long:"d MMMM y",medium:"d MMM y",short:"dd.MM.yyyy"},ms={full:"HH:mm:ss zzzz",long:"HH:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},us={full:"{{date}} 'saat' {{time}}",long:"{{date}} 'saat' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},Bt={date:s({formats:ds,defaultWidth:"full"}),time:s({formats:ms,defaultWidth:"full"}),dateTime:s({formats:us,defaultWidth:"full"})};var cs={lastWeek:"'ge\xE7en hafta' eeee 'saat' p",yesterday:"'d\xFCn saat' p",today:"'bug\xFCn saat' p",tomorrow:"'yar\u0131n saat' p",nextWeek:"eeee 'saat' p",other:"P"},Yt=(e,n,t,a)=>cs[e];var ls={narrow:["M\xD6","MS"],abbreviated:["M\xD6","MS"],wide:["Milattan \xD6nce","Milattan Sonra"]},hs={narrow:["1","2","3","4"],abbreviated:["1\xC7","2\xC7","3\xC7","4\xC7"],wide:["\u0130lk \xE7eyrek","\u0130kinci \xC7eyrek","\xDC\xE7\xFCnc\xFC \xE7eyrek","Son \xE7eyrek"]},fs={narrow:["O","\u015E","M","N","M","H","T","A","E","E","K","A"],abbreviated:["Oca","\u015Eub","Mar","Nis","May","Haz","Tem","A\u011Fu","Eyl","Eki","Kas","Ara"],wide:["Ocak","\u015Eubat","Mart","Nisan","May\u0131s","Haziran","Temmuz","A\u011Fustos","Eyl\xFCl","Ekim","Kas\u0131m","Aral\u0131k"]},ps={narrow:["P","P","S","\xC7","P","C","C"],short:["Pz","Pt","Sa","\xC7a","Pe","Cu","Ct"],abbreviated:["Paz","Pzt","Sal","\xC7ar","Per","Cum","Cts"],wide:["Pazar","Pazartesi","Sal\u0131","\xC7ar\u015Famba","Per\u015Fembe","Cuma","Cumartesi"]},gs={narrow:{am:"\xF6\xF6",pm:"\xF6s",midnight:"gy",noon:"\xF6",morning:"sa",afternoon:"\xF6s",evening:"ak",night:"ge"},abbreviated:{am:"\xD6\xD6",pm:"\xD6S",midnight:"gece yar\u0131s\u0131",noon:"\xF6\u011Fle",morning:"sabah",afternoon:"\xF6\u011Fleden sonra",evening:"ak\u015Fam",night:"gece"},wide:{am:"\xD6.\xD6.",pm:"\xD6.S.",midnight:"gece yar\u0131s\u0131",noon:"\xF6\u011Fle",morning:"sabah",afternoon:"\xF6\u011Fleden sonra",evening:"ak\u015Fam",night:"gece"}},vs={narrow:{am:"\xF6\xF6",pm:"\xF6s",midnight:"gy",noon:"\xF6",morning:"sa",afternoon:"\xF6s",evening:"ak",night:"ge"},abbreviated:{am:"\xD6\xD6",pm:"\xD6S",midnight:"gece yar\u0131s\u0131",noon:"\xF6\u011Flen",morning:"sabahleyin",afternoon:"\xF6\u011Fleden sonra",evening:"ak\u015Famleyin",night:"geceleyin"},wide:{am:"\xF6.\xF6.",pm:"\xF6.s.",midnight:"gece yar\u0131s\u0131",noon:"\xF6\u011Flen",morning:"sabahleyin",afternoon:"\xF6\u011Fleden sonra",evening:"ak\u015Famleyin",night:"geceleyin"}},bs=(e,n)=>Number(e)+".",Jt={ordinalNumber:bs,era:r({values:ls,defaultWidth:"wide"}),quarter:r({values:hs,defaultWidth:"wide",argumentCallback:e=>Number(e)-1}),month:r({values:fs,defaultWidth:"wide"}),day:r({values:ps,defaultWidth:"wide"}),dayPeriod:r({values:gs,defaultWidth:"wide",formattingValues:vs,defaultFormattingWidth:"wide"})};var ys=/^(\d+)(\.)?/i,ws=/\d+/i,Ps={narrow:/^(mö|ms)/i,abbreviated:/^(mö|ms)/i,wide:/^(milattan önce|milattan sonra)/i},Ms={any:[/(^mö|^milattan önce)/i,/(^ms|^milattan sonra)/i]},ks={narrow:/^[1234]/i,abbreviated:/^[1234]ç/i,wide:/^((i|İ)lk|(i|İ)kinci|üçüncü|son) çeyrek/i},xs={any:[/1/i,/2/i,/3/i,/4/i],abbreviated:[/1ç/i,/2ç/i,/3ç/i,/4ç/i],wide:[/^(i|İ)lk çeyrek/i,/(i|İ)kinci çeyrek/i,/üçüncü çeyrek/i,/son çeyrek/i]},Ws={narrow:/^[oşmnhtaek]/i,abbreviated:/^(oca|şub|mar|nis|may|haz|tem|ağu|eyl|eki|kas|ara)/i,wide:/^(ocak|şubat|mart|nisan|mayıs|haziran|temmuz|ağustos|eylül|ekim|kasım|aralık)/i},Ds={narrow:[/^o/i,/^ş/i,/^m/i,/^n/i,/^m/i,/^h/i,/^t/i,/^a/i,/^e/i,/^e/i,/^k/i,/^a/i],any:[/^o/i,/^ş/i,/^mar/i,/^n/i,/^may/i,/^h/i,/^t/i,/^ağ/i,/^ey/i,/^ek/i,/^k/i,/^ar/i]},Ss={narrow:/^[psçc]/i,short:/^(pz|pt|sa|ça|pe|cu|ct)/i,abbreviated:/^(paz|pzt|sal|çar|per|cum|cts)/i,wide:/^(pazar(?!tesi)|pazartesi|salı|çarşamba|perşembe|cuma(?!rtesi)|cumartesi)/i},_s={narrow:[/^p/i,/^p/i,/^s/i,/^ç/i,/^p/i,/^c/i,/^c/i],any:[/^pz/i,/^pt/i,/^sa/i,/^ça/i,/^pe/i,/^cu/i,/^ct/i],wide:[/^pazar(?!tesi)/i,/^pazartesi/i,/^salı/i,/^çarşamba/i,/^perşembe/i,/^cuma(?!rtesi)/i,/^cumartesi/i]},zs={narrow:/^(öö|ös|gy|ö|sa|ös|ak|ge)/i,any:/^(ö\.?\s?[ös]\.?|öğleden sonra|gece yarısı|öğle|(sabah|öğ|akşam|gece)(leyin))/i},Cs={any:{am:/^ö\.?ö\.?/i,pm:/^ö\.?s\.?/i,midnight:/^(gy|gece yarısı)/i,noon:/^öğ/i,morning:/^sa/i,afternoon:/^öğleden sonra/i,evening:/^ak/i,night:/^ge/i}},Qt={ordinalNumber:u({matchPattern:ys,parsePattern:ws,valueCallback:function(e){return parseInt(e,10)}}),era:o({matchPatterns:Ps,defaultMatchWidth:"wide",parsePatterns:Ms,defaultParseWidth:"any"}),quarter:o({matchPatterns:ks,defaultMatchWidth:"wide",parsePatterns:xs,defaultParseWidth:"any",valueCallback:e=>e+1}),month:o({matchPatterns:Ws,defaultMatchWidth:"wide",parsePatterns:Ds,defaultParseWidth:"any"}),day:o({matchPatterns:Ss,defaultMatchWidth:"wide",parsePatterns:_s,defaultParseWidth:"any"}),dayPeriod:o({matchPatterns:zs,defaultMatchWidth:"any",parsePatterns:Cs,defaultParseWidth:"any"})};var $t={code:"tr",formatDistance:qt,formatLong:Bt,formatRelative:Yt,localize:Jt,match:Qt,options:{weekStartsOn:1,firstWeekContainsDate:1}};function _(e,n){if(e.one!==void 0&&n===1)return e.one;let t=n%10,a=n%100;return t===1&&a!==11?e.singularNominative.replace("{{count}}",String(n)):t>=2&&t<=4&&(a<10||a>20)?e.singularGenitive.replace("{{count}}",String(n)):e.pluralGenitive.replace("{{count}}",String(n))}function h(e){return(n,t)=>t&&t.addSuffix?t.comparison&&t.comparison>0?e.future?_(e.future,n):"\u0437\u0430 "+_(e.regular,n):e.past?_(e.past,n):_(e.regular,n)+" \u0442\u043E\u043C\u0443":_(e.regular,n)}var js=(e,n)=>n&&n.addSuffix?n.comparison&&n.comparison>0?"\u0437\u0430 \u043F\u0456\u0432\u0445\u0432\u0438\u043B\u0438\u043D\u0438":"\u043F\u0456\u0432\u0445\u0432\u0438\u043B\u0438\u043D\u0438 \u0442\u043E\u043C\u0443":"\u043F\u0456\u0432\u0445\u0432\u0438\u043B\u0438\u043D\u0438",Ts={lessThanXSeconds:h({regular:{one:"\u043C\u0435\u043D\u0448\u0435 \u0441\u0435\u043A\u0443\u043D\u0434\u0438",singularNominative:"\u043C\u0435\u043D\u0448\u0435 {{count}} \u0441\u0435\u043A\u0443\u043D\u0434\u0438",singularGenitive:"\u043C\u0435\u043D\u0448\u0435 {{count}} \u0441\u0435\u043A\u0443\u043D\u0434",pluralGenitive:"\u043C\u0435\u043D\u0448\u0435 {{count}} \u0441\u0435\u043A\u0443\u043D\u0434"},future:{one:"\u043C\u0435\u043D\u0448\u0435, \u043D\u0456\u0436 \u0437\u0430 \u0441\u0435\u043A\u0443\u043D\u0434\u0443",singularNominative:"\u043C\u0435\u043D\u0448\u0435, \u043D\u0456\u0436 \u0437\u0430 {{count}} \u0441\u0435\u043A\u0443\u043D\u0434\u0443",singularGenitive:"\u043C\u0435\u043D\u0448\u0435, \u043D\u0456\u0436 \u0437\u0430 {{count}} \u0441\u0435\u043A\u0443\u043D\u0434\u0438",pluralGenitive:"\u043C\u0435\u043D\u0448\u0435, \u043D\u0456\u0436 \u0437\u0430 {{count}} \u0441\u0435\u043A\u0443\u043D\u0434"}}),xSeconds:h({regular:{singularNominative:"{{count}} \u0441\u0435\u043A\u0443\u043D\u0434\u0430",singularGenitive:"{{count}} \u0441\u0435\u043A\u0443\u043D\u0434\u0438",pluralGenitive:"{{count}} \u0441\u0435\u043A\u0443\u043D\u0434"},past:{singularNominative:"{{count}} \u0441\u0435\u043A\u0443\u043D\u0434\u0443 \u0442\u043E\u043C\u0443",singularGenitive:"{{count}} \u0441\u0435\u043A\u0443\u043D\u0434\u0438 \u0442\u043E\u043C\u0443",pluralGenitive:"{{count}} \u0441\u0435\u043A\u0443\u043D\u0434 \u0442\u043E\u043C\u0443"},future:{singularNominative:"\u0437\u0430 {{count}} \u0441\u0435\u043A\u0443\u043D\u0434\u0443",singularGenitive:"\u0437\u0430 {{count}} \u0441\u0435\u043A\u0443\u043D\u0434\u0438",pluralGenitive:"\u0437\u0430 {{count}} \u0441\u0435\u043A\u0443\u043D\u0434"}}),halfAMinute:js,lessThanXMinutes:h({regular:{one:"\u043C\u0435\u043D\u0448\u0435 \u0445\u0432\u0438\u043B\u0438\u043D\u0438",singularNominative:"\u043C\u0435\u043D\u0448\u0435 {{count}} \u0445\u0432\u0438\u043B\u0438\u043D\u0438",singularGenitive:"\u043C\u0435\u043D\u0448\u0435 {{count}} \u0445\u0432\u0438\u043B\u0438\u043D",pluralGenitive:"\u043C\u0435\u043D\u0448\u0435 {{count}} \u0445\u0432\u0438\u043B\u0438\u043D"},future:{one:"\u043C\u0435\u043D\u0448\u0435, \u043D\u0456\u0436 \u0437\u0430 \u0445\u0432\u0438\u043B\u0438\u043D\u0443",singularNominative:"\u043C\u0435\u043D\u0448\u0435, \u043D\u0456\u0436 \u0437\u0430 {{count}} \u0445\u0432\u0438\u043B\u0438\u043D\u0443",singularGenitive:"\u043C\u0435\u043D\u0448\u0435, \u043D\u0456\u0436 \u0437\u0430 {{count}} \u0445\u0432\u0438\u043B\u0438\u043D\u0438",pluralGenitive:"\u043C\u0435\u043D\u0448\u0435, \u043D\u0456\u0436 \u0437\u0430 {{count}} \u0445\u0432\u0438\u043B\u0438\u043D"}}),xMinutes:h({regular:{singularNominative:"{{count}} \u0445\u0432\u0438\u043B\u0438\u043D\u0430",singularGenitive:"{{count}} \u0445\u0432\u0438\u043B\u0438\u043D\u0438",pluralGenitive:"{{count}} \u0445\u0432\u0438\u043B\u0438\u043D"},past:{singularNominative:"{{count}} \u0445\u0432\u0438\u043B\u0438\u043D\u0443 \u0442\u043E\u043C\u0443",singularGenitive:"{{count}} \u0445\u0432\u0438\u043B\u0438\u043D\u0438 \u0442\u043E\u043C\u0443",pluralGenitive:"{{count}} \u0445\u0432\u0438\u043B\u0438\u043D \u0442\u043E\u043C\u0443"},future:{singularNominative:"\u0437\u0430 {{count}} \u0445\u0432\u0438\u043B\u0438\u043D\u0443",singularGenitive:"\u0437\u0430 {{count}} \u0445\u0432\u0438\u043B\u0438\u043D\u0438",pluralGenitive:"\u0437\u0430 {{count}} \u0445\u0432\u0438\u043B\u0438\u043D"}}),aboutXHours:h({regular:{singularNominative:"\u0431\u043B\u0438\u0437\u044C\u043A\u043E {{count}} \u0433\u043E\u0434\u0438\u043D\u0438",singularGenitive:"\u0431\u043B\u0438\u0437\u044C\u043A\u043E {{count}} \u0433\u043E\u0434\u0438\u043D",pluralGenitive:"\u0431\u043B\u0438\u0437\u044C\u043A\u043E {{count}} \u0433\u043E\u0434\u0438\u043D"},future:{singularNominative:"\u043F\u0440\u0438\u0431\u043B\u0438\u0437\u043D\u043E \u0437\u0430 {{count}} \u0433\u043E\u0434\u0438\u043D\u0443",singularGenitive:"\u043F\u0440\u0438\u0431\u043B\u0438\u0437\u043D\u043E \u0437\u0430 {{count}} \u0433\u043E\u0434\u0438\u043D\u0438",pluralGenitive:"\u043F\u0440\u0438\u0431\u043B\u0438\u0437\u043D\u043E \u0437\u0430 {{count}} \u0433\u043E\u0434\u0438\u043D"}}),xHours:h({regular:{singularNominative:"{{count}} \u0433\u043E\u0434\u0438\u043D\u0443",singularGenitive:"{{count}} \u0433\u043E\u0434\u0438\u043D\u0438",pluralGenitive:"{{count}} \u0433\u043E\u0434\u0438\u043D"}}),xDays:h({regular:{singularNominative:"{{count}} \u0434\u0435\u043D\u044C",singularGenitive:"{{count}} \u0434\u043Di",pluralGenitive:"{{count}} \u0434\u043D\u0456\u0432"}}),aboutXWeeks:h({regular:{singularNominative:"\u0431\u043B\u0438\u0437\u044C\u043A\u043E {{count}} \u0442\u0438\u0436\u043D\u044F",singularGenitive:"\u0431\u043B\u0438\u0437\u044C\u043A\u043E {{count}} \u0442\u0438\u0436\u043D\u0456\u0432",pluralGenitive:"\u0431\u043B\u0438\u0437\u044C\u043A\u043E {{count}} \u0442\u0438\u0436\u043D\u0456\u0432"},future:{singularNominative:"\u043F\u0440\u0438\u0431\u043B\u0438\u0437\u043D\u043E \u0437\u0430 {{count}} \u0442\u0438\u0436\u0434\u0435\u043D\u044C",singularGenitive:"\u043F\u0440\u0438\u0431\u043B\u0438\u0437\u043D\u043E \u0437\u0430 {{count}} \u0442\u0438\u0436\u043D\u0456",pluralGenitive:"\u043F\u0440\u0438\u0431\u043B\u0438\u0437\u043D\u043E \u0437\u0430 {{count}} \u0442\u0438\u0436\u043D\u0456\u0432"}}),xWeeks:h({regular:{singularNominative:"{{count}} \u0442\u0438\u0436\u0434\u0435\u043D\u044C",singularGenitive:"{{count}} \u0442\u0438\u0436\u043D\u0456",pluralGenitive:"{{count}} \u0442\u0438\u0436\u043D\u0456\u0432"}}),aboutXMonths:h({regular:{singularNominative:"\u0431\u043B\u0438\u0437\u044C\u043A\u043E {{count}} \u043C\u0456\u0441\u044F\u0446\u044F",singularGenitive:"\u0431\u043B\u0438\u0437\u044C\u043A\u043E {{count}} \u043C\u0456\u0441\u044F\u0446\u0456\u0432",pluralGenitive:"\u0431\u043B\u0438\u0437\u044C\u043A\u043E {{count}} \u043C\u0456\u0441\u044F\u0446\u0456\u0432"},future:{singularNominative:"\u043F\u0440\u0438\u0431\u043B\u0438\u0437\u043D\u043E \u0437\u0430 {{count}} \u043C\u0456\u0441\u044F\u0446\u044C",singularGenitive:"\u043F\u0440\u0438\u0431\u043B\u0438\u0437\u043D\u043E \u0437\u0430 {{count}} \u043C\u0456\u0441\u044F\u0446\u0456",pluralGenitive:"\u043F\u0440\u0438\u0431\u043B\u0438\u0437\u043D\u043E \u0437\u0430 {{count}} \u043C\u0456\u0441\u044F\u0446\u0456\u0432"}}),xMonths:h({regular:{singularNominative:"{{count}} \u043C\u0456\u0441\u044F\u0446\u044C",singularGenitive:"{{count}} \u043C\u0456\u0441\u044F\u0446\u0456",pluralGenitive:"{{count}} \u043C\u0456\u0441\u044F\u0446\u0456\u0432"}}),aboutXYears:h({regular:{singularNominative:"\u0431\u043B\u0438\u0437\u044C\u043A\u043E {{count}} \u0440\u043E\u043A\u0443",singularGenitive:"\u0431\u043B\u0438\u0437\u044C\u043A\u043E {{count}} \u0440\u043E\u043A\u0456\u0432",pluralGenitive:"\u0431\u043B\u0438\u0437\u044C\u043A\u043E {{count}} \u0440\u043E\u043A\u0456\u0432"},future:{singularNominative:"\u043F\u0440\u0438\u0431\u043B\u0438\u0437\u043D\u043E \u0437\u0430 {{count}} \u0440\u0456\u043A",singularGenitive:"\u043F\u0440\u0438\u0431\u043B\u0438\u0437\u043D\u043E \u0437\u0430 {{count}} \u0440\u043E\u043A\u0438",pluralGenitive:"\u043F\u0440\u0438\u0431\u043B\u0438\u0437\u043D\u043E \u0437\u0430 {{count}} \u0440\u043E\u043A\u0456\u0432"}}),xYears:h({regular:{singularNominative:"{{count}} \u0440\u0456\u043A",singularGenitive:"{{count}} \u0440\u043E\u043A\u0438",pluralGenitive:"{{count}} \u0440\u043E\u043A\u0456\u0432"}}),overXYears:h({regular:{singularNominative:"\u0431\u0456\u043B\u044C\u0448\u0435 {{count}} \u0440\u043E\u043A\u0443",singularGenitive:"\u0431\u0456\u043B\u044C\u0448\u0435 {{count}} \u0440\u043E\u043A\u0456\u0432",pluralGenitive:"\u0431\u0456\u043B\u044C\u0448\u0435 {{count}} \u0440\u043E\u043A\u0456\u0432"},future:{singularNominative:"\u0431\u0456\u043B\u044C\u0448\u0435, \u043D\u0456\u0436 \u0437\u0430 {{count}} \u0440\u0456\u043A",singularGenitive:"\u0431\u0456\u043B\u044C\u0448\u0435, \u043D\u0456\u0436 \u0437\u0430 {{count}} \u0440\u043E\u043A\u0438",pluralGenitive:"\u0431\u0456\u043B\u044C\u0448\u0435, \u043D\u0456\u0436 \u0437\u0430 {{count}} \u0440\u043E\u043A\u0456\u0432"}}),almostXYears:h({regular:{singularNominative:"\u043C\u0430\u0439\u0436\u0435 {{count}} \u0440\u0456\u043A",singularGenitive:"\u043C\u0430\u0439\u0436\u0435 {{count}} \u0440\u043E\u043A\u0438",pluralGenitive:"\u043C\u0430\u0439\u0436\u0435 {{count}} \u0440\u043E\u043A\u0456\u0432"},future:{singularNominative:"\u043C\u0430\u0439\u0436\u0435 \u0437\u0430 {{count}} \u0440\u0456\u043A",singularGenitive:"\u043C\u0430\u0439\u0436\u0435 \u0437\u0430 {{count}} \u0440\u043E\u043A\u0438",pluralGenitive:"\u043C\u0430\u0439\u0436\u0435 \u0437\u0430 {{count}} \u0440\u043E\u043A\u0456\u0432"}})},Kt=(e,n,t)=>(t=t||{},Ts[e](n,t));var Fs={full:"EEEE, do MMMM y '\u0440.'",long:"do MMMM y '\u0440.'",medium:"d MMM y '\u0440.'",short:"dd.MM.y"},Ns={full:"H:mm:ss zzzz",long:"H:mm:ss z",medium:"H:mm:ss",short:"H:mm"},As={full:"{{date}} '\u043E' {{time}}",long:"{{date}} '\u043E' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},Ut={date:s({formats:Fs,defaultWidth:"full"}),time:s({formats:Ns,defaultWidth:"full"}),dateTime:s({formats:As,defaultWidth:"full"})};var ne=["\u043D\u0435\u0434\u0456\u043B\u044E","\u043F\u043E\u043D\u0435\u0434\u0456\u043B\u043E\u043A","\u0432\u0456\u0432\u0442\u043E\u0440\u043E\u043A","\u0441\u0435\u0440\u0435\u0434\u0443","\u0447\u0435\u0442\u0432\u0435\u0440","\u043F\u2019\u044F\u0442\u043D\u0438\u0446\u044E","\u0441\u0443\u0431\u043E\u0442\u0443"];function Es(e){let n=ne[e];switch(e){case 0:case 3:case 5:case 6:return"'\u0443 \u043C\u0438\u043D\u0443\u043B\u0443 "+n+" \u043E' p";case 1:case 2:case 4:return"'\u0443 \u043C\u0438\u043D\u0443\u043B\u0438\u0439 "+n+" \u043E' p"}}function Zt(e){return"'\u0443 "+ne[e]+" \u043E' p"}function Ls(e){let n=ne[e];switch(e){case 0:case 3:case 5:case 6:return"'\u0443 \u043D\u0430\u0441\u0442\u0443\u043F\u043D\u0443 "+n+" \u043E' p";case 1:case 2:case 4:return"'\u0443 \u043D\u0430\u0441\u0442\u0443\u043F\u043D\u0438\u0439 "+n+" \u043E' p"}}var Vs=(e,n,t)=>{let a=w(e),i=a.getDay();return v(a,n,t)?Zt(i):Es(i)},Gs=(e,n,t)=>{let a=w(e),i=a.getDay();return v(a,n,t)?Zt(i):Ls(i)},Hs={lastWeek:Vs,yesterday:"'\u0432\u0447\u043E\u0440\u0430 \u043E' p",today:"'\u0441\u044C\u043E\u0433\u043E\u0434\u043D\u0456 \u043E' p",tomorrow:"'\u0437\u0430\u0432\u0442\u0440\u0430 \u043E' p",nextWeek:Gs,other:"P"},ea=(e,n,t,a)=>{let i=Hs[e];return typeof i=="function"?i(n,t,a):i};var Os={narrow:["\u0434\u043E \u043D.\u0435.","\u043D.\u0435."],abbreviated:["\u0434\u043E \u043D. \u0435.","\u043D. \u0435."],wide:["\u0434\u043E \u043D\u0430\u0448\u043E\u0457 \u0435\u0440\u0438","\u043D\u0430\u0448\u043E\u0457 \u0435\u0440\u0438"]},Xs={narrow:["1","2","3","4"],abbreviated:["1-\u0439 \u043A\u0432.","2-\u0439 \u043A\u0432.","3-\u0439 \u043A\u0432.","4-\u0439 \u043A\u0432."],wide:["1-\u0439 \u043A\u0432\u0430\u0440\u0442\u0430\u043B","2-\u0439 \u043A\u0432\u0430\u0440\u0442\u0430\u043B","3-\u0439 \u043A\u0432\u0430\u0440\u0442\u0430\u043B","4-\u0439 \u043A\u0432\u0430\u0440\u0442\u0430\u043B"]},Rs={narrow:["\u0421","\u041B","\u0411","\u041A","\u0422","\u0427","\u041B","\u0421","\u0412","\u0416","\u041B","\u0413"],abbreviated:["\u0441\u0456\u0447.","\u043B\u044E\u0442.","\u0431\u0435\u0440\u0435\u0437.","\u043A\u0432\u0456\u0442.","\u0442\u0440\u0430\u0432.","\u0447\u0435\u0440\u0432.","\u043B\u0438\u043F.","\u0441\u0435\u0440\u043F.","\u0432\u0435\u0440\u0435\u0441.","\u0436\u043E\u0432\u0442.","\u043B\u0438\u0441\u0442\u043E\u043F.","\u0433\u0440\u0443\u0434."],wide:["\u0441\u0456\u0447\u0435\u043D\u044C","\u043B\u044E\u0442\u0438\u0439","\u0431\u0435\u0440\u0435\u0437\u0435\u043D\u044C","\u043A\u0432\u0456\u0442\u0435\u043D\u044C","\u0442\u0440\u0430\u0432\u0435\u043D\u044C","\u0447\u0435\u0440\u0432\u0435\u043D\u044C","\u043B\u0438\u043F\u0435\u043D\u044C","\u0441\u0435\u0440\u043F\u0435\u043D\u044C","\u0432\u0435\u0440\u0435\u0441\u0435\u043D\u044C","\u0436\u043E\u0432\u0442\u0435\u043D\u044C","\u043B\u0438\u0441\u0442\u043E\u043F\u0430\u0434","\u0433\u0440\u0443\u0434\u0435\u043D\u044C"]},Is={narrow:["\u0421","\u041B","\u0411","\u041A","\u0422","\u0427","\u041B","\u0421","\u0412","\u0416","\u041B","\u0413"],abbreviated:["\u0441\u0456\u0447.","\u043B\u044E\u0442.","\u0431\u0435\u0440\u0435\u0437.","\u043A\u0432\u0456\u0442.","\u0442\u0440\u0430\u0432.","\u0447\u0435\u0440\u0432.","\u043B\u0438\u043F.","\u0441\u0435\u0440\u043F.","\u0432\u0435\u0440\u0435\u0441.","\u0436\u043E\u0432\u0442.","\u043B\u0438\u0441\u0442\u043E\u043F.","\u0433\u0440\u0443\u0434."],wide:["\u0441\u0456\u0447\u043D\u044F","\u043B\u044E\u0442\u043E\u0433\u043E","\u0431\u0435\u0440\u0435\u0437\u043D\u044F","\u043A\u0432\u0456\u0442\u043D\u044F","\u0442\u0440\u0430\u0432\u043D\u044F","\u0447\u0435\u0440\u0432\u043D\u044F","\u043B\u0438\u043F\u043D\u044F","\u0441\u0435\u0440\u043F\u043D\u044F","\u0432\u0435\u0440\u0435\u0441\u043D\u044F","\u0436\u043E\u0432\u0442\u043D\u044F","\u043B\u0438\u0441\u0442\u043E\u043F\u0430\u0434\u0430","\u0433\u0440\u0443\u0434\u043D\u044F"]},qs={narrow:["\u041D","\u041F","\u0412","\u0421","\u0427","\u041F","\u0421"],short:["\u043D\u0434","\u043F\u043D","\u0432\u0442","\u0441\u0440","\u0447\u0442","\u043F\u0442","\u0441\u0431"],abbreviated:["\u043D\u0435\u0434","\u043F\u043E\u043D","\u0432\u0456\u0432","\u0441\u0435\u0440","\u0447\u0442\u0432","\u043F\u0442\u043D","\u0441\u0443\u0431"],wide:["\u043D\u0435\u0434\u0456\u043B\u044F","\u043F\u043E\u043D\u0435\u0434\u0456\u043B\u043E\u043A","\u0432\u0456\u0432\u0442\u043E\u0440\u043E\u043A","\u0441\u0435\u0440\u0435\u0434\u0430","\u0447\u0435\u0442\u0432\u0435\u0440","\u043F\u2019\u044F\u0442\u043D\u0438\u0446\u044F","\u0441\u0443\u0431\u043E\u0442\u0430"]},Bs={narrow:{am:"\u0414\u041F",pm:"\u041F\u041F",midnight:"\u043F\u0456\u0432\u043D.",noon:"\u043F\u043E\u043B.",morning:"\u0440\u0430\u043D\u043E\u043A",afternoon:"\u0434\u0435\u043D\u044C",evening:"\u0432\u0435\u0447.",night:"\u043D\u0456\u0447"},abbreviated:{am:"\u0414\u041F",pm:"\u041F\u041F",midnight:"\u043F\u0456\u0432\u043D.",noon:"\u043F\u043E\u043B.",morning:"\u0440\u0430\u043D\u043E\u043A",afternoon:"\u0434\u0435\u043D\u044C",evening:"\u0432\u0435\u0447.",night:"\u043D\u0456\u0447"},wide:{am:"\u0414\u041F",pm:"\u041F\u041F",midnight:"\u043F\u0456\u0432\u043D\u0456\u0447",noon:"\u043F\u043E\u043B\u0443\u0434\u0435\u043D\u044C",morning:"\u0440\u0430\u043D\u043E\u043A",afternoon:"\u0434\u0435\u043D\u044C",evening:"\u0432\u0435\u0447\u0456\u0440",night:"\u043D\u0456\u0447"}},Ys={narrow:{am:"\u0414\u041F",pm:"\u041F\u041F",midnight:"\u043F\u0456\u0432\u043D.",noon:"\u043F\u043E\u043B.",morning:"\u0440\u0430\u043D\u043A\u0443",afternoon:"\u0434\u043D\u044F",evening:"\u0432\u0435\u0447.",night:"\u043D\u043E\u0447\u0456"},abbreviated:{am:"\u0414\u041F",pm:"\u041F\u041F",midnight:"\u043F\u0456\u0432\u043D.",noon:"\u043F\u043E\u043B.",morning:"\u0440\u0430\u043D\u043A\u0443",afternoon:"\u0434\u043D\u044F",evening:"\u0432\u0435\u0447.",night:"\u043D\u043E\u0447\u0456"},wide:{am:"\u0414\u041F",pm:"\u041F\u041F",midnight:"\u043F\u0456\u0432\u043D\u0456\u0447",noon:"\u043F\u043E\u043B\u0443\u0434\u0435\u043D\u044C",morning:"\u0440\u0430\u043D\u043A\u0443",afternoon:"\u0434\u043D\u044F",evening:"\u0432\u0435\u0447.",night:"\u043D\u043E\u0447\u0456"}},Js=(e,n)=>{let t=String(n?.unit),a=Number(e),i;return t==="date"?a===3||a===23?i="-\u0454":i="-\u0435":t==="minute"||t==="second"||t==="hour"?i="-\u0430":i="-\u0439",a+i},ta={ordinalNumber:Js,era:r({values:Os,defaultWidth:"wide"}),quarter:r({values:Xs,defaultWidth:"wide",argumentCallback:e=>e-1}),month:r({values:Rs,defaultWidth:"wide",formattingValues:Is,defaultFormattingWidth:"wide"}),day:r({values:qs,defaultWidth:"wide"}),dayPeriod:r({values:Bs,defaultWidth:"any",formattingValues:Ys,defaultFormattingWidth:"wide"})};var Qs=/^(\d+)(-?(е|й|є|а|я))?/i,$s=/\d+/i,Ks={narrow:/^((до )?н\.?\s?е\.?)/i,abbreviated:/^((до )?н\.?\s?е\.?)/i,wide:/^(до нашої ери|нашої ери|наша ера)/i},Us={any:[/^д/i,/^н/i]},Zs={narrow:/^[1234]/i,abbreviated:/^[1234](-?[иі]?й?)? кв.?/i,wide:/^[1234](-?[иі]?й?)? квартал/i},ed={any:[/1/i,/2/i,/3/i,/4/i]},td={narrow:/^[слбктчвжг]/i,abbreviated:/^(січ|лют|бер(ез)?|квіт|трав|черв|лип|серп|вер(ес)?|жовт|лис(топ)?|груд)\.?/i,wide:/^(січень|січня|лютий|лютого|березень|березня|квітень|квітня|травень|травня|червня|червень|липень|липня|серпень|серпня|вересень|вересня|жовтень|жовтня|листопад[а]?|грудень|грудня)/i},ad={narrow:[/^с/i,/^л/i,/^б/i,/^к/i,/^т/i,/^ч/i,/^л/i,/^с/i,/^в/i,/^ж/i,/^л/i,/^г/i],any:[/^сі/i,/^лю/i,/^б/i,/^к/i,/^т/i,/^ч/i,/^лип/i,/^се/i,/^в/i,/^ж/i,/^лис/i,/^г/i]},nd={narrow:/^[нпвсч]/i,short:/^(нд|пн|вт|ср|чт|пт|сб)\.?/i,abbreviated:/^(нед|пон|вів|сер|че?тв|птн?|суб)\.?/i,wide:/^(неділ[яі]|понеділ[ок][ка]|вівтор[ок][ка]|серед[аи]|четвер(га)?|п\W*?ятниц[яі]|субот[аи])/i},id={narrow:[/^н/i,/^п/i,/^в/i,/^с/i,/^ч/i,/^п/i,/^с/i],any:[/^н/i,/^п[он]/i,/^в/i,/^с[ер]/i,/^ч/i,/^п\W*?[ят]/i,/^с[уб]/i]},rd={narrow:/^([дп]п|півн\.?|пол\.?|ранок|ранку|день|дня|веч\.?|ніч|ночі)/i,abbreviated:/^([дп]п|півн\.?|пол\.?|ранок|ранку|день|дня|веч\.?|ніч|ночі)/i,wide:/^([дп]п|північ|полудень|ранок|ранку|день|дня|вечір|вечора|ніч|ночі)/i},od={any:{am:/^дп/i,pm:/^пп/i,midnight:/^півн/i,noon:/^пол/i,morning:/^р/i,afternoon:/^д[ен]/i,evening:/^в/i,night:/^н/i}},aa={ordinalNumber:u({matchPattern:Qs,parsePattern:$s,valueCallback:e=>parseInt(e,10)}),era:o({matchPatterns:Ks,defaultMatchWidth:"wide",parsePatterns:Us,defaultParseWidth:"any"}),quarter:o({matchPatterns:Zs,defaultMatchWidth:"wide",parsePatterns:ed,defaultParseWidth:"any",valueCallback:e=>e+1}),month:o({matchPatterns:td,defaultMatchWidth:"wide",parsePatterns:ad,defaultParseWidth:"any"}),day:o({matchPatterns:nd,defaultMatchWidth:"wide",parsePatterns:id,defaultParseWidth:"any"}),dayPeriod:o({matchPatterns:rd,defaultMatchWidth:"wide",parsePatterns:od,defaultParseWidth:"any"})};var na={code:"uk",formatDistance:Kt,formatLong:Ut,formatRelative:ea,localize:ta,match:aa,options:{weekStartsOn:1,firstWeekContainsDate:1}};var sd={lessThanXSeconds:{one:"\u4E0D\u5230 1 \u79D2",other:"\u4E0D\u5230 {{count}} \u79D2"},xSeconds:{one:"1 \u79D2",other:"{{count}} \u79D2"},halfAMinute:"\u534A\u5206\u949F",lessThanXMinutes:{one:"\u4E0D\u5230 1 \u5206\u949F",other:"\u4E0D\u5230 {{count}} \u5206\u949F"},xMinutes:{one:"1 \u5206\u949F",other:"{{count}} \u5206\u949F"},xHours:{one:"1 \u5C0F\u65F6",other:"{{count}} \u5C0F\u65F6"},aboutXHours:{one:"\u5927\u7EA6 1 \u5C0F\u65F6",other:"\u5927\u7EA6 {{count}} \u5C0F\u65F6"},xDays:{one:"1 \u5929",other:"{{count}} \u5929"},aboutXWeeks:{one:"\u5927\u7EA6 1 \u4E2A\u661F\u671F",other:"\u5927\u7EA6 {{count}} \u4E2A\u661F\u671F"},xWeeks:{one:"1 \u4E2A\u661F\u671F",other:"{{count}} \u4E2A\u661F\u671F"},aboutXMonths:{one:"\u5927\u7EA6 1 \u4E2A\u6708",other:"\u5927\u7EA6 {{count}} \u4E2A\u6708"},xMonths:{one:"1 \u4E2A\u6708",other:"{{count}} \u4E2A\u6708"},aboutXYears:{one:"\u5927\u7EA6 1 \u5E74",other:"\u5927\u7EA6 {{count}} \u5E74"},xYears:{one:"1 \u5E74",other:"{{count}} \u5E74"},overXYears:{one:"\u8D85\u8FC7 1 \u5E74",other:"\u8D85\u8FC7 {{count}} \u5E74"},almostXYears:{one:"\u5C06\u8FD1 1 \u5E74",other:"\u5C06\u8FD1 {{count}} \u5E74"}},ia=(e,n,t)=>{let a,i=sd[e];return typeof i=="string"?a=i:n===1?a=i.one:a=i.other.replace("{{count}}",String(n)),t?.addSuffix?t.comparison&&t.comparison>0?a+"\u5185":a+"\u524D":a};var dd={full:"y'\u5E74'M'\u6708'd'\u65E5' EEEE",long:"y'\u5E74'M'\u6708'd'\u65E5'",medium:"yyyy-MM-dd",short:"yy-MM-dd"},md={full:"zzzz a h:mm:ss",long:"z a h:mm:ss",medium:"a h:mm:ss",short:"a h:mm"},ud={full:"{{date}} {{time}}",long:"{{date}} {{time}}",medium:"{{date}} {{time}}",short:"{{date}} {{time}}"},ra={date:s({formats:dd,defaultWidth:"full"}),time:s({formats:md,defaultWidth:"full"}),dateTime:s({formats:ud,defaultWidth:"full"})};function oa(e,n,t){let a="eeee p";return v(e,n,t)?a:e.getTime()>n.getTime()?"'\u4E0B\u4E2A'"+a:"'\u4E0A\u4E2A'"+a}var cd={lastWeek:oa,yesterday:"'\u6628\u5929' p",today:"'\u4ECA\u5929' p",tomorrow:"'\u660E\u5929' p",nextWeek:oa,other:"PP p"},sa=(e,n,t,a)=>{let i=cd[e];return typeof i=="function"?i(n,t,a):i};var ld={narrow:["\u524D","\u516C\u5143"],abbreviated:["\u524D","\u516C\u5143"],wide:["\u516C\u5143\u524D","\u516C\u5143"]},hd={narrow:["1","2","3","4"],abbreviated:["\u7B2C\u4E00\u5B63","\u7B2C\u4E8C\u5B63","\u7B2C\u4E09\u5B63","\u7B2C\u56DB\u5B63"],wide:["\u7B2C\u4E00\u5B63\u5EA6","\u7B2C\u4E8C\u5B63\u5EA6","\u7B2C\u4E09\u5B63\u5EA6","\u7B2C\u56DB\u5B63\u5EA6"]},fd={narrow:["\u4E00","\u4E8C","\u4E09","\u56DB","\u4E94","\u516D","\u4E03","\u516B","\u4E5D","\u5341","\u5341\u4E00","\u5341\u4E8C"],abbreviated:["1\u6708","2\u6708","3\u6708","4\u6708","5\u6708","6\u6708","7\u6708","8\u6708","9\u6708","10\u6708","11\u6708","12\u6708"],wide:["\u4E00\u6708","\u4E8C\u6708","\u4E09\u6708","\u56DB\u6708","\u4E94\u6708","\u516D\u6708","\u4E03\u6708","\u516B\u6708","\u4E5D\u6708","\u5341\u6708","\u5341\u4E00\u6708","\u5341\u4E8C\u6708"]},pd={narrow:["\u65E5","\u4E00","\u4E8C","\u4E09","\u56DB","\u4E94","\u516D"],short:["\u65E5","\u4E00","\u4E8C","\u4E09","\u56DB","\u4E94","\u516D"],abbreviated:["\u5468\u65E5","\u5468\u4E00","\u5468\u4E8C","\u5468\u4E09","\u5468\u56DB","\u5468\u4E94","\u5468\u516D"],wide:["\u661F\u671F\u65E5","\u661F\u671F\u4E00","\u661F\u671F\u4E8C","\u661F\u671F\u4E09","\u661F\u671F\u56DB","\u661F\u671F\u4E94","\u661F\u671F\u516D"]},gd={narrow:{am:"\u4E0A",pm:"\u4E0B",midnight:"\u51CC\u6668",noon:"\u5348",morning:"\u65E9",afternoon:"\u4E0B\u5348",evening:"\u665A",night:"\u591C"},abbreviated:{am:"\u4E0A\u5348",pm:"\u4E0B\u5348",midnight:"\u51CC\u6668",noon:"\u4E2D\u5348",morning:"\u65E9\u6668",afternoon:"\u4E2D\u5348",evening:"\u665A\u4E0A",night:"\u591C\u95F4"},wide:{am:"\u4E0A\u5348",pm:"\u4E0B\u5348",midnight:"\u51CC\u6668",noon:"\u4E2D\u5348",morning:"\u65E9\u6668",afternoon:"\u4E2D\u5348",evening:"\u665A\u4E0A",night:"\u591C\u95F4"}},vd={narrow:{am:"\u4E0A",pm:"\u4E0B",midnight:"\u51CC\u6668",noon:"\u5348",morning:"\u65E9",afternoon:"\u4E0B\u5348",evening:"\u665A",night:"\u591C"},abbreviated:{am:"\u4E0A\u5348",pm:"\u4E0B\u5348",midnight:"\u51CC\u6668",noon:"\u4E2D\u5348",morning:"\u65E9\u6668",afternoon:"\u4E2D\u5348",evening:"\u665A\u4E0A",night:"\u591C\u95F4"},wide:{am:"\u4E0A\u5348",pm:"\u4E0B\u5348",midnight:"\u51CC\u6668",noon:"\u4E2D\u5348",morning:"\u65E9\u6668",afternoon:"\u4E2D\u5348",evening:"\u665A\u4E0A",night:"\u591C\u95F4"}},bd=(e,n)=>{let t=Number(e);switch(n?.unit){case"date":return t.toString()+"\u65E5";case"hour":return t.toString()+"\u65F6";case"minute":return t.toString()+"\u5206";case"second":return t.toString()+"\u79D2";default:return"\u7B2C "+t.toString()}},da={ordinalNumber:bd,era:r({values:ld,defaultWidth:"wide"}),quarter:r({values:hd,defaultWidth:"wide",argumentCallback:e=>e-1}),month:r({values:fd,defaultWidth:"wide"}),day:r({values:pd,defaultWidth:"wide"}),dayPeriod:r({values:gd,defaultWidth:"wide",formattingValues:vd,defaultFormattingWidth:"wide"})};var yd=/^(第\s*)?\d+(日|时|分|秒)?/i,wd=/\d+/i,Pd={narrow:/^(前)/i,abbreviated:/^(前)/i,wide:/^(公元前|公元)/i},Md={any:[/^(前)/i,/^(公元)/i]},kd={narrow:/^[1234]/i,abbreviated:/^第[一二三四]刻/i,wide:/^第[一二三四]刻钟/i},xd={any:[/(1|一)/i,/(2|二)/i,/(3|三)/i,/(4|四)/i]},Wd={narrow:/^(一|二|三|四|五|六|七|八|九|十[二一])/i,abbreviated:/^(一|二|三|四|五|六|七|八|九|十[二一]|\d|1[12])月/i,wide:/^(一|二|三|四|五|六|七|八|九|十[二一])月/i},Dd={narrow:[/^一/i,/^二/i,/^三/i,/^四/i,/^五/i,/^六/i,/^七/i,/^八/i,/^九/i,/^十(?!(一|二))/i,/^十一/i,/^十二/i],any:[/^一|1/i,/^二|2/i,/^三|3/i,/^四|4/i,/^五|5/i,/^六|6/i,/^七|7/i,/^八|8/i,/^九|9/i,/^十(?!(一|二))|10/i,/^十一|11/i,/^十二|12/i]},Sd={narrow:/^[一二三四五六日]/i,short:/^[一二三四五六日]/i,abbreviated:/^周[一二三四五六日]/i,wide:/^星期[一二三四五六日]/i},_d={any:[/日/i,/一/i,/二/i,/三/i,/四/i,/五/i,/六/i]},zd={any:/^(上午?|下午?|午夜|[中正]午|早上?|下午|晚上?|凌晨|)/i},Cd={any:{am:/^上午?/i,pm:/^下午?/i,midnight:/^午夜/i,noon:/^[中正]午/i,morning:/^早上/i,afternoon:/^下午/i,evening:/^晚上?/i,night:/^凌晨/i}},ma={ordinalNumber:u({matchPattern:yd,parsePattern:wd,valueCallback:e=>parseInt(e,10)}),era:o({matchPatterns:Pd,defaultMatchWidth:"wide",parsePatterns:Md,defaultParseWidth:"any"}),quarter:o({matchPatterns:kd,defaultMatchWidth:"wide",parsePatterns:xd,defaultParseWidth:"any",valueCallback:e=>e+1}),month:o({matchPatterns:Wd,defaultMatchWidth:"wide",parsePatterns:Dd,defaultParseWidth:"any"}),day:o({matchPatterns:Sd,defaultMatchWidth:"wide",parsePatterns:_d,defaultParseWidth:"any"}),dayPeriod:o({matchPatterns:zd,defaultMatchWidth:"any",parsePatterns:Cd,defaultParseWidth:"any"})};var ua={code:"zh-CN",formatDistance:ia,formatLong:ra,formatRelative:sa,localize:da,match:ma,options:{weekStartsOn:1,firstWeekContainsDate:4}};var jd={ar:Ve,de:qe,en:F,es:at,fr:dt,hi:gt,ja:Mt,nl:_t,pt:Nt,ru:It,tr:$t,uk:na,zh:ua};var Th=e=>jd[e]??F;function Lh(e){let n=w(e),t=new Date(Date.UTC(n.getFullYear(),n.getMonth(),n.getDate(),n.getHours(),n.getMinutes(),n.getSeconds(),n.getMilliseconds()));return t.setUTCFullYear(n.getFullYear()),+e-+t}export{sm as a,Bc as b,Yc as c,Jc as d,Qc as e,N as f,w as g,Gt as h,te as i,Lh as j,Vt as k,F as l,Th as m}; diff --git a/webui/dist/bitmagnet/browser/chunk-4NEHCUZ2.js b/webui/dist/bitmagnet/browser/chunk-4NEHCUZ2.js new file mode 100644 index 0000000..857ae68 --- /dev/null +++ b/webui/dist/bitmagnet/browser/chunk-4NEHCUZ2.js @@ -0,0 +1,417 @@ +import{c as gt,d as Xe,e as $u,g as Oe,h as nt,i as Ze,j as Yu,k as Ku}from"./chunk-6XXA7HXI.js";import{a as hc,b as la,h as Wu,q as Gu}from"./chunk-FKMTSCBK.js";import{$b as fe,Aa as Su,B as ke,C as Zo,Ca as Tu,Cb as te,Cc as lc,Da as Pe,Db as Nu,Ea as ce,Eb as na,F as wu,Fa as le,Fb as tt,Fc as pe,G as zi,Ga as Wt,Gb as W,Gc as bn,H as mn,Ha as ea,Hb as ue,I as Nt,Ia as Ke,Ib as ft,Ic as O,J as Cu,Ja as It,Jb as P,Jc as $e,K as Fe,Ka as Ee,Kb as qe,Kc as bi,L as ye,La as ta,Lb as Lu,Lc as Yt,M as ic,Mb as ge,Mc as dc,N as Jo,Na as z,Nb as ac,Oa as B,Ob as sc,Oc as uc,Pa as ia,Pb as cc,Q as fi,Qa as E,Qb as w,Ra as Gt,Rb as I,Rc as oe,S as Ye,Sb as ie,T as nc,Ta as Mu,U as Ur,V as Di,Va as Au,Vb as pt,W as ku,Wa as we,Wb as Ge,Wc as aa,Xa as Ou,Xb as St,Yb as ju,Yc as sa,Zb as ee,Zc as ca,_ as Du,_b as Vu,a as N,aa as Eu,ac as se,b as Qe,ba as qr,bc as A,bd as yt,c as gu,ca as Yn,da as Me,dc as he,dd as qu,e as Te,ea as st,ec as re,f as bu,fa as $,fb as Kn,fc as S,ga as Iu,gb as Ru,gc as T,h as We,ha as gi,hc as Bu,ia as Wr,ic as zu,j as vu,ja as Lt,jc as $t,k as R,ka as Z,kb as V,kc as Tt,l as Vi,la as L,lb as u,lc as oi,m as Xo,mb as rc,mc as ra,n as _u,na as C,nb as Ae,o as Bi,oc as de,p as mt,pa as x,pb as fn,pc as Q,q as b,qa as F,r as Pt,rb as Gr,rc as Hu,s as ni,sb as Ue,sc as Qu,t as ri,u as at,ua as H,ub as oc,v as yu,va as j,vb as gn,w as ki,wa as D,wb as Fu,x as He,xb as ne,xc as oa,y as xu,ya as pn,yb as Pu,z as Qr,zb as ae,zc as Uu}from"./chunk-3DR3CJRN.js";function da(i){i||(Tu(da),i=F(ta));let n=new We(e=>i.onDestroy(e.next.bind(e)));return e=>e.pipe($(n))}function Xu(i){return i&&i.constructor&&typeof i.constructor.isBuffer=="function"&&i.constructor.isBuffer(i)}function Zu(i){return i}function mc(i,n){n=n||{};let e=n.delimiter||".",t=n.maxDepth,r=n.transformKey||Zu,o={};function a(s,c,l){l=l||1,Object.keys(s).forEach(function(d){let h=s[d],m=n.safe&&Array.isArray(h),p=Object.prototype.toString.call(h),f=Xu(h),g=p==="[object Object]"||p==="[object Array]",_=c?c+e+r(d):r(d);if(!m&&!f&&g&&Object.keys(h).length&&(!n.maxDepth||l0&&(m=s(h.shift()),p=s(h[0]))}f[m]=pc(i[d],n)}),o}var bc=class{translations;constructor(n){this.translations=n}getTranslation(n){return He(this.translations.get(n)||{})}},th=new C("TRANSLOCO_LOADER");function fc(i,n){return i&&(Object.prototype.hasOwnProperty.call(i,n)?i[n]:n.split(".").reduce((e,t)=>e?.[t],i))}function $b(i,n,e){i=N({},i);let t=n.split("."),r=t.length-1;return t.reduce((o,a,s)=>(s===r?o[a]=e:o[a]=Array.isArray(o[a])?o[a].slice():N({},o[a]),o&&o[a]),i),i}function ih(i){return i?Array.isArray(i)?i.length:Cc(i)?Object.keys(i).length:i?i.length:0:0}function Yb(i){return ih(i)===0}function Kb(i){return typeof i=="function"}function Zn(i){return typeof i=="string"}function Cc(i){return!!i&&typeof i=="object"&&!Array.isArray(i)}function nh(i){return i.replace(/(?:^\w|[A-Z]|\b\w)/g,(n,e)=>e==0?n.toLowerCase():n.toUpperCase()).replace(/\s+|_|-|\//g,"")}function vc(i){return i==null}function Ju(i){return vc(i)===!1}function rh(i){return i&&typeof i.scope=="string"}function Xb(i){return i&&Cc(i.loader)}function Zb(i){return pc(i)}function eh(i){return mc(i,{safe:!0})}var Jn=new C("TRANSLOCO_CONFIG",{providedIn:"root",factory:()=>Xn}),Xn={defaultLang:"en",reRenderOnLangChange:!1,prodMode:!1,failedRetries:2,fallbackLang:[],availableLangs:[],missingHandler:{logMissingKey:!0,useFallbackTranslation:!1,allowEmpty:!1},flatten:{aot:!1},interpolation:["{{","}}"],scopes:{keepCasing:!1}};function Jb(i={}){return Qe(N(N({},Xn),i),{missingHandler:N(N({},Xn.missingHandler),i.missingHandler),flatten:N(N({},Xn.flatten),i.flatten),scopes:N(N({},Xn.scopes),i.scopes)})}var oh=new C("TRANSLOCO_TRANSPILER"),ev=(()=>{class i{config=F(Jn,{optional:!0})??Xn;get interpolationMatcher(){return tv(this.config)}transpile({value:e,params:t={},translation:r,key:o}){if(Zn(e)){let a,s=e;for(;(a=this.interpolationMatcher.exec(s))!==null;){let[c,l]=a;s=s.replace(c,()=>{let d=l.trim(),h=fc(t,d);return Ju(h)?h:Ju(r[d])?this.transpile({params:t,translation:r,key:o,value:r[d]}):""})}return s}else t&&(Cc(e)?e=this.handleObject({value:e,params:t,translation:r,key:o}):Array.isArray(e)&&(e=this.handleArray({value:e,params:t,translation:r,key:o})));return e}handleObject({value:e,params:t={},translation:r,key:o}){let a=e;return Object.keys(t).forEach(s=>{let c=this.transpile({value:fc(a,s),params:fc(t,s),translation:r,key:o});a=$b(a,s,c)}),a}handleArray(r){var o=r,{value:e}=o,t=gu(o,["value"]);return e.map(a=>this.transpile(N({value:a},t)))}static \u0275fac=function(t){return new(t||i)};static \u0275prov=Z({token:i,factory:i.\u0275fac})}return i})();function tv(i){let[n,e]=i.interpolation;return new RegExp(`${n}([^${n}${e}]*?)${e}`,"g")}var ah=new C("TRANSLOCO_MISSING_HANDLER"),iv=(()=>{class i{handle(e,t){if(t.missingHandler.logMissingKey&&!t.prodMode){let r=`Missing translation for '${e}'`;console.warn(`%c ${r}`,"font-size: 12px; color: red")}return e}static \u0275fac=function(t){return new(t||i)};static \u0275prov=Z({token:i,factory:i.\u0275fac})}return i})(),sh=new C("TRANSLOCO_INTERCEPTOR"),nv=(()=>{class i{preSaveTranslation(e){return e}preSaveTranslationKey(e,t){return t}static \u0275fac=function(t){return new(t||i)};static \u0275prov=Z({token:i,factory:i.\u0275fac})}return i})(),ch=new C("TRANSLOCO_FALLBACK_STRATEGY"),rv=(()=>{class i{userConfig;constructor(e){this.userConfig=e}getNextLangs(){let e=this.userConfig.fallbackLang;if(!e)throw new Error("When using the default fallback, a fallback language must be provided in the config!");return Array.isArray(e)?e:[e]}static \u0275fac=function(t){return new(t||i)(x(Jn))};static \u0275prov=Z({token:i,factory:i.\u0275fac})}return i})();function $r(i){if(!i)return"";let n=i.split("/");return n.pop(),n.join("/")}function Hi(i){return i?i.split("/").pop():""}function _c(i,n,e="|"){if(Zn(i)){let t=i.split(e),r=t.pop();return r===n?[!0,t.toString()]:[!1,r]}return[!1,""]}function ov(i,n){let[e]=_c(n,"static");return e?!1:!!i.config.reRenderOnLangChange}function av(i){return i?n=>n:Ye(1)}function sv(i,n){return Object.keys(i).reduce((e,t)=>(e[`${n}/${t}`]=i[t],e),{})}function lh(i,n){return Xb(i)?sv(i.loader,n):void 0}function gc(i){return{scope:$r(i)||null,langName:Hi(i)}}function dh(i){let{path:n,inlineLoader:e,mainLoader:t,data:r}=i;if(e){let o=e[n];if(Kb(o)===!1)throw`You're using an inline loader but didn't provide a loader for ${n}`;return e[n]().then(a=>a.default?a.default:a)}return t.getTranslation(n,r)}function cv({mainLoader:i,path:n,data:e,fallbackPath:t,inlineLoader:r}){return(t?[n,t]:[n]).map(a=>{let s=dh({path:a,mainLoader:i,inlineLoader:r,data:e});return ki(s).pipe(ke(c=>({translation:c,lang:a})))})}var lv;var dv=(()=>{class i{loader;parser;missingHandler;interceptor;fallbackStrategy;langChanges$;translations=new Map;cache=new Map;firstFallbackLang;defaultLang="";availableLangs=[];isResolvedMissingOnce=!1;lang;failedLangs=new Set;events=new R;events$=this.events.asObservable();config;constructor(e,t,r,o,a,s){this.loader=e,this.parser=t,this.missingHandler=r,this.interceptor=o,this.fallbackStrategy=s,this.loader||(this.loader=new bc(this.translations)),lv=this,this.config=JSON.parse(JSON.stringify(a)),this.setAvailableLangs(this.config.availableLangs||[]),this.setFallbackLangForMissingTranslation(this.config),this.setDefaultLang(this.config.defaultLang),this.lang=new Vi(this.getDefaultLang()),this.langChanges$=this.lang.asObservable(),this.events$.pipe(da()).subscribe(c=>{c.type==="translationLoadSuccess"&&c.wasFailure&&this.setActiveLang(c.payload.langName)})}getDefaultLang(){return this.defaultLang}setDefaultLang(e){this.defaultLang=e}getActiveLang(){return this.lang.getValue()}setActiveLang(e){return this.parser.onLangChanged?.(e),this.lang.next(e),this.events.next({type:"langChanged",payload:gc(e)}),this}setAvailableLangs(e){this.availableLangs=e}getAvailableLangs(){return this.availableLangs}load(e,t={}){let r=this.cache.get(e);if(r)return r;let o,a=this._isLangScoped(e),s;a&&(s=$r(e));let c={path:e,mainLoader:this.loader,inlineLoader:t.inlineLoader,data:a?{scope:s}:void 0};if(this.useFallbackTranslation(e)){let d=a?`${s}/${this.firstFallbackLang}`:this.firstFallbackLang,h=cv(Qe(N({},c),{fallbackPath:d}));o=mn(h)}else{let d=dh(c);o=ki(d)}let l=o.pipe(Du(this.config.failedRetries),gi(d=>{if(Array.isArray(d)){d.forEach(h=>{this.handleSuccess(h.lang,h.translation),h.lang!==e&&this.cache.set(h.lang,He({}))});return}this.handleSuccess(e,d)}),Jo(d=>(this.config.prodMode||console.error(`Error while trying to load "${e}"`,d),this.handleFailure(e,t))),qr(1));return this.cache.set(e,l),l}translate(e,t={},r=this.getActiveLang()){if(!e)return e;let{scope:o,resolveLang:a}=this.resolveLangAndScope(r);if(Array.isArray(e))return e.map(l=>this.translate(o?`${o}.${l}`:l,t,a));e=o?`${o}.${e}`:e;let s=this.getTranslation(a),c=s[e];return c?this.parser.transpile({value:c,params:t,translation:s,key:e}):this._handleMissingKey(e,c,t)}selectTranslate(e,t,r,o=!1){let a,s=(l,d)=>this.load(l,d).pipe(ke(()=>o?this.translateObject(e,t,l):this.translate(e,t,l)));if(vc(r))return this.langChanges$.pipe(st(l=>s(l)));if(r=Array.isArray(r)?r[0]:r,rh(r)){let l=r;r=l.scope,a=lh(l,l.scope)}if(r=r,this.isLang(r)||this.isScopeWithLang(r))return s(r);let c=r;return this.langChanges$.pipe(st(l=>s(`${c}/${l}`,{inlineLoader:a})))}isScopeWithLang(e){return this.isLang(Hi(e))}translateObject(e,t={},r=this.getActiveLang()){if(Zn(e)||Array.isArray(e)){let{resolveLang:a,scope:s}=this.resolveLangAndScope(r);if(Array.isArray(e))return e.map(d=>this.translateObject(s?`${s}.${d}`:d,t,a));let c=this.getTranslation(a);e=s?`${s}.${e}`:e;let l=Zb(this.getObjectByKey(c,e));return Yb(l)?this.translate(e,t,r):this.parser.transpile({value:l,params:t,translation:c,key:e})}let o=[];for(let[a,s]of this.getEntries(e))o.push(this.translateObject(a,s,r));return o}selectTranslateObject(e,t,r){if(Zn(e)||Array.isArray(e))return this.selectTranslate(e,t,r,!0);let[[o,a],...s]=this.getEntries(e);return this.selectTranslateObject(o,a,r).pipe(ke(c=>{let l=[c];for(let[d,h]of s)l.push(this.translateObject(d,h,r));return l}))}getTranslation(e){if(e){if(this.isLang(e))return this.translations.get(e)||{};{let{scope:t,resolveLang:r}=this.resolveLangAndScope(e),o=this.translations.get(r)||{};return this.getObjectByKey(o,t)}}return this.translations}selectTranslation(e){let t=this.langChanges$;if(e){let r=Hi(e)!==e;this.isLang(e)||r?t=He(e):t=this.langChanges$.pipe(ke(o=>`${e}/${o}`))}return t.pipe(st(r=>this.load(r).pipe(ke(()=>this.getTranslation(r)))))}setTranslation(e,t=this.getActiveLang(),r={}){let a=N(N({},{merge:!0,emitChange:!0}),r),s=$r(t),c=e;if(s){let p=this.getMappedScope(s);c=eh({[p]:e})}let l=s?Hi(t):t,d=N(N({},a.merge&&this.getTranslation(l)),c),h=this.config.flatten.aot?d:eh(d),m=this.interceptor.preSaveTranslation(h,l);this.translations.set(l,m),a.emitChange&&this.setActiveLang(this.getActiveLang())}setTranslationKey(e,t,r={}){let o=r.lang||this.getActiveLang(),a=this.interceptor.preSaveTranslationKey(e,t,o),s={[e]:a};this.setTranslation(s,o,Qe(N({},r),{merge:!0}))}setFallbackLangForMissingTranslation({fallbackLang:e}){let t=Array.isArray(e)?e[0]:e;e&&this.useFallbackTranslation(t)&&(this.firstFallbackLang=t)}_handleMissingKey(e,t,r){if(this.config.missingHandler.allowEmpty&&t==="")return"";if(!this.isResolvedMissingOnce&&this.useFallbackTranslation()){this.isResolvedMissingOnce=!0;let o=this.translate(e,r,this.firstFallbackLang);return this.isResolvedMissingOnce=!1,o}return this.missingHandler.handle(e,this.getMissingHandlerData(),r)}_isLangScoped(e){return this.getAvailableLangsIds().indexOf(e)===-1}isLang(e){return this.getAvailableLangsIds().indexOf(e)!==-1}_loadDependencies(e,t){let r=Hi(e);return this._isLangScoped(e)&&!this.isLoadedTranslation(r)?Zo([this.load(r),this.load(e,{inlineLoader:t})]):this.load(e,{inlineLoader:t})}_completeScopeWithLang(e){return this._isLangScoped(e)&&!this.isLang(Hi(e))?`${e}/${this.getActiveLang()}`:e}_setScopeAlias(e,t){this.config.scopeMapping||(this.config.scopeMapping={}),this.config.scopeMapping[e]=t}ngOnDestroy(){this.cache.clear()}isLoadedTranslation(e){return ih(this.getTranslation(e))}getAvailableLangsIds(){let e=this.getAvailableLangs()[0];return Zn(e)?this.getAvailableLangs():this.getAvailableLangs().map(t=>t.id)}getMissingHandlerData(){return Qe(N({},this.config),{activeLang:this.getActiveLang(),availableLangs:this.availableLangs,defaultLang:this.defaultLang})}useFallbackTranslation(e){return this.config.missingHandler.useFallbackTranslation&&e!==this.firstFallbackLang}handleSuccess(e,t){this.setTranslation(t,e,{emitChange:!1}),this.events.next({wasFailure:!!this.failedLangs.size,type:"translationLoadSuccess",payload:gc(e)}),this.failedLangs.forEach(r=>this.cache.delete(r)),this.failedLangs.clear()}handleFailure(e,t){vc(t.failedCounter)&&(t.failedCounter=0,t.fallbackLangs||(t.fallbackLangs=this.fallbackStrategy.getNextLangs(e)));let r=e.split("/"),a=t.fallbackLangs[t.failedCounter];if(this.failedLangs.add(e),this.cache.has(a))return this.handleSuccess(a,this.getTranslation(a)),Bi;let s=a===r[r.length-1];if(!a||s){let l="Unable to load translation and all the fallback languages";throw r.length>1&&(l+=", did you misspelled the scope name?"),new Error(l)}let c=a;return r.length>1&&(r[r.length-1]=a,c=r.join("/")),t.failedCounter++,this.events.next({type:"translationLoadFailure",payload:gc(e)}),this.load(c,t)}getMappedScope(e){let{scopeMapping:t={},scopes:r={keepCasing:!1}}=this.config;return t[e]||(r.keepCasing?e:nh(e))}resolveLangAndScope(e){let t=e,r;if(this._isLangScoped(e)){let o=Hi(e),a=this.isLang(o);t=a?o:this.getActiveLang(),r=this.getMappedScope(a?$r(e):e)}return{scope:r,resolveLang:t}}getObjectByKey(e,t){let r={},o=`${t}.`;for(let a in e)a.startsWith(o)&&(r[a.replace(o,"")]=e[a]);return r}getEntries(e){return e instanceof Map?e.entries():Object.entries(e)}static \u0275fac=function(t){return new(t||i)(x(th,8),x(oh),x(ah),x(sh),x(Jn),x(ch))};static \u0275prov=Z({token:i,factory:i.\u0275fac,providedIn:"root"})}return i})(),uv=(()=>{class i{html;static \u0275fac=function(t){return new(t||i)};static \u0275cmp=H({type:i,selectors:[["ng-component"]],inputs:{html:"html"},standalone:!0,features:[Q],decls:1,vars:1,consts:[[1,"transloco-loader-template",3,"innerHTML"]],template:function(t,r){t&1&&ie(0,"div",0),t&2&&ue("innerHTML",r.html,Ru)},encapsulation:2})}return i})(),yc=class{view;vcr;constructor(n,e){this.view=n,this.vcr=e}attachView(){if(this.view instanceof Ae)this.vcr.createEmbeddedView(this.view);else if(Zn(this.view)){let n=this.vcr.createComponent(uv);n.instance.html=this.view,n.hostView.detectChanges()}else this.vcr.createComponent(this.view)}detachView(){this.vcr.clear()}},hv=new C("TRANSLOCO_LANG"),mv=new C("TRANSLOCO_LOADING_TEMPLATE"),pv=new C("TRANSLOCO_SCOPE"),xc=class{initialized=!1;resolve({inline:n,provider:e,active:t}){let r=t;if(this.initialized)return r=t,r;if(e){let[,o]=_c(e,"static");r=o}if(n){let[,o]=_c(n,"static");r=o}return this.initialized=!0,r}resolveLangBasedOnScope(n){return $r(n)?Hi(n):n}resolveLangPath(n,e){return e?`${e}/${n}`:n}},wc=class{service;constructor(n){this.service=n}resolve(n){let{inline:e,provider:t}=n;if(e)return e;if(t){if(rh(t)){let{scope:r,alias:o=this.service.config.scopes.keepCasing?r:nh(r)}=t;return this.service._setScopeAlias(r,o),r}return t}}},UE=(()=>{class i{destroyRef=F(ta);service=F(dv);tpl=F(Ae,{optional:!0});providerLang=F(hv,{optional:!0});providerScope=F(pv,{optional:!0});providedLoadingTpl=F(mv,{optional:!0});cdr=F(pe);host=F(E);vcr=F(Ue);renderer=F(Gr);view;memo=new Map;key;params={};inlineScope;inlineRead;prefix;inlineLang;inlineTpl;currentLang;loaderTplHandler;initialized=!1;path;langResolver=new xc;scopeResolver=new wc(this.service);strategy=this.tpl===null?"attribute":"structural";static ngTemplateContextGuard(e,t){return!0}ngOnInit(){let e=ov(this.service,this.providerLang||this.inlineLang);if(this.service.langChanges$.pipe(st(t=>{let r=this.langResolver.resolve({inline:this.inlineLang,provider:this.providerLang,active:t});return Array.isArray(this.providerScope)?mn(this.providerScope.map(o=>this.resolveScope(r,o))):this.resolveScope(r,this.providerScope)}),av(e),da(this.destroyRef)).subscribe(()=>{this.currentLang=this.langResolver.resolveLangBasedOnScope(this.path),this.strategy==="attribute"?this.attributeStrategy():this.structuralStrategy(this.currentLang,this.prefix||this.inlineRead),this.cdr.markForCheck(),this.initialized=!0}),!this.initialized){let t=this.resolveLoadingContent();t&&(this.loaderTplHandler=new yc(t,this.vcr),this.loaderTplHandler.attachView())}}ngOnChanges(e){this.strategy==="attribute"&&Object.keys(e).some(r=>!e[r].firstChange)&&this.attributeStrategy()}attributeStrategy(){this.detachLoader(),this.renderer.setProperty(this.host.nativeElement,"innerText",this.service.translate(this.key,this.params,this.currentLang))}structuralStrategy(e,t){this.memo.clear();let r=this.getTranslateFn(e,t);this.view?(this.view.context.$implicit=r,this.view.context.currentLang=this.currentLang):(this.detachLoader(),this.view=this.vcr.createEmbeddedView(this.tpl,{$implicit:r,currentLang:this.currentLang}))}getTranslateFn(e,t){return(r,o)=>{let a=t?`${t}.${r}`:r,s=o?`${a}${JSON.stringify(o)}`:a;return this.memo.has(s)||this.memo.set(s,this.service.translate(a,o,e)),this.memo.get(s)}}resolveLoadingContent(){return this.inlineTpl||this.providedLoadingTpl}ngOnDestroy(){this.memo.clear()}detachLoader(){this.loaderTplHandler?.detachView()}resolveScope(e,t){let r=this.scopeResolver.resolve({inline:this.inlineScope,provider:t});this.path=this.langResolver.resolveLangPath(e,r);let o=lh(t,r);return this.service._loadDependencies(this.path,o)}static \u0275fac=function(t){return new(t||i)};static \u0275dir=D({type:i,selectors:[["","transloco",""]],inputs:{key:[0,"transloco","key"],params:[0,"translocoParams","params"],inlineScope:[0,"translocoScope","inlineScope"],inlineRead:[0,"translocoRead","inlineRead"],prefix:[0,"translocoPrefix","prefix"],inlineLang:[0,"translocoLang","inlineLang"],inlineTpl:[0,"translocoLoadingTpl","inlineTpl"]},standalone:!0,features:[Pe]})}return i})();var uh=(()=>{class i{static \u0275fac=function(t){return new(t||i)};static \u0275mod=j({type:i});static \u0275inj=L({})}return i})();function qE(i){let n=[bv(ev),_v(iv),yv(nv),vv(rv)];return i.config&&n.push(fv(i.config)),i.loader&&n.push(gv(i.loader)),n}function fv(i){return pn([{provide:Jn,useValue:Jb(i)}])}function gv(i){return pn([{provide:th,useClass:i}])}function bv(i){return pn([{provide:oh,useClass:i,deps:[Jn]}])}function vv(i){return pn([{provide:ch,useClass:i,deps:[Jn]}])}function _v(i){return pn([{provide:ah,useClass:i}])}function yv(i){return pn([{provide:sh,useClass:i}])}var WE=new C("TRANSLOCO_TEST_LANGS - Available testing languages"),GE=new C("TRANSLOCO_TEST_OPTIONS - Testing options");var bh=(()=>{class i{constructor(e,t){this._renderer=e,this._elementRef=t,this.onChange=r=>{},this.onTouched=()=>{}}setProperty(e,t){this._renderer.setProperty(this._elementRef.nativeElement,e,t)}registerOnTouched(e){this.onTouched=e}registerOnChange(e){this.onChange=e}setDisabledState(e){this.setProperty("disabled",e)}static{this.\u0275fac=function(t){return new(t||i)(u(Gr),u(E))}}static{this.\u0275dir=D({type:i})}}return i})(),wv=(()=>{class i extends bh{static{this.\u0275fac=(()=>{let e;return function(r){return(e||(e=Ke(i)))(r||i)}})()}static{this.\u0275dir=D({type:i,features:[ne]})}}return i})(),vn=new C("");var Cv={provide:vn,useExisting:Lt(()=>vh),multi:!0};function kv(){let i=uc()?uc().getUserAgent():"";return/android (\d+)/.test(i.toLowerCase())}var Dv=new C(""),vh=(()=>{class i extends bh{constructor(e,t,r){super(e,t),this._compositionMode=r,this._composing=!1,this._compositionMode==null&&(this._compositionMode=!kv())}writeValue(e){let t=e??"";this.setProperty("value",t)}_handleInput(e){(!this._compositionMode||this._compositionMode&&!this._composing)&&this.onChange(e)}_compositionStart(){this._composing=!0}_compositionEnd(e){this._composing=!1,this._compositionMode&&this.onChange(e)}static{this.\u0275fac=function(t){return new(t||i)(u(Gr),u(E),u(Dv,8))}}static{this.\u0275dir=D({type:i,selectors:[["input","formControlName","",3,"type","checkbox"],["textarea","formControlName",""],["input","formControl","",3,"type","checkbox"],["textarea","formControl",""],["input","ngModel","",3,"type","checkbox"],["textarea","ngModel",""],["","ngDefaultControl",""]],hostBindings:function(t,r){t&1&&ee("input",function(a){return r._handleInput(a.target.value)})("blur",function(){return r.onTouched()})("compositionstart",function(){return r._compositionStart()})("compositionend",function(a){return r._compositionEnd(a.target.value)})},features:[de([Cv]),ne]})}}return i})();function Qi(i){return i==null||(typeof i=="string"||Array.isArray(i))&&i.length===0}function _h(i){return i!=null&&typeof i.length=="number"}var eo=new C(""),Sc=new C(""),Ev=/^(?=.{1,254}$)(?=.{1,64}@)[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)*@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/,Ui=class{static min(n){return Iv(n)}static max(n){return Sv(n)}static required(n){return Tv(n)}static requiredTrue(n){return Mv(n)}static email(n){return Av(n)}static minLength(n){return Ov(n)}static maxLength(n){return Rv(n)}static pattern(n){return Fv(n)}static nullValidator(n){return yh(n)}static compose(n){return Eh(n)}static composeAsync(n){return Ih(n)}};function Iv(i){return n=>{if(Qi(n.value)||Qi(i))return null;let e=parseFloat(n.value);return!isNaN(e)&&e{if(Qi(n.value)||Qi(i))return null;let e=parseFloat(n.value);return!isNaN(e)&&e>i?{max:{max:i,actual:n.value}}:null}}function Tv(i){return Qi(i.value)?{required:!0}:null}function Mv(i){return i.value===!0?null:{required:!0}}function Av(i){return Qi(i.value)||Ev.test(i.value)?null:{email:!0}}function Ov(i){return n=>Qi(n.value)||!_h(n.value)?null:n.value.length_h(n.value)&&n.value.length>i?{maxlength:{requiredLength:i,actualLength:n.value.length}}:null}function Fv(i){if(!i)return yh;let n,e;return typeof i=="string"?(e="",i.charAt(0)!=="^"&&(e+="^"),e+=i,i.charAt(i.length-1)!=="$"&&(e+="$"),n=new RegExp(e)):(e=i.toString(),n=i),t=>{if(Qi(t.value))return null;let r=t.value;return n.test(r)?null:{pattern:{requiredPattern:e,actualValue:r}}}}function yh(i){return null}function xh(i){return i!=null}function wh(i){return Uu(i)?ki(i):i}function Ch(i){let n={};return i.forEach(e=>{n=e!=null?N(N({},n),e):n}),Object.keys(n).length===0?null:n}function kh(i,n){return n.map(e=>e(i))}function Pv(i){return!i.validate}function Dh(i){return i.map(n=>Pv(n)?n:e=>n.validate(e))}function Eh(i){if(!i)return null;let n=i.filter(xh);return n.length==0?null:function(e){return Ch(kh(e,n))}}function Tc(i){return i!=null?Eh(Dh(i)):null}function Ih(i){if(!i)return null;let n=i.filter(xh);return n.length==0?null:function(e){let t=kh(e,n).map(wh);return mn(t).pipe(ke(Ch))}}function Mc(i){return i!=null?Ih(Dh(i)):null}function hh(i,n){return i===null?[n]:Array.isArray(i)?[...i,n]:[i,n]}function Sh(i){return i._rawValidators}function Th(i){return i._rawAsyncValidators}function kc(i){return i?Array.isArray(i)?i:[i]:[]}function ha(i,n){return Array.isArray(i)?i.includes(n):i===n}function mh(i,n){let e=kc(n);return kc(i).forEach(r=>{ha(e,r)||e.push(r)}),e}function ph(i,n){return kc(n).filter(e=>!ha(i,e))}var ma=class{constructor(){this._rawValidators=[],this._rawAsyncValidators=[],this._onDestroyCallbacks=[]}get value(){return this.control?this.control.value:null}get valid(){return this.control?this.control.valid:null}get invalid(){return this.control?this.control.invalid:null}get pending(){return this.control?this.control.pending:null}get disabled(){return this.control?this.control.disabled:null}get enabled(){return this.control?this.control.enabled:null}get errors(){return this.control?this.control.errors:null}get pristine(){return this.control?this.control.pristine:null}get dirty(){return this.control?this.control.dirty:null}get touched(){return this.control?this.control.touched:null}get status(){return this.control?this.control.status:null}get untouched(){return this.control?this.control.untouched:null}get statusChanges(){return this.control?this.control.statusChanges:null}get valueChanges(){return this.control?this.control.valueChanges:null}get path(){return null}_setValidators(n){this._rawValidators=n||[],this._composedValidatorFn=Tc(this._rawValidators)}_setAsyncValidators(n){this._rawAsyncValidators=n||[],this._composedAsyncValidatorFn=Mc(this._rawAsyncValidators)}get validator(){return this._composedValidatorFn||null}get asyncValidator(){return this._composedAsyncValidatorFn||null}_registerOnDestroy(n){this._onDestroyCallbacks.push(n)}_invokeOnDestroyCallbacks(){this._onDestroyCallbacks.forEach(n=>n()),this._onDestroyCallbacks=[]}reset(n=void 0){this.control&&this.control.reset(n)}hasError(n,e){return this.control?this.control.hasError(n,e):!1}getError(n,e){return this.control?this.control.getError(n,e):null}},ir=class extends ma{get formDirective(){return null}get path(){return null}},ai=class extends ma{constructor(){super(...arguments),this._parent=null,this.name=null,this.valueAccessor=null}},Dc=class{constructor(n){this._cd=n}get isTouched(){return this._cd?.control?._touched?.(),!!this._cd?.control?.touched}get isUntouched(){return!!this._cd?.control?.untouched}get isPristine(){return this._cd?.control?._pristine?.(),!!this._cd?.control?.pristine}get isDirty(){return!!this._cd?.control?.dirty}get isValid(){return this._cd?.control?._status?.(),!!this._cd?.control?.valid}get isInvalid(){return!!this._cd?.control?.invalid}get isPending(){return!!this._cd?.control?.pending}get isSubmitted(){return this._cd?._submitted?.(),!!this._cd?.submitted}},Nv={"[class.ng-untouched]":"isUntouched","[class.ng-touched]":"isTouched","[class.ng-pristine]":"isPristine","[class.ng-dirty]":"isDirty","[class.ng-valid]":"isValid","[class.ng-invalid]":"isInvalid","[class.ng-pending]":"isPending"},uI=Qe(N({},Nv),{"[class.ng-submitted]":"isSubmitted"}),hI=(()=>{class i extends Dc{constructor(e){super(e)}static{this.\u0275fac=function(t){return new(t||i)(u(ai,2))}}static{this.\u0275dir=D({type:i,selectors:[["","formControlName",""],["","ngModel",""],["","formControl",""]],hostVars:14,hostBindings:function(t,r){t&2&&P("ng-untouched",r.isUntouched)("ng-touched",r.isTouched)("ng-pristine",r.isPristine)("ng-dirty",r.isDirty)("ng-valid",r.isValid)("ng-invalid",r.isInvalid)("ng-pending",r.isPending)},features:[ne]})}}return i})();var Yr="VALID",ua="INVALID",er="PENDING",Kr="DISABLED",qi=class{},pa=class extends qi{constructor(n,e){super(),this.value=n,this.source=e}},Zr=class extends qi{constructor(n,e){super(),this.pristine=n,this.source=e}},Jr=class extends qi{constructor(n,e){super(),this.touched=n,this.source=e}},tr=class extends qi{constructor(n,e){super(),this.status=n,this.source=e}},Ec=class extends qi{constructor(n){super(),this.source=n}},Ic=class extends qi{constructor(n){super(),this.source=n}};function Mh(i){return(xa(i)?i.validators:i)||null}function Lv(i){return Array.isArray(i)?Tc(i):i||null}function Ah(i,n){return(xa(n)?n.asyncValidators:i)||null}function jv(i){return Array.isArray(i)?Mc(i):i||null}function xa(i){return i!=null&&!Array.isArray(i)&&typeof i=="object"}function Vv(i,n,e){let t=i.controls;if(!(n?Object.keys(t):t).length)throw new Wr(1e3,"");if(!t[e])throw new Wr(1001,"")}function Bv(i,n,e){i._forEachChild((t,r)=>{if(e[r]===void 0)throw new Wr(1002,"")})}var fa=class{constructor(n,e){this._pendingDirty=!1,this._hasOwnPendingAsyncValidator=null,this._pendingTouched=!1,this._onCollectionChange=()=>{},this._parent=null,this._status=bi(()=>this.statusReactive()),this.statusReactive=gn(void 0),this._pristine=bi(()=>this.pristineReactive()),this.pristineReactive=gn(!0),this._touched=bi(()=>this.touchedReactive()),this.touchedReactive=gn(!1),this._events=new R,this.events=this._events.asObservable(),this._onDisabledChange=[],this._assignValidators(n),this._assignAsyncValidators(e)}get validator(){return this._composedValidatorFn}set validator(n){this._rawValidators=this._composedValidatorFn=n}get asyncValidator(){return this._composedAsyncValidatorFn}set asyncValidator(n){this._rawAsyncValidators=this._composedAsyncValidatorFn=n}get parent(){return this._parent}get status(){return Yt(this.statusReactive)}set status(n){Yt(()=>this.statusReactive.set(n))}get valid(){return this.status===Yr}get invalid(){return this.status===ua}get pending(){return this.status==er}get disabled(){return this.status===Kr}get enabled(){return this.status!==Kr}get pristine(){return Yt(this.pristineReactive)}set pristine(n){Yt(()=>this.pristineReactive.set(n))}get dirty(){return!this.pristine}get touched(){return Yt(this.touchedReactive)}set touched(n){Yt(()=>this.touchedReactive.set(n))}get untouched(){return!this.touched}get updateOn(){return this._updateOn?this._updateOn:this.parent?this.parent.updateOn:"change"}setValidators(n){this._assignValidators(n)}setAsyncValidators(n){this._assignAsyncValidators(n)}addValidators(n){this.setValidators(mh(n,this._rawValidators))}addAsyncValidators(n){this.setAsyncValidators(mh(n,this._rawAsyncValidators))}removeValidators(n){this.setValidators(ph(n,this._rawValidators))}removeAsyncValidators(n){this.setAsyncValidators(ph(n,this._rawAsyncValidators))}hasValidator(n){return ha(this._rawValidators,n)}hasAsyncValidator(n){return ha(this._rawAsyncValidators,n)}clearValidators(){this.validator=null}clearAsyncValidators(){this.asyncValidator=null}markAsTouched(n={}){let e=this.touched===!1;this.touched=!0;let t=n.sourceControl??this;this._parent&&!n.onlySelf&&this._parent.markAsTouched(Qe(N({},n),{sourceControl:t})),e&&n.emitEvent!==!1&&this._events.next(new Jr(!0,t))}markAllAsTouched(n={}){this.markAsTouched({onlySelf:!0,emitEvent:n.emitEvent,sourceControl:this}),this._forEachChild(e=>e.markAllAsTouched(n))}markAsUntouched(n={}){let e=this.touched===!0;this.touched=!1,this._pendingTouched=!1;let t=n.sourceControl??this;this._forEachChild(r=>{r.markAsUntouched({onlySelf:!0,emitEvent:n.emitEvent,sourceControl:t})}),this._parent&&!n.onlySelf&&this._parent._updateTouched(n,t),e&&n.emitEvent!==!1&&this._events.next(new Jr(!1,t))}markAsDirty(n={}){let e=this.pristine===!0;this.pristine=!1;let t=n.sourceControl??this;this._parent&&!n.onlySelf&&this._parent.markAsDirty(Qe(N({},n),{sourceControl:t})),e&&n.emitEvent!==!1&&this._events.next(new Zr(!1,t))}markAsPristine(n={}){let e=this.pristine===!1;this.pristine=!0,this._pendingDirty=!1;let t=n.sourceControl??this;this._forEachChild(r=>{r.markAsPristine({onlySelf:!0,emitEvent:n.emitEvent})}),this._parent&&!n.onlySelf&&this._parent._updatePristine(n,t),e&&n.emitEvent!==!1&&this._events.next(new Zr(!0,t))}markAsPending(n={}){this.status=er;let e=n.sourceControl??this;n.emitEvent!==!1&&(this._events.next(new tr(this.status,e)),this.statusChanges.emit(this.status)),this._parent&&!n.onlySelf&&this._parent.markAsPending(Qe(N({},n),{sourceControl:e}))}disable(n={}){let e=this._parentMarkedDirty(n.onlySelf);this.status=Kr,this.errors=null,this._forEachChild(r=>{r.disable(Qe(N({},n),{onlySelf:!0}))}),this._updateValue();let t=n.sourceControl??this;n.emitEvent!==!1&&(this._events.next(new pa(this.value,t)),this._events.next(new tr(this.status,t)),this.valueChanges.emit(this.value),this.statusChanges.emit(this.status)),this._updateAncestors(Qe(N({},n),{skipPristineCheck:e}),this),this._onDisabledChange.forEach(r=>r(!0))}enable(n={}){let e=this._parentMarkedDirty(n.onlySelf);this.status=Yr,this._forEachChild(t=>{t.enable(Qe(N({},n),{onlySelf:!0}))}),this.updateValueAndValidity({onlySelf:!0,emitEvent:n.emitEvent}),this._updateAncestors(Qe(N({},n),{skipPristineCheck:e}),this),this._onDisabledChange.forEach(t=>t(!1))}_updateAncestors(n,e){this._parent&&!n.onlySelf&&(this._parent.updateValueAndValidity(n),n.skipPristineCheck||this._parent._updatePristine({},e),this._parent._updateTouched({},e))}setParent(n){this._parent=n}getRawValue(){return this.value}updateValueAndValidity(n={}){if(this._setInitialStatus(),this._updateValue(),this.enabled){let t=this._cancelExistingSubscription();this.errors=this._runValidator(),this.status=this._calculateStatus(),(this.status===Yr||this.status===er)&&this._runAsyncValidator(t,n.emitEvent)}let e=n.sourceControl??this;n.emitEvent!==!1&&(this._events.next(new pa(this.value,e)),this._events.next(new tr(this.status,e)),this.valueChanges.emit(this.value),this.statusChanges.emit(this.status)),this._parent&&!n.onlySelf&&this._parent.updateValueAndValidity(Qe(N({},n),{sourceControl:e}))}_updateTreeValidity(n={emitEvent:!0}){this._forEachChild(e=>e._updateTreeValidity(n)),this.updateValueAndValidity({onlySelf:!0,emitEvent:n.emitEvent})}_setInitialStatus(){this.status=this._allControlsDisabled()?Kr:Yr}_runValidator(){return this.validator?this.validator(this):null}_runAsyncValidator(n,e){if(this.asyncValidator){this.status=er,this._hasOwnPendingAsyncValidator={emitEvent:e!==!1};let t=wh(this.asyncValidator(this));this._asyncValidationSubscription=t.subscribe(r=>{this._hasOwnPendingAsyncValidator=null,this.setErrors(r,{emitEvent:e,shouldHaveEmitted:n})})}}_cancelExistingSubscription(){if(this._asyncValidationSubscription){this._asyncValidationSubscription.unsubscribe();let n=this._hasOwnPendingAsyncValidator?.emitEvent??!1;return this._hasOwnPendingAsyncValidator=null,n}return!1}setErrors(n,e={}){this.errors=n,this._updateControlsErrors(e.emitEvent!==!1,this,e.shouldHaveEmitted)}get(n){let e=n;return e==null||(Array.isArray(e)||(e=e.split(".")),e.length===0)?null:e.reduce((t,r)=>t&&t._find(r),this)}getError(n,e){let t=e?this.get(e):this;return t&&t.errors?t.errors[n]:null}hasError(n,e){return!!this.getError(n,e)}get root(){let n=this;for(;n._parent;)n=n._parent;return n}_updateControlsErrors(n,e,t){this.status=this._calculateStatus(),n&&this.statusChanges.emit(this.status),(n||t)&&this._events.next(new tr(this.status,e)),this._parent&&this._parent._updateControlsErrors(n,e,t)}_initObservables(){this.valueChanges=new z,this.statusChanges=new z}_calculateStatus(){return this._allControlsDisabled()?Kr:this.errors?ua:this._hasOwnPendingAsyncValidator||this._anyControlsHaveStatus(er)?er:this._anyControlsHaveStatus(ua)?ua:Yr}_anyControlsHaveStatus(n){return this._anyControls(e=>e.status===n)}_anyControlsDirty(){return this._anyControls(n=>n.dirty)}_anyControlsTouched(){return this._anyControls(n=>n.touched)}_updatePristine(n,e){let t=!this._anyControlsDirty(),r=this.pristine!==t;this.pristine=t,this._parent&&!n.onlySelf&&this._parent._updatePristine(n,e),r&&this._events.next(new Zr(this.pristine,e))}_updateTouched(n={},e){this.touched=this._anyControlsTouched(),this._events.next(new Jr(this.touched,e)),this._parent&&!n.onlySelf&&this._parent._updateTouched(n,e)}_registerOnCollectionChange(n){this._onCollectionChange=n}_setUpdateStrategy(n){xa(n)&&n.updateOn!=null&&(this._updateOn=n.updateOn)}_parentMarkedDirty(n){let e=this._parent&&this._parent.dirty;return!n&&!!e&&!this._parent._anyControlsDirty()}_find(n){return null}_assignValidators(n){this._rawValidators=Array.isArray(n)?n.slice():n,this._composedValidatorFn=Lv(this._rawValidators)}_assignAsyncValidators(n){this._rawAsyncValidators=Array.isArray(n)?n.slice():n,this._composedAsyncValidatorFn=jv(this._rawAsyncValidators)}},ga=class extends fa{constructor(n,e,t){super(Mh(e),Ah(t,e)),this.controls=n,this._initObservables(),this._setUpdateStrategy(e),this._setUpControls(),this.updateValueAndValidity({onlySelf:!0,emitEvent:!!this.asyncValidator})}registerControl(n,e){return this.controls[n]?this.controls[n]:(this.controls[n]=e,e.setParent(this),e._registerOnCollectionChange(this._onCollectionChange),e)}addControl(n,e,t={}){this.registerControl(n,e),this.updateValueAndValidity({emitEvent:t.emitEvent}),this._onCollectionChange()}removeControl(n,e={}){this.controls[n]&&this.controls[n]._registerOnCollectionChange(()=>{}),delete this.controls[n],this.updateValueAndValidity({emitEvent:e.emitEvent}),this._onCollectionChange()}setControl(n,e,t={}){this.controls[n]&&this.controls[n]._registerOnCollectionChange(()=>{}),delete this.controls[n],e&&this.registerControl(n,e),this.updateValueAndValidity({emitEvent:t.emitEvent}),this._onCollectionChange()}contains(n){return this.controls.hasOwnProperty(n)&&this.controls[n].enabled}setValue(n,e={}){Bv(this,!0,n),Object.keys(n).forEach(t=>{Vv(this,!0,t),this.controls[t].setValue(n[t],{onlySelf:!0,emitEvent:e.emitEvent})}),this.updateValueAndValidity(e)}patchValue(n,e={}){n!=null&&(Object.keys(n).forEach(t=>{let r=this.controls[t];r&&r.patchValue(n[t],{onlySelf:!0,emitEvent:e.emitEvent})}),this.updateValueAndValidity(e))}reset(n={},e={}){this._forEachChild((t,r)=>{t.reset(n?n[r]:null,{onlySelf:!0,emitEvent:e.emitEvent})}),this._updatePristine(e,this),this._updateTouched(e,this),this.updateValueAndValidity(e)}getRawValue(){return this._reduceChildren({},(n,e,t)=>(n[t]=e.getRawValue(),n))}_syncPendingControls(){let n=this._reduceChildren(!1,(e,t)=>t._syncPendingControls()?!0:e);return n&&this.updateValueAndValidity({onlySelf:!0}),n}_forEachChild(n){Object.keys(this.controls).forEach(e=>{let t=this.controls[e];t&&n(t,e)})}_setUpControls(){this._forEachChild(n=>{n.setParent(this),n._registerOnCollectionChange(this._onCollectionChange)})}_updateValue(){this.value=this._reduceValue()}_anyControls(n){for(let[e,t]of Object.entries(this.controls))if(this.contains(e)&&n(t))return!0;return!1}_reduceValue(){let n={};return this._reduceChildren(n,(e,t,r)=>((t.enabled||this.disabled)&&(e[r]=t.value),e))}_reduceChildren(n,e){let t=n;return this._forEachChild((r,o)=>{t=e(t,r,o)}),t}_allControlsDisabled(){for(let n of Object.keys(this.controls))if(this.controls[n].enabled)return!1;return Object.keys(this.controls).length>0||this.disabled}_find(n){return this.controls.hasOwnProperty(n)?this.controls[n]:null}};var wa=new C("CallSetDisabledState",{providedIn:"root",factory:()=>Ac}),Ac="always";function ba(i,n,e=Ac){Oc(i,n),n.valueAccessor.writeValue(i.value),(i.disabled||e==="always")&&n.valueAccessor.setDisabledState?.(i.disabled),Hv(i,n),Uv(i,n),Qv(i,n),zv(i,n)}function va(i,n,e=!0){let t=()=>{};n.valueAccessor&&(n.valueAccessor.registerOnChange(t),n.valueAccessor.registerOnTouched(t)),ya(i,n),i&&(n._invokeOnDestroyCallbacks(),i._registerOnCollectionChange(()=>{}))}function _a(i,n){i.forEach(e=>{e.registerOnValidatorChange&&e.registerOnValidatorChange(n)})}function zv(i,n){if(n.valueAccessor.setDisabledState){let e=t=>{n.valueAccessor.setDisabledState(t)};i.registerOnDisabledChange(e),n._registerOnDestroy(()=>{i._unregisterOnDisabledChange(e)})}}function Oc(i,n){let e=Sh(i);n.validator!==null?i.setValidators(hh(e,n.validator)):typeof e=="function"&&i.setValidators([e]);let t=Th(i);n.asyncValidator!==null?i.setAsyncValidators(hh(t,n.asyncValidator)):typeof t=="function"&&i.setAsyncValidators([t]);let r=()=>i.updateValueAndValidity();_a(n._rawValidators,r),_a(n._rawAsyncValidators,r)}function ya(i,n){let e=!1;if(i!==null){if(n.validator!==null){let r=Sh(i);if(Array.isArray(r)&&r.length>0){let o=r.filter(a=>a!==n.validator);o.length!==r.length&&(e=!0,i.setValidators(o))}}if(n.asyncValidator!==null){let r=Th(i);if(Array.isArray(r)&&r.length>0){let o=r.filter(a=>a!==n.asyncValidator);o.length!==r.length&&(e=!0,i.setAsyncValidators(o))}}}let t=()=>{};return _a(n._rawValidators,t),_a(n._rawAsyncValidators,t),e}function Hv(i,n){n.valueAccessor.registerOnChange(e=>{i._pendingValue=e,i._pendingChange=!0,i._pendingDirty=!0,i.updateOn==="change"&&Oh(i,n)})}function Qv(i,n){n.valueAccessor.registerOnTouched(()=>{i._pendingTouched=!0,i.updateOn==="blur"&&i._pendingChange&&Oh(i,n),i.updateOn!=="submit"&&i.markAsTouched()})}function Oh(i,n){i._pendingDirty&&i.markAsDirty(),i.setValue(i._pendingValue,{emitModelToViewChange:!1}),n.viewToModelUpdate(i._pendingValue),i._pendingChange=!1}function Uv(i,n){let e=(t,r)=>{n.valueAccessor.writeValue(t),r&&n.viewToModelUpdate(t)};i.registerOnChange(e),n._registerOnDestroy(()=>{i._unregisterOnChange(e)})}function Rh(i,n){i==null,Oc(i,n)}function qv(i,n){return ya(i,n)}function Wv(i,n){if(!i.hasOwnProperty("model"))return!1;let e=i.model;return e.isFirstChange()?!0:!Object.is(n,e.currentValue)}function Gv(i){return Object.getPrototypeOf(i.constructor)===wv}function Fh(i,n){i._syncPendingControls(),n.forEach(e=>{let t=e.control;t.updateOn==="submit"&&t._pendingChange&&(e.viewToModelUpdate(t._pendingValue),t._pendingChange=!1)})}function $v(i,n){if(!n)return null;Array.isArray(n);let e,t,r;return n.forEach(o=>{o.constructor===vh?e=o:Gv(o)?t=o:r=o}),r||t||e||null}function Yv(i,n){let e=i.indexOf(n);e>-1&&i.splice(e,1)}var Kv={provide:ir,useExisting:Lt(()=>_n)},Xr=Promise.resolve(),_n=(()=>{class i extends ir{get submitted(){return Yt(this.submittedReactive)}constructor(e,t,r){super(),this.callSetDisabledState=r,this._submitted=bi(()=>this.submittedReactive()),this.submittedReactive=gn(!1),this._directives=new Set,this.ngSubmit=new z,this.form=new ga({},Tc(e),Mc(t))}ngAfterViewInit(){this._setUpdateStrategy()}get formDirective(){return this}get control(){return this.form}get path(){return[]}get controls(){return this.form.controls}addControl(e){Xr.then(()=>{let t=this._findContainer(e.path);e.control=t.registerControl(e.name,e.control),ba(e.control,e,this.callSetDisabledState),e.control.updateValueAndValidity({emitEvent:!1}),this._directives.add(e)})}getControl(e){return this.form.get(e.path)}removeControl(e){Xr.then(()=>{let t=this._findContainer(e.path);t&&t.removeControl(e.name),this._directives.delete(e)})}addFormGroup(e){Xr.then(()=>{let t=this._findContainer(e.path),r=new ga({});Rh(r,e),t.registerControl(e.name,r),r.updateValueAndValidity({emitEvent:!1})})}removeFormGroup(e){Xr.then(()=>{let t=this._findContainer(e.path);t&&t.removeControl(e.name)})}getFormGroup(e){return this.form.get(e.path)}updateModel(e,t){Xr.then(()=>{this.form.get(e.path).setValue(t)})}setValue(e){this.control.setValue(e)}onSubmit(e){return this.submittedReactive.set(!0),Fh(this.form,this._directives),this.ngSubmit.emit(e),e?.target?.method==="dialog"}onReset(){this.resetForm()}resetForm(e=void 0){this.form.reset(e),this.submittedReactive.set(!1)}_setUpdateStrategy(){this.options&&this.options.updateOn!=null&&(this.form._updateOn=this.options.updateOn)}_findContainer(e){return e.pop(),e.length?this.form.get(e):this.form}static{this.\u0275fac=function(t){return new(t||i)(u(eo,10),u(Sc,10),u(wa,8))}}static{this.\u0275dir=D({type:i,selectors:[["form",3,"ngNoForm","",3,"formGroup",""],["ng-form"],["","ngForm",""]],hostBindings:function(t,r){t&1&&ee("submit",function(a){return r.onSubmit(a)})("reset",function(){return r.onReset()})},inputs:{options:[0,"ngFormOptions","options"]},outputs:{ngSubmit:"ngSubmit"},exportAs:["ngForm"],features:[de([Kv]),ne]})}}return i})();function fh(i,n){let e=i.indexOf(n);e>-1&&i.splice(e,1)}function gh(i){return typeof i=="object"&&i!==null&&Object.keys(i).length===2&&"value"in i&&"disabled"in i}var Xv=class extends fa{constructor(n=null,e,t){super(Mh(e),Ah(t,e)),this.defaultValue=null,this._onChange=[],this._pendingChange=!1,this._applyFormState(n),this._setUpdateStrategy(e),this._initObservables(),this.updateValueAndValidity({onlySelf:!0,emitEvent:!!this.asyncValidator}),xa(e)&&(e.nonNullable||e.initialValueIsDefault)&&(gh(n)?this.defaultValue=n.value:this.defaultValue=n)}setValue(n,e={}){this.value=this._pendingValue=n,this._onChange.length&&e.emitModelToViewChange!==!1&&this._onChange.forEach(t=>t(this.value,e.emitViewToModelChange!==!1)),this.updateValueAndValidity(e)}patchValue(n,e={}){this.setValue(n,e)}reset(n=this.defaultValue,e={}){this._applyFormState(n),this.markAsPristine(e),this.markAsUntouched(e),this.setValue(this.value,e),this._pendingChange=!1}_updateValue(){}_anyControls(n){return!1}_allControlsDisabled(){return this.disabled}registerOnChange(n){this._onChange.push(n)}_unregisterOnChange(n){fh(this._onChange,n)}registerOnDisabledChange(n){this._onDisabledChange.push(n)}_unregisterOnDisabledChange(n){fh(this._onDisabledChange,n)}_forEachChild(n){}_syncPendingControls(){return this.updateOn==="submit"&&(this._pendingDirty&&this.markAsDirty(),this._pendingTouched&&this.markAsTouched(),this._pendingChange)?(this.setValue(this._pendingValue,{onlySelf:!0,emitModelToViewChange:!1}),!0):!1}_applyFormState(n){gh(n)?(this.value=this._pendingValue=n.value,n.disabled?this.disable({onlySelf:!0,emitEvent:!1}):this.enable({onlySelf:!0,emitEvent:!1})):this.value=this._pendingValue=n}};var Zv=i=>i instanceof Xv;var Ph=new C(""),Jv={provide:ai,useExisting:Lt(()=>e_)},e_=(()=>{class i extends ai{set isDisabled(e){}static{this._ngModelWarningSentOnce=!1}constructor(e,t,r,o,a){super(),this._ngModelWarningConfig=o,this.callSetDisabledState=a,this.update=new z,this._ngModelWarningSent=!1,this._setValidators(e),this._setAsyncValidators(t),this.valueAccessor=$v(this,r)}ngOnChanges(e){if(this._isControlChanged(e)){let t=e.form.previousValue;t&&va(t,this,!1),ba(this.form,this,this.callSetDisabledState),this.form.updateValueAndValidity({emitEvent:!1})}Wv(e,this.viewModel)&&(this.form.setValue(this.model),this.viewModel=this.model)}ngOnDestroy(){this.form&&va(this.form,this,!1)}get path(){return[]}get control(){return this.form}viewToModelUpdate(e){this.viewModel=e,this.update.emit(e)}_isControlChanged(e){return e.hasOwnProperty("form")}static{this.\u0275fac=function(t){return new(t||i)(u(eo,10),u(Sc,10),u(vn,10),u(Ph,8),u(wa,8))}}static{this.\u0275dir=D({type:i,selectors:[["","formControl",""]],inputs:{form:[0,"formControl","form"],isDisabled:[0,"disabled","isDisabled"],model:[0,"ngModel","model"]},outputs:{update:"ngModelChange"},exportAs:["ngForm"],features:[de([Jv]),ne,Pe]})}}return i})(),t_={provide:ir,useExisting:Lt(()=>yn)},yn=(()=>{class i extends ir{get submitted(){return Yt(this._submittedReactive)}set submitted(e){this._submittedReactive.set(e)}constructor(e,t,r){super(),this.callSetDisabledState=r,this._submitted=bi(()=>this._submittedReactive()),this._submittedReactive=gn(!1),this._onCollectionChange=()=>this._updateDomValue(),this.directives=[],this.form=null,this.ngSubmit=new z,this._setValidators(e),this._setAsyncValidators(t)}ngOnChanges(e){this._checkFormPresent(),e.hasOwnProperty("form")&&(this._updateValidators(),this._updateDomValue(),this._updateRegistrations(),this._oldForm=this.form)}ngOnDestroy(){this.form&&(ya(this.form,this),this.form._onCollectionChange===this._onCollectionChange&&this.form._registerOnCollectionChange(()=>{}))}get formDirective(){return this}get control(){return this.form}get path(){return[]}addControl(e){let t=this.form.get(e.path);return ba(t,e,this.callSetDisabledState),t.updateValueAndValidity({emitEvent:!1}),this.directives.push(e),t}getControl(e){return this.form.get(e.path)}removeControl(e){va(e.control||null,e,!1),Yv(this.directives,e)}addFormGroup(e){this._setUpFormContainer(e)}removeFormGroup(e){this._cleanUpFormContainer(e)}getFormGroup(e){return this.form.get(e.path)}addFormArray(e){this._setUpFormContainer(e)}removeFormArray(e){this._cleanUpFormContainer(e)}getFormArray(e){return this.form.get(e.path)}updateModel(e,t){this.form.get(e.path).setValue(t)}onSubmit(e){return this._submittedReactive.set(!0),Fh(this.form,this.directives),this.ngSubmit.emit(e),this.form._events.next(new Ec(this.control)),e?.target?.method==="dialog"}onReset(){this.resetForm()}resetForm(e=void 0){this.form.reset(e),this._submittedReactive.set(!1),this.form._events.next(new Ic(this.form))}_updateDomValue(){this.directives.forEach(e=>{let t=e.control,r=this.form.get(e.path);t!==r&&(va(t||null,e),Zv(r)&&(ba(r,e,this.callSetDisabledState),e.control=r))}),this.form._updateTreeValidity({emitEvent:!1})}_setUpFormContainer(e){let t=this.form.get(e.path);Rh(t,e),t.updateValueAndValidity({emitEvent:!1})}_cleanUpFormContainer(e){if(this.form){let t=this.form.get(e.path);t&&qv(t,e)&&t.updateValueAndValidity({emitEvent:!1})}}_updateRegistrations(){this.form._registerOnCollectionChange(this._onCollectionChange),this._oldForm&&this._oldForm._registerOnCollectionChange(()=>{})}_updateValidators(){Oc(this.form,this),this._oldForm&&ya(this._oldForm,this)}_checkFormPresent(){this.form}static{this.\u0275fac=function(t){return new(t||i)(u(eo,10),u(Sc,10),u(wa,8))}}static{this.\u0275dir=D({type:i,selectors:[["","formGroup",""]],hostBindings:function(t,r){t&1&&ee("submit",function(a){return r.onSubmit(a)})("reset",function(){return r.onReset()})},inputs:{form:[0,"formGroup","form"]},outputs:{ngSubmit:"ngSubmit"},exportAs:["ngForm"],features:[de([t_]),ne,Pe]})}}return i})();var i_=(()=>{class i{static{this.\u0275fac=function(t){return new(t||i)}}static{this.\u0275mod=j({type:i})}static{this.\u0275inj=L({})}}return i})();var Nh=(()=>{class i{static withConfig(e){return{ngModule:i,providers:[{provide:Ph,useValue:e.warnOnNgModelWithFormControl??"always"},{provide:wa,useValue:e.callSetDisabledState??Ac}]}}static{this.\u0275fac=function(t){return new(t||i)}}static{this.\u0275mod=j({type:i})}static{this.\u0275inj=L({imports:[i_]})}}return i})();function ka(i){return i&&typeof i.connect=="function"&&!(i instanceof vu)}var nr=function(i){return i[i.REPLACED=0]="REPLACED",i[i.INSERTED=1]="INSERTED",i[i.MOVED=2]="MOVED",i[i.REMOVED=3]="REMOVED",i}(nr||{}),to=new C("_ViewRepeater"),rr=class{applyChanges(n,e,t,r,o){n.forEachOperation((a,s,c)=>{let l,d;if(a.previousIndex==null){let h=t(a,s,c);l=e.createEmbeddedView(h.templateRef,h.context,h.index),d=nr.INSERTED}else c==null?(e.remove(s),d=nr.REMOVED):(l=e.get(s),e.move(l,c),d=nr.MOVED);o&&o({context:l?.context,operation:d,record:a})})}detach(){}};var Ca=class{get selected(){return this._selected||(this._selected=Array.from(this._selection.values())),this._selected}constructor(n=!1,e,t=!0,r){this._multiple=n,this._emitChanges=t,this.compareWith=r,this._selection=new Set,this._deselectedToEmit=[],this._selectedToEmit=[],this.changed=new R,e&&e.length&&(n?e.forEach(o=>this._markSelected(o)):this._markSelected(e[0]),this._selectedToEmit.length=0)}select(...n){this._verifyValueAssignment(n),n.forEach(t=>this._markSelected(t));let e=this._hasQueuedChanges();return this._emitChangeEvent(),e}deselect(...n){this._verifyValueAssignment(n),n.forEach(t=>this._unmarkSelected(t));let e=this._hasQueuedChanges();return this._emitChangeEvent(),e}setSelection(...n){this._verifyValueAssignment(n);let e=this.selected,t=new Set(n);n.forEach(o=>this._markSelected(o)),e.filter(o=>!t.has(this._getConcreteValue(o,t))).forEach(o=>this._unmarkSelected(o));let r=this._hasQueuedChanges();return this._emitChangeEvent(),r}toggle(n){return this.isSelected(n)?this.deselect(n):this.select(n)}clear(n=!0){this._unmarkAll();let e=this._hasQueuedChanges();return n&&this._emitChangeEvent(),e}isSelected(n){return this._selection.has(this._getConcreteValue(n))}isEmpty(){return this._selection.size===0}hasValue(){return!this.isEmpty()}sort(n){this._multiple&&this.selected&&this._selected.sort(n)}isMultipleSelection(){return this._multiple}_emitChangeEvent(){this._selected=null,(this._selectedToEmit.length||this._deselectedToEmit.length)&&(this.changed.next({source:this,added:this._selectedToEmit,removed:this._deselectedToEmit}),this._deselectedToEmit=[],this._selectedToEmit=[])}_markSelected(n){n=this._getConcreteValue(n),this.isSelected(n)||(this._multiple||this._unmarkAll(),this.isSelected(n)||this._selection.add(n),this._emitChanges&&this._selectedToEmit.push(n))}_unmarkSelected(n){n=this._getConcreteValue(n),this.isSelected(n)&&(this._selection.delete(n),this._emitChanges&&this._deselectedToEmit.push(n))}_unmarkAll(){this.isEmpty()||this._selection.forEach(n=>this._unmarkSelected(n))}_verifyValueAssignment(n){n.length>1&&this._multiple}_hasQueuedChanges(){return!!(this._deselectedToEmit.length||this._selectedToEmit.length)}_getConcreteValue(n,e){if(this.compareWith){e=e??this._selection;for(let t of e)if(this.compareWith(n,t))return t;return n}else return n}};var Da=(()=>{class i{constructor(){this._listeners=[]}notify(e,t){for(let r of this._listeners)r(e,t)}listen(e){return this._listeners.push(e),()=>{this._listeners=this._listeners.filter(t=>e!==t)}}ngOnDestroy(){this._listeners=[]}static{this.\u0275fac=function(t){return new(t||i)}}static{this.\u0275prov=Z({token:i,factory:i.\u0275fac,providedIn:"root"})}}return i})();var Fc="Invariant Violation",jh=Object.setPrototypeOf,n_=jh===void 0?function(i,n){return i.__proto__=n,i}:jh,Sa=function(i){mt(n,i);function n(e){e===void 0&&(e=Fc);var t=i.call(this,typeof e=="number"?Fc+": "+e+" (see https://github.com/apollographql/invariant-packages)":e)||this;return t.framesToPop=1,t.name=Fc,n_(t,n.prototype),t}return n}(Error);function Wi(i,n){if(!i)throw new Sa(n)}var Ia=["debug","log","warn","error","silent"],Pc=Ia.indexOf("log");function Ea(i){return function(){if(Ia.indexOf(i)>=Pc){var n=console[i]||console.log;return n.apply(console,arguments)}}}(function(i){i.debug=Ea("debug"),i.log=Ea("log"),i.warn=Ea("warn"),i.error=Ea("error")})(Wi||(Wi={}));function Vh(i){var n=Ia[Pc];return Pc=Math.max(0,Ia.indexOf(i)),n}var io="3.11.8";function xt(i){try{return i()}catch{}}var or=xt(function(){return globalThis})||xt(function(){return window})||xt(function(){return self})||xt(function(){return global})||xt(function(){return xt.constructor("return this")()});var Bh=new Map;function no(i){var n=Bh.get(i)||1;return Bh.set(i,n+1),"".concat(i,":").concat(n,":").concat(Math.random().toString(36).slice(2))}function Ta(i,n){n===void 0&&(n=0);var e=no("stringifyForDisplay");return JSON.stringify(i,function(t,r){return r===void 0?e:r},n).split(JSON.stringify(e)).join("")}function Ma(i){return function(n){for(var e=[],t=1;t"}}function Nc(i,n){if(n===void 0&&(n=[]),!!i)return or[zh]&&or[zh](i,n.map(Hh))}function Lc(i,n){if(n===void 0&&(n=[]),!!i)return"An error occurred! For more details, see the full error text at https://go.apollo.dev/c/err#".concat(encodeURIComponent(JSON.stringify({version:io,message:i,args:n.map(Hh)})))}var r_=globalThis.__DEV__!==!1;function ar(i,n){if(!!!i)throw new Error(n)}function Qh(i){return typeof i=="object"&&i!==null}function Uh(i,n){if(!!!i)throw new Error(n??"Unexpected invariant triggered.")}var o_=/\r\n|[\n\r]/g;function sr(i,n){let e=0,t=1;for(let r of i.body.matchAll(o_)){if(typeof r.index=="number"||Uh(!1),r.index>=n)break;e=r.index+r[0].length,t+=1}return{line:t,column:n+1-e}}function jc(i){return Aa(i.source,sr(i.source,i.start))}function Aa(i,n){let e=i.locationOffset.column-1,t="".padStart(e)+i.body,r=n.line-1,o=i.locationOffset.line-1,a=n.line+o,s=n.line===1?e:0,c=n.column+s,l=`${i.name}:${a}:${c} +`,d=t.split(/\r\n|[\n\r]/g),h=d[r];if(h.length>120){let m=Math.floor(c/80),p=c%80,f=[];for(let g=0;g["|",g]),["|","^".padStart(p)],["|",f[m+1]]])}return l+qh([[`${a-1} |`,d[r-1]],[`${a} |`,h],["|","^".padStart(c)],[`${a+1} |`,d[r+1]]])}function qh(i){let n=i.filter(([t,r])=>r!==void 0),e=Math.max(...n.map(([t])=>t.length));return n.map(([t,r])=>t.padStart(e)+(r?" "+r:"")).join(` +`)}function a_(i){let n=i[0];return n==null||"kind"in n||"length"in n?{nodes:n,source:i[1],positions:i[2],path:i[3],originalError:i[4],extensions:i[5]}:n}var Oa=class i extends Error{constructor(n,...e){var t,r,o;let{nodes:a,source:s,positions:c,path:l,originalError:d,extensions:h}=a_(e);super(n),this.name="GraphQLError",this.path=l??void 0,this.originalError=d??void 0,this.nodes=Wh(Array.isArray(a)?a:a?[a]:void 0);let m=Wh((t=this.nodes)===null||t===void 0?void 0:t.map(f=>f.loc).filter(f=>f!=null));this.source=s??(m==null||(r=m[0])===null||r===void 0?void 0:r.source),this.positions=c??m?.map(f=>f.start),this.locations=c&&s?c.map(f=>sr(s,f)):m?.map(f=>sr(f.source,f.start));let p=Qh(d?.extensions)?d?.extensions:void 0;this.extensions=(o=h??p)!==null&&o!==void 0?o:Object.create(null),Object.defineProperties(this,{message:{writable:!0,enumerable:!0},name:{enumerable:!1},nodes:{enumerable:!1},source:{enumerable:!1},positions:{enumerable:!1},originalError:{enumerable:!1}}),d!=null&&d.stack?Object.defineProperty(this,"stack",{value:d.stack,writable:!0,configurable:!0}):Error.captureStackTrace?Error.captureStackTrace(this,i):Object.defineProperty(this,"stack",{value:Error().stack,writable:!0,configurable:!0})}get[Symbol.toStringTag](){return"GraphQLError"}toString(){let n=this.message;if(this.nodes)for(let e of this.nodes)e.loc&&(n+=` + +`+jc(e.loc));else if(this.source&&this.locations)for(let e of this.locations)n+=` + +`+Aa(this.source,e);return n}toJSON(){let n={message:this.message};return this.locations!=null&&(n.locations=this.locations),this.path!=null&&(n.path=this.path),this.extensions!=null&&Object.keys(this.extensions).length>0&&(n.extensions=this.extensions),n}};function Wh(i){return i===void 0||i.length===0?void 0:i}function ct(i,n,e){return new Oa(`Syntax Error: ${e}`,{source:i,positions:[n]})}var ro=class{constructor(n,e,t){this.start=n.start,this.end=e.end,this.startToken=n,this.endToken=e,this.source=t}get[Symbol.toStringTag](){return"Location"}toJSON(){return{start:this.start,end:this.end}}},cr=class{constructor(n,e,t,r,o,a){this.kind=n,this.start=e,this.end=t,this.line=r,this.column=o,this.value=a,this.prev=null,this.next=null}get[Symbol.toStringTag](){return"Token"}toJSON(){return{kind:this.kind,value:this.value,line:this.line,column:this.column}}},Vc={Name:[],Document:["definitions"],OperationDefinition:["name","variableDefinitions","directives","selectionSet"],VariableDefinition:["variable","type","defaultValue","directives"],Variable:["name"],SelectionSet:["selections"],Field:["alias","name","arguments","directives","selectionSet"],Argument:["name","value"],FragmentSpread:["name","directives"],InlineFragment:["typeCondition","directives","selectionSet"],FragmentDefinition:["name","variableDefinitions","typeCondition","directives","selectionSet"],IntValue:[],FloatValue:[],StringValue:[],BooleanValue:[],NullValue:[],EnumValue:[],ListValue:["values"],ObjectValue:["fields"],ObjectField:["name","value"],Directive:["name","arguments"],NamedType:["name"],ListType:["type"],NonNullType:["type"],SchemaDefinition:["description","directives","operationTypes"],OperationTypeDefinition:["type"],ScalarTypeDefinition:["description","name","directives"],ObjectTypeDefinition:["description","name","interfaces","directives","fields"],FieldDefinition:["description","name","arguments","type","directives"],InputValueDefinition:["description","name","type","defaultValue","directives"],InterfaceTypeDefinition:["description","name","interfaces","directives","fields"],UnionTypeDefinition:["description","name","directives","types"],EnumTypeDefinition:["description","name","directives","values"],EnumValueDefinition:["description","name","directives"],InputObjectTypeDefinition:["description","name","directives","fields"],DirectiveDefinition:["description","name","arguments","locations"],SchemaExtension:["directives","operationTypes"],ScalarTypeExtension:["name","directives"],ObjectTypeExtension:["name","interfaces","directives","fields"],InterfaceTypeExtension:["name","interfaces","directives","fields"],UnionTypeExtension:["name","directives","types"],EnumTypeExtension:["name","directives","values"],InputObjectTypeExtension:["name","directives","fields"]},s_=new Set(Object.keys(Vc));function Bc(i){let n=i?.kind;return typeof n=="string"&&s_.has(n)}var xn=function(i){return i.QUERY="query",i.MUTATION="mutation",i.SUBSCRIPTION="subscription",i}(xn||{});var Ra=function(i){return i.QUERY="QUERY",i.MUTATION="MUTATION",i.SUBSCRIPTION="SUBSCRIPTION",i.FIELD="FIELD",i.FRAGMENT_DEFINITION="FRAGMENT_DEFINITION",i.FRAGMENT_SPREAD="FRAGMENT_SPREAD",i.INLINE_FRAGMENT="INLINE_FRAGMENT",i.VARIABLE_DEFINITION="VARIABLE_DEFINITION",i.SCHEMA="SCHEMA",i.SCALAR="SCALAR",i.OBJECT="OBJECT",i.FIELD_DEFINITION="FIELD_DEFINITION",i.ARGUMENT_DEFINITION="ARGUMENT_DEFINITION",i.INTERFACE="INTERFACE",i.UNION="UNION",i.ENUM="ENUM",i.ENUM_VALUE="ENUM_VALUE",i.INPUT_OBJECT="INPUT_OBJECT",i.INPUT_FIELD_DEFINITION="INPUT_FIELD_DEFINITION",i}(Ra||{});var G=function(i){return i.NAME="Name",i.DOCUMENT="Document",i.OPERATION_DEFINITION="OperationDefinition",i.VARIABLE_DEFINITION="VariableDefinition",i.SELECTION_SET="SelectionSet",i.FIELD="Field",i.ARGUMENT="Argument",i.FRAGMENT_SPREAD="FragmentSpread",i.INLINE_FRAGMENT="InlineFragment",i.FRAGMENT_DEFINITION="FragmentDefinition",i.VARIABLE="Variable",i.INT="IntValue",i.FLOAT="FloatValue",i.STRING="StringValue",i.BOOLEAN="BooleanValue",i.NULL="NullValue",i.ENUM="EnumValue",i.LIST="ListValue",i.OBJECT="ObjectValue",i.OBJECT_FIELD="ObjectField",i.DIRECTIVE="Directive",i.NAMED_TYPE="NamedType",i.LIST_TYPE="ListType",i.NON_NULL_TYPE="NonNullType",i.SCHEMA_DEFINITION="SchemaDefinition",i.OPERATION_TYPE_DEFINITION="OperationTypeDefinition",i.SCALAR_TYPE_DEFINITION="ScalarTypeDefinition",i.OBJECT_TYPE_DEFINITION="ObjectTypeDefinition",i.FIELD_DEFINITION="FieldDefinition",i.INPUT_VALUE_DEFINITION="InputValueDefinition",i.INTERFACE_TYPE_DEFINITION="InterfaceTypeDefinition",i.UNION_TYPE_DEFINITION="UnionTypeDefinition",i.ENUM_TYPE_DEFINITION="EnumTypeDefinition",i.ENUM_VALUE_DEFINITION="EnumValueDefinition",i.INPUT_OBJECT_TYPE_DEFINITION="InputObjectTypeDefinition",i.DIRECTIVE_DEFINITION="DirectiveDefinition",i.SCHEMA_EXTENSION="SchemaExtension",i.SCALAR_TYPE_EXTENSION="ScalarTypeExtension",i.OBJECT_TYPE_EXTENSION="ObjectTypeExtension",i.INTERFACE_TYPE_EXTENSION="InterfaceTypeExtension",i.UNION_TYPE_EXTENSION="UnionTypeExtension",i.ENUM_TYPE_EXTENSION="EnumTypeExtension",i.INPUT_OBJECT_TYPE_EXTENSION="InputObjectTypeExtension",i}(G||{});function Fa(i){return i===9||i===32}function lr(i){return i>=48&&i<=57}function Gh(i){return i>=97&&i<=122||i>=65&&i<=90}function zc(i){return Gh(i)||i===95}function $h(i){return Gh(i)||lr(i)||i===95}function Yh(i){var n;let e=Number.MAX_SAFE_INTEGER,t=null,r=-1;for(let a=0;as===0?a:a.slice(e)).slice((n=t)!==null&&n!==void 0?n:0,r+1)}function c_(i){let n=0;for(;n1&&t.slice(1).every(p=>p.length===0||Fa(p.charCodeAt(0))),a=e.endsWith('\\"""'),s=i.endsWith('"')&&!a,c=i.endsWith("\\"),l=s||c,d=!(n!=null&&n.minimize)&&(!r||i.length>70||l||o||a),h="",m=r&&Fa(i.charCodeAt(0));return(d&&!m||o)&&(h+=` +`),h+=e,(d||l)&&(h+=` +`),'"""'+h+'"""'}var k=function(i){return i.SOF="",i.EOF="",i.BANG="!",i.DOLLAR="$",i.AMP="&",i.PAREN_L="(",i.PAREN_R=")",i.SPREAD="...",i.COLON=":",i.EQUALS="=",i.AT="@",i.BRACKET_L="[",i.BRACKET_R="]",i.BRACE_L="{",i.PIPE="|",i.BRACE_R="}",i.NAME="Name",i.INT="Int",i.FLOAT="Float",i.STRING="String",i.BLOCK_STRING="BlockString",i.COMMENT="Comment",i}(k||{});var ao=class{constructor(n){let e=new cr(k.SOF,0,0,0,0);this.source=n,this.lastToken=e,this.token=e,this.line=1,this.lineStart=0}get[Symbol.toStringTag](){return"Lexer"}advance(){return this.lastToken=this.token,this.token=this.lookahead()}lookahead(){let n=this.token;if(n.kind!==k.EOF)do if(n.next)n=n.next;else{let e=l_(this,n.end);n.next=e,e.prev=n,n=e}while(n.kind===k.COMMENT);return n}};function Zh(i){return i===k.BANG||i===k.DOLLAR||i===k.AMP||i===k.PAREN_L||i===k.PAREN_R||i===k.SPREAD||i===k.COLON||i===k.EQUALS||i===k.AT||i===k.BRACKET_L||i===k.BRACKET_R||i===k.BRACE_L||i===k.PIPE||i===k.BRACE_R}function dr(i){return i>=0&&i<=55295||i>=57344&&i<=1114111}function Pa(i,n){return Jh(i.charCodeAt(n))&&em(i.charCodeAt(n+1))}function Jh(i){return i>=55296&&i<=56319}function em(i){return i>=56320&&i<=57343}function wn(i,n){let e=i.source.body.codePointAt(n);if(e===void 0)return k.EOF;if(e>=32&&e<=126){let t=String.fromCodePoint(e);return t==='"'?`'"'`:`"${t}"`}return"U+"+e.toString(16).toUpperCase().padStart(4,"0")}function lt(i,n,e,t,r){let o=i.line,a=1+e-i.lineStart;return new cr(n,e,t,o,a,r)}function l_(i,n){let e=i.source.body,t=e.length,r=n;for(;r=48&&i<=57?i-48:i>=65&&i<=70?i-55:i>=97&&i<=102?i-87:-1}function f_(i,n){let e=i.source.body;switch(e.charCodeAt(n+1)){case 34:return{value:'"',size:2};case 92:return{value:"\\",size:2};case 47:return{value:"/",size:2};case 98:return{value:"\b",size:2};case 102:return{value:"\f",size:2};case 110:return{value:` +`,size:2};case 114:return{value:"\r",size:2};case 116:return{value:" ",size:2}}throw ct(i.source,n,`Invalid character escape sequence: "${e.slice(n,n+2)}".`)}function g_(i,n){let e=i.source.body,t=e.length,r=i.lineStart,o=n+3,a=o,s="",c=[];for(;o2?"["+w_(i)+"]":"{ "+e.map(([r,o])=>r+": "+Na(o,n)).join(", ")+" }"}function x_(i,n){if(i.length===0)return"[]";if(n.length>2)return"[Array]";let e=Math.min(10,i.length),t=i.length-e,r=[];for(let o=0;o1&&r.push(`... ${t} more items`),"["+r.join(", ")+"]"}function w_(i){let n=Object.prototype.toString.call(i).replace(/^\[object /,"").replace(/]$/,"");if(n==="Object"&&typeof i.constructor=="function"){let e=i.constructor.name;if(typeof e=="string"&&e!=="")return e}return n}var C_=globalThis.process&&!0,tm=C_?function(n,e){return n instanceof e}:function(n,e){if(n instanceof e)return!0;if(typeof n=="object"&&n!==null){var t;let r=e.prototype[Symbol.toStringTag],o=Symbol.toStringTag in n?n[Symbol.toStringTag]:(t=n.constructor)===null||t===void 0?void 0:t.name;if(r===o){let a=ur(n);throw new Error(`Cannot use ${r} "${a}" from another module or realm. + +Ensure that there is only one instance of "graphql" in the node_modules +directory. If different versions of "graphql" are the dependencies of other +relied on modules, use "resolutions" to ensure only one version is installed. + +https://yarnpkg.com/en/docs/selective-version-resolutions + +Duplicate "graphql" modules cannot be used at the same time since different +versions may have different capabilities and behavior. The data from one +version used in the function from another could produce confusing and +spurious results.`)}}return!1};var hr=class{constructor(n,e="GraphQL request",t={line:1,column:1}){typeof n=="string"||ar(!1,`Body must be a string. Received: ${ur(n)}.`),this.body=n,this.name=e,this.locationOffset=t,this.locationOffset.line>0||ar(!1,"line in locationOffset is 1-indexed and must be positive."),this.locationOffset.column>0||ar(!1,"column in locationOffset is 1-indexed and must be positive.")}get[Symbol.toStringTag](){return"Source"}};function im(i){return tm(i,hr)}function ja(i,n){return new Qc(i,n).parseDocument()}var Qc=class{constructor(n,e={}){let t=im(n)?n:new hr(n);this._lexer=new ao(t),this._options=e,this._tokenCounter=0}parseName(){let n=this.expectToken(k.NAME);return this.node(n,{kind:G.NAME,value:n.value})}parseDocument(){return this.node(this._lexer.token,{kind:G.DOCUMENT,definitions:this.many(k.SOF,this.parseDefinition,k.EOF)})}parseDefinition(){if(this.peek(k.BRACE_L))return this.parseOperationDefinition();let n=this.peekDescription(),e=n?this._lexer.lookahead():this._lexer.token;if(e.kind===k.NAME){switch(e.value){case"schema":return this.parseSchemaDefinition();case"scalar":return this.parseScalarTypeDefinition();case"type":return this.parseObjectTypeDefinition();case"interface":return this.parseInterfaceTypeDefinition();case"union":return this.parseUnionTypeDefinition();case"enum":return this.parseEnumTypeDefinition();case"input":return this.parseInputObjectTypeDefinition();case"directive":return this.parseDirectiveDefinition()}if(n)throw ct(this._lexer.source,this._lexer.token.start,"Unexpected description, descriptions are supported only on type definitions.");switch(e.value){case"query":case"mutation":case"subscription":return this.parseOperationDefinition();case"fragment":return this.parseFragmentDefinition();case"extend":return this.parseTypeSystemExtension()}}throw this.unexpected(e)}parseOperationDefinition(){let n=this._lexer.token;if(this.peek(k.BRACE_L))return this.node(n,{kind:G.OPERATION_DEFINITION,operation:xn.QUERY,name:void 0,variableDefinitions:[],directives:[],selectionSet:this.parseSelectionSet()});let e=this.parseOperationType(),t;return this.peek(k.NAME)&&(t=this.parseName()),this.node(n,{kind:G.OPERATION_DEFINITION,operation:e,name:t,variableDefinitions:this.parseVariableDefinitions(),directives:this.parseDirectives(!1),selectionSet:this.parseSelectionSet()})}parseOperationType(){let n=this.expectToken(k.NAME);switch(n.value){case"query":return xn.QUERY;case"mutation":return xn.MUTATION;case"subscription":return xn.SUBSCRIPTION}throw this.unexpected(n)}parseVariableDefinitions(){return this.optionalMany(k.PAREN_L,this.parseVariableDefinition,k.PAREN_R)}parseVariableDefinition(){return this.node(this._lexer.token,{kind:G.VARIABLE_DEFINITION,variable:this.parseVariable(),type:(this.expectToken(k.COLON),this.parseTypeReference()),defaultValue:this.expectOptionalToken(k.EQUALS)?this.parseConstValueLiteral():void 0,directives:this.parseConstDirectives()})}parseVariable(){let n=this._lexer.token;return this.expectToken(k.DOLLAR),this.node(n,{kind:G.VARIABLE,name:this.parseName()})}parseSelectionSet(){return this.node(this._lexer.token,{kind:G.SELECTION_SET,selections:this.many(k.BRACE_L,this.parseSelection,k.BRACE_R)})}parseSelection(){return this.peek(k.SPREAD)?this.parseFragment():this.parseField()}parseField(){let n=this._lexer.token,e=this.parseName(),t,r;return this.expectOptionalToken(k.COLON)?(t=e,r=this.parseName()):r=e,this.node(n,{kind:G.FIELD,alias:t,name:r,arguments:this.parseArguments(!1),directives:this.parseDirectives(!1),selectionSet:this.peek(k.BRACE_L)?this.parseSelectionSet():void 0})}parseArguments(n){let e=n?this.parseConstArgument:this.parseArgument;return this.optionalMany(k.PAREN_L,e,k.PAREN_R)}parseArgument(n=!1){let e=this._lexer.token,t=this.parseName();return this.expectToken(k.COLON),this.node(e,{kind:G.ARGUMENT,name:t,value:this.parseValueLiteral(n)})}parseConstArgument(){return this.parseArgument(!0)}parseFragment(){let n=this._lexer.token;this.expectToken(k.SPREAD);let e=this.expectOptionalKeyword("on");return!e&&this.peek(k.NAME)?this.node(n,{kind:G.FRAGMENT_SPREAD,name:this.parseFragmentName(),directives:this.parseDirectives(!1)}):this.node(n,{kind:G.INLINE_FRAGMENT,typeCondition:e?this.parseNamedType():void 0,directives:this.parseDirectives(!1),selectionSet:this.parseSelectionSet()})}parseFragmentDefinition(){let n=this._lexer.token;return this.expectKeyword("fragment"),this._options.allowLegacyFragmentVariables===!0?this.node(n,{kind:G.FRAGMENT_DEFINITION,name:this.parseFragmentName(),variableDefinitions:this.parseVariableDefinitions(),typeCondition:(this.expectKeyword("on"),this.parseNamedType()),directives:this.parseDirectives(!1),selectionSet:this.parseSelectionSet()}):this.node(n,{kind:G.FRAGMENT_DEFINITION,name:this.parseFragmentName(),typeCondition:(this.expectKeyword("on"),this.parseNamedType()),directives:this.parseDirectives(!1),selectionSet:this.parseSelectionSet()})}parseFragmentName(){if(this._lexer.token.value==="on")throw this.unexpected();return this.parseName()}parseValueLiteral(n){let e=this._lexer.token;switch(e.kind){case k.BRACKET_L:return this.parseList(n);case k.BRACE_L:return this.parseObject(n);case k.INT:return this.advanceLexer(),this.node(e,{kind:G.INT,value:e.value});case k.FLOAT:return this.advanceLexer(),this.node(e,{kind:G.FLOAT,value:e.value});case k.STRING:case k.BLOCK_STRING:return this.parseStringLiteral();case k.NAME:switch(this.advanceLexer(),e.value){case"true":return this.node(e,{kind:G.BOOLEAN,value:!0});case"false":return this.node(e,{kind:G.BOOLEAN,value:!1});case"null":return this.node(e,{kind:G.NULL});default:return this.node(e,{kind:G.ENUM,value:e.value})}case k.DOLLAR:if(n)if(this.expectToken(k.DOLLAR),this._lexer.token.kind===k.NAME){let t=this._lexer.token.value;throw ct(this._lexer.source,e.start,`Unexpected variable "$${t}" in constant value.`)}else throw this.unexpected(e);return this.parseVariable();default:throw this.unexpected()}}parseConstValueLiteral(){return this.parseValueLiteral(!0)}parseStringLiteral(){let n=this._lexer.token;return this.advanceLexer(),this.node(n,{kind:G.STRING,value:n.value,block:n.kind===k.BLOCK_STRING})}parseList(n){let e=()=>this.parseValueLiteral(n);return this.node(this._lexer.token,{kind:G.LIST,values:this.any(k.BRACKET_L,e,k.BRACKET_R)})}parseObject(n){let e=()=>this.parseObjectField(n);return this.node(this._lexer.token,{kind:G.OBJECT,fields:this.any(k.BRACE_L,e,k.BRACE_R)})}parseObjectField(n){let e=this._lexer.token,t=this.parseName();return this.expectToken(k.COLON),this.node(e,{kind:G.OBJECT_FIELD,name:t,value:this.parseValueLiteral(n)})}parseDirectives(n){let e=[];for(;this.peek(k.AT);)e.push(this.parseDirective(n));return e}parseConstDirectives(){return this.parseDirectives(!0)}parseDirective(n){let e=this._lexer.token;return this.expectToken(k.AT),this.node(e,{kind:G.DIRECTIVE,name:this.parseName(),arguments:this.parseArguments(n)})}parseTypeReference(){let n=this._lexer.token,e;if(this.expectOptionalToken(k.BRACKET_L)){let t=this.parseTypeReference();this.expectToken(k.BRACKET_R),e=this.node(n,{kind:G.LIST_TYPE,type:t})}else e=this.parseNamedType();return this.expectOptionalToken(k.BANG)?this.node(n,{kind:G.NON_NULL_TYPE,type:e}):e}parseNamedType(){return this.node(this._lexer.token,{kind:G.NAMED_TYPE,name:this.parseName()})}peekDescription(){return this.peek(k.STRING)||this.peek(k.BLOCK_STRING)}parseDescription(){if(this.peekDescription())return this.parseStringLiteral()}parseSchemaDefinition(){let n=this._lexer.token,e=this.parseDescription();this.expectKeyword("schema");let t=this.parseConstDirectives(),r=this.many(k.BRACE_L,this.parseOperationTypeDefinition,k.BRACE_R);return this.node(n,{kind:G.SCHEMA_DEFINITION,description:e,directives:t,operationTypes:r})}parseOperationTypeDefinition(){let n=this._lexer.token,e=this.parseOperationType();this.expectToken(k.COLON);let t=this.parseNamedType();return this.node(n,{kind:G.OPERATION_TYPE_DEFINITION,operation:e,type:t})}parseScalarTypeDefinition(){let n=this._lexer.token,e=this.parseDescription();this.expectKeyword("scalar");let t=this.parseName(),r=this.parseConstDirectives();return this.node(n,{kind:G.SCALAR_TYPE_DEFINITION,description:e,name:t,directives:r})}parseObjectTypeDefinition(){let n=this._lexer.token,e=this.parseDescription();this.expectKeyword("type");let t=this.parseName(),r=this.parseImplementsInterfaces(),o=this.parseConstDirectives(),a=this.parseFieldsDefinition();return this.node(n,{kind:G.OBJECT_TYPE_DEFINITION,description:e,name:t,interfaces:r,directives:o,fields:a})}parseImplementsInterfaces(){return this.expectOptionalKeyword("implements")?this.delimitedMany(k.AMP,this.parseNamedType):[]}parseFieldsDefinition(){return this.optionalMany(k.BRACE_L,this.parseFieldDefinition,k.BRACE_R)}parseFieldDefinition(){let n=this._lexer.token,e=this.parseDescription(),t=this.parseName(),r=this.parseArgumentDefs();this.expectToken(k.COLON);let o=this.parseTypeReference(),a=this.parseConstDirectives();return this.node(n,{kind:G.FIELD_DEFINITION,description:e,name:t,arguments:r,type:o,directives:a})}parseArgumentDefs(){return this.optionalMany(k.PAREN_L,this.parseInputValueDef,k.PAREN_R)}parseInputValueDef(){let n=this._lexer.token,e=this.parseDescription(),t=this.parseName();this.expectToken(k.COLON);let r=this.parseTypeReference(),o;this.expectOptionalToken(k.EQUALS)&&(o=this.parseConstValueLiteral());let a=this.parseConstDirectives();return this.node(n,{kind:G.INPUT_VALUE_DEFINITION,description:e,name:t,type:r,defaultValue:o,directives:a})}parseInterfaceTypeDefinition(){let n=this._lexer.token,e=this.parseDescription();this.expectKeyword("interface");let t=this.parseName(),r=this.parseImplementsInterfaces(),o=this.parseConstDirectives(),a=this.parseFieldsDefinition();return this.node(n,{kind:G.INTERFACE_TYPE_DEFINITION,description:e,name:t,interfaces:r,directives:o,fields:a})}parseUnionTypeDefinition(){let n=this._lexer.token,e=this.parseDescription();this.expectKeyword("union");let t=this.parseName(),r=this.parseConstDirectives(),o=this.parseUnionMemberTypes();return this.node(n,{kind:G.UNION_TYPE_DEFINITION,description:e,name:t,directives:r,types:o})}parseUnionMemberTypes(){return this.expectOptionalToken(k.EQUALS)?this.delimitedMany(k.PIPE,this.parseNamedType):[]}parseEnumTypeDefinition(){let n=this._lexer.token,e=this.parseDescription();this.expectKeyword("enum");let t=this.parseName(),r=this.parseConstDirectives(),o=this.parseEnumValuesDefinition();return this.node(n,{kind:G.ENUM_TYPE_DEFINITION,description:e,name:t,directives:r,values:o})}parseEnumValuesDefinition(){return this.optionalMany(k.BRACE_L,this.parseEnumValueDefinition,k.BRACE_R)}parseEnumValueDefinition(){let n=this._lexer.token,e=this.parseDescription(),t=this.parseEnumValueName(),r=this.parseConstDirectives();return this.node(n,{kind:G.ENUM_VALUE_DEFINITION,description:e,name:t,directives:r})}parseEnumValueName(){if(this._lexer.token.value==="true"||this._lexer.token.value==="false"||this._lexer.token.value==="null")throw ct(this._lexer.source,this._lexer.token.start,`${La(this._lexer.token)} is reserved and cannot be used for an enum value.`);return this.parseName()}parseInputObjectTypeDefinition(){let n=this._lexer.token,e=this.parseDescription();this.expectKeyword("input");let t=this.parseName(),r=this.parseConstDirectives(),o=this.parseInputFieldsDefinition();return this.node(n,{kind:G.INPUT_OBJECT_TYPE_DEFINITION,description:e,name:t,directives:r,fields:o})}parseInputFieldsDefinition(){return this.optionalMany(k.BRACE_L,this.parseInputValueDef,k.BRACE_R)}parseTypeSystemExtension(){let n=this._lexer.lookahead();if(n.kind===k.NAME)switch(n.value){case"schema":return this.parseSchemaExtension();case"scalar":return this.parseScalarTypeExtension();case"type":return this.parseObjectTypeExtension();case"interface":return this.parseInterfaceTypeExtension();case"union":return this.parseUnionTypeExtension();case"enum":return this.parseEnumTypeExtension();case"input":return this.parseInputObjectTypeExtension()}throw this.unexpected(n)}parseSchemaExtension(){let n=this._lexer.token;this.expectKeyword("extend"),this.expectKeyword("schema");let e=this.parseConstDirectives(),t=this.optionalMany(k.BRACE_L,this.parseOperationTypeDefinition,k.BRACE_R);if(e.length===0&&t.length===0)throw this.unexpected();return this.node(n,{kind:G.SCHEMA_EXTENSION,directives:e,operationTypes:t})}parseScalarTypeExtension(){let n=this._lexer.token;this.expectKeyword("extend"),this.expectKeyword("scalar");let e=this.parseName(),t=this.parseConstDirectives();if(t.length===0)throw this.unexpected();return this.node(n,{kind:G.SCALAR_TYPE_EXTENSION,name:e,directives:t})}parseObjectTypeExtension(){let n=this._lexer.token;this.expectKeyword("extend"),this.expectKeyword("type");let e=this.parseName(),t=this.parseImplementsInterfaces(),r=this.parseConstDirectives(),o=this.parseFieldsDefinition();if(t.length===0&&r.length===0&&o.length===0)throw this.unexpected();return this.node(n,{kind:G.OBJECT_TYPE_EXTENSION,name:e,interfaces:t,directives:r,fields:o})}parseInterfaceTypeExtension(){let n=this._lexer.token;this.expectKeyword("extend"),this.expectKeyword("interface");let e=this.parseName(),t=this.parseImplementsInterfaces(),r=this.parseConstDirectives(),o=this.parseFieldsDefinition();if(t.length===0&&r.length===0&&o.length===0)throw this.unexpected();return this.node(n,{kind:G.INTERFACE_TYPE_EXTENSION,name:e,interfaces:t,directives:r,fields:o})}parseUnionTypeExtension(){let n=this._lexer.token;this.expectKeyword("extend"),this.expectKeyword("union");let e=this.parseName(),t=this.parseConstDirectives(),r=this.parseUnionMemberTypes();if(t.length===0&&r.length===0)throw this.unexpected();return this.node(n,{kind:G.UNION_TYPE_EXTENSION,name:e,directives:t,types:r})}parseEnumTypeExtension(){let n=this._lexer.token;this.expectKeyword("extend"),this.expectKeyword("enum");let e=this.parseName(),t=this.parseConstDirectives(),r=this.parseEnumValuesDefinition();if(t.length===0&&r.length===0)throw this.unexpected();return this.node(n,{kind:G.ENUM_TYPE_EXTENSION,name:e,directives:t,values:r})}parseInputObjectTypeExtension(){let n=this._lexer.token;this.expectKeyword("extend"),this.expectKeyword("input");let e=this.parseName(),t=this.parseConstDirectives(),r=this.parseInputFieldsDefinition();if(t.length===0&&r.length===0)throw this.unexpected();return this.node(n,{kind:G.INPUT_OBJECT_TYPE_EXTENSION,name:e,directives:t,fields:r})}parseDirectiveDefinition(){let n=this._lexer.token,e=this.parseDescription();this.expectKeyword("directive"),this.expectToken(k.AT);let t=this.parseName(),r=this.parseArgumentDefs(),o=this.expectOptionalKeyword("repeatable");this.expectKeyword("on");let a=this.parseDirectiveLocations();return this.node(n,{kind:G.DIRECTIVE_DEFINITION,description:e,name:t,arguments:r,repeatable:o,locations:a})}parseDirectiveLocations(){return this.delimitedMany(k.PIPE,this.parseDirectiveLocation)}parseDirectiveLocation(){let n=this._lexer.token,e=this.parseName();if(Object.prototype.hasOwnProperty.call(Ra,e.value))return e;throw this.unexpected(n)}node(n,e){return this._options.noLocation!==!0&&(e.loc=new ro(n,this._lexer.lastToken,this._lexer.source)),e}peek(n){return this._lexer.token.kind===n}expectToken(n){let e=this._lexer.token;if(e.kind===n)return this.advanceLexer(),e;throw ct(this._lexer.source,e.start,`Expected ${nm(n)}, found ${La(e)}.`)}expectOptionalToken(n){return this._lexer.token.kind===n?(this.advanceLexer(),!0):!1}expectKeyword(n){let e=this._lexer.token;if(e.kind===k.NAME&&e.value===n)this.advanceLexer();else throw ct(this._lexer.source,e.start,`Expected "${n}", found ${La(e)}.`)}expectOptionalKeyword(n){let e=this._lexer.token;return e.kind===k.NAME&&e.value===n?(this.advanceLexer(),!0):!1}unexpected(n){let e=n??this._lexer.token;return ct(this._lexer.source,e.start,`Unexpected ${La(e)}.`)}any(n,e,t){this.expectToken(n);let r=[];for(;!this.expectOptionalToken(t);)r.push(e.call(this));return r}optionalMany(n,e,t){if(this.expectOptionalToken(n)){let r=[];do r.push(e.call(this));while(!this.expectOptionalToken(t));return r}return[]}many(n,e,t){this.expectToken(n);let r=[];do r.push(e.call(this));while(!this.expectOptionalToken(t));return r}delimitedMany(n,e){this.expectOptionalToken(n);let t=[];do t.push(e.call(this));while(this.expectOptionalToken(n));return t}advanceLexer(){let{maxTokens:n}=this._options,e=this._lexer.advance();if(n!==void 0&&e.kind!==k.EOF&&(++this._tokenCounter,this._tokenCounter>n))throw ct(this._lexer.source,e.start,`Document contains more that ${n} tokens. Parsing aborted.`)}};function La(i){let n=i.value;return nm(i.kind)+(n!=null?` "${n}"`:"")}function nm(i){return Zh(i)?`"${i}"`:i}function rm(i){return`"${i.replace(k_,D_)}"`}var k_=/[\x00-\x1f\x22\x5c\x7f-\x9f]/g;function D_(i){return E_[i.charCodeAt(0)]}var E_=["\\u0000","\\u0001","\\u0002","\\u0003","\\u0004","\\u0005","\\u0006","\\u0007","\\b","\\t","\\n","\\u000B","\\f","\\r","\\u000E","\\u000F","\\u0010","\\u0011","\\u0012","\\u0013","\\u0014","\\u0015","\\u0016","\\u0017","\\u0018","\\u0019","\\u001A","\\u001B","\\u001C","\\u001D","\\u001E","\\u001F","","",'\\"',"","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","\\\\","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","\\u007F","\\u0080","\\u0081","\\u0082","\\u0083","\\u0084","\\u0085","\\u0086","\\u0087","\\u0088","\\u0089","\\u008A","\\u008B","\\u008C","\\u008D","\\u008E","\\u008F","\\u0090","\\u0091","\\u0092","\\u0093","\\u0094","\\u0095","\\u0096","\\u0097","\\u0098","\\u0099","\\u009A","\\u009B","\\u009C","\\u009D","\\u009E","\\u009F"];var Cn=Object.freeze({});function wt(i,n,e=Vc){let t=new Map;for(let v of Object.values(G))t.set(v,Uc(n,v));let r,o=Array.isArray(i),a=[i],s=-1,c=[],l=i,d,h,m=[],p=[];do{s++;let v=s===a.length,M=v&&c.length!==0;if(v){if(d=p.length===0?void 0:m[m.length-1],l=h,h=p.pop(),M)if(o){l=l.slice();let q=0;for(let[U,J]of c){let be=U-q;J===null?(l.splice(be,1),q++):l[be]=J}}else{l=Object.defineProperties({},Object.getOwnPropertyDescriptors(l));for(let[q,U]of c)l[q]=U}s=r.index,a=r.keys,c=r.edits,o=r.inArray,r=r.prev}else if(h){if(d=o?s:a[s],l=h[d],l==null)continue;m.push(d)}let y;if(!Array.isArray(l)){var f,g;Bc(l)||ar(!1,`Invalid AST Node: ${ur(l)}.`);let q=v?(f=t.get(l.kind))===null||f===void 0?void 0:f.leave:(g=t.get(l.kind))===null||g===void 0?void 0:g.enter;if(y=q?.call(n,l,d,h,m,p),y===Cn)break;if(y===!1){if(!v){m.pop();continue}}else if(y!==void 0&&(c.push([d,y]),!v))if(Bc(y))l=y;else{m.pop();continue}}if(y===void 0&&M&&c.push([d,l]),v)m.pop();else{var _;r={inArray:o,index:s,keys:a,edits:c,prev:r},o=Array.isArray(l),a=o?l:(_=e[l.kind])!==null&&_!==void 0?_:[],s=-1,c=[],h&&p.push(h),h=l}}while(r!==void 0);return c.length!==0?c[c.length-1][1]:i}function Uc(i,n){let e=i[n];return typeof e=="object"?e:typeof e=="function"?{enter:e,leave:void 0}:{enter:i.enter,leave:i.leave}}function mr(i){return wt(i,S_)}var I_=80,S_={Name:{leave:i=>i.value},Variable:{leave:i=>"$"+i.name},Document:{leave:i=>X(i.definitions,` + +`)},OperationDefinition:{leave(i){let n=De("(",X(i.variableDefinitions,", "),")"),e=X([i.operation,X([i.name,n]),X(i.directives," ")]," ");return(e==="query"?"":e+" ")+i.selectionSet}},VariableDefinition:{leave:({variable:i,type:n,defaultValue:e,directives:t})=>i+": "+n+De(" = ",e)+De(" ",X(t," "))},SelectionSet:{leave:({selections:i})=>si(i)},Field:{leave({alias:i,name:n,arguments:e,directives:t,selectionSet:r}){let o=De("",i,": ")+n,a=o+De("(",X(e,", "),")");return a.length>I_&&(a=o+De(`( +`,Va(X(e,` +`)),` +)`)),X([a,X(t," "),r]," ")}},Argument:{leave:({name:i,value:n})=>i+": "+n},FragmentSpread:{leave:({name:i,directives:n})=>"..."+i+De(" ",X(n," "))},InlineFragment:{leave:({typeCondition:i,directives:n,selectionSet:e})=>X(["...",De("on ",i),X(n," "),e]," ")},FragmentDefinition:{leave:({name:i,typeCondition:n,variableDefinitions:e,directives:t,selectionSet:r})=>`fragment ${i}${De("(",X(e,", "),")")} on ${n} ${De("",X(t," ")," ")}`+r},IntValue:{leave:({value:i})=>i},FloatValue:{leave:({value:i})=>i},StringValue:{leave:({value:i,block:n})=>n?Kh(i):rm(i)},BooleanValue:{leave:({value:i})=>i?"true":"false"},NullValue:{leave:()=>"null"},EnumValue:{leave:({value:i})=>i},ListValue:{leave:({values:i})=>"["+X(i,", ")+"]"},ObjectValue:{leave:({fields:i})=>"{"+X(i,", ")+"}"},ObjectField:{leave:({name:i,value:n})=>i+": "+n},Directive:{leave:({name:i,arguments:n})=>"@"+i+De("(",X(n,", "),")")},NamedType:{leave:({name:i})=>i},ListType:{leave:({type:i})=>"["+i+"]"},NonNullType:{leave:({type:i})=>i+"!"},SchemaDefinition:{leave:({description:i,directives:n,operationTypes:e})=>De("",i,` +`)+X(["schema",X(n," "),si(e)]," ")},OperationTypeDefinition:{leave:({operation:i,type:n})=>i+": "+n},ScalarTypeDefinition:{leave:({description:i,name:n,directives:e})=>De("",i,` +`)+X(["scalar",n,X(e," ")]," ")},ObjectTypeDefinition:{leave:({description:i,name:n,interfaces:e,directives:t,fields:r})=>De("",i,` +`)+X(["type",n,De("implements ",X(e," & ")),X(t," "),si(r)]," ")},FieldDefinition:{leave:({description:i,name:n,arguments:e,type:t,directives:r})=>De("",i,` +`)+n+(om(e)?De(`( +`,Va(X(e,` +`)),` +)`):De("(",X(e,", "),")"))+": "+t+De(" ",X(r," "))},InputValueDefinition:{leave:({description:i,name:n,type:e,defaultValue:t,directives:r})=>De("",i,` +`)+X([n+": "+e,De("= ",t),X(r," ")]," ")},InterfaceTypeDefinition:{leave:({description:i,name:n,interfaces:e,directives:t,fields:r})=>De("",i,` +`)+X(["interface",n,De("implements ",X(e," & ")),X(t," "),si(r)]," ")},UnionTypeDefinition:{leave:({description:i,name:n,directives:e,types:t})=>De("",i,` +`)+X(["union",n,X(e," "),De("= ",X(t," | "))]," ")},EnumTypeDefinition:{leave:({description:i,name:n,directives:e,values:t})=>De("",i,` +`)+X(["enum",n,X(e," "),si(t)]," ")},EnumValueDefinition:{leave:({description:i,name:n,directives:e})=>De("",i,` +`)+X([n,X(e," ")]," ")},InputObjectTypeDefinition:{leave:({description:i,name:n,directives:e,fields:t})=>De("",i,` +`)+X(["input",n,X(e," "),si(t)]," ")},DirectiveDefinition:{leave:({description:i,name:n,arguments:e,repeatable:t,locations:r})=>De("",i,` +`)+"directive @"+n+(om(e)?De(`( +`,Va(X(e,` +`)),` +)`):De("(",X(e,", "),")"))+(t?" repeatable":"")+" on "+X(r," | ")},SchemaExtension:{leave:({directives:i,operationTypes:n})=>X(["extend schema",X(i," "),si(n)]," ")},ScalarTypeExtension:{leave:({name:i,directives:n})=>X(["extend scalar",i,X(n," ")]," ")},ObjectTypeExtension:{leave:({name:i,interfaces:n,directives:e,fields:t})=>X(["extend type",i,De("implements ",X(n," & ")),X(e," "),si(t)]," ")},InterfaceTypeExtension:{leave:({name:i,interfaces:n,directives:e,fields:t})=>X(["extend interface",i,De("implements ",X(n," & ")),X(e," "),si(t)]," ")},UnionTypeExtension:{leave:({name:i,directives:n,types:e})=>X(["extend union",i,X(n," "),De("= ",X(e," | "))]," ")},EnumTypeExtension:{leave:({name:i,directives:n,values:e})=>X(["extend enum",i,X(n," "),si(e)]," ")},InputObjectTypeExtension:{leave:({name:i,directives:n,fields:e})=>X(["extend input",i,X(n," "),si(e)]," ")}};function X(i,n=""){var e;return(e=i?.filter(t=>t).join(n))!==null&&e!==void 0?e:""}function si(i){return De(`{ +`,Va(X(i,` +`)),` +}`)}function De(i,n,e=""){return n!=null&&n!==""?i+n+e:""}function Va(i){return De(" ",i.replace(/\n/g,` + `))}function om(i){var n;return(n=i?.some(e=>e.includes(` +`)))!==null&&n!==void 0?n:!1}function so(i){return i.kind===G.FIELD||i.kind===G.FRAGMENT_SPREAD||i.kind===G.INLINE_FRAGMENT}function ci(i,n){var e=i.directives;return!e||!e.length?!0:am(e).every(function(t){var r=t.directive,o=t.ifArgument,a=!1;return o.value.kind==="Variable"?(a=n&&n[o.value.name.value],Y(a!==void 0,70,r.name.value)):a=o.value.value,r.name.value==="skip"?!a:a})}function Ei(i,n,e){var t=new Set(i),r=t.size;return wt(n,{Directive:function(o){if(t.delete(o.name.value)&&(!e||!t.size))return Cn}}),e?!t.size:t.sizeObject.create(null),{forEach:q_,slice:sm}=Array.prototype,{hasOwnProperty:W_}=Object.prototype,Qt=class i{constructor(n=!0,e=U_){this.weakness=n,this.makeData=e}lookup(){return this.lookupArray(arguments)}lookupArray(n){let e=this;return q_.call(n,t=>e=e.getChildTrie(t)),W_.call(e,"data")?e.data:e.data=this.makeData(sm.call(n))}peek(){return this.peekArray(arguments)}peekArray(n){let e=this;for(let t=0,r=n.length;e&&t=0})||!1;function Ie(i){return i!==null&&typeof i=="object"}function Gc(i,n){var e=n,t=[];i.definitions.forEach(function(o){if(o.kind==="OperationDefinition")throw Be(74,o.operation,o.name?" named '".concat(o.name.value,"'"):"");o.kind==="FragmentDefinition"&&t.push(o)}),typeof e>"u"&&(Y(t.length===1,75,t.length),e=t[0].name.value);var r=b(b({},i),{definitions:at([{kind:"OperationDefinition",operation:"query",selectionSet:{kind:"SelectionSet",selections:[{kind:"FragmentSpread",name:{kind:"Name",value:e}}]}}],i.definitions,!0)});return r}function Ii(i){i===void 0&&(i=[]);var n={};return i.forEach(function(e){n[e.name.value]=e}),n}function Si(i,n){switch(i.kind){case"InlineFragment":return i;case"FragmentSpread":{var e=i.name.value;if(typeof n=="function")return n(e);var t=n&&n[e];return Y(t,76,e),t||null}default:return null}}function Y_(){}var $i=class{constructor(n=1/0,e=Y_){this.max=n,this.dispose=e,this.map=new Map,this.newest=null,this.oldest=null}has(n){return this.map.has(n)}get(n){let e=this.getNode(n);return e&&e.value}get size(){return this.map.size}getNode(n){let e=this.map.get(n);if(e&&e!==this.newest){let{older:t,newer:r}=e;r&&(r.older=t),t&&(t.newer=r),e.older=this.newest,e.older.newer=e,e.newer=null,this.newest=e,e===this.oldest&&(this.oldest=r)}return e}set(n,e){let t=this.getNode(n);return t?t.value=e:(t={key:n,value:e,newer:null,older:this.newest},this.newest&&(this.newest.newer=t),this.newest=t,this.oldest=this.oldest||t,this.map.set(n,t),t.value)}clean(){for(;this.oldest&&this.map.size>this.max;)this.delete(this.oldest.key)}delete(n){let e=this.map.get(n);return e?(e===this.newest&&(this.newest=e.older),e===this.oldest&&(this.oldest=e.newer),e.newer&&(e.newer.older=e.older),e.older&&(e.older.newer=e.newer),this.map.delete(n),this.dispose(e.value,n),!0):!1}};function $c(){}var K_=$c,X_=typeof WeakRef<"u"?WeakRef:function(i){return{deref:()=>i}},Z_=typeof WeakMap<"u"?WeakMap:Map,J_=typeof FinalizationRegistry<"u"?FinalizationRegistry:function(){return{register:$c,unregister:$c}},ey=10024,vi=class{constructor(n=1/0,e=K_){this.max=n,this.dispose=e,this.map=new Z_,this.newest=null,this.oldest=null,this.unfinalizedNodes=new Set,this.finalizationScheduled=!1,this.size=0,this.finalize=()=>{let t=this.unfinalizedNodes.values();for(let r=0;r0?queueMicrotask(this.finalize):this.finalizationScheduled=!1},this.registry=new J_(this.deleteNode.bind(this))}has(n){return this.map.has(n)}get(n){let e=this.getNode(n);return e&&e.value}getNode(n){let e=this.map.get(n);if(e&&e!==this.newest){let{older:t,newer:r}=e;r&&(r.older=t),t&&(t.newer=r),e.older=this.newest,e.older.newer=e,e.newer=null,this.newest=e,e===this.oldest&&(this.oldest=r)}return e}set(n,e){let t=this.getNode(n);return t?t.value=e:(t={key:n,value:e,newer:null,older:this.newest},this.newest&&(this.newest.newer=t),this.newest=t,this.oldest=this.oldest||t,this.scheduleFinalization(t),this.map.set(n,t),this.size++,t.value)}clean(){for(;this.oldest&&this.size>this.max;)this.deleteNode(this.oldest)}deleteNode(n){n===this.newest&&(this.newest=n.older),n===this.oldest&&(this.oldest=n.newer),n.newer&&(n.newer.older=n.older),n.older&&(n.older.newer=n.newer),this.size--;let e=n.key||n.keyRef&&n.keyRef.deref();this.dispose(n.value,e),n.keyRef?this.registry.unregister(n):this.unfinalizedNodes.delete(n),e&&this.map.delete(e)}delete(n){let e=this.map.get(n);return e?(this.deleteNode(e),!0):!1}scheduleFinalization(n){this.unfinalizedNodes.add(n),this.finalizationScheduled||(this.finalizationScheduled=!0,queueMicrotask(this.finalize))}};var Yc=new WeakSet;function cm(i){i.size<=(i.max||-1)||Yc.has(i)||(Yc.add(i),setTimeout(function(){i.clean(),Yc.delete(i)},100))}var pr=function(i,n){var e=new vi(i,n);return e.set=function(t,r){var o=vi.prototype.set.call(this,t,r);return cm(this),o},e},za=function(i,n){var e=new $i(i,n);return e.set=function(t,r){var o=$i.prototype.set.call(this,t,r);return cm(this),o},e};var ty=Symbol.for("apollo.cacheSize"),dt=b({},or[ty]);var kn={};function Ha(i,n){kn[i]=n}var lm=globalThis.__DEV__!==!1?ny:void 0,dm=globalThis.__DEV__!==!1?ry:void 0,um=globalThis.__DEV__!==!1?hm:void 0;function iy(){var i={parser:1e3,canonicalStringify:1e3,print:2e3,"documentTransform.cache":2e3,"queryManager.getDocumentInfo":2e3,"PersistedQueryLink.persistedQueryHashes":2e3,"fragmentRegistry.transform":2e3,"fragmentRegistry.lookup":1e3,"fragmentRegistry.findFragmentSpreads":4e3,"cache.fragmentQueryDocuments":1e3,"removeTypenameFromVariables.getVariableDefinitions":2e3,"inMemoryCache.maybeBroadcastWatch":5e3,"inMemoryCache.executeSelectionSet":5e4,"inMemoryCache.executeSubSelectedArray":1e4};return Object.fromEntries(Object.entries(i).map(function(n){var e=n[0],t=n[1];return[e,dt[e]||t]}))}function ny(){var i,n,e,t,r;if(globalThis.__DEV__===!1)throw new Error("only supported in development mode");return{limits:iy(),sizes:b({print:(i=kn.print)===null||i===void 0?void 0:i.call(kn),parser:(n=kn.parser)===null||n===void 0?void 0:n.call(kn),canonicalStringify:(e=kn.canonicalStringify)===null||e===void 0?void 0:e.call(kn),links:Xc(this.link),queryManager:{getDocumentInfo:this.queryManager.transformCache.size,documentTransforms:pm(this.queryManager.documentTransform)}},(r=(t=this.cache).getMemoryInternals)===null||r===void 0?void 0:r.call(t))}}function hm(){return{cache:{fragmentQueryDocuments:Yi(this.getFragmentDoc)}}}function ry(){var i=this.config.fragments;return b(b({},hm.apply(this)),{addTypenameDocumentTransform:pm(this.addTypenameTransform),inMemoryCache:{executeSelectionSet:Yi(this.storeReader.executeSelectionSet),executeSubSelectedArray:Yi(this.storeReader.executeSubSelectedArray),maybeBroadcastWatch:Yi(this.maybeBroadcastWatch)},fragmentRegistry:{findFragmentSpreads:Yi(i?.findFragmentSpreads),lookup:Yi(i?.lookup),transform:Yi(i?.transform)}})}function oy(i){return!!i&&"dirtyKey"in i}function Yi(i){return oy(i)?i.size:void 0}function mm(i){return i!=null}function pm(i){return Kc(i).map(function(n){return{cache:n}})}function Kc(i){return i?at(at([Yi(i?.performWork)],Kc(i?.left),!0),Kc(i?.right),!0).filter(mm):[]}function Xc(i){var n;return i?at(at([(n=i?.getMemoryInternals)===null||n===void 0?void 0:n.call(i)],Xc(i?.left),!0),Xc(i?.right),!0).filter(mm):[]}var Mt=Object.assign(function(n){return JSON.stringify(n,ay)},{reset:function(){fr=new za(dt.canonicalStringify||1e3)}});globalThis.__DEV__!==!1&&Ha("canonicalStringify",function(){return fr.size});var fr;Mt.reset();function ay(i,n){if(n&&typeof n=="object"){var e=Object.getPrototypeOf(n);if(e===Object.prototype||e===null){var t=Object.keys(n);if(t.every(sy))return n;var r=JSON.stringify(t),o=fr.get(r);if(!o){t.sort();var a=JSON.stringify(t);o=fr.get(a)||t,fr.set(r,o),fr.set(a,o)}var s=Object.create(e);return o.forEach(function(c){s[c]=n[c]}),s}}return n}function sy(i,n,e){return n===0||e[n-1]<=i}function Kt(i){return{__ref:String(i)}}function Ce(i){return!!(i&&typeof i=="object"&&typeof i.__ref=="string")}function Zc(i){return Ie(i)&&i.kind==="Document"&&Array.isArray(i.definitions)}function cy(i){return i.kind==="StringValue"}function ly(i){return i.kind==="BooleanValue"}function dy(i){return i.kind==="IntValue"}function uy(i){return i.kind==="FloatValue"}function hy(i){return i.kind==="Variable"}function my(i){return i.kind==="ObjectValue"}function py(i){return i.kind==="ListValue"}function fy(i){return i.kind==="EnumValue"}function gy(i){return i.kind==="NullValue"}function Ki(i,n,e,t){if(dy(e)||uy(e))i[n.value]=Number(e.value);else if(ly(e)||cy(e))i[n.value]=e.value;else if(my(e)){var r={};e.fields.map(function(a){return Ki(r,a.name,a.value,t)}),i[n.value]=r}else if(hy(e)){var o=(t||{})[e.name.value];i[n.value]=o}else if(py(e))i[n.value]=e.values.map(function(a){var s={};return Ki(s,n,a,t),s[n.value]});else if(fy(e))i[n.value]=e.value;else if(gy(e))i[n.value]=null;else throw Be(85,n.value,e.kind)}function Jc(i,n){var e=null;i.directives&&(e={},i.directives.forEach(function(r){e[r.name.value]={},r.arguments&&r.arguments.forEach(function(o){var a=o.name,s=o.value;return Ki(e[r.name.value],a,s,n)})}));var t=null;return i.arguments&&i.arguments.length&&(t={},i.arguments.forEach(function(r){var o=r.name,a=r.value;return Ki(t,o,a,n)})),Qa(i.name.value,t,e)}var by=["connection","include","skip","client","rest","export","nonreactive"],co=Mt,Qa=Object.assign(function(i,n,e){if(n&&e&&e.connection&&e.connection.key)if(e.connection.filter&&e.connection.filter.length>0){var t=e.connection.filter?e.connection.filter:[];t.sort();var r={};return t.forEach(function(s){r[s]=n[s]}),"".concat(e.connection.key,"(").concat(co(r),")")}else return e.connection.key;var o=i;if(n){var a=co(n);o+="(".concat(a,")")}return e&&Object.keys(e).forEach(function(s){by.indexOf(s)===-1&&(e[s]&&Object.keys(e[s]).length?o+="@".concat(s,"(").concat(co(e[s]),")"):o+="@".concat(s))}),o},{setStringify:function(i){var n=co;return co=i,n}});function Ti(i,n){if(i.arguments&&i.arguments.length){var e={};return i.arguments.forEach(function(t){var r=t.name,o=t.value;return Ki(e,r,o,n)}),e}return null}function jt(i){return i.alias?i.alias.value:i.name.value}function lo(i,n,e){for(var t,r=0,o=n.selections;rObject.create(null),{forEach:_y,slice:yy}=Array.prototype,{hasOwnProperty:xy}=Object.prototype,Ua=class i{constructor(n=!0,e=vy){this.weakness=n,this.makeData=e}lookup(...n){return this.lookupArray(n)}lookupArray(n){let e=this;return _y.call(n,t=>e=e.getChildTrie(t)),xy.call(e,"data")?e.data:e.data=this.makeData(yy.call(n))}peek(...n){return this.peekArray(n)}peekArray(n){let e=this;for(let t=0,r=n.length;e&&tclass{constructor(){this.id=["slot",wy++,Date.now(),Math.random().toString(36).slice(2)].join(":")}hasValue(){for(let n=bt;n;n=n.parent)if(this.id in n.slots){let e=n.slots[this.id];if(e===gm)break;return n!==bt&&(bt.slots[this.id]=e),!0}return bt&&(bt.slots[this.id]=gm),!1}getValue(){if(this.hasValue())return bt.slots[this.id]}withValue(n,e,t,r){let o={__proto__:null,[this.id]:n},a=bt;bt={parent:a,slots:o};try{return e.apply(r,t)}finally{bt=a}}static bind(n){let e=bt;return function(){let t=bt;try{return bt=e,n.apply(this,arguments)}finally{bt=t}}}static noContext(n,e,t){if(bt){let r=bt;try{return bt=null,n.apply(t,e)}finally{bt=r}}else return n.apply(t,e)}};function bm(i){try{return i()}catch{}}var il="@wry/context:Slot",ky=bm(()=>globalThis)||bm(()=>global)||Object.create(null),vm=ky,En=vm[il]||Array[il]||function(i){try{Object.defineProperty(vm,il,{value:i,enumerable:!1,writable:!1,configurable:!0})}finally{return i}}(Cy());var{bind:_m,noContext:ym}=En;var In=new En;var{hasOwnProperty:xm}=Object.prototype,ho=Array.from||function(i){let n=[];return i.forEach(e=>n.push(e)),n};function br(i){let{unsubscribe:n}=i;typeof n=="function"&&(i.unsubscribe=void 0,n())}var mo=[],Iy=100;function vr(i,n){if(!i)throw new Error(n||"assertion failure")}function Cm(i,n){let e=i.length;return e>0&&e===n.length&&i[e-1]===n[e-1]}function km(i){switch(i.length){case 0:throw new Error("unknown value");case 1:return i[0];case 2:throw i[1]}}function Dm(i){return i.slice(0)}var Em=(()=>{class i{constructor(e){this.fn=e,this.parents=new Set,this.childValues=new Map,this.dirtyChildren=null,this.dirty=!0,this.recomputing=!1,this.value=[],this.deps=null,++i.count}peek(){if(this.value.length===1&&!Zi(this))return wm(this),this.value[0]}recompute(e){return vr(!this.recomputing,"already recomputing"),wm(this),Zi(this)?Sy(this,e):km(this.value)}setDirty(){this.dirty||(this.dirty=!0,Im(this),br(this))}dispose(){this.setDirty(),Om(this),nl(this,(e,t)=>{e.setDirty(),Rm(e,this)})}forget(){this.dispose()}dependOn(e){e.add(this),this.deps||(this.deps=mo.pop()||new Set),this.deps.add(e)}forgetDeps(){this.deps&&(ho(this.deps).forEach(e=>e.delete(this)),this.deps.clear(),mo.push(this.deps),this.deps=null)}}return i.count=0,i})();function wm(i){let n=In.getValue();if(n)return i.parents.add(n),n.childValues.has(i)||n.childValues.set(i,[]),Zi(i)?Tm(n,i):Mm(n,i),n}function Sy(i,n){return Om(i),In.withValue(i,Ty,[i,n]),Ay(i,n)&&My(i),km(i.value)}function Ty(i,n){i.recomputing=!0;let{normalizeResult:e}=i,t;e&&i.value.length===1&&(t=Dm(i.value)),i.value.length=0;try{if(i.value[0]=i.fn.apply(null,n),e&&t&&!Cm(t,i.value))try{i.value[0]=e(i.value[0],t[0])}catch{}}catch(r){i.value[1]=r}i.recomputing=!1}function Zi(i){return i.dirty||!!(i.dirtyChildren&&i.dirtyChildren.size)}function My(i){i.dirty=!1,!Zi(i)&&Sm(i)}function Im(i){nl(i,Tm)}function Sm(i){nl(i,Mm)}function nl(i,n){let e=i.parents.size;if(e){let t=ho(i.parents);for(let r=0;r0&&i.childValues.forEach((n,e)=>{Rm(i,e)}),i.forgetDeps(),vr(i.dirtyChildren===null)}function Rm(i,n){n.parents.delete(i),i.childValues.delete(n),Am(i,n)}function Ay(i,n){if(typeof i.subscribe=="function")try{br(i),i.unsubscribe=i.subscribe.apply(null,n)}catch{return i.setDirty(),!1}return!0}var Oy={setDirty:!0,dispose:!0,forget:!0};function po(i){let n=new Map,e=i&&i.subscribe;function t(r){let o=In.getValue();if(o){let a=n.get(r);a||n.set(r,a=new Set),o.dependOn(a),typeof e=="function"&&(br(a),a.unsubscribe=e(r))}}return t.dirty=function(o,a){let s=n.get(o);if(s){let c=a&&xm.call(Oy,a)?a:"setDirty";ho(s).forEach(l=>l[c]()),n.delete(o),br(s)}},t}var Fm;function Ry(...i){return(Fm||(Fm=new Ua(typeof WeakMap=="function"))).lookupArray(i)}var rl=new Set;function Ai(i,{max:n=Math.pow(2,16),keyArgs:e,makeCacheKey:t=Ry,normalizeResult:r,subscribe:o,cache:a=$i}=Object.create(null)){let s=typeof a=="function"?new a(n,m=>m.dispose()):a,c=function(){let m=t.apply(null,e?e.apply(null,arguments):arguments);if(m===void 0)return i.apply(null,arguments);let p=s.get(m);p||(s.set(m,p=new Em(i)),p.normalizeResult=r,p.subscribe=o,p.forget=()=>s.delete(m));let f=p.recompute(Array.prototype.slice.call(arguments));return s.set(m,p),rl.add(s),In.hasValue()||(rl.forEach(g=>g.clean()),rl.clear()),f};Object.defineProperty(c,"size",{get:()=>s.size,configurable:!1,enumerable:!1}),Object.freeze(c.options={max:n,keyArgs:e,makeCacheKey:t,normalizeResult:r,subscribe:o,cache:s});function l(m){let p=m&&s.get(m);p&&p.setDirty()}c.dirtyKey=l,c.dirty=function(){l(t.apply(null,arguments))};function d(m){let p=m&&s.get(m);if(p)return p.peek()}c.peekKey=d,c.peek=function(){return d(t.apply(null,arguments))};function h(m){return m?s.delete(m):!1}return c.forgetKey=h,c.forget=function(){return h(t.apply(null,arguments))},c.makeCacheKey=t,c.getKey=e?function(){return t.apply(null,e.apply(null,arguments))}:t,Object.freeze(c)}function Fy(i){return i}var _r=function(){function i(n,e){e===void 0&&(e=Object.create(null)),this.resultCache=Ba?new WeakSet:new Set,this.transform=n,e.getCacheKey&&(this.getCacheKey=e.getCacheKey),this.cached=e.cache!==!1,this.resetCache()}return i.prototype.getCacheKey=function(n){return[n]},i.identity=function(){return new i(Fy,{cache:!1})},i.split=function(n,e,t){return t===void 0&&(t=i.identity()),Object.assign(new i(function(r){var o=n(r)?e:t;return o.transformDocument(r)},{cache:!1}),{left:e,right:t})},i.prototype.resetCache=function(){var n=this;if(this.cached){var e=new Qt(li);this.performWork=Ai(i.prototype.performWork.bind(this),{makeCacheKey:function(t){var r=n.getCacheKey(t);if(r)return Y(Array.isArray(r),69),e.lookupArray(r)},max:dt["documentTransform.cache"],cache:vi})}},i.prototype.performWork=function(n){return Xi(n),this.transform(n)},i.prototype.transformDocument=function(n){if(this.resultCache.has(n))return n;var e=this.performWork(n);return this.resultCache.add(e),e},i.prototype.concat=function(n){var e=this;return Object.assign(new i(function(t){return n.transformDocument(e.transformDocument(t))},{cache:!1}),{left:this,right:n})},i}();var fo,Ji=Object.assign(function(i){var n=fo.get(i);return n||(n=mr(i),fo.set(i,n)),n},{reset:function(){fo=new pr(dt.print||2e3)}});Ji.reset();globalThis.__DEV__!==!1&&Ha("print",function(){return fo?fo.size:0});var Ve=Array.isArray;function vt(i){return Array.isArray(i)&&i.length>0}var Pm={kind:G.FIELD,name:{kind:G.NAME,value:"__typename"}};function Lm(i,n){return!i||i.selectionSet.selections.every(function(e){return e.kind===G.FRAGMENT_SPREAD&&Lm(n[e.name.value],n)})}function Py(i){return Lm(_i(i)||tl(i),Ii(Mi(i)))?null:i}function Ny(i){var n=new Map,e=new Map;return i.forEach(function(t){t&&(t.name?n.set(t.name,t):t.test&&e.set(t.test,t))}),function(t){var r=n.get(t.name.value);return!r&&e.size&&e.forEach(function(o,a){a(t)&&(r=o)}),r}}function Nm(i){var n=new Map;return function(t){t===void 0&&(t=i);var r=n.get(t);return r||n.set(t,r={variables:new Set,fragmentSpreads:new Set}),r}}function qa(i,n){Xi(n);for(var e=Nm(""),t=Nm(""),r=function(v){for(var M=0,y=void 0;M=0;--a)n.definitions[a].kind===G.OPERATION_DEFINITION&&++o;var s=Ny(i),c=function(v){return vt(v)&&v.map(s).some(function(M){return M&&M.remove})},l=new Map,d=!1,h={enter:function(v){if(c(v.directives))return d=!0,null}},m=wt(n,{Field:h,InlineFragment:h,VariableDefinition:{enter:function(){return!1}},Variable:{enter:function(v,M,y,q,U){var J=r(U);J&&J.variables.add(v.name.value)}},FragmentSpread:{enter:function(v,M,y,q,U){if(c(v.directives))return d=!0,null;var J=r(U);J&&J.fragmentSpreads.add(v.name.value)}},FragmentDefinition:{enter:function(v,M,y,q){l.set(JSON.stringify(q),v)},leave:function(v,M,y,q){var U=l.get(JSON.stringify(q));if(v===U)return v;if(o>0&&v.selectionSet.selections.every(function(J){return J.kind===G.FIELD&&J.name.value==="__typename"}))return t(v.name.value).removed=!0,d=!0,null}},Directive:{leave:function(v){if(s(v))return d=!0,null}}});if(!d)return n;var p=function(v){return v.transitiveVars||(v.transitiveVars=new Set(v.variables),v.removed||v.fragmentSpreads.forEach(function(M){p(t(M)).transitiveVars.forEach(function(y){v.transitiveVars.add(y)})})),v},f=new Set;m.definitions.forEach(function(v){v.kind===G.OPERATION_DEFINITION?p(e(v.name&&v.name.value)).fragmentSpreads.forEach(function(M){f.add(M)}):v.kind===G.FRAGMENT_DEFINITION&&o===0&&!t(v.name.value).removed&&f.add(v.name.value)}),f.forEach(function(v){p(t(v)).fragmentSpreads.forEach(function(M){f.add(M)})});var g=function(v){return!!(!f.has(v)||t(v).removed)},_={enter:function(v){if(g(v.name.value))return null}};return Py(wt(m,{FragmentSpread:_,FragmentDefinition:_,OperationDefinition:{leave:function(v){if(v.variableDefinitions){var M=p(e(v.name&&v.name.value)).transitiveVars;if(M.size1)for(var t=new Vt,r=1;r=i.length?{done:!0}:{done:!1,value:i[t++]}}}throw new TypeError(`Invalid attempt to iterate non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function By(i,n){if(i){if(typeof i=="string")return jm(i,n);var e=Object.prototype.toString.call(i).slice(8,-1);if(e==="Object"&&i.constructor&&(e=i.constructor.name),e==="Map"||e==="Set")return Array.from(i);if(e==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e))return jm(i,n)}}function jm(i,n){(n==null||n>i.length)&&(n=i.length);for(var e=0,t=new Array(n);e1,s=!1,c=arguments[1],l=c;return new o(function(d){return r.subscribe({next:function(h){var m=!s;if(s=!0,!m||a)try{l=t(l,h)}catch(p){return d.error(p)}else l=h},error:function(h){d.error(h)},complete:function(){if(!s&&!a)return d.error(new TypeError("Cannot reduce an empty sequence"));d.next(l),d.complete()}})})},n.concat=function(){for(var t=this,r=arguments.length,o=new Array(r),a=0;a=0&&s.splice(m,1),l()}});s.push(h)},error:function(d){a.error(d)},complete:function(){l()}});function l(){c.closed&&s.length===0&&a.complete()}return function(){s.forEach(function(d){return d.unsubscribe()}),c.unsubscribe()}})},n[cl]=function(){return this},i.from=function(t){var r=typeof this=="function"?this:i;if(t==null)throw new TypeError(t+" is not an object");var o=Ga(t,cl);if(o){var a=o.call(t);if(Object(a)!==a)throw new TypeError(a+" is not an object");return Hy(a)&&a.constructor===r?a:new r(function(s){return a.subscribe(s)})}if(hl("iterator")&&(o=Ga(t,zy),o))return new r(function(s){Wa(function(){if(!s.closed){for(var c=Vy(o.call(t)),l;!(l=c()).done;){var d=l.value;if(s.next(d),s.closed)return}s.complete()}})});if(Array.isArray(t))return new r(function(s){Wa(function(){if(!s.closed){for(var c=0;c=0;--s){var c=a[s],l=!isNaN(+c),d=l?[]:{};d[c]=o,o=d}e=t.merge(e,o)}),e}function wr(i){var n=Za(i);return vt(n)}function Za(i){var n=vt(i.errors)?i.errors.slice(0):[];return en(i)&&vt(i.incremental)&&i.incremental.forEach(function(e){e.errors&&n.push.apply(n,e.errors)}),n}function yi(){for(var i=[],n=0;n-1;){if(_=void 0,be=[s.slice(0,g),s.slice(g+a.length)],_=be[0],s=be[1],v=_.indexOf(`\r +\r +`),M=n0(_.slice(0,v)),y=M["content-type"],y&&y.toLowerCase().indexOf("application/json")===-1)throw new Error("Unsupported patch content type: application/json is required.");if(q=_.slice(v),q){if(U=Jm(i,q),Object.keys(U).length>1||"data"in U||"incremental"in U||"errors"in U||"payload"in U)if(Gm(U)){if(J={},"payload"in U){if(Object.keys(U).length===1&&U.payload===null)return[2];J=b({},U.payload)}"errors"in U&&(J=b(b({},J),{extensions:b(b({},"extensions"in J?J.extensions:null),(_e={},_e[wo]=U.errors,_e))})),n(J)}else n(U);else if(Object.keys(U).length===1&&"hasNext"in U&&!U.hasNext)return[2]}g=s.indexOf(a)}return[3,1];case 3:return[2]}})})}function n0(i){var n={};return i.split(` +`).forEach(function(e){var t=e.indexOf(":");if(t>-1){var r=e.slice(0,t).trim().toLowerCase(),o=e.slice(t+1).trim();n[r]=o}}),n}function Jm(i,n){if(i.status>=300){var e=function(){try{return JSON.parse(n)}catch{return n}};Ja(i,e(),"Response not successful: Received status code ".concat(i.status))}try{return JSON.parse(n)}catch(r){var t=r;throw t.name="ServerParseError",t.response=i,t.statusCode=i.status,t.bodyText=n,t}}function ep(i,n){i.result&&i.result.errors&&i.result.data&&n.next(i.result),n.error(i)}function tp(i){return function(n){return n.text().then(function(e){return Jm(n,e)}).then(function(e){return!Array.isArray(e)&&!Xm.call(e,"data")&&!Xm.call(e,"errors")&&Ja(n,e,"Server response was missing for query '".concat(Array.isArray(i)?i.map(function(t){return t.operationName}):i.operationName,"'.")),e})}}var Co=function(i,n){var e;try{e=JSON.stringify(i)}catch(r){var t=Be(40,n,r.message);throw t.parseError=r,t}return e};var r0={includeQuery:!0,includeExtensions:!1,preserveHeaderCase:!1},o0={accept:"*/*","content-type":"application/json"},a0={method:"POST"},ip={http:r0,headers:o0,options:a0},np=function(i,n){return n(i)};function rp(i,n){for(var e=[],t=2;t"u")throw Be(38)};var ap=function(i,n){var e=i.getContext(),t=e.uri;return t||(typeof n=="function"?n(i):n||"/graphql")};function sp(i,n){var e=[],t=function(h,m){e.push("".concat(h,"=").concat(encodeURIComponent(m)))};if("query"in n&&t("query",n.query),n.operationName&&t("operationName",n.operationName),n.variables){var r=void 0;try{r=Co(n.variables,"Variables map")}catch(h){return{parseError:h}}t("variables",r)}if(n.extensions){var o=void 0;try{o=Co(n.extensions,"Extensions map")}catch(h){return{parseError:h}}t("extensions",o)}var a="",s=i,c=i.indexOf("#");c!==-1&&(a=i.substr(c),s=i.substr(0,c));var l=s.indexOf("?")===-1?"?":"&",d=s+l+e.join("&")+a;return{newURI:d}}var cp=xt(function(){return fetch}),lp=function(i){i===void 0&&(i={});var n=i.uri,e=n===void 0?"/graphql":n,t=i.fetch,r=i.print,o=r===void 0?np:r,a=i.includeExtensions,s=i.preserveHeaderCase,c=i.useGETForQueries,l=i.includeUnusedVariables,d=l===void 0?!1:l,h=Pt(i,["uri","fetch","print","includeExtensions","preserveHeaderCase","useGETForQueries","includeUnusedVariables"]);globalThis.__DEV__!==!1&&op(t||cp);var m={http:{includeExtensions:a,preserveHeaderCase:s},options:h.fetchOptions,credentials:h.credentials,headers:h.headers};return new Xt(function(p){var f=ap(p,e),g=p.getContext(),_={};if(g.clientAwareness){var v=g.clientAwareness,M=v.name,y=v.version;M&&(_["apollographql-client-name"]=M),y&&(_["apollographql-client-version"]=y)}var q=b(b({},_),g.headers),U={http:g.http,options:g.fetchOptions,credentials:g.credentials,headers:q};if(Ei(["client"],p.query)){var J=go(p.query);if(!J)return yo(new Error("HttpLink: Trying to send a client-only query to the server. To send to the server, ensure a non-client field is added to the query or set the `transformOptions.removeClientFields` option to `true`."));p.query=J}var be=rp(p,o,ip,m,U),_e=be.options,ze=be.body;ze.variables&&!d&&(ze.variables=_l(ze.variables,p.query));var et;!_e.signal&&typeof AbortController<"u"&&(et=new AbortController,_e.signal=et.signal);var Wn=function(qt){return qt.kind==="OperationDefinition"&&qt.operation==="mutation"},Gn=function(qt){return qt.kind==="OperationDefinition"&&qt.operation==="subscription"},_t=Gn(di(p.query)),ji=Ei(["defer"],p.query);if(c&&!p.query.definitions.some(Wn)&&(_e.method="GET"),ji||_t){_e.headers=_e.headers||{};var ec="multipart/mixed;";_t&&ji&&globalThis.__DEV__!==!1&&Y.warn(39),_t?ec+="boundary=graphql;subscriptionSpec=1.0,application/json":ji&&(ec+="deferSpec=20220824,application/json"),_e.headers.accept=ec}if(_e.method==="GET"){var hu=sp(f,ze),Wb=hu.newURI,mu=hu.parseError;if(mu)return yo(mu);f=Wb}else try{_e.body=Co(ze,"Payload")}catch(qt){return yo(qt)}return new xe(function(qt){var Gb=t||xt(function(){return fetch})||cp,pu=qt.next.bind(qt);return Gb(f,_e).then(function($n){var tc;p.setContext({response:$n});var fu=(tc=$n.headers)===null||tc===void 0?void 0:tc.get("content-type");return fu!==null&&/^multipart\/mixed/i.test(fu)?Zm($n,pu):tp(p)($n).then(pu)}).then(function(){et=void 0,qt.complete()}).catch(function($n){et=void 0,ep($n,qt)}),function(){et&&et.abort()}})})};var Cl=function(i){mt(n,i);function n(e){e===void 0&&(e={});var t=i.call(this,lp(e).request)||this;return t.options=e,t}return n}(Xt);var{toString:dp,hasOwnProperty:c0}=Object.prototype,up=Function.prototype.toString,kl=new Map;function Ne(i,n){try{return Dl(i,n)}finally{kl.clear()}}var El=Ne;function Dl(i,n){if(i===n)return!0;let e=dp.call(i),t=dp.call(n);if(e!==t)return!1;switch(e){case"[object Array]":if(i.length!==n.length)return!1;case"[object Object]":{if(mp(i,n))return!0;let r=hp(i),o=hp(n),a=r.length;if(a!==o.length)return!1;for(let s=0;s=0&&i.indexOf(n,e)===e}function mp(i,n){let e=kl.get(i);if(e){if(e.has(n))return!0}else kl.set(i,e=new Set);return e.add(n),!1}function rs(i,n,e,t){var r=n.data,o=Pt(n,["data"]),a=e.data,s=Pt(e,["data"]);return El(o,s)&&ns(di(i).selectionSet,r,a,{fragmentMap:Ii(Mi(i)),variables:t})}function ns(i,n,e,t){if(n===e)return!0;var r=new Set;return i.selections.every(function(o){if(r.has(o)||(r.add(o),!ci(o,t.variables))||pp(o))return!0;if(At(o)){var a=jt(o),s=n&&n[a],c=e&&e[a],l=o.selectionSet;if(!l)return El(s,c);var d=Array.isArray(s),h=Array.isArray(c);if(d!==h)return!1;if(d&&h){var m=s.length;if(c.length!==m)return!1;for(var p=0;p"u"||typeof o=="string"?o:this.identify(o),query:l,optimistic:s}),h;return new xe(function(m){return e.watch(b(b({},d),{immediate:!0,callback:function(p){if(!(h&&rs(l,{data:h?.result},{data:p.result}))){var f={data:p.result,complete:!!p.complete};p.missing&&(f.missing=Tn(p.missing.map(function(g){return g.missing}))),h=p,m.next(f)}}}))})},i.prototype.readFragment=function(n,e){return e===void 0&&(e=!!n.optimistic),this.read(b(b({},n),{query:this.getFragmentDoc(n.fragment,n.fragmentName),rootId:n.id,optimistic:e}))},i.prototype.writeQuery=function(n){var e=n.id,t=n.data,r=Pt(n,["id","data"]);return this.write(Object.assign(r,{dataId:e||"ROOT_QUERY",result:t}))},i.prototype.writeFragment=function(n){var e=n.id,t=n.data,r=n.fragment,o=n.fragmentName,a=Pt(n,["id","data","fragment","fragmentName"]);return this.write(Object.assign(a,{query:this.getFragmentDoc(r,o),dataId:e,result:t}))},i.prototype.updateQuery=function(n,e){return this.batch({update:function(t){var r=t.readQuery(n),o=e(r);return o==null?r:(t.writeQuery(b(b({},n),{data:o})),o)}})},i.prototype.updateFragment=function(n,e){return this.batch({update:function(t){var r=t.readFragment(n),o=e(r);return o==null?r:(t.writeFragment(b(b({},n),{data:o})),o)}})},i}();globalThis.__DEV__!==!1&&(os.prototype.getMemoryInternals=um);var ko=function(i){mt(n,i);function n(e,t,r,o){var a,s=i.call(this,e)||this;if(s.message=e,s.path=t,s.query=r,s.variables=o,Array.isArray(s.path)){s.missing=s.message;for(var c=s.path.length-1;c>=0;--c)s.missing=(a={},a[s.path[c]]=s.missing,a)}else s.missing=s.path;return s.__proto__=n.prototype,s}return n}(Error);var it=Object.prototype.hasOwnProperty;function Do(i){return i==null}function ss(i,n){var e=i.__typename,t=i.id,r=i._id;if(typeof e=="string"&&(n&&(n.keyObject=Do(t)?Do(r)?void 0:{_id:r}:{id:t}),Do(t)&&!Do(r)&&(t=r),!Do(t)))return"".concat(e,":").concat(typeof t=="number"||typeof t=="string"?t:JSON.stringify(t))}var fp={dataIdFromObject:ss,addTypename:!0,resultCaching:!0,canonizeResults:!1};function gp(i){return yi(fp,i)}function cs(i){var n=i.canonizeResults;return n===void 0?fp.canonizeResults:n}function bp(i,n){return Ce(n)?i.get(n.__ref,"__typename"):n&&n.__typename}var Il=/^[_a-z][_0-9a-z]*/i;function ui(i){var n=i.match(Il);return n?n[0]:i}function as(i,n,e){return Ie(n)?Ve(n)?n.every(function(t){return as(i,t,e)}):i.selections.every(function(t){if(At(t)&&ci(t,e)){var r=jt(t);return it.call(n,r)&&(!t.selectionSet||as(t.selectionSet,n[r],e))}return!0}):!1}function tn(i){return Ie(i)&&!Ce(i)&&!Ve(i)}function vp(){return new Vt}function ls(i,n){var e=Ii(Mi(i));return{fragmentMap:e,lookupFragment:function(t){var r=e[t];return!r&&n&&(r=n.lookup(t)),r||null}}}var ds=Object.create(null),Sl=function(){return ds},_p=Object.create(null),kr=function(){function i(n,e){var t=this;this.policies=n,this.group=e,this.data=Object.create(null),this.rootIds=Object.create(null),this.refs=Object.create(null),this.getFieldValue=function(r,o){return vo(Ce(r)?t.get(r.__ref,o):r&&r[o])},this.canRead=function(r){return Ce(r)?t.has(r.__ref):typeof r=="object"},this.toReference=function(r,o){if(typeof r=="string")return Kt(r);if(Ce(r))return r;var a=t.policies.identify(r)[0];if(a){var s=Kt(a);return o&&t.merge(a,r),s}}}return i.prototype.toObject=function(){return b({},this.data)},i.prototype.has=function(n){return this.lookup(n,!0)!==void 0},i.prototype.get=function(n,e){if(this.group.depend(n,e),it.call(this.data,n)){var t=this.data[n];if(t&&it.call(t,e))return t[e]}if(e==="__typename"&&it.call(this.policies.rootTypenamesById,n))return this.policies.rootTypenamesById[n];if(this instanceof nn)return this.parent.get(n,e)},i.prototype.lookup=function(n,e){if(e&&this.group.depend(n,"__exists"),it.call(this.data,n))return this.data[n];if(this instanceof nn)return this.parent.lookup(n,e);if(this.policies.rootTypenamesById[n])return Object.create(null)},i.prototype.merge=function(n,e){var t=this,r;Ce(n)&&(n=n.__ref),Ce(e)&&(e=e.__ref);var o=typeof n=="string"?this.lookup(r=n):n,a=typeof e=="string"?this.lookup(r=e):e;if(a){Y(typeof r=="string",1);var s=new Vt(p0).merge(o,a);if(this.data[r]=s,s!==o&&(delete this.refs[r],this.group.caching)){var c=Object.create(null);o||(c.__exists=1),Object.keys(a).forEach(function(l){if(!o||o[l]!==s[l]){c[l]=1;var d=ui(l);d!==l&&!t.policies.hasKeyArgs(s.__typename,d)&&(c[d]=1),s[l]===void 0&&!(t instanceof nn)&&delete s[l]}}),c.__typename&&!(o&&o.__typename)&&this.policies.rootTypenamesById[r]===s.__typename&&delete c.__typename,Object.keys(c).forEach(function(l){return t.group.dirty(r,l)})}}},i.prototype.modify=function(n,e){var t=this,r=this.lookup(n);if(r){var o=Object.create(null),a=!1,s=!0,c={DELETE:ds,INVALIDATE:_p,isReference:Ce,toReference:this.toReference,canRead:this.canRead,readField:function(l,d){return t.policies.readField(typeof l=="string"?{fieldName:l,from:d||Kt(n)}:l,{store:t})}};if(Object.keys(r).forEach(function(l){var d=ui(l),h=r[l];if(h!==void 0){var m=typeof e=="function"?e:e[l]||e[d];if(m){var p=m===Sl?ds:m(vo(h),b(b({},c),{fieldName:d,storeFieldName:l,storage:t.getStorage(n,l)}));if(p===_p)t.group.dirty(n,l);else if(p===ds&&(p=void 0),p!==h&&(o[l]=p,a=!0,h=p,globalThis.__DEV__!==!1)){var f=function(U){if(t.lookup(U.__ref)===void 0)return globalThis.__DEV__!==!1&&Y.warn(2,U),!0};if(Ce(p))f(p);else if(Array.isArray(p))for(var g=!1,_=void 0,v=0,M=p;v0){var e=--this.rootIds[n];return e||delete this.rootIds[n],e}return 0},i.prototype.getRootIdSet=function(n){return n===void 0&&(n=new Set),Object.keys(this.rootIds).forEach(n.add,n),this instanceof nn?this.parent.getRootIdSet(n):Object.keys(this.policies.rootTypenamesById).forEach(n.add,n),n},i.prototype.gc=function(){var n=this,e=this.getRootIdSet(),t=this.toObject();e.forEach(function(a){it.call(t,a)&&(Object.keys(n.findChildRefIds(a)).forEach(e.add,e),delete t[a])});var r=Object.keys(t);if(r.length){for(var o=this;o instanceof nn;)o=o.parent;r.forEach(function(a){return o.delete(a)})}return r},i.prototype.findChildRefIds=function(n){if(!it.call(this.refs,n)){var e=this.refs[n]=Object.create(null),t=this.data[n];if(!t)return e;var r=new Set([t]);r.forEach(function(o){Ce(o)&&(e[o.__ref]=!0),Ie(o)&&Object.keys(o).forEach(function(a){var s=o[a];Ie(s)&&r.add(s)})})}return this.refs[n]},i.prototype.makeCacheKey=function(){return this.group.keyMaker.lookupArray(arguments)},i}();var yp=function(){function i(n,e){e===void 0&&(e=null),this.caching=n,this.parent=e,this.d=null,this.resetCaching()}return i.prototype.resetCaching=function(){this.d=this.caching?po():null,this.keyMaker=new Qt(li)},i.prototype.depend=function(n,e){if(this.d){this.d(Tl(n,e));var t=ui(e);t!==e&&this.d(Tl(n,t)),this.parent&&this.parent.depend(n,e)}},i.prototype.dirty=function(n,e){this.d&&this.d.dirty(Tl(n,e),e==="__exists"?"forget":"setDirty")},i}();function Tl(i,n){return n+"#"+i}function Ml(i,n){On(i)&&i.group.depend(n,"__exists")}(function(i){var n=function(e){mt(t,e);function t(r){var o=r.policies,a=r.resultCaching,s=a===void 0?!0:a,c=r.seed,l=e.call(this,o,new yp(s))||this;return l.stump=new m0(l),l.storageTrie=new Qt(li),c&&l.replace(c),l}return t.prototype.addLayer=function(r,o){return this.stump.addLayer(r,o)},t.prototype.removeLayer=function(){return this},t.prototype.getStorage=function(){return this.storageTrie.lookupArray(arguments)},t}(i);i.Root=n})(kr||(kr={}));var nn=function(i){mt(n,i);function n(e,t,r,o){var a=i.call(this,t.policies,o)||this;return a.id=e,a.parent=t,a.replay=r,a.group=o,r(a),a}return n.prototype.addLayer=function(e,t){return new n(e,this,t,this.group)},n.prototype.removeLayer=function(e){var t=this,r=this.parent.removeLayer(e);return e===this.id?(this.group.caching&&Object.keys(this.data).forEach(function(o){var a=t.data[o],s=r.lookup(o);s?a?a!==s&&Object.keys(a).forEach(function(c){Ne(a[c],s[c])||t.group.dirty(o,c)}):(t.group.dirty(o,"__exists"),Object.keys(s).forEach(function(c){t.group.dirty(o,c)})):t.delete(o)}),r):r===this.parent?this:r.addLayer(this.id,this.replay)},n.prototype.toObject=function(){return b(b({},this.parent.toObject()),this.data)},n.prototype.findChildRefIds=function(e){var t=this.parent.findChildRefIds(e);return it.call(this.data,e)?b(b({},t),i.prototype.findChildRefIds.call(this,e)):t},n.prototype.getStorage=function(){for(var e=this.parent;e.parent;)e=e.parent;return e.getStorage.apply(e,arguments)},n}(kr),m0=function(i){mt(n,i);function n(e){return i.call(this,"EntityStore.Stump",e,function(){},new yp(e.group.caching,e.group))||this}return n.prototype.removeLayer=function(){return this},n.prototype.merge=function(e,t){return this.parent.merge(e,t)},n}(nn);function p0(i,n,e){var t=i[e],r=n[e];return Ne(t,r)?t:r}function On(i){return!!(i instanceof kr&&i.group.caching)}function f0(i){return Ie(i)?Ve(i)?i.slice(0):b({__proto__:Object.getPrototypeOf(i)},i):i}var Al=function(){function i(){this.known=new(Ba?WeakSet:Set),this.pool=new Qt(li),this.passes=new WeakMap,this.keysByJSON=new Map,this.empty=this.admit({})}return i.prototype.isKnown=function(n){return Ie(n)&&this.known.has(n)},i.prototype.pass=function(n){if(Ie(n)){var e=f0(n);return this.passes.set(e,n),e}return n},i.prototype.admit=function(n){var e=this;if(Ie(n)){var t=this.passes.get(n);if(t)return t;var r=Object.getPrototypeOf(n);switch(r){case Array.prototype:{if(this.known.has(n))return n;var o=n.map(this.admit,this),a=this.pool.lookupArray(o);return a.array||(this.known.add(a.array=o),globalThis.__DEV__!==!1&&Object.freeze(o)),a.array}case null:case Object.prototype:{if(this.known.has(n))return n;var s=Object.getPrototypeOf(n),c=[s],l=this.sortedKeys(n);c.push(l.json);var d=c.length;l.sorted.forEach(function(p){c.push(e.admit(n[p]))});var a=this.pool.lookupArray(c);if(!a.object){var h=a.object=Object.create(s);this.known.add(h),l.sorted.forEach(function(p,f){h[p]=c[d+f]}),globalThis.__DEV__!==!1&&Object.freeze(h)}return a.object}}}return n},i.prototype.sortedKeys=function(n){var e=Object.keys(n),t=this.pool.lookupArray(e);if(!t.keys){e.sort();var r=JSON.stringify(e);(t.keys=this.keysByJSON.get(r))||this.keysByJSON.set(r,t.keys={sorted:e,json:r})}return t.keys},i}();function xp(i){return[i.selectionSet,i.objectOrReference,i.context,i.context.canonizeResults]}var wp=function(){function i(n){var e=this;this.knownResults=new(li?WeakMap:Map),this.config=yi(n,{addTypename:n.addTypename!==!1,canonizeResults:cs(n)}),this.canon=n.canon||new Al,this.executeSelectionSet=Ai(function(t){var r,o=t.context.canonizeResults,a=xp(t);a[3]=!o;var s=(r=e.executeSelectionSet).peek.apply(r,a);return s?o?b(b({},s),{result:e.canon.admit(s.result)}):s:(Ml(t.context.store,t.enclosingRef.__ref),e.execSelectionSetImpl(t))},{max:this.config.resultCacheMaxSize||dt["inMemoryCache.executeSelectionSet"]||5e4,keyArgs:xp,makeCacheKey:function(t,r,o,a){if(On(o.store))return o.store.makeCacheKey(t,Ce(r)?r.__ref:r,o.varString,a)}}),this.executeSubSelectedArray=Ai(function(t){return Ml(t.context.store,t.enclosingRef.__ref),e.execSubSelectedArrayImpl(t)},{max:this.config.resultCacheMaxSize||dt["inMemoryCache.executeSubSelectedArray"]||1e4,makeCacheKey:function(t){var r=t.field,o=t.array,a=t.context;if(On(a.store))return a.store.makeCacheKey(r,o,a.varString)}})}return i.prototype.resetCanon=function(){this.canon=new Al},i.prototype.diffQueryAgainstStore=function(n){var e=n.store,t=n.query,r=n.rootId,o=r===void 0?"ROOT_QUERY":r,a=n.variables,s=n.returnPartialData,c=s===void 0?!0:s,l=n.canonizeResults,d=l===void 0?this.config.canonizeResults:l,h=this.config.cache.policies;a=b(b({},Dn(uo(t))),a);var m=Kt(o),p=this.executeSelectionSet({selectionSet:di(t).selectionSet,objectOrReference:m,enclosingRef:m,context:b({store:e,query:t,policies:h,variables:a,varString:Mt(a),canonizeResults:d},ls(t,this.config.fragments))}),f;if(p.missing&&(f=[new ko(g0(p.missing),p.missing,t,a)],!c))throw f[0];return{result:p.result,complete:!f,missing:f}},i.prototype.isFresh=function(n,e,t,r){if(On(r.store)&&this.knownResults.get(n)===t){var o=this.executeSelectionSet.peek(t,e,r,this.canon.isKnown(n));if(o&&n===o.result)return!0}return!1},i.prototype.execSelectionSetImpl=function(n){var e=this,t=n.selectionSet,r=n.objectOrReference,o=n.enclosingRef,a=n.context;if(Ce(r)&&!a.policies.rootTypenamesById[r.__ref]&&!a.store.has(r.__ref))return{result:this.canon.empty,missing:"Dangling reference to missing ".concat(r.__ref," object")};var s=a.variables,c=a.policies,l=a.store,d=l.getFieldValue(r,"__typename"),h=[],m,p=new Vt;this.config.addTypename&&typeof d=="string"&&!c.rootIdsByTypename[d]&&h.push({__typename:d});function f(y,q){var U;return y.missing&&(m=p.merge(m,(U={},U[q]=y.missing,U))),y.result}var g=new Set(t.selections);g.forEach(function(y){var q,U;if(ci(y,s))if(At(y)){var J=c.readField({fieldName:y.name.value,field:y,variables:a.variables,from:r},a),be=jt(y);J===void 0?Sn.added(y)||(m=p.merge(m,(q={},q[be]="Can't find field '".concat(y.name.value,"' on ").concat(Ce(r)?r.__ref+" object":"object "+JSON.stringify(r,null,2)),q))):Ve(J)?J.length>0&&(J=f(e.executeSubSelectedArray({field:y,array:J,enclosingRef:o,context:a}),be)):y.selectionSet?J!=null&&(J=f(e.executeSelectionSet({selectionSet:y.selectionSet,objectOrReference:J,enclosingRef:Ce(J)?J:o,context:a}),be)):a.canonizeResults&&(J=e.canon.pass(J)),J!==void 0&&h.push((U={},U[be]=J,U))}else{var _e=Si(y,a.lookupFragment);if(!_e&&y.kind===G.FRAGMENT_SPREAD)throw Be(9,y.name.value);_e&&c.fragmentMatches(_e,d)&&_e.selectionSet.selections.forEach(g.add,g)}});var _=Tn(h),v={result:_,missing:m},M=a.canonizeResults?this.canon.admit(v):vo(v);return M.result&&this.knownResults.set(M.result,t),M},i.prototype.execSubSelectedArrayImpl=function(n){var e=this,t=n.field,r=n.array,o=n.enclosingRef,a=n.context,s,c=new Vt;function l(d,h){var m;return d.missing&&(s=c.merge(s,(m={},m[h]=d.missing,m))),d.result}return t.selectionSet&&(r=r.filter(a.store.canRead)),r=r.map(function(d,h){return d===null?null:Ve(d)?l(e.executeSubSelectedArray({field:t,array:d,enclosingRef:o,context:a}),h):t.selectionSet?l(e.executeSelectionSet({selectionSet:t.selectionSet,objectOrReference:d,enclosingRef:Ce(d)?d:o,context:a}),h):(globalThis.__DEV__!==!1&&b0(a.store,t,d),d)}),{result:a.canonizeResults?this.canon.admit(r):r,missing:s}},i}();function g0(i){try{JSON.stringify(i,function(n,e){if(typeof e=="string")throw e;return e})}catch(n){return n}}function b0(i,n,e){if(!n.selectionSet){var t=new Set([e]);t.forEach(function(r){Ie(r)&&(Y(!Ce(r),10,bp(i,r),n.name.value),Object.values(r).forEach(t.add,t))})}}var Dr=new En,Cp=new WeakMap;function Eo(i){var n=Cp.get(i);return n||Cp.set(i,n={vars:new Set,dep:po()}),n}function Ol(i){Eo(i).vars.forEach(function(n){return n.forgetCache(i)})}function kp(i){Eo(i).vars.forEach(function(n){return n.attachCache(i)})}function us(i){var n=new Set,e=new Set,t=function(o){if(arguments.length>0){if(i!==o){i=o,n.forEach(function(c){Eo(c).dep.dirty(t),v0(c)});var a=Array.from(e);e.clear(),a.forEach(function(c){return c(i)})}}else{var s=Dr.getValue();s&&(r(s),Eo(s).dep(t))}return i};t.onNextChange=function(o){return e.add(o),function(){e.delete(o)}};var r=t.attachCache=function(o){return n.add(o),Eo(o).vars.add(t),t};return t.forgetCache=function(o){return n.delete(o)},t}function v0(i){i.broadcastWatches&&i.broadcastWatches()}var Dp=Object.create(null);function Rl(i){var n=JSON.stringify(i);return Dp[n]||(Dp[n]=Object.create(null))}function Fl(i){var n=Rl(i);return n.keyFieldsFn||(n.keyFieldsFn=function(e,t){var r=function(a,s){return t.readField(s,a)},o=t.keyObject=Nl(i,function(a){var s=Er(t.storeObject,a,r);return s===void 0&&e!==t.storeObject&&it.call(e,a[0])&&(s=Er(e,a,Ip)),Y(s!==void 0,4,a.join("."),e),s});return"".concat(t.typename,":").concat(JSON.stringify(o))})}function Pl(i){var n=Rl(i);return n.keyArgsFn||(n.keyArgsFn=function(e,t){var r=t.field,o=t.variables,a=t.fieldName,s=Nl(i,function(l){var d=l[0],h=d.charAt(0);if(h==="@"){if(r&&vt(r.directives)){var m=d.slice(1),p=r.directives.find(function(v){return v.name.value===m}),f=p&&Ti(p,o);return f&&Er(f,l.slice(1))}return}if(h==="$"){var g=d.slice(1);if(o&&it.call(o,g)){var _=l.slice(0);return _[0]=g,Er(o,_)}return}if(e)return Er(e,l)}),c=JSON.stringify(s);return(e||c!=="{}")&&(a+=":"+c),a})}function Nl(i,n){var e=new Vt;return Ep(i).reduce(function(t,r){var o,a=n(r);if(a!==void 0){for(var s=r.length-1;s>=0;--s)a=(o={},o[r[s]]=a,o);t=e.merge(t,a)}return t},Object.create(null))}function Ep(i){var n=Rl(i);if(!n.paths){var e=n.paths=[],t=[];i.forEach(function(r,o){Ve(r)?(Ep(r).forEach(function(a){return e.push(t.concat(a))}),t.length=0):(t.push(r),Ve(i[o+1])||(e.push(t.slice(0)),t.length=0))})}return n.paths}function Ip(i,n){return i[n]}function Er(i,n,e){return e=e||Ip,Sp(n.reduce(function t(r,o){return Ve(r)?r.map(function(a){return t(a,o)}):r&&e(r,o)},i))}function Sp(i){return Ie(i)?Ve(i)?i.map(Sp):Nl(Object.keys(i).sort(),function(n){return Er(i,n)}):i}function Ll(i){return i.args!==void 0?i.args:i.field?Ti(i.field,i.variables):null}var _0=function(){},Tp=function(i,n){return n.fieldName},Mp=function(i,n,e){var t=e.mergeObjects;return t(i,n)},Ap=function(i,n){return n},Rp=function(){function i(n){this.config=n,this.typePolicies=Object.create(null),this.toBeAdded=Object.create(null),this.supertypeMap=new Map,this.fuzzySubtypes=new Map,this.rootIdsByTypename=Object.create(null),this.rootTypenamesById=Object.create(null),this.usingPossibleTypes=!1,this.config=b({dataIdFromObject:ss},n),this.cache=this.config.cache,this.setRootTypename("Query"),this.setRootTypename("Mutation"),this.setRootTypename("Subscription"),n.possibleTypes&&this.addPossibleTypes(n.possibleTypes),n.typePolicies&&this.addTypePolicies(n.typePolicies)}return i.prototype.identify=function(n,e){var t,r=this,o=e&&(e.typename||((t=e.storeObject)===null||t===void 0?void 0:t.__typename))||n.__typename;if(o===this.rootTypenamesById.ROOT_QUERY)return["ROOT_QUERY"];for(var a=e&&e.storeObject||n,s=b(b({},e),{typename:o,storeObject:a,readField:e&&e.readField||function(){var m=hs(arguments,a);return r.readField(m,{store:r.cache.data,variables:m.variables})}}),c,l=o&&this.getTypePolicy(o),d=l&&l.keyFn||this.config.dataIdFromObject;d;){var h=d(b(b({},n),a),s);if(Ve(h))d=Fl(h);else{c=h;break}}return c=c?String(c):void 0,s.keyObject?[c,s.keyObject]:[c]},i.prototype.addTypePolicies=function(n){var e=this;Object.keys(n).forEach(function(t){var r=n[t],o=r.queryType,a=r.mutationType,s=r.subscriptionType,c=Pt(r,["queryType","mutationType","subscriptionType"]);o&&e.setRootTypename("Query",t),a&&e.setRootTypename("Mutation",t),s&&e.setRootTypename("Subscription",t),it.call(e.toBeAdded,t)?e.toBeAdded[t].push(c):e.toBeAdded[t]=[c]})},i.prototype.updateTypePolicy=function(n,e){var t=this,r=this.getTypePolicy(n),o=e.keyFields,a=e.fields;function s(c,l){c.merge=typeof l=="function"?l:l===!0?Mp:l===!1?Ap:c.merge}s(r,e.merge),r.keyFn=o===!1?_0:Ve(o)?Fl(o):typeof o=="function"?o:r.keyFn,a&&Object.keys(a).forEach(function(c){var l=t.getFieldPolicy(n,c,!0),d=a[c];if(typeof d=="function")l.read=d;else{var h=d.keyArgs,m=d.read,p=d.merge;l.keyFn=h===!1?Tp:Ve(h)?Pl(h):typeof h=="function"?h:l.keyFn,typeof m=="function"&&(l.read=m),s(l,p)}l.read&&l.merge&&(l.keyFn=l.keyFn||Tp)})},i.prototype.setRootTypename=function(n,e){e===void 0&&(e=n);var t="ROOT_"+n.toUpperCase(),r=this.rootTypenamesById[t];e!==r&&(Y(!r||r===n,5,n),r&&delete this.rootIdsByTypename[r],this.rootIdsByTypename[e]=t,this.rootTypenamesById[t]=e)},i.prototype.addPossibleTypes=function(n){var e=this;this.usingPossibleTypes=!0,Object.keys(n).forEach(function(t){e.getSupertypeSet(t,!0),n[t].forEach(function(r){e.getSupertypeSet(r,!0).add(t);var o=r.match(Il);(!o||o[0]!==r)&&e.fuzzySubtypes.set(r,new RegExp(r))})})},i.prototype.getTypePolicy=function(n){var e=this;if(!it.call(this.typePolicies,n)){var t=this.typePolicies[n]=Object.create(null);t.fields=Object.create(null);var r=this.supertypeMap.get(n);!r&&this.fuzzySubtypes.size&&(r=this.getSupertypeSet(n,!0),this.fuzzySubtypes.forEach(function(a,s){if(a.test(n)){var c=e.supertypeMap.get(s);c&&c.forEach(function(l){return r.add(l)})}})),r&&r.size&&r.forEach(function(a){var s=e.getTypePolicy(a),c=s.fields,l=Pt(s,["fields"]);Object.assign(t,l),Object.assign(t.fields,c)})}var o=this.toBeAdded[n];return o&&o.length&&o.splice(0).forEach(function(a){e.updateTypePolicy(n,a)}),this.typePolicies[n]},i.prototype.getFieldPolicy=function(n,e,t){if(n){var r=this.getTypePolicy(n).fields;return r[e]||t&&(r[e]=Object.create(null))}},i.prototype.getSupertypeSet=function(n,e){var t=this.supertypeMap.get(n);return!t&&e&&this.supertypeMap.set(n,t=new Set),t},i.prototype.fragmentMatches=function(n,e,t,r){var o=this;if(!n.typeCondition)return!0;if(!e)return!1;var a=n.typeCondition.name.value;if(e===a)return!0;if(this.usingPossibleTypes&&this.supertypeMap.has(a))for(var s=this.getSupertypeSet(e,!0),c=[s],l=function(f){var g=o.getSupertypeSet(f,!1);g&&g.size&&c.indexOf(g)<0&&c.push(g)},d=!!(t&&this.fuzzySubtypes.size),h=!1,m=0;m1?r:n}:(a=b({},t),it.call(a,"from")||(a.from=n)),globalThis.__DEV__!==!1&&a.from===void 0&&globalThis.__DEV__!==!1&&Y.warn(7,Ta(Array.from(i))),a.variables===void 0&&(a.variables=e),a}function Fp(i){return function(e,t){if(Ve(e)||Ve(t))throw Be(8);if(Ie(e)&&Ie(t)){var r=i.getFieldValue(e,"__typename"),o=i.getFieldValue(t,"__typename"),a=r&&o&&r!==o;if(a)return t;if(Ce(e)&&tn(t))return i.merge(e.__ref,t),e;if(tn(e)&&Ce(t))return i.merge(e,t.__ref),t;if(tn(e)&&tn(t))return b(b({},e),t)}return t}}function jl(i,n,e){var t="".concat(n).concat(e),r=i.flavors.get(t);return r||i.flavors.set(t,r=i.clientOnly===n&&i.deferred===e?i:b(b({},i),{clientOnly:n,deferred:e})),r}var jp=function(){function i(n,e,t){this.cache=n,this.reader=e,this.fragments=t}return i.prototype.writeToStore=function(n,e){var t=this,r=e.query,o=e.result,a=e.dataId,s=e.variables,c=e.overwrite,l=_i(r),d=vp();s=b(b({},Dn(l)),s);var h=b(b({store:n,written:Object.create(null),merge:function(p,f){return d.merge(p,f)},variables:s,varString:Mt(s)},ls(r,this.fragments)),{overwrite:!!c,incomingById:new Map,clientOnly:!1,deferred:!1,flavors:new Map}),m=this.processSelectionSet({result:o||Object.create(null),dataId:a,selectionSet:l.selectionSet,mergeTree:{map:new Map},context:h});if(!Ce(m))throw Be(11,o);return h.incomingById.forEach(function(p,f){var g=p.storeObject,_=p.mergeTree,v=p.fieldNodeSet,M=Kt(f);if(_&&_.map.size){var y=t.applyMerges(_,M,g,h);if(Ce(y))return;g=y}if(globalThis.__DEV__!==!1&&!h.overwrite){var q=Object.create(null);v.forEach(function(be){be.selectionSet&&(q[be.name.value]=!0)});var U=function(be){return q[ui(be)]===!0},J=function(be){var _e=_&&_.map.get(be);return!!(_e&&_e.info&&_e.info.merge)};Object.keys(g).forEach(function(be){U(be)&&!J(be)&&y0(M,g,be,h.store)})}n.merge(f,g)}),n.retain(m.__ref),m},i.prototype.processSelectionSet=function(n){var e=this,t=n.dataId,r=n.result,o=n.selectionSet,a=n.context,s=n.mergeTree,c=this.cache.policies,l=Object.create(null),d=t&&c.rootTypenamesById[t]||lo(r,o,a.fragmentMap)||t&&a.store.get(t,"__typename");typeof d=="string"&&(l.__typename=d);var h=function(){var y=hs(arguments,l,a.variables);if(Ce(y.from)){var q=a.incomingById.get(y.from.__ref);if(q){var U=c.readField(b(b({},y),{from:q.storeObject}),a);if(U!==void 0)return U}}return c.readField(y,a)},m=new Set;this.flattenFields(o,r,a,d).forEach(function(y,q){var U,J=jt(q),be=r[J];if(m.add(q),be!==void 0){var _e=c.getStoreFieldName({typename:d,fieldName:q.name.value,field:q,variables:y.variables}),ze=Pp(s,_e),et=e.processFieldValue(be,q,q.selectionSet?jl(y,!1,!1):y,ze),Wn=void 0;q.selectionSet&&(Ce(et)||tn(et))&&(Wn=h("__typename",et));var Gn=c.getMergeFunction(d,q.name.value,Wn);Gn?ze.info={field:q,typename:d,merge:Gn}:Np(s,_e),l=y.merge(l,(U={},U[_e]=et,U))}else globalThis.__DEV__!==!1&&!y.clientOnly&&!y.deferred&&!Sn.added(q)&&!c.getReadFunction(d,q.name.value)&&globalThis.__DEV__!==!1&&Y.error(12,jt(q),r)});try{var p=c.identify(r,{typename:d,selectionSet:o,fragmentMap:a.fragmentMap,storeObject:l,readField:h}),f=p[0],g=p[1];t=t||f,g&&(l=a.merge(l,g))}catch(y){if(!t)throw y}if(typeof t=="string"){var _=Kt(t),v=a.written[t]||(a.written[t]=[]);if(v.indexOf(o)>=0||(v.push(o),this.reader&&this.reader.isFresh(r,_,o,a)))return _;var M=a.incomingById.get(t);return M?(M.storeObject=a.merge(M.storeObject,l),M.mergeTree=Vl(M.mergeTree,s),m.forEach(function(y){return M.fieldNodeSet.add(y)})):a.incomingById.set(t,{storeObject:l,mergeTree:ms(s)?void 0:s,fieldNodeSet:m}),_}return l},i.prototype.processFieldValue=function(n,e,t,r){var o=this;return!e.selectionSet||n===null?globalThis.__DEV__!==!1?$a(n):n:Ve(n)?n.map(function(a,s){var c=o.processFieldValue(a,e,t,Pp(r,s));return Np(r,s),c}):this.processSelectionSet({result:n,selectionSet:e.selectionSet,context:t,mergeTree:r})},i.prototype.flattenFields=function(n,e,t,r){r===void 0&&(r=lo(e,n,t.fragmentMap));var o=new Map,a=this.cache.policies,s=new Qt(!1);return function c(l,d){var h=s.lookup(l,d.clientOnly,d.deferred);h.visited||(h.visited=!0,l.selections.forEach(function(m){if(ci(m,t.variables)){var p=d.clientOnly,f=d.deferred;if(!(p&&f)&&vt(m.directives)&&m.directives.forEach(function(v){var M=v.name.value;if(M==="client"&&(p=!0),M==="defer"){var y=Ti(v,t.variables);(!y||y.if!==!1)&&(f=!0)}}),At(m)){var g=o.get(m);g&&(p=p&&g.clientOnly,f=f&&g.deferred),o.set(m,jl(t,p,f))}else{var _=Si(m,t.lookupFragment);if(!_&&m.kind===G.FRAGMENT_SPREAD)throw Be(13,m.name.value);_&&a.fragmentMatches(_,r,e,t.variables)&&c(_.selectionSet,jl(t,p,f))}}}))}(n,t),o},i.prototype.applyMerges=function(n,e,t,r,o){var a,s=this;if(n.map.size&&!Ce(t)){var c=!Ve(t)&&(Ce(e)||tn(e))?e:void 0,l=t;c&&!o&&(o=[Ce(c)?c.__ref:c]);var d,h=function(m,p){return Ve(m)?typeof p=="number"?m[p]:void 0:r.store.getFieldValue(m,String(p))};n.map.forEach(function(m,p){var f=h(c,p),g=h(l,p);if(g!==void 0){o&&o.push(p);var _=s.applyMerges(m,f,g,r,o);_!==g&&(d=d||new Map,d.set(p,_)),o&&Y(o.pop()===p)}}),d&&(t=Ve(l)?l.slice(0):b({},l),d.forEach(function(m,p){t[p]=m}))}return n.info?this.cache.policies.runMergeFunction(e,t,n.info,r,o&&(a=r.store).getStorage.apply(a,o)):t},i}();var Vp=[];function Pp(i,n){var e=i.map;return e.has(n)||e.set(n,Vp.pop()||{map:new Map}),e.get(n)}function Vl(i,n){if(i===n||!n||ms(n))return i;if(!i||ms(i))return n;var e=i.info&&n.info?b(b({},i.info),n.info):i.info||n.info,t=i.map.size&&n.map.size,r=t?new Map:i.map.size?i.map:n.map,o={info:e,map:r};if(t){var a=new Set(n.map.keys());i.map.forEach(function(s,c){o.map.set(c,Vl(s,n.map.get(c))),a.delete(c)}),a.forEach(function(s){o.map.set(s,Vl(n.map.get(s),i.map.get(s)))})}return o}function ms(i){return!i||!(i.info||i.map.size)}function Np(i,n){var e=i.map,t=e.get(n);t&&ms(t)&&(Vp.push(t),e.delete(n))}var Lp=new Set;function y0(i,n,e,t){var r=function(h){var m=t.getFieldValue(h,e);return typeof m=="object"&&m},o=r(i);if(o){var a=r(n);if(a&&!Ce(o)&&!Ne(o,a)&&!Object.keys(o).every(function(h){return t.getFieldValue(a,h)!==void 0})){var s=t.getFieldValue(i,"__typename")||t.getFieldValue(n,"__typename"),c=ui(e),l="".concat(s,".").concat(c);if(!Lp.has(l)){Lp.add(l);var d=[];!Ve(o)&&!Ve(a)&&[o,a].forEach(function(h){var m=t.getFieldValue(h,"__typename");typeof m=="string"&&!d.includes(m)&&d.push(m)}),globalThis.__DEV__!==!1&&Y.warn(14,c,s,d.length?"either ensure all objects of type "+d.join(" and ")+" have an ID or a custom merge function, or ":"",l,b({},o),b({},a))}}}}var Io=function(i){mt(n,i);function n(e){e===void 0&&(e={});var t=i.call(this)||this;return t.watches=new Set,t.addTypenameTransform=new _r(Sn),t.assumeImmutableResults=!0,t.makeVar=us,t.txCount=0,t.config=gp(e),t.addTypename=!!t.config.addTypename,t.policies=new Rp({cache:t,dataIdFromObject:t.config.dataIdFromObject,possibleTypes:t.config.possibleTypes,typePolicies:t.config.typePolicies}),t.init(),t}return n.prototype.init=function(){var e=this.data=new kr.Root({policies:this.policies,resultCaching:this.config.resultCaching});this.optimisticData=e.stump,this.resetResultCache()},n.prototype.resetResultCache=function(e){var t=this,r=this.storeReader,o=this.config.fragments;this.storeWriter=new jp(this,this.storeReader=new wp({cache:this,addTypename:this.addTypename,resultCacheMaxSize:this.config.resultCacheMaxSize,canonizeResults:cs(this.config),canon:e?void 0:r&&r.canon,fragments:o}),o),this.maybeBroadcastWatch=Ai(function(a,s){return t.broadcastWatch(a,s)},{max:this.config.resultCacheMaxSize||dt["inMemoryCache.maybeBroadcastWatch"]||5e3,makeCacheKey:function(a){var s=a.optimistic?t.optimisticData:t.data;if(On(s)){var c=a.optimistic,l=a.id,d=a.variables;return s.makeCacheKey(a.query,a.callback,Mt({optimistic:c,id:l,variables:d}))}}}),new Set([this.data.group,this.optimisticData.group]).forEach(function(a){return a.resetCaching()})},n.prototype.restore=function(e){return this.init(),e&&this.data.replace(e),this},n.prototype.extract=function(e){return e===void 0&&(e=!1),(e?this.optimisticData:this.data).extract()},n.prototype.read=function(e){var t=e.returnPartialData,r=t===void 0?!1:t;try{return this.storeReader.diffQueryAgainstStore(b(b({},e),{store:e.optimistic?this.optimisticData:this.data,config:this.config,returnPartialData:r})).result||null}catch(o){if(o instanceof ko)return null;throw o}},n.prototype.write=function(e){try{return++this.txCount,this.storeWriter.writeToStore(this.data,e)}finally{!--this.txCount&&e.broadcast!==!1&&this.broadcastWatches()}},n.prototype.modify=function(e){if(it.call(e,"id")&&!e.id)return!1;var t=e.optimistic?this.optimisticData:this.data;try{return++this.txCount,t.modify(e.id||"ROOT_QUERY",e.fields)}finally{!--this.txCount&&e.broadcast!==!1&&this.broadcastWatches()}},n.prototype.diff=function(e){return this.storeReader.diffQueryAgainstStore(b(b({},e),{store:e.optimistic?this.optimisticData:this.data,rootId:e.id||"ROOT_QUERY",config:this.config}))},n.prototype.watch=function(e){var t=this;return this.watches.size||kp(this),this.watches.add(e),e.immediate&&this.maybeBroadcastWatch(e),function(){t.watches.delete(e)&&!t.watches.size&&Ol(t),t.maybeBroadcastWatch.forget(e)}},n.prototype.gc=function(e){var t;Mt.reset(),Ji.reset(),this.addTypenameTransform.resetCache(),(t=this.config.fragments)===null||t===void 0||t.resetCaches();var r=this.optimisticData.gc();return e&&!this.txCount&&(e.resetResultCache?this.resetResultCache(e.resetResultIdentities):e.resetResultIdentities&&this.storeReader.resetCanon()),r},n.prototype.retain=function(e,t){return(t?this.optimisticData:this.data).retain(e)},n.prototype.release=function(e,t){return(t?this.optimisticData:this.data).release(e)},n.prototype.identify=function(e){if(Ce(e))return e.__ref;try{return this.policies.identify(e)[0]}catch(t){globalThis.__DEV__!==!1&&Y.warn(t)}},n.prototype.evict=function(e){if(!e.id){if(it.call(e,"id"))return!1;e=b(b({},e),{id:"ROOT_QUERY"})}try{return++this.txCount,this.optimisticData.evict(e,this.data)}finally{!--this.txCount&&e.broadcast!==!1&&this.broadcastWatches()}},n.prototype.reset=function(e){var t=this;return this.init(),Mt.reset(),e&&e.discardWatches?(this.watches.forEach(function(r){return t.maybeBroadcastWatch.forget(r)}),this.watches.clear(),Ol(this)):this.broadcastWatches(),Promise.resolve()},n.prototype.removeOptimistic=function(e){var t=this.optimisticData.removeLayer(e);t!==this.optimisticData&&(this.optimisticData=t,this.broadcastWatches())},n.prototype.batch=function(e){var t=this,r=e.update,o=e.optimistic,a=o===void 0?!0:o,s=e.removeOptimistic,c=e.onWatchUpdated,l,d=function(m){var p=t,f=p.data,g=p.optimisticData;++t.txCount,m&&(t.data=t.optimisticData=m);try{return l=r(t)}finally{--t.txCount,t.data=f,t.optimisticData=g}},h=new Set;return c&&!this.txCount&&this.broadcastWatches(b(b({},e),{onWatchUpdated:function(m){return h.add(m),!1}})),typeof a=="string"?this.optimisticData=this.optimisticData.addLayer(a,d):a===!1?d(this.data):d(),typeof s=="string"&&(this.optimisticData=this.optimisticData.removeLayer(s)),c&&h.size?(this.broadcastWatches(b(b({},e),{onWatchUpdated:function(m,p){var f=c.call(this,m,p);return f!==!1&&h.delete(m),f}})),h.size&&h.forEach(function(m){return t.maybeBroadcastWatch.dirty(m)})):this.broadcastWatches(e),l},n.prototype.performTransaction=function(e,t){return this.batch({update:e,optimistic:t||t!==null})},n.prototype.transformDocument=function(e){return this.addTypenameToDocument(this.addFragmentsToDocument(e))},n.prototype.broadcastWatches=function(e){var t=this;this.txCount||this.watches.forEach(function(r){return t.maybeBroadcastWatch(r,e)})},n.prototype.addFragmentsToDocument=function(e){var t=this.config.fragments;return t?t.transform(e):e},n.prototype.addTypenameToDocument=function(e){return this.addTypename?this.addTypenameTransform.transformDocument(e):e},n.prototype.broadcastWatch=function(e,t){var r=e.lastDiff,o=this.diff(e);t&&(e.optimistic&&typeof t.optimistic=="string"&&(o.fromOptimisticTransaction=!0),t.onWatchUpdated&&t.onWatchUpdated.call(this,e,o,r)===!1)||(!r||!Ne(r.result,o.result))&&e.callback(e.lastDiff=o,r)},n}(os);globalThis.__DEV__!==!1&&(Io.prototype.getMemoryInternals=dm);var Se=function(i){return i[i.loading=1]="loading",i[i.setVariables=2]="setVariables",i[i.fetchMore=3]="fetchMore",i[i.refetch=4]="refetch",i[i.poll=6]="poll",i[i.ready=7]="ready",i[i.error=8]="error",i}(Se||{});function rn(i){return i?i<7:!1}var Bp=Object.assign,x0=Object.hasOwnProperty,ps=function(i){mt(n,i);function n(e){var t=e.queryManager,r=e.queryInfo,o=e.options,a=i.call(this,function(_){try{var v=_._subscription._observer;v&&!v.error&&(v.error=w0)}catch{}var M=!a.observers.size;a.observers.add(_);var y=a.last;return y&&y.error?_.error&&_.error(y.error):y&&y.result&&_.next&&_.next(y.result),M&&a.reobserve().catch(function(){}),function(){a.observers.delete(_)&&!a.observers.size&&a.tearDownQuery()}})||this;a.observers=new Set,a.subscriptions=new Set,a.queryInfo=r,a.queryManager=t,a.waitForOwnResult=Bl(o.fetchPolicy),a.isTornDown=!1,a.subscribeToMore=a.subscribeToMore.bind(a);var s=t.defaultOptions.watchQuery,c=s===void 0?{}:s,l=c.fetchPolicy,d=l===void 0?"cache-first":l,h=o.fetchPolicy,m=h===void 0?d:h,p=o.initialFetchPolicy,f=p===void 0?m==="standby"?d:m:p;a.options=b(b({},o),{initialFetchPolicy:f,fetchPolicy:m}),a.queryId=r.queryId||t.generateQueryId();var g=_i(a.query);return a.queryName=g&&g.name&&g.name.value,a}return Object.defineProperty(n.prototype,"query",{get:function(){return this.lastQuery||this.options.query},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"variables",{get:function(){return this.options.variables},enumerable:!1,configurable:!0}),n.prototype.result=function(){var e=this;return new Promise(function(t,r){var o={next:function(s){t(s),e.observers.delete(o),e.observers.size||e.queryManager.removeQuery(e.queryId),setTimeout(function(){a.unsubscribe()},0)},error:r},a=e.subscribe(o)})},n.prototype.resetDiff=function(){this.queryInfo.resetDiff()},n.prototype.getCurrentResult=function(e){e===void 0&&(e=!0);var t=this.getLastResult(!0),r=this.queryInfo.networkStatus||t&&t.networkStatus||Se.ready,o=b(b({},t),{loading:rn(r),networkStatus:r}),a=this.options.fetchPolicy,s=a===void 0?"cache-first":a;if(!(Bl(s)||this.queryManager.getDocumentInfo(this.query).hasForcedResolvers))if(this.waitForOwnResult)this.queryInfo.updateWatch();else{var c=this.queryInfo.getDiff();(c.complete||this.options.returnPartialData)&&(o.data=c.result),Ne(o.data,{})&&(o.data=void 0),c.complete?(delete o.partial,c.complete&&o.networkStatus===Se.loading&&(s==="cache-first"||s==="cache-only")&&(o.networkStatus=Se.ready,o.loading=!1)):o.partial=!0,globalThis.__DEV__!==!1&&!c.complete&&!this.options.partialRefetch&&!o.loading&&!o.data&&!o.error&&Hl(c.missing)}return e&&this.updateLastResult(o),o},n.prototype.isDifferentFromLastResult=function(e,t){if(!this.last)return!0;var r=this.queryManager.getDocumentInfo(this.query).hasNonreactiveDirective?!rs(this.query,this.last.result,e,this.variables):!Ne(this.last.result,e);return r||t&&!Ne(this.last.variables,t)},n.prototype.getLast=function(e,t){var r=this.last;if(r&&r[e]&&(!t||Ne(r.variables,this.variables)))return r[e]},n.prototype.getLastResult=function(e){return this.getLast("result",e)},n.prototype.getLastError=function(e){return this.getLast("error",e)},n.prototype.resetLastResults=function(){delete this.last,this.isTornDown=!1},n.prototype.resetQueryStoreErrors=function(){this.queryManager.resetErrors(this.queryId)},n.prototype.refetch=function(e){var t,r={pollInterval:0},o=this.options.fetchPolicy;if(o==="cache-and-network"?r.fetchPolicy=o:o==="no-cache"?r.fetchPolicy="no-cache":r.fetchPolicy="network-only",globalThis.__DEV__!==!1&&e&&x0.call(e,"variables")){var a=uo(this.query),s=a.variableDefinitions;(!s||!s.some(function(c){return c.variable.name.value==="variables"}))&&globalThis.__DEV__!==!1&&Y.warn(20,e,((t=a.name)===null||t===void 0?void 0:t.value)||a)}return e&&!Ne(this.options.variables,e)&&(r.variables=this.options.variables=b(b({},this.options.variables),e)),this.queryInfo.resetLastWrite(),this.reobserve(r,Se.refetch)},n.prototype.fetchMore=function(e){var t=this,r=b(b({},e.query?e:b(b(b(b({},this.options),{query:this.options.query}),e),{variables:b(b({},this.options.variables),e.variables)})),{fetchPolicy:"no-cache"});r.query=this.transformDocument(r.query);var o=this.queryManager.generateQueryId();this.lastQuery=e.query?this.transformDocument(this.options.query):r.query;var a=this.queryInfo,s=a.networkStatus;a.networkStatus=Se.fetchMore,r.notifyOnNetworkStatusChange&&this.observe();var c=new Set,l=e?.updateQuery,d=this.options.fetchPolicy!=="no-cache";return d||Y(l,21),this.queryManager.fetchQuery(o,r,Se.fetchMore).then(function(h){if(t.queryManager.removeQuery(o),a.networkStatus===Se.fetchMore&&(a.networkStatus=s),d)t.queryManager.cache.batch({update:function(f){var g=e.updateQuery;g?f.updateQuery({query:t.query,variables:t.variables,returnPartialData:!0,optimistic:!1},function(_){return g(_,{fetchMoreResult:h.data,variables:r.variables})}):f.writeQuery({query:r.query,variables:r.variables,data:h.data})},onWatchUpdated:function(f){c.add(f.query)}});else{var m=t.getLast("result"),p=l(m.data,{fetchMoreResult:h.data,variables:r.variables});t.reportResult(b(b({},m),{data:p}),t.variables)}return h}).finally(function(){d&&!c.has(t.query)&&zl(t)})},n.prototype.subscribeToMore=function(e){var t=this,r=this.queryManager.startGraphQLSubscription({query:e.document,variables:e.variables,context:e.context}).subscribe({next:function(o){var a=e.updateQuery;a&&t.updateQuery(function(s,c){var l=c.variables;return a(s,{subscriptionData:o,variables:l})})},error:function(o){if(e.onError){e.onError(o);return}globalThis.__DEV__!==!1&&Y.error(22,o)}});return this.subscriptions.add(r),function(){t.subscriptions.delete(r)&&r.unsubscribe()}},n.prototype.setOptions=function(e){return this.reobserve(e)},n.prototype.silentSetOptions=function(e){var t=yi(this.options,e||{});Bp(this.options,t)},n.prototype.setVariables=function(e){return Ne(this.variables,e)?this.observers.size?this.result():Promise.resolve():(this.options.variables=e,this.observers.size?this.reobserve({fetchPolicy:this.options.initialFetchPolicy,variables:e},Se.setVariables):Promise.resolve())},n.prototype.updateQuery=function(e){var t=this.queryManager,r=t.cache.diff({query:this.options.query,variables:this.variables,returnPartialData:!0,optimistic:!1}).result,o=e(r,{variables:this.variables});o&&(t.cache.writeQuery({query:this.options.query,data:o,variables:this.variables}),t.broadcastQueries())},n.prototype.startPolling=function(e){this.options.pollInterval=e,this.updatePolling()},n.prototype.stopPolling=function(){this.options.pollInterval=0,this.updatePolling()},n.prototype.applyNextFetchPolicy=function(e,t){if(t.nextFetchPolicy){var r=t.fetchPolicy,o=r===void 0?"cache-first":r,a=t.initialFetchPolicy,s=a===void 0?o:a;o==="standby"||(typeof t.nextFetchPolicy=="function"?t.fetchPolicy=t.nextFetchPolicy(o,{reason:e,options:t,observable:this,initialFetchPolicy:s}):e==="variables-changed"?t.fetchPolicy=s:t.fetchPolicy=t.nextFetchPolicy)}return t.fetchPolicy},n.prototype.fetch=function(e,t,r){return this.queryManager.setObservableQuery(this),this.queryManager.fetchConcastWithInfo(this.queryId,e,t,r)},n.prototype.updatePolling=function(){var e=this;if(!this.queryManager.ssrMode){var t=this,r=t.pollingInfo,o=t.options.pollInterval;if(!o||!this.hasObservers()){r&&(clearTimeout(r.timeout),delete this.pollingInfo);return}if(!(r&&r.interval===o)){Y(o,23);var a=r||(this.pollingInfo={});a.interval=o;var s=function(){var l,d;e.pollingInfo&&(!rn(e.queryInfo.networkStatus)&&!(!((d=(l=e.options).skipPollAttempt)===null||d===void 0)&&d.call(l))?e.reobserve({fetchPolicy:e.options.initialFetchPolicy==="no-cache"?"no-cache":"network-only"},Se.poll).then(c,c):c())},c=function(){var l=e.pollingInfo;l&&(clearTimeout(l.timeout),l.timeout=setTimeout(s,l.interval))};c()}}},n.prototype.updateLastResult=function(e,t){t===void 0&&(t=this.variables);var r=this.getLastError();return r&&this.last&&!Ne(t,this.last.variables)&&(r=void 0),this.last=b({result:this.queryManager.assumeImmutableResults?e:$a(e),variables:t},r?{error:r}:null)},n.prototype.reobserveAsConcast=function(e,t){var r=this;this.isTornDown=!1;var o=t===Se.refetch||t===Se.fetchMore||t===Se.poll,a=this.options.variables,s=this.options.fetchPolicy,c=yi(this.options,e||{}),l=o?c:Bp(this.options,c),d=this.transformDocument(l.query);this.lastQuery=d,o||(this.updatePolling(),e&&e.variables&&!Ne(e.variables,a)&&l.fetchPolicy!=="standby"&&(l.fetchPolicy===s||typeof l.nextFetchPolicy=="function")&&(this.applyNextFetchPolicy("variables-changed",l),t===void 0&&(t=Se.setVariables))),this.waitForOwnResult&&(this.waitForOwnResult=Bl(l.fetchPolicy));var h=function(){r.concast===f&&(r.waitForOwnResult=!1)},m=l.variables&&b({},l.variables),p=this.fetch(l,t,d),f=p.concast,g=p.fromLink,_={next:function(v){Ne(r.variables,m)&&(h(),r.reportResult(v,m))},error:function(v){Ne(r.variables,m)&&(is(v)||(v=new Oi({networkError:v})),h(),r.reportError(v,m))}};return!o&&(g||!this.concast)&&(this.concast&&this.observer&&this.concast.removeObserver(this.observer),this.concast=f,this.observer=_),f.addObserver(_),f},n.prototype.reobserve=function(e,t){return this.reobserveAsConcast(e,t).promise},n.prototype.resubscribeAfterError=function(){for(var e=[],t=0;t0},n.prototype.tearDownQuery=function(){this.isTornDown||(this.concast&&this.observer&&(this.concast.removeObserver(this.observer),delete this.concast,delete this.observer),this.stopPolling(),this.subscriptions.forEach(function(e){return e.unsubscribe()}),this.subscriptions.clear(),this.queryManager.stopQuery(this.queryId),this.observers.clear(),this.isTornDown=!0)},n.prototype.transformDocument=function(e){return this.queryManager.transform(e)},n}(xe);Ka(ps);function zl(i){var n=i.options,e=n.fetchPolicy,t=n.nextFetchPolicy;return e==="cache-and-network"||e==="network-only"?i.reobserve({fetchPolicy:"cache-first",nextFetchPolicy:function(r,o){return this.nextFetchPolicy=t,typeof this.nextFetchPolicy=="function"?this.nextFetchPolicy(r,o):e}}):i.reobserve()}function w0(i){globalThis.__DEV__!==!1&&Y.error(24,i.message,i.stack)}function Hl(i){globalThis.__DEV__!==!1&&i&&globalThis.__DEV__!==!1&&Y.debug(25,i)}function Bl(i){return i==="network-only"||i==="no-cache"||i==="standby"}var Ir=new(li?WeakMap:Map);function Ql(i,n){var e=i[n];typeof e=="function"&&(i[n]=function(){return Ir.set(i,(Ir.get(i)+1)%1e15),e.apply(this,arguments)})}function zp(i){i.notifyTimeout&&(clearTimeout(i.notifyTimeout),i.notifyTimeout=void 0)}var fs=function(){function i(n,e){e===void 0&&(e=n.generateQueryId()),this.queryId=e,this.listeners=new Set,this.document=null,this.lastRequestId=1,this.stopped=!1,this.dirty=!1,this.observableQuery=null;var t=this.cache=n.cache;Ir.has(t)||(Ir.set(t,0),Ql(t,"evict"),Ql(t,"modify"),Ql(t,"reset"))}return i.prototype.init=function(n){var e=n.networkStatus||Se.loading;return this.variables&&this.networkStatus!==Se.loading&&!Ne(this.variables,n.variables)&&(e=Se.setVariables),Ne(n.variables,this.variables)||(this.lastDiff=void 0),Object.assign(this,{document:n.document,variables:n.variables,networkError:null,graphQLErrors:this.graphQLErrors||[],networkStatus:e}),n.observableQuery&&this.setObservableQuery(n.observableQuery),n.lastRequestId&&(this.lastRequestId=n.lastRequestId),this},i.prototype.reset=function(){zp(this),this.dirty=!1},i.prototype.resetDiff=function(){this.lastDiff=void 0},i.prototype.getDiff=function(){var n=this.getDiffOptions();if(this.lastDiff&&Ne(n,this.lastDiff.options))return this.lastDiff.diff;this.updateWatch(this.variables);var e=this.observableQuery;if(e&&e.options.fetchPolicy==="no-cache")return{complete:!1};var t=this.cache.diff(n);return this.updateLastDiff(t,n),t},i.prototype.updateLastDiff=function(n,e){this.lastDiff=n?{diff:n,options:e||this.getDiffOptions()}:void 0},i.prototype.getDiffOptions=function(n){var e;return n===void 0&&(n=this.variables),{query:this.document,variables:n,returnPartialData:!0,optimistic:!0,canonizeResults:(e=this.observableQuery)===null||e===void 0?void 0:e.options.canonizeResults}},i.prototype.setDiff=function(n){var e=this,t,r=this.lastDiff&&this.lastDiff.diff;n&&!n.complete&&(!((t=this.observableQuery)===null||t===void 0)&&t.getLastError())||(this.updateLastDiff(n),!this.dirty&&!Ne(r&&r.result,n&&n.result)&&(this.dirty=!0,this.notifyTimeout||(this.notifyTimeout=setTimeout(function(){return e.notify()},0))))},i.prototype.setObservableQuery=function(n){var e=this;n!==this.observableQuery&&(this.oqListener&&this.listeners.delete(this.oqListener),this.observableQuery=n,n?(n.queryInfo=this,this.listeners.add(this.oqListener=function(){var t=e.getDiff();t.fromOptimisticTransaction?n.observe():zl(n)})):delete this.oqListener)},i.prototype.notify=function(){var n=this;zp(this),this.shouldNotify()&&this.listeners.forEach(function(e){return e(n)}),this.dirty=!1},i.prototype.shouldNotify=function(){if(!this.dirty||!this.listeners.size)return!1;if(rn(this.networkStatus)&&this.observableQuery){var n=this.observableQuery.options.fetchPolicy;if(n!=="cache-only"&&n!=="cache-and-network")return!1}return!0},i.prototype.stop=function(){if(!this.stopped){this.stopped=!0,this.reset(),this.cancel(),this.cancel=i.prototype.cancel;var n=this.observableQuery;n&&n.stopPolling()}},i.prototype.cancel=function(){},i.prototype.updateWatch=function(n){var e=this;n===void 0&&(n=this.variables);var t=this.observableQuery;if(!(t&&t.options.fetchPolicy==="no-cache")){var r=b(b({},this.getDiffOptions(n)),{watcher:this,callback:function(o){return e.setDiff(o)}});(!this.lastWatch||!Ne(r,this.lastWatch))&&(this.cancel(),this.cancel=this.cache.watch(this.lastWatch=r))}},i.prototype.resetLastWrite=function(){this.lastWrite=void 0},i.prototype.shouldWrite=function(n,e){var t=this.lastWrite;return!(t&&t.dmCount===Ir.get(this.cache)&&Ne(e,t.variables)&&Ne(n.data,t.result.data))},i.prototype.markResult=function(n,e,t,r){var o=this,a=new Vt,s=vt(n.errors)?n.errors.slice(0):[];if(this.reset(),"incremental"in n&&vt(n.incremental)){var c=Xa(this.getDiff().result,n);n.data=c}else if("hasNext"in n&&n.hasNext){var l=this.getDiff();n.data=a.merge(l.result,n.data)}this.graphQLErrors=s,t.fetchPolicy==="no-cache"?this.updateLastDiff({result:n.data,complete:!0},this.getDiffOptions(t.variables)):r!==0&&(gs(n,t.errorPolicy)?this.cache.performTransaction(function(d){if(o.shouldWrite(n,t.variables))d.writeQuery({query:e,data:n.data,variables:t.variables,overwrite:r===1}),o.lastWrite={result:n,variables:t.variables,dmCount:Ir.get(o.cache)};else if(o.lastDiff&&o.lastDiff.diff.complete){n.data=o.lastDiff.diff.result;return}var h=o.getDiffOptions(t.variables),m=d.diff(h);!o.stopped&&Ne(o.variables,t.variables)&&o.updateWatch(t.variables),o.updateLastDiff(m,h),m.complete&&(n.data=m.result)}):this.lastWrite=void 0)},i.prototype.markReady=function(){return this.networkError=null,this.networkStatus=Se.ready},i.prototype.markError=function(n){return this.networkStatus=Se.error,this.lastWrite=void 0,this.reset(),n.graphQLErrors&&(this.graphQLErrors=n.graphQLErrors),n.networkError&&(this.networkError=n.networkError),n},i}();function gs(i,n){n===void 0&&(n="none");var e=n==="ignore"||n==="all",t=!wr(i);return!t&&e&&i.data&&(t=!0),t}var C0=Object.prototype.hasOwnProperty,Hp=Object.create(null),Qp=function(){function i(n){var e=this;this.clientAwareness={},this.queries=new Map,this.fetchCancelFns=new Map,this.transformCache=new pr(dt["queryManager.getDocumentInfo"]||2e3),this.queryIdCounter=1,this.requestIdCounter=1,this.mutationIdCounter=1,this.inFlightLinkObservables=new Qt(!1);var t=new _r(function(o){return e.cache.transformDocument(o)},{cache:!1});this.cache=n.cache,this.link=n.link,this.defaultOptions=n.defaultOptions,this.queryDeduplication=n.queryDeduplication,this.clientAwareness=n.clientAwareness,this.localState=n.localState,this.ssrMode=n.ssrMode,this.assumeImmutableResults=n.assumeImmutableResults;var r=n.documentTransform;this.documentTransform=r?t.concat(r).concat(t):t,this.defaultContext=n.defaultContext||Object.create(null),(this.onBroadcast=n.onBroadcast)&&(this.mutationStore=Object.create(null))}return i.prototype.stop=function(){var n=this;this.queries.forEach(function(e,t){n.stopQueryNoBroadcast(t)}),this.cancelPendingFetches(Be(26))},i.prototype.cancelPendingFetches=function(n){this.fetchCancelFns.forEach(function(e){return e(n)}),this.fetchCancelFns.clear()},i.prototype.mutate=function(n){return ni(this,arguments,void 0,function(e){var t,r,o,a,s,c,l,d=e.mutation,h=e.variables,m=e.optimisticResponse,p=e.updateQueries,f=e.refetchQueries,g=f===void 0?[]:f,_=e.awaitRefetchQueries,v=_===void 0?!1:_,M=e.update,y=e.onQueryUpdated,q=e.fetchPolicy,U=q===void 0?((c=this.defaultOptions.mutate)===null||c===void 0?void 0:c.fetchPolicy)||"network-only":q,J=e.errorPolicy,be=J===void 0?((l=this.defaultOptions.mutate)===null||l===void 0?void 0:l.errorPolicy)||"none":J,_e=e.keepRootFields,ze=e.context;return ri(this,function(et){switch(et.label){case 0:return Y(d,27),Y(U==="network-only"||U==="no-cache",28),t=this.generateMutationId(),d=this.cache.transformForLink(this.transform(d)),r=this.getDocumentInfo(d).hasClientExports,h=this.getVariables(d,h),r?[4,this.localState.addExportedVariables(d,h,ze)]:[3,2];case 1:h=et.sent(),et.label=2;case 2:return o=this.mutationStore&&(this.mutationStore[t]={mutation:d,variables:h,loading:!0,error:null}),a=m&&this.markMutationOptimistic(m,{mutationId:t,document:d,variables:h,fetchPolicy:U,errorPolicy:be,context:ze,updateQueries:p,update:M,keepRootFields:_e}),this.broadcastQueries(),s=this,[2,new Promise(function(Wn,Gn){return Ya(s.getObservableFromLink(d,b(b({},ze),{optimisticResponse:a?m:void 0}),h,{},!1),function(_t){if(wr(_t)&&be==="none")throw new Oi({graphQLErrors:Za(_t)});o&&(o.loading=!1,o.error=null);var ji=b({},_t);return typeof g=="function"&&(g=g(ji)),be==="ignore"&&wr(ji)&&delete ji.errors,s.markMutationResult({mutationId:t,result:ji,document:d,variables:h,fetchPolicy:U,errorPolicy:be,context:ze,update:M,updateQueries:p,awaitRefetchQueries:v,refetchQueries:g,removeOptimistic:a?t:void 0,onQueryUpdated:y,keepRootFields:_e})}).subscribe({next:function(_t){s.broadcastQueries(),(!("hasNext"in _t)||_t.hasNext===!1)&&Wn(_t)},error:function(_t){o&&(o.loading=!1,o.error=_t),a&&s.cache.removeOptimistic(t),s.broadcastQueries(),Gn(_t instanceof Oi?_t:new Oi({networkError:_t}))}})})]}})})},i.prototype.markMutationResult=function(n,e){var t=this;e===void 0&&(e=this.cache);var r=n.result,o=[],a=n.fetchPolicy==="no-cache";if(!a&&gs(r,n.errorPolicy)){if(en(r)||o.push({result:r.data,dataId:"ROOT_MUTATION",query:n.document,variables:n.variables}),en(r)&&vt(r.incremental)){var s=e.diff({id:"ROOT_MUTATION",query:this.getDocumentInfo(n.document).asQuery,variables:n.variables,optimistic:!1,returnPartialData:!0}),c=void 0;s.result&&(c=Xa(s.result,r)),typeof c<"u"&&(r.data=c,o.push({result:c,dataId:"ROOT_MUTATION",query:n.document,variables:n.variables}))}var l=n.updateQueries;l&&this.queries.forEach(function(h,m){var p=h.observableQuery,f=p&&p.queryName;if(!(!f||!C0.call(l,f))){var g=l[f],_=t.queries.get(m),v=_.document,M=_.variables,y=e.diff({query:v,variables:M,returnPartialData:!0,optimistic:!1}),q=y.result,U=y.complete;if(U&&q){var J=g(q,{mutationResult:r,queryName:v&&gr(v)||void 0,queryVariables:M});J&&o.push({result:J,dataId:"ROOT_QUERY",query:v,variables:M})}}})}if(o.length>0||(n.refetchQueries||"").length>0||n.update||n.onQueryUpdated||n.removeOptimistic){var d=[];if(this.refetchQueries({updateCache:function(h){a||o.forEach(function(g){return h.write(g)});var m=n.update,p=!Wm(r)||en(r)&&!r.hasNext;if(m){if(!a){var f=h.diff({id:"ROOT_MUTATION",query:t.getDocumentInfo(n.document).asQuery,variables:n.variables,optimistic:!1,returnPartialData:!0});f.complete&&(r=b(b({},r),{data:f.result}),"incremental"in r&&delete r.incremental,"hasNext"in r&&delete r.hasNext)}p&&m(h,r,{context:n.context,variables:n.variables})}!a&&!n.keepRootFields&&p&&h.modify({id:"ROOT_MUTATION",fields:function(g,_){var v=_.fieldName,M=_.DELETE;return v==="__typename"?g:M}})},include:n.refetchQueries,optimistic:!1,removeOptimistic:n.removeOptimistic,onQueryUpdated:n.onQueryUpdated||null}).forEach(function(h){return d.push(h)}),n.awaitRefetchQueries||n.onQueryUpdated)return Promise.all(d).then(function(){return r})}return Promise.resolve(r)},i.prototype.markMutationOptimistic=function(n,e){var t=this,r=typeof n=="function"?n(e.variables,{IGNORE:Hp}):n;return r===Hp?!1:(this.cache.recordOptimisticTransaction(function(o){try{t.markMutationResult(b(b({},e),{result:{data:r}}),o)}catch(a){globalThis.__DEV__!==!1&&Y.error(a)}},e.mutationId),!0)},i.prototype.fetchQuery=function(n,e,t){return this.fetchConcastWithInfo(n,e,t).concast.promise},i.prototype.getQueryStore=function(){var n=Object.create(null);return this.queries.forEach(function(e,t){n[t]={variables:e.variables,networkStatus:e.networkStatus,networkError:e.networkError,graphQLErrors:e.graphQLErrors}}),n},i.prototype.resetErrors=function(n){var e=this.queries.get(n);e&&(e.networkError=void 0,e.graphQLErrors=[])},i.prototype.transform=function(n){return this.documentTransform.transformDocument(n)},i.prototype.getDocumentInfo=function(n){var e=this.transformCache;if(!e.has(n)){var t={hasClientExports:qc(n),hasForcedResolvers:this.localState.shouldForceResolvers(n),hasNonreactiveDirective:Ei(["nonreactive"],n),clientQuery:this.localState.clientQuery(n),serverQuery:qa([{name:"client",remove:!0},{name:"connection"},{name:"nonreactive"}],n),defaultVars:Dn(_i(n)),asQuery:b(b({},n),{definitions:n.definitions.map(function(r){return r.kind==="OperationDefinition"&&r.operation!=="query"?b(b({},r),{operation:"query"}):r})})};e.set(n,t)}return e.get(n)},i.prototype.getVariables=function(n,e){return b(b({},this.getDocumentInfo(n).defaultVars),e)},i.prototype.watchQuery=function(n){var e=this.transform(n.query);n=b(b({},n),{variables:this.getVariables(e,n.variables)}),typeof n.notifyOnNetworkStatusChange>"u"&&(n.notifyOnNetworkStatusChange=!1);var t=new fs(this),r=new ps({queryManager:this,queryInfo:t,options:n});return r.lastQuery=e,this.queries.set(r.queryId,t),t.init({document:e,observableQuery:r,variables:r.variables}),r},i.prototype.query=function(n,e){var t=this;return e===void 0&&(e=this.generateQueryId()),Y(n.query,29),Y(n.query.kind==="Document",30),Y(!n.returnPartialData,31),Y(!n.pollInterval,32),this.fetchQuery(e,b(b({},n),{query:this.transform(n.query)})).finally(function(){return t.stopQuery(e)})},i.prototype.generateQueryId=function(){return String(this.queryIdCounter++)},i.prototype.generateRequestId=function(){return this.requestIdCounter++},i.prototype.generateMutationId=function(){return String(this.mutationIdCounter++)},i.prototype.stopQueryInStore=function(n){this.stopQueryInStoreNoBroadcast(n),this.broadcastQueries()},i.prototype.stopQueryInStoreNoBroadcast=function(n){var e=this.queries.get(n);e&&e.stop()},i.prototype.clearStore=function(n){return n===void 0&&(n={discardWatches:!0}),this.cancelPendingFetches(Be(33)),this.queries.forEach(function(e){e.observableQuery?e.networkStatus=Se.loading:e.stop()}),this.mutationStore&&(this.mutationStore=Object.create(null)),this.cache.reset(n)},i.prototype.getObservableQueries=function(n){var e=this;n===void 0&&(n="active");var t=new Map,r=new Map,o=new Set;return Array.isArray(n)&&n.forEach(function(a){typeof a=="string"?r.set(a,!1):Zc(a)?r.set(e.transform(a),!1):Ie(a)&&a.query&&o.add(a)}),this.queries.forEach(function(a,s){var c=a.observableQuery,l=a.document;if(c){if(n==="all"){t.set(s,c);return}var d=c.queryName,h=c.options.fetchPolicy;if(h==="standby"||n==="active"&&!c.hasObservers())return;(n==="active"||d&&r.has(d)||l&&r.has(l))&&(t.set(s,c),d&&r.set(d,!0),l&&r.set(l,!0))}}),o.size&&o.forEach(function(a){var s=no("legacyOneTimeQuery"),c=e.getQuery(s).init({document:a.query,variables:a.variables}),l=new ps({queryManager:e,queryInfo:c,options:b(b({},a),{fetchPolicy:"network-only"})});Y(l.queryId===s),c.setObservableQuery(l),t.set(s,l)}),globalThis.__DEV__!==!1&&r.size&&r.forEach(function(a,s){a||globalThis.__DEV__!==!1&&Y.warn(typeof s=="string"?34:35,s)}),t},i.prototype.reFetchObservableQueries=function(n){var e=this;n===void 0&&(n=!1);var t=[];return this.getObservableQueries(n?"all":"active").forEach(function(r,o){var a=r.options.fetchPolicy;r.resetLastResults(),(n||a!=="standby"&&a!=="cache-only")&&t.push(r.refetch()),e.getQuery(o).setDiff(null)}),this.broadcastQueries(),Promise.all(t)},i.prototype.setObservableQuery=function(n){this.getQuery(n.queryId).setObservableQuery(n)},i.prototype.startGraphQLSubscription=function(n){var e=this,t=n.query,r=n.fetchPolicy,o=n.errorPolicy,a=o===void 0?"none":o,s=n.variables,c=n.context,l=c===void 0?{}:c,d=n.extensions,h=d===void 0?{}:d;t=this.transform(t),s=this.getVariables(t,s);var m=function(f){return e.getObservableFromLink(t,l,f,h).map(function(g){r!=="no-cache"&&(gs(g,a)&&e.cache.write({query:t,result:g.data,dataId:"ROOT_SUBSCRIPTION",variables:f}),e.broadcastQueries());var _=wr(g),v=Km(g);if(_||v){var M={};if(_&&(M.graphQLErrors=g.errors),v&&(M.protocolErrors=g.extensions[wo]),a==="none"||v)throw new Oi(M)}return a==="ignore"&&delete g.errors,g})};if(this.getDocumentInfo(t).hasClientExports){var p=this.localState.addExportedVariables(t,s,l).then(m);return new xe(function(f){var g=null;return p.then(function(_){return g=_.subscribe(f)},f.error),function(){return g&&g.unsubscribe()}})}return m(s)},i.prototype.stopQuery=function(n){this.stopQueryNoBroadcast(n),this.broadcastQueries()},i.prototype.stopQueryNoBroadcast=function(n){this.stopQueryInStoreNoBroadcast(n),this.removeQuery(n)},i.prototype.removeQuery=function(n){this.fetchCancelFns.delete(n),this.queries.has(n)&&(this.getQuery(n).stop(),this.queries.delete(n))},i.prototype.broadcastQueries=function(){this.onBroadcast&&this.onBroadcast(),this.queries.forEach(function(n){return n.notify()})},i.prototype.getLocalState=function(){return this.localState},i.prototype.getObservableFromLink=function(n,e,t,r,o){var a=this,s;o===void 0&&(o=(s=e?.queryDeduplication)!==null&&s!==void 0?s:this.queryDeduplication);var c,l=this.getDocumentInfo(n),d=l.serverQuery,h=l.clientQuery;if(d){var m=this,p=m.inFlightLinkObservables,f=m.link,g={query:d,variables:t,operationName:gr(d)||void 0,context:this.prepareContext(b(b({},e),{forceFetch:!o})),extensions:r};if(e=g.context,o){var _=Ji(d),v=Mt(t),M=p.lookup(_,v);if(c=M.observable,!c){var y=new An([Cr(f,g)]);c=M.observable=y,y.beforeNext(function(){p.remove(_,v)})}}else c=new An([Cr(f,g)])}else c=new An([xe.of({data:{}})]),e=this.prepareContext(e);return h&&(c=Ya(c,function(q){return a.localState.runResolvers({document:h,remoteResult:q,context:e,variables:t})})),c},i.prototype.getResultsFromLink=function(n,e,t){var r=n.lastRequestId=this.generateRequestId(),o=this.cache.transformForLink(t.query);return Ya(this.getObservableFromLink(o,t.context,t.variables),function(a){var s=Za(a),c=s.length>0,l=t.errorPolicy;if(r>=n.lastRequestId){if(c&&l==="none")throw n.markError(new Oi({graphQLErrors:s}));n.markResult(a,o,t,e),n.markReady()}var d={data:a.data,loading:!1,networkStatus:Se.ready};return c&&l==="none"&&(d.data=void 0),c&&l!=="ignore"&&(d.errors=s,d.networkStatus=Se.error),d},function(a){var s=is(a)?a:new Oi({networkError:a});throw r>=n.lastRequestId&&n.markError(s),s})},i.prototype.fetchConcastWithInfo=function(n,e,t,r){var o=this;t===void 0&&(t=Se.loading),r===void 0&&(r=e.query);var a=this.getVariables(r,e.variables),s=this.getQuery(n),c=this.defaultOptions.watchQuery,l=e.fetchPolicy,d=l===void 0?c&&c.fetchPolicy||"cache-first":l,h=e.errorPolicy,m=h===void 0?c&&c.errorPolicy||"none":h,p=e.returnPartialData,f=p===void 0?!1:p,g=e.notifyOnNetworkStatusChange,_=g===void 0?!1:g,v=e.context,M=v===void 0?{}:v,y=Object.assign({},e,{query:r,variables:a,fetchPolicy:d,errorPolicy:m,returnPartialData:f,notifyOnNetworkStatusChange:_,context:M}),q=function(ze){y.variables=ze;var et=o.fetchQueryByPolicy(s,y,t);return y.fetchPolicy!=="standby"&&et.sources.length>0&&s.observableQuery&&s.observableQuery.applyNextFetchPolicy("after-fetch",e),et},U=function(){return o.fetchCancelFns.delete(n)};this.fetchCancelFns.set(n,function(ze){U(),setTimeout(function(){return J.cancel(ze)})});var J,be;if(this.getDocumentInfo(y.query).hasClientExports)J=new An(this.localState.addExportedVariables(y.query,y.variables,y.context).then(q).then(function(ze){return ze.sources})),be=!0;else{var _e=q(y.variables);be=_e.fromLink,J=new An(_e.sources)}return J.promise.then(U,U),{concast:J,fromLink:be}},i.prototype.refetchQueries=function(n){var e=this,t=n.updateCache,r=n.include,o=n.optimistic,a=o===void 0?!1:o,s=n.removeOptimistic,c=s===void 0?a?no("refetchQueries"):void 0:s,l=n.onQueryUpdated,d=new Map;r&&this.getObservableQueries(r).forEach(function(m,p){d.set(p,{oq:m,lastDiff:e.getQuery(p).getDiff()})});var h=new Map;return t&&this.cache.batch({update:t,optimistic:a&&c||!1,removeOptimistic:c,onWatchUpdated:function(m,p,f){var g=m.watcher instanceof fs&&m.watcher.observableQuery;if(g){if(l){d.delete(g.queryId);var _=l(g,p,f);return _===!0&&(_=g.refetch()),_!==!1&&h.set(g,_),_}l!==null&&d.set(g.queryId,{oq:g,lastDiff:f,diff:p})}}}),d.size&&d.forEach(function(m,p){var f=m.oq,g=m.lastDiff,_=m.diff,v;if(l){if(!_){var M=f.queryInfo;M.reset(),_=M.getDiff()}v=l(f,_,g)}(!l||v===!0)&&(v=f.refetch()),v!==!1&&h.set(f,v),p.indexOf("legacyOneTimeQuery")>=0&&e.stopQueryNoBroadcast(p)}),c&&this.cache.removeOptimistic(c),h},i.prototype.fetchQueryByPolicy=function(n,e,t){var r=this,o=e.query,a=e.variables,s=e.fetchPolicy,c=e.refetchWritePolicy,l=e.errorPolicy,d=e.returnPartialData,h=e.context,m=e.notifyOnNetworkStatusChange,p=n.networkStatus;n.init({document:o,variables:a,networkStatus:t});var f=function(){return n.getDiff()},g=function(q,U){U===void 0&&(U=n.networkStatus||Se.loading);var J=q.result;globalThis.__DEV__!==!1&&!d&&!Ne(J,{})&&Hl(q.missing);var be=function(_e){return xe.of(b({data:_e,loading:rn(U),networkStatus:U},q.complete?null:{partial:!0}))};return J&&r.getDocumentInfo(o).hasForcedResolvers?r.localState.runResolvers({document:o,remoteResult:{data:J},context:h,variables:a,onlyRunForcedResolvers:!0}).then(function(_e){return be(_e.data||void 0)}):l==="none"&&U===Se.refetch&&Array.isArray(q.missing)?be(void 0):be(J)},_=s==="no-cache"?0:t===Se.refetch&&c!=="merge"?1:2,v=function(){return r.getResultsFromLink(n,_,{query:o,variables:a,context:h,fetchPolicy:s,errorPolicy:l})},M=m&&typeof p=="number"&&p!==t&&rn(t);switch(s){default:case"cache-first":{var y=f();return y.complete?{fromLink:!1,sources:[g(y,n.markReady())]}:d||M?{fromLink:!0,sources:[g(y),v()]}:{fromLink:!0,sources:[v()]}}case"cache-and-network":{var y=f();return y.complete||d||M?{fromLink:!0,sources:[g(y),v()]}:{fromLink:!0,sources:[v()]}}case"cache-only":return{fromLink:!1,sources:[g(f(),n.markReady())]};case"network-only":return M?{fromLink:!0,sources:[g(f()),v()]}:{fromLink:!0,sources:[v()]};case"no-cache":return M?{fromLink:!0,sources:[g(n.getDiff()),v()]}:{fromLink:!0,sources:[v()]};case"standby":return{fromLink:!1,sources:[]}}},i.prototype.getQuery=function(n){return n&&!this.queries.has(n)&&this.queries.set(n,new fs(this,n)),this.queries.get(n)},i.prototype.prepareContext=function(n){n===void 0&&(n={});var e=this.localState.prepareContext(n);return b(b(b({},this.defaultContext),e),{clientAwareness:this.clientAwareness})},i}();var Up=function(){function i(n){var e=n.cache,t=n.client,r=n.resolvers,o=n.fragmentMatcher;this.selectionsToResolveCache=new WeakMap,this.cache=e,t&&(this.client=t),r&&this.addResolvers(r),o&&this.setFragmentMatcher(o)}return i.prototype.addResolvers=function(n){var e=this;this.resolvers=this.resolvers||{},Array.isArray(n)?n.forEach(function(t){e.resolvers=al(e.resolvers,t)}):this.resolvers=al(this.resolvers,n)},i.prototype.setResolvers=function(n){this.resolvers={},this.addResolvers(n)},i.prototype.getResolvers=function(){return this.resolvers||{}},i.prototype.runResolvers=function(n){return ni(this,arguments,void 0,function(e){var t=e.document,r=e.remoteResult,o=e.context,a=e.variables,s=e.onlyRunForcedResolvers,c=s===void 0?!1:s;return ri(this,function(l){return t?[2,this.resolveDocument(t,r.data,o,a,this.fragmentMatcher,c).then(function(d){return b(b({},r),{data:d.result})})]:[2,r]})})},i.prototype.setFragmentMatcher=function(n){this.fragmentMatcher=n},i.prototype.getFragmentMatcher=function(){return this.fragmentMatcher},i.prototype.clientQuery=function(n){return Ei(["client"],n)&&this.resolvers?n:null},i.prototype.serverQuery=function(n){return go(n)},i.prototype.prepareContext=function(n){var e=this.cache;return b(b({},n),{cache:e,getCacheKey:function(t){return e.identify(t)}})},i.prototype.addExportedVariables=function(n){return ni(this,arguments,void 0,function(e,t,r){return t===void 0&&(t={}),r===void 0&&(r={}),ri(this,function(o){return e?[2,this.resolveDocument(e,this.buildRootValueFromCache(e,t)||{},this.prepareContext(r),t).then(function(a){return b(b({},t),a.exportedVariables)})]:[2,b({},t)]})})},i.prototype.shouldForceResolvers=function(n){var e=!1;return wt(n,{Directive:{enter:function(t){if(t.name.value==="client"&&t.arguments&&(e=t.arguments.some(function(r){return r.name.value==="always"&&r.value.kind==="BooleanValue"&&r.value.value===!0}),e))return Cn}}}),e},i.prototype.buildRootValueFromCache=function(n,e){return this.cache.diff({query:ol(n),variables:e,returnPartialData:!0,optimistic:!1}).result},i.prototype.resolveDocument=function(n,e){return ni(this,arguments,void 0,function(t,r,o,a,s,c){var l,d,h,m,p,f,g,_,v,M,y;return o===void 0&&(o={}),a===void 0&&(a={}),s===void 0&&(s=function(){return!0}),c===void 0&&(c=!1),ri(this,function(q){return l=di(t),d=Mi(t),h=Ii(d),m=this.collectSelectionsToResolve(l,h),p=l.operation,f=p?p.charAt(0).toUpperCase()+p.slice(1):"Query",g=this,_=g.cache,v=g.client,M={fragmentMap:h,context:b(b({},o),{cache:_,client:v}),variables:a,fragmentMatcher:s,defaultOperationType:f,exportedVariables:{},selectionsToResolve:m,onlyRunForcedResolvers:c},y=!1,[2,this.resolveSelectionSet(l.selectionSet,y,r,M).then(function(U){return{result:U,exportedVariables:M.exportedVariables}})]})})},i.prototype.resolveSelectionSet=function(n,e,t,r){return ni(this,void 0,void 0,function(){var o,a,s,c,l,d=this;return ri(this,function(h){return o=r.fragmentMap,a=r.context,s=r.variables,c=[t],l=function(m){return ni(d,void 0,void 0,function(){var p,f;return ri(this,function(g){return!e&&!r.selectionsToResolve.has(m)?[2]:ci(m,s)?At(m)?[2,this.resolveField(m,e,t,r).then(function(_){var v;typeof _<"u"&&c.push((v={},v[jt(m)]=_,v))})]:(el(m)?p=m:(p=o[m.name.value],Y(p,18,m.name.value)),p&&p.typeCondition&&(f=p.typeCondition.name.value,r.fragmentMatcher(t,f,a))?[2,this.resolveSelectionSet(p.selectionSet,e,t,r).then(function(_){c.push(_)})]:[2]):[2]})})},[2,Promise.all(n.selections.map(l)).then(function(){return Tn(c)})]})})},i.prototype.resolveField=function(n,e,t,r){return ni(this,void 0,void 0,function(){var o,a,s,c,l,d,h,m,p,f=this;return ri(this,function(g){return t?(o=r.variables,a=n.name.value,s=jt(n),c=a!==s,l=t[s]||t[a],d=Promise.resolve(l),(!r.onlyRunForcedResolvers||this.shouldForceResolvers(n))&&(h=t.__typename||r.defaultOperationType,m=this.resolvers&&this.resolvers[h],m&&(p=m[c?a:s],p&&(d=Promise.resolve(Dr.withValue(this.cache,p,[t,Ti(n,o),r.context,{field:n,fragmentMap:r.fragmentMap}]))))),[2,d.then(function(_){var v,M;if(_===void 0&&(_=l),n.directives&&n.directives.forEach(function(q){q.name.value==="export"&&q.arguments&&q.arguments.forEach(function(U){U.name.value==="as"&&U.value.kind==="StringValue"&&(r.exportedVariables[U.value.value]=_)})}),!n.selectionSet||_==null)return _;var y=(M=(v=n.directives)===null||v===void 0?void 0:v.some(function(q){return q.name.value==="client"}))!==null&&M!==void 0?M:!1;if(Array.isArray(_))return f.resolveSubSelectedArray(n,e||y,_,r);if(n.selectionSet)return f.resolveSelectionSet(n.selectionSet,e||y,_,r)})]):[2,null]})})},i.prototype.resolveSubSelectedArray=function(n,e,t,r){var o=this;return Promise.all(t.map(function(a){if(a===null)return null;if(Array.isArray(a))return o.resolveSubSelectedArray(n,e,a,r);if(n.selectionSet)return o.resolveSelectionSet(n.selectionSet,e,a,r)}))},i.prototype.collectSelectionsToResolve=function(n,e){var t=function(a){return!Array.isArray(a)},r=this.selectionsToResolveCache;function o(a){if(!r.has(a)){var s=new Set;r.set(a,s),wt(a,{Directive:function(c,l,d,h,m){c.name.value==="client"&&m.forEach(function(p){t(p)&&so(p)&&s.add(p)})},FragmentSpread:function(c,l,d,h,m){var p=e[c.name.value];Y(p,19,c.name.value);var f=o(p);f.size>0&&(m.forEach(function(g){t(g)&&so(g)&&s.add(g)}),s.add(c),f.forEach(function(g){s.add(g)}))}})}return r.get(a)}return o(n)},i}();var qp=!1;var So=function(){function i(n){var e=this;if(this.resetStoreCallbacks=[],this.clearStoreCallbacks=[],!n.cache)throw Be(15);var t=n.uri,r=n.credentials,o=n.headers,a=n.cache,s=n.documentTransform,c=n.ssrMode,l=c===void 0?!1:c,d=n.ssrForceFetchDelay,h=d===void 0?0:d,m=n.connectToDevTools,p=n.queryDeduplication,f=p===void 0?!0:p,g=n.defaultOptions,_=n.defaultContext,v=n.assumeImmutableResults,M=v===void 0?a.assumeImmutableResults:v,y=n.resolvers,q=n.typeDefs,U=n.fragmentMatcher,J=n.name,be=n.version,_e=n.devtools,ze=n.link;ze||(ze=t?new Cl({uri:t,credentials:r,headers:o}):Xt.empty()),this.link=ze,this.cache=a,this.disableNetworkFetches=l||h>0,this.queryDeduplication=f,this.defaultOptions=g||Object.create(null),this.typeDefs=q,this.devtoolsConfig=b(b({},_e),{enabled:_e?.enabled||m}),this.devtoolsConfig.enabled===void 0&&(this.devtoolsConfig.enabled=globalThis.__DEV__!==!1),h&&setTimeout(function(){return e.disableNetworkFetches=!1},h),this.watchQuery=this.watchQuery.bind(this),this.query=this.query.bind(this),this.mutate=this.mutate.bind(this),this.watchFragment=this.watchFragment.bind(this),this.resetStore=this.resetStore.bind(this),this.reFetchObservableQueries=this.reFetchObservableQueries.bind(this),this.version=io,this.localState=new Up({cache:a,client:this,resolvers:y,fragmentMatcher:U}),this.queryManager=new Qp({cache:this.cache,link:this.link,defaultOptions:this.defaultOptions,defaultContext:_,documentTransform:s,queryDeduplication:f,ssrMode:l,clientAwareness:{name:J,version:be},localState:this.localState,assumeImmutableResults:M,onBroadcast:this.devtoolsConfig.enabled?function(){e.devToolsHookCb&&e.devToolsHookCb({action:{},state:{queries:e.queryManager.getQueryStore(),mutations:e.queryManager.mutationStore||{}},dataWithOptimisticResults:e.cache.extract(!0)})}:void 0}),this.devtoolsConfig.enabled&&this.connectToDevTools()}return i.prototype.connectToDevTools=function(){if(!(typeof window>"u")){var n=window,e=Symbol.for("apollo.devtools");(n[e]=n[e]||[]).push(this),n.__APOLLO_CLIENT__=this,!qp&&globalThis.__DEV__!==!1&&(qp=!0,window.document&&window.top===window.self&&/^(https?|file):$/.test(window.location.protocol)&&setTimeout(function(){if(!window.__APOLLO_DEVTOOLS_GLOBAL_HOOK__){var t=window.navigator,r=t&&t.userAgent,o=void 0;typeof r=="string"&&(r.indexOf("Chrome/")>-1?o="https://chrome.google.com/webstore/detail/apollo-client-developer-t/jdkknkkbebbapilgoeccciglkfbmbnfm":r.indexOf("Firefox/")>-1&&(o="https://addons.mozilla.org/en-US/firefox/addon/apollo-developer-tools/")),o&&globalThis.__DEV__!==!1&&Y.log("Download the Apollo DevTools for a better development experience: %s",o)}},1e4))}},Object.defineProperty(i.prototype,"documentTransform",{get:function(){return this.queryManager.documentTransform},enumerable:!1,configurable:!0}),i.prototype.stop=function(){this.queryManager.stop()},i.prototype.watchQuery=function(n){return this.defaultOptions.watchQuery&&(n=_o(this.defaultOptions.watchQuery,n)),this.disableNetworkFetches&&(n.fetchPolicy==="network-only"||n.fetchPolicy==="cache-and-network")&&(n=b(b({},n),{fetchPolicy:"cache-first"})),this.queryManager.watchQuery(n)},i.prototype.query=function(n){return this.defaultOptions.query&&(n=_o(this.defaultOptions.query,n)),Y(n.fetchPolicy!=="cache-and-network",16),this.disableNetworkFetches&&n.fetchPolicy==="network-only"&&(n=b(b({},n),{fetchPolicy:"cache-first"})),this.queryManager.query(n)},i.prototype.mutate=function(n){return this.defaultOptions.mutate&&(n=_o(this.defaultOptions.mutate,n)),this.queryManager.mutate(n)},i.prototype.subscribe=function(n){return this.queryManager.startGraphQLSubscription(n)},i.prototype.readQuery=function(n,e){return e===void 0&&(e=!1),this.cache.readQuery(n,e)},i.prototype.watchFragment=function(n){return this.cache.watchFragment(n)},i.prototype.readFragment=function(n,e){return e===void 0&&(e=!1),this.cache.readFragment(n,e)},i.prototype.writeQuery=function(n){var e=this.cache.writeQuery(n);return n.broadcast!==!1&&this.queryManager.broadcastQueries(),e},i.prototype.writeFragment=function(n){var e=this.cache.writeFragment(n);return n.broadcast!==!1&&this.queryManager.broadcastQueries(),e},i.prototype.__actionHookForDevTools=function(n){this.devToolsHookCb=n},i.prototype.__requestRaw=function(n){return Cr(this.link,n)},i.prototype.resetStore=function(){var n=this;return Promise.resolve().then(function(){return n.queryManager.clearStore({discardWatches:!1})}).then(function(){return Promise.all(n.resetStoreCallbacks.map(function(e){return e()}))}).then(function(){return n.reFetchObservableQueries()})},i.prototype.clearStore=function(){var n=this;return Promise.resolve().then(function(){return n.queryManager.clearStore({discardWatches:!0})}).then(function(){return Promise.all(n.clearStoreCallbacks.map(function(e){return e()}))})},i.prototype.onResetStore=function(n){var e=this;return this.resetStoreCallbacks.push(n),function(){e.resetStoreCallbacks=e.resetStoreCallbacks.filter(function(t){return t!==n})}},i.prototype.onClearStore=function(n){var e=this;return this.clearStoreCallbacks.push(n),function(){e.clearStoreCallbacks=e.clearStoreCallbacks.filter(function(t){return t!==n})}},i.prototype.reFetchObservableQueries=function(n){return this.queryManager.reFetchObservableQueries(n)},i.prototype.refetchQueries=function(n){var e=this.queryManager.refetchQueries(n),t=[],r=[];e.forEach(function(a,s){t.push(s),r.push(a)});var o=Promise.all(r);return o.queries=t,o.results=r,o.catch(function(a){globalThis.__DEV__!==!1&&Y.debug(17,a)}),o},i.prototype.getObservableQueries=function(n){return n===void 0&&(n="active"),this.queryManager.getObservableQueries(n)},i.prototype.extract=function(n){return this.cache.extract(n)},i.prototype.restore=function(n){return this.cache.restore(n)},i.prototype.addResolvers=function(n){this.localState.addResolvers(n)},i.prototype.setResolvers=function(n){this.localState.setResolvers(n)},i.prototype.getResolvers=function(){return this.localState.getResolvers()},i.prototype.setLocalStateFragmentMatcher=function(n){this.localState.setFragmentMatcher(n)},i.prototype.setLink=function(n){this.link=this.queryManager.link=n},Object.defineProperty(i.prototype,"defaultContext",{get:function(){return this.queryManager.defaultContext},enumerable:!1,configurable:!0}),i}();globalThis.__DEV__!==!1&&(So.prototype.getMemoryInternals=lm);var bs=new Map,Ul=new Map,Wp=!0,vs=!1;function Gp(i){return i.replace(/[\s,]+/g," ").trim()}function k0(i){return Gp(i.source.body.substring(i.start,i.end))}function D0(i){var n=new Set,e=[];return i.definitions.forEach(function(t){if(t.kind==="FragmentDefinition"){var r=t.name.value,o=k0(t.loc),a=Ul.get(r);a&&!a.has(o)?Wp&&console.warn("Warning: fragment with name "+r+` already exists. +graphql-tag enforces all fragment names across your application to be unique; read more about +this in the docs: http://dev.apollodata.com/core/fragments.html#unique-names`):a||Ul.set(r,a=new Set),a.add(o),n.has(o)||(n.add(o),e.push(t))}else e.push(t)}),b(b({},i),{definitions:e})}function E0(i){var n=new Set(i.definitions);n.forEach(function(t){t.loc&&delete t.loc,Object.keys(t).forEach(function(r){var o=t[r];o&&typeof o=="object"&&n.add(o)})});var e=i.loc;return e&&(delete e.startToken,delete e.endToken),i}function I0(i){var n=Gp(i);if(!bs.has(n)){var e=ja(i,{experimentalFragmentVariables:vs,allowLegacyFragmentVariables:vs});if(!e||e.kind!=="Document")throw new Error("Not a valid GraphQL document.");bs.set(n,E0(D0(e)))}return bs.get(n)}function on(i){for(var n=[],e=1;e(i().then(e=>{n.closed||(n.next(e),n.complete())},e=>{n.closed||n.error(e)}),()=>n.unsubscribe()))}function S0(i,n){return n?i.pipe(Me({loading:!0}),ke(e=>Qe(N({},e),{loading:!!e.loading}))):i.pipe(ke(e=>Qe(N({},e),{loading:!1})))}var Wl=class{zone;constructor(n){this.zone=n}now=Date.now?Date.now:()=>+new Date;schedule(n,e=0,t){return this.zone.run(()=>_u.schedule(n,e,t))}};function Gl(i){return i[bu]=()=>i,i}function $l(i,n){return i.pipe(yu(new Wl(n)))}function T0(i){return function(e){return new We(function(r){let o=i.getCurrentResult(),{loading:a,errors:s,error:c,partial:l,data:d}=o,{partialRefetch:h,fetchPolicy:m}=i.options,p=s||c;return h&&l&&(!d||Object.keys(d).length===0)&&m!=="cache-only"&&!a&&!p&&r.next(Qe(N({},o),{loading:!0,networkStatus:Se.loading})),e.subscribe(r)})}}var Yl=class{obsQuery;valueChanges;queryId;constructor(n,e,t){this.obsQuery=n;let r=$l(ki(Gl(this.obsQuery)),e);this.valueChanges=t.useInitialLoading?r.pipe(T0(this.obsQuery)):r,this.queryId=this.obsQuery.queryId}get options(){return this.obsQuery.options}get variables(){return this.obsQuery.variables}result(){return this.obsQuery.result()}getCurrentResult(){return this.obsQuery.getCurrentResult()}getLastResult(){return this.obsQuery.getLastResult()}getLastError(){return this.obsQuery.getLastError()}resetLastResults(){return this.obsQuery.resetLastResults()}refetch(n){return this.obsQuery.refetch(n)}fetchMore(n){return this.obsQuery.fetchMore(n)}subscribeToMore(n){return this.obsQuery.subscribeToMore(n)}updateQuery(n){return this.obsQuery.updateQuery(n)}stopPolling(){return this.obsQuery.stopPolling()}startPolling(n){return this.obsQuery.startPolling(n)}setOptions(n){return this.obsQuery.setOptions(n)}setVariables(n){return this.obsQuery.setVariables(n)}},M0=new C("APOLLO_FLAGS"),Kl=new C("APOLLO_OPTIONS"),A0=new C("APOLLO_NAMED_OPTIONS"),_s=class{ngZone;flags;_client;useInitialLoading;useMutationLoading;constructor(n,e,t){this.ngZone=n,this.flags=e,this._client=t,this.useInitialLoading=e?.useInitialLoading??!1,this.useMutationLoading=e?.useMutationLoading??!1}watchQuery(n){return new Yl(this.ensureClient().watchQuery(N({},n)),this.ngZone,N({useInitialLoading:this.useInitialLoading},n))}query(n){return Zp(()=>this.ensureClient().query(N({},n)))}mutate(n){return S0(Zp(()=>this.ensureClient().mutate(N({},n))),n.useMutationLoading??this.useMutationLoading)}watchFragment(n,e){let t=ki(Gl(this.ensureClient().watchFragment(N({},n))));return e&&e.useZone!==!0?t:$l(t,this.ngZone)}subscribe(n,e){let t=ki(Gl(this.ensureClient().subscribe(N({},n))));return e&&e.useZone!==!0?t:$l(t,this.ngZone)}get client(){return this.ensureClient()}set client(n){if(this._client)throw new Error("Client has been already defined");this._client=n}ensureClient(){return this.checkInstance(),this._client}checkInstance(){if(this._client)return!0;throw new Error("Client has not been defined yet")}},Xl=(()=>{class i extends _s{map=new Map;constructor(e,t,r,o){if(super(e,o),t&&this.createDefault(t),r&&typeof r=="object"){for(let a in r)if(r.hasOwnProperty(a)){let s=r[a];this.create(s,a)}}}create(e,t){ql(t)?this.createNamed(t,e):this.createDefault(e)}default(){return this}use(e){return ql(e)?this.map.get(e):this.default()}createDefault(e){if(this._client)throw new Error("Apollo has been already created.");this.client=this.ngZone.runOutsideAngular(()=>new So(e))}createNamed(e,t){if(this.map.has(e))throw new Error(`Client ${e} has been already created`);this.map.set(e,new _s(this.ngZone,this.flags,this.ngZone.runOutsideAngular(()=>new So(t))))}removeClient(e){ql(e)?this.map.delete(e):this._client=void 0}static \u0275fac=function(t){return new(t||i)(x(B),x(Kl,8),x(A0,8),x(M0,8))};static \u0275prov=Z({token:i,factory:i.\u0275fac})}return i})();function ql(i){return!!i&&i!=="default"}var Jp=(()=>{class i{static \u0275fac=function(t){return new(t||i)};static \u0275mod=j({type:i});static \u0275inj=L({providers:[Xl]})}return i})();function O0(i,...n){return on(i,...n)}var Je=O0;var Jl;try{Jl=typeof Intl<"u"&&Intl.v8BreakIterator}catch{Jl=!1}var me=(()=>{class i{constructor(e){this._platformId=e,this.isBrowser=this._platformId?qu(this._platformId):typeof document=="object"&&!!document,this.EDGE=this.isBrowser&&/(edge)/i.test(navigator.userAgent),this.TRIDENT=this.isBrowser&&/(msie|trident)/i.test(navigator.userAgent),this.BLINK=this.isBrowser&&!!(window.chrome||Jl)&&typeof CSS<"u"&&!this.EDGE&&!this.TRIDENT,this.WEBKIT=this.isBrowser&&/AppleWebKit/i.test(navigator.userAgent)&&!this.BLINK&&!this.EDGE&&!this.TRIDENT,this.IOS=this.isBrowser&&/iPad|iPhone|iPod/.test(navigator.userAgent)&&!("MSStream"in window),this.FIREFOX=this.isBrowser&&/(firefox|minefield)/i.test(navigator.userAgent),this.ANDROID=this.isBrowser&&/android/i.test(navigator.userAgent)&&!this.TRIDENT,this.SAFARI=this.isBrowser&&/safari/i.test(navigator.userAgent)&&this.WEBKIT}static{this.\u0275fac=function(t){return new(t||i)(x(Au))}}static{this.\u0275prov=Z({token:i,factory:i.\u0275fac,providedIn:"root"})}}return i})();var Sr,ef=["color","button","checkbox","date","datetime-local","email","file","hidden","image","month","number","password","radio","range","reset","search","submit","tel","text","time","url","week"];function ed(){if(Sr)return Sr;if(typeof document!="object"||!document)return Sr=new Set(ef),Sr;let i=document.createElement("input");return Sr=new Set(ef.filter(n=>(i.setAttribute("type",n),i.type===n))),Sr}var Mo;function F0(){if(Mo==null&&typeof window<"u")try{window.addEventListener("test",null,Object.defineProperty({},"passive",{get:()=>Mo=!0}))}finally{Mo=Mo||!1}return Mo}function Bt(i){return F0()?i:!!i.capture}var hi=function(i){return i[i.NORMAL=0]="NORMAL",i[i.NEGATED=1]="NEGATED",i[i.INVERTED=2]="INVERTED",i}(hi||{}),ys,Rn;function xs(){if(Rn==null){if(typeof document!="object"||!document||typeof Element!="function"||!Element)return Rn=!1,Rn;if("scrollBehavior"in document.documentElement.style)Rn=!0;else{let i=Element.prototype.scrollTo;i?Rn=!/\{\s*\[native code\]\s*\}/.test(i.toString()):Rn=!1}}return Rn}function Tr(){if(typeof document!="object"||!document)return hi.NORMAL;if(ys==null){let i=document.createElement("div"),n=i.style;i.dir="rtl",n.width="1px",n.overflow="auto",n.visibility="hidden",n.pointerEvents="none",n.position="absolute";let e=document.createElement("div"),t=e.style;t.width="2px",t.height="1px",i.appendChild(e),document.body.appendChild(i),ys=hi.NORMAL,i.scrollLeft===0&&(i.scrollLeft=1,ys=i.scrollLeft===0?hi.NEGATED:hi.INVERTED),i.remove()}return ys}var Zl;function P0(){if(Zl==null){let i=typeof document<"u"?document.head:null;Zl=!!(i&&(i.createShadowRoot||i.attachShadow))}return Zl}function tf(i){if(P0()){let n=i.getRootNode?i.getRootNode():null;if(typeof ShadowRoot<"u"&&ShadowRoot&&n instanceof ShadowRoot)return n}return null}function Ao(){let i=typeof document<"u"&&document?document.activeElement:null;for(;i&&i.shadowRoot;){let n=i.shadowRoot.activeElement;if(n===i)break;i=n}return i}function Ot(i){return i.composedPath?i.composedPath()[0]:i.target}function Oo(){return typeof __karma__<"u"&&!!__karma__||typeof jasmine<"u"&&!!jasmine||typeof jest<"u"&&!!jest||typeof Mocha<"u"&&!!Mocha}function Le(i,...n){return n.length?n.some(e=>i[e]):i.altKey||i.shiftKey||i.ctrlKey||i.metaKey}function ut(i){return i!=null&&`${i}`!="false"}function Ct(i,n=0){return N0(i)?Number(i):arguments.length===2?n:0}function N0(i){return!isNaN(parseFloat(i))&&!isNaN(Number(i))}function Mr(i){return Array.isArray(i)?i:[i]}function rt(i){return i==null?"":typeof i=="string"?i:`${i}px`}function zt(i){return i instanceof E?i.nativeElement:i}function L0(i){if(i.type==="characterData"&&i.target instanceof Comment)return!0;if(i.type==="childList"){for(let n=0;n{class i{create(e){return typeof MutationObserver>"u"?null:new MutationObserver(e)}static{this.\u0275fac=function(t){return new(t||i)}}static{this.\u0275prov=Z({token:i,factory:i.\u0275fac,providedIn:"root"})}}return i})(),j0=(()=>{class i{constructor(e){this._mutationObserverFactory=e,this._observedElements=new Map,this._ngZone=F(B)}ngOnDestroy(){this._observedElements.forEach((e,t)=>this._cleanupObserver(t))}observe(e){let t=zt(e);return new We(r=>{let a=this._observeElement(t).pipe(ke(s=>s.filter(c=>!L0(c))),ye(s=>!!s.length)).subscribe(s=>{this._ngZone.run(()=>{r.next(s)})});return()=>{a.unsubscribe(),this._unobserveElement(t)}})}_observeElement(e){return this._ngZone.runOutsideAngular(()=>{if(this._observedElements.has(e))this._observedElements.get(e).count++;else{let t=new R,r=this._mutationObserverFactory.create(o=>t.next(o));r&&r.observe(e,{characterData:!0,childList:!0,subtree:!0}),this._observedElements.set(e,{observer:r,stream:t,count:1})}return this._observedElements.get(e).stream})}_unobserveElement(e){this._observedElements.has(e)&&(this._observedElements.get(e).count--,this._observedElements.get(e).count||this._cleanupObserver(e))}_cleanupObserver(e){if(this._observedElements.has(e)){let{observer:t,stream:r}=this._observedElements.get(e);t&&t.disconnect(),r.complete(),this._observedElements.delete(e)}}static{this.\u0275fac=function(t){return new(t||i)(x(nf))}}static{this.\u0275prov=Z({token:i,factory:i.\u0275fac,providedIn:"root"})}}return i})(),td=(()=>{class i{get disabled(){return this._disabled}set disabled(e){this._disabled=e,this._disabled?this._unsubscribe():this._subscribe()}get debounce(){return this._debounce}set debounce(e){this._debounce=Ct(e),this._subscribe()}constructor(e,t){this._contentObserver=e,this._elementRef=t,this.event=new z,this._disabled=!1,this._currentSubscription=null}ngAfterContentInit(){!this._currentSubscription&&!this.disabled&&this._subscribe()}ngOnDestroy(){this._unsubscribe()}_subscribe(){this._unsubscribe();let e=this._contentObserver.observe(this._elementRef);this._currentSubscription=(this.debounce?e.pipe(fi(this.debounce)):e).subscribe(this.event)}_unsubscribe(){this._currentSubscription?.unsubscribe()}static{this.\u0275fac=function(t){return new(t||i)(u(j0),u(E))}}static{this.\u0275dir=D({type:i,selectors:[["","cdkObserveContent",""]],inputs:{disabled:[2,"cdkObserveContentDisabled","disabled",O],debounce:"debounce"},outputs:{event:"cdkObserveContent"},exportAs:["cdkObserveContent"],standalone:!0,features:[ae]})}}return i})(),ws=(()=>{class i{static{this.\u0275fac=function(t){return new(t||i)}}static{this.\u0275mod=j({type:i})}static{this.\u0275inj=L({providers:[nf]})}}return i})();var rf=new Set,Fn,V0=(()=>{class i{constructor(e,t){this._platform=e,this._nonce=t,this._matchMedia=this._platform.isBrowser&&window.matchMedia?window.matchMedia.bind(window):z0}matchMedia(e){return(this._platform.WEBKIT||this._platform.BLINK)&&B0(e,this._nonce),this._matchMedia(e)}static{this.\u0275fac=function(t){return new(t||i)(x(me),x(Ou,8))}}static{this.\u0275prov=Z({token:i,factory:i.\u0275fac,providedIn:"root"})}}return i})();function B0(i,n){if(!rf.has(i))try{Fn||(Fn=document.createElement("style"),n&&Fn.setAttribute("nonce",n),Fn.setAttribute("type","text/css"),document.head.appendChild(Fn)),Fn.sheet&&(Fn.sheet.insertRule(`@media ${i} {body{ }}`,0),rf.add(i))}catch(e){console.error(e)}}function z0(i){return{matches:i==="all"||i==="",media:i,addListener:()=>{},removeListener:()=>{}}}var Cs=(()=>{class i{constructor(e,t){this._mediaMatcher=e,this._zone=t,this._queries=new Map,this._destroySubject=new R}ngOnDestroy(){this._destroySubject.next(),this._destroySubject.complete()}isMatched(e){return of(Mr(e)).some(r=>this._registerQuery(r).mql.matches)}observe(e){let r=of(Mr(e)).map(a=>this._registerQuery(a).observable),o=Zo(r);return o=wu(o.pipe(Ye(1)),o.pipe(Yn(1),fi(0))),o.pipe(ke(a=>{let s={matches:!1,breakpoints:{}};return a.forEach(({matches:c,query:l})=>{s.matches=s.matches||c,s.breakpoints[l]=c}),s}))}_registerQuery(e){if(this._queries.has(e))return this._queries.get(e);let t=this._mediaMatcher.matchMedia(e),o={observable:new We(a=>{let s=c=>this._zone.run(()=>a.next(c));return t.addListener(s),()=>{t.removeListener(s)}}).pipe(Me(t),ke(({matches:a})=>({query:e,matches:a})),$(this._destroySubject)),mql:t};return this._queries.set(e,o),o}static{this.\u0275fac=function(t){return new(t||i)(x(V0),x(B))}}static{this.\u0275prov=Z({token:i,factory:i.\u0275fac,providedIn:"root"})}}return i})();function of(i){return i.map(n=>n.split(",")).reduce((n,e)=>n.concat(e)).map(n=>n.trim())}var af={XSmall:"(max-width: 599.98px)",Small:"(min-width: 600px) and (max-width: 959.98px)",Medium:"(min-width: 960px) and (max-width: 1279.98px)",Large:"(min-width: 1280px) and (max-width: 1919.98px)",XLarge:"(min-width: 1920px)",Handset:"(max-width: 599.98px) and (orientation: portrait), (max-width: 959.98px) and (orientation: landscape)",Tablet:"(min-width: 600px) and (max-width: 839.98px) and (orientation: portrait), (min-width: 960px) and (max-width: 1279.98px) and (orientation: landscape)",Web:"(min-width: 840px) and (orientation: portrait), (min-width: 1280px) and (orientation: landscape)",HandsetPortrait:"(max-width: 599.98px) and (orientation: portrait)",TabletPortrait:"(min-width: 600px) and (max-width: 839.98px) and (orientation: portrait)",WebPortrait:"(min-width: 840px) and (orientation: portrait)",HandsetLandscape:"(max-width: 959.98px) and (orientation: landscape)",TabletLandscape:"(min-width: 960px) and (max-width: 1279.98px) and (orientation: landscape)",WebLandscape:"(min-width: 1280px) and (orientation: landscape)"};var uf=" ";function Pr(i,n,e){let t=Is(i,n);e=e.trim(),!t.some(r=>r.trim()===e)&&(t.push(e),i.setAttribute(n,t.join(uf)))}function sn(i,n,e){let t=Is(i,n);e=e.trim();let r=t.filter(o=>o!==e);r.length?i.setAttribute(n,r.join(uf)):i.removeAttribute(n)}function Is(i,n){return i.getAttribute(n)?.match(/\S+/g)??[]}var hf="cdk-describedby-message",ks="cdk-describedby-host",rd=0,mf=(()=>{class i{constructor(e,t){this._platform=t,this._messageRegistry=new Map,this._messagesContainer=null,this._id=`${rd++}`,this._document=e,this._id=F(Mu)+"-"+rd++}describe(e,t,r){if(!this._canBeDescribed(e,t))return;let o=id(t,r);typeof t!="string"?(sf(t,this._id),this._messageRegistry.set(o,{messageElement:t,referenceCount:0})):this._messageRegistry.has(o)||this._createMessageElement(t,r),this._isElementDescribedByMessage(e,o)||this._addMessageReference(e,o)}removeDescription(e,t,r){if(!t||!this._isElementNode(e))return;let o=id(t,r);if(this._isElementDescribedByMessage(e,o)&&this._removeMessageReference(e,o),typeof t=="string"){let a=this._messageRegistry.get(o);a&&a.referenceCount===0&&this._deleteMessageElement(o)}this._messagesContainer?.childNodes.length===0&&(this._messagesContainer.remove(),this._messagesContainer=null)}ngOnDestroy(){let e=this._document.querySelectorAll(`[${ks}="${this._id}"]`);for(let t=0;tr.indexOf(hf)!=0);e.setAttribute("aria-describedby",t.join(" "))}_addMessageReference(e,t){let r=this._messageRegistry.get(t);Pr(e,"aria-describedby",r.messageElement.id),e.setAttribute(ks,this._id),r.referenceCount++}_removeMessageReference(e,t){let r=this._messageRegistry.get(t);r.referenceCount--,sn(e,"aria-describedby",r.messageElement.id),e.removeAttribute(ks)}_isElementDescribedByMessage(e,t){let r=Is(e,"aria-describedby"),o=this._messageRegistry.get(t),a=o&&o.messageElement.id;return!!a&&r.indexOf(a)!=-1}_canBeDescribed(e,t){if(!this._isElementNode(e))return!1;if(t&&typeof t=="object")return!0;let r=t==null?"":`${t}`.trim(),o=e.getAttribute("aria-label");return r?!o||o.trim()!==r:!1}_isElementNode(e){return e.nodeType===this._document.ELEMENT_NODE}static{this.\u0275fac=function(t){return new(t||i)(x(oe),x(me))}}static{this.\u0275prov=Z({token:i,factory:i.\u0275fac,providedIn:"root"})}}return i})();function id(i,n){return typeof i=="string"?`${n||""}/${i}`:i}function sf(i,n){i.id||(i.id=`${hf}-${n}-${rd++}`)}var ex=200,od=class{constructor(n,e){this._letterKeyStream=new R,this._items=[],this._selectedItemIndex=-1,this._pressedLetters=[],this._selectedItem=new R,this.selectedItem=this._selectedItem;let t=typeof e?.debounceInterval=="number"?e.debounceInterval:ex;e?.skipPredicate&&(this._skipPredicateFn=e.skipPredicate),this.setItems(n),this._setupKeyHandler(t)}destroy(){this._pressedLetters=[],this._letterKeyStream.complete(),this._selectedItem.complete()}setCurrentSelectedItemIndex(n){this._selectedItemIndex=n}setItems(n){this._items=n}handleKey(n){let e=n.keyCode;n.key&&n.key.length===1?this._letterKeyStream.next(n.key.toLocaleUpperCase()):(e>=65&&e<=90||e>=48&&e<=57)&&this._letterKeyStream.next(String.fromCharCode(e))}isTyping(){return this._pressedLetters.length>0}reset(){this._pressedLetters=[]}_setupKeyHandler(n){this._letterKeyStream.pipe(gi(e=>this._pressedLetters.push(e)),fi(n),ye(()=>this._pressedLetters.length>0),ke(()=>this._pressedLetters.join("").toLocaleUpperCase())).subscribe(e=>{for(let t=1;tt.disabled,this.tabOut=new R,this.change=new R,n instanceof Gt?this._itemChangesSubscription=n.changes.subscribe(t=>this._itemsChanged(t.toArray())):oc(n)&&(this._effectRef=dc(()=>this._itemsChanged(n()),{injector:e}))}skipPredicate(n){return this._skipPredicateFn=n,this}withWrap(n=!0){return this._wrap=n,this}withVerticalOrientation(n=!0){return this._vertical=n,this}withHorizontalOrientation(n){return this._horizontal=n,this}withAllowedModifierKeys(n){return this._allowedModifierKeys=n,this}withTypeAhead(n=200){this._typeaheadSubscription.unsubscribe();let e=this._getItemsArray();return this._typeahead=new od(e,{debounceInterval:typeof n=="number"?n:void 0,skipPredicate:t=>this._skipPredicateFn(t)}),this._typeaheadSubscription=this._typeahead.selectedItem.subscribe(t=>{this.setActiveItem(t)}),this}cancelTypeahead(){return this._typeahead?.reset(),this}withHomeAndEnd(n=!0){return this._homeAndEnd=n,this}withPageUpDown(n=!0,e=10){return this._pageUpAndDown={enabled:n,delta:e},this}setActiveItem(n){let e=this._activeItem;this.updateActiveItem(n),this._activeItem!==e&&this.change.next(this._activeItemIndex)}onKeydown(n){let e=n.keyCode,r=["altKey","ctrlKey","metaKey","shiftKey"].every(o=>!n[o]||this._allowedModifierKeys.indexOf(o)>-1);switch(e){case 9:this.tabOut.next();return;case 40:if(this._vertical&&r){this.setNextItemActive();break}else return;case 38:if(this._vertical&&r){this.setPreviousItemActive();break}else return;case 39:if(this._horizontal&&r){this._horizontal==="rtl"?this.setPreviousItemActive():this.setNextItemActive();break}else return;case 37:if(this._horizontal&&r){this._horizontal==="rtl"?this.setNextItemActive():this.setPreviousItemActive();break}else return;case 36:if(this._homeAndEnd&&r){this.setFirstItemActive();break}else return;case 35:if(this._homeAndEnd&&r){this.setLastItemActive();break}else return;case 33:if(this._pageUpAndDown.enabled&&r){let o=this._activeItemIndex-this._pageUpAndDown.delta;this._setActiveItemByIndex(o>0?o:0,1);break}else return;case 34:if(this._pageUpAndDown.enabled&&r){let o=this._activeItemIndex+this._pageUpAndDown.delta,a=this._getItemsArray().length;this._setActiveItemByIndex(o-1&&e!==this._activeItemIndex&&(this._activeItemIndex=e,this._typeahead?.setCurrentSelectedItemIndex(e))}}},Or=class extends Ss{setActiveItem(n){this.activeItem&&this.activeItem.setInactiveStyles(),super.setActiveItem(n),this.activeItem&&this.activeItem.setActiveStyles()}},an=class extends Ss{constructor(){super(...arguments),this._origin="program"}setFocusOrigin(n){return this._origin=n,this}setActiveItem(n){super.setActiveItem(n),this.activeItem&&this.activeItem.focus(this._origin)}};var Nn=(()=>{class i{constructor(e){this._platform=e}isDisabled(e){return e.hasAttribute("disabled")}isVisible(e){return ix(e)&&getComputedStyle(e).visibility==="visible"}isTabbable(e){if(!this._platform.isBrowser)return!1;let t=tx(dx(e));if(t&&(cf(t)===-1||!this.isVisible(t)))return!1;let r=e.nodeName.toLowerCase(),o=cf(e);return e.hasAttribute("contenteditable")?o!==-1:r==="iframe"||r==="object"||this._platform.WEBKIT&&this._platform.IOS&&!cx(e)?!1:r==="audio"?e.hasAttribute("controls")?o!==-1:!1:r==="video"?o===-1?!1:o!==null?!0:this._platform.FIREFOX||e.hasAttribute("controls"):e.tabIndex>=0}isFocusable(e,t){return lx(e)&&!this.isDisabled(e)&&(t?.ignoreVisibility||this.isVisible(e))}static{this.\u0275fac=function(t){return new(t||i)(x(me))}}static{this.\u0275prov=Z({token:i,factory:i.\u0275fac,providedIn:"root"})}}return i})();function tx(i){try{return i.frameElement}catch{return null}}function ix(i){return!!(i.offsetWidth||i.offsetHeight||typeof i.getClientRects=="function"&&i.getClientRects().length)}function nx(i){let n=i.nodeName.toLowerCase();return n==="input"||n==="select"||n==="button"||n==="textarea"}function rx(i){return ax(i)&&i.type=="hidden"}function ox(i){return sx(i)&&i.hasAttribute("href")}function ax(i){return i.nodeName.toLowerCase()=="input"}function sx(i){return i.nodeName.toLowerCase()=="a"}function pf(i){if(!i.hasAttribute("tabindex")||i.tabIndex===void 0)return!1;let n=i.getAttribute("tabindex");return!!(n&&!isNaN(parseInt(n,10)))}function cf(i){if(!pf(i))return null;let n=parseInt(i.getAttribute("tabindex")||"",10);return isNaN(n)?-1:n}function cx(i){let n=i.nodeName.toLowerCase(),e=n==="input"&&i.type;return e==="text"||e==="password"||n==="select"||n==="textarea"}function lx(i){return rx(i)?!1:nx(i)||ox(i)||i.hasAttribute("contenteditable")||pf(i)}function dx(i){return i.ownerDocument&&i.ownerDocument.defaultView||window}var ad=class{get enabled(){return this._enabled}set enabled(n){this._enabled=n,this._startAnchor&&this._endAnchor&&(this._toggleAnchorTabIndex(n,this._startAnchor),this._toggleAnchorTabIndex(n,this._endAnchor))}constructor(n,e,t,r,o=!1,a){this._element=n,this._checker=e,this._ngZone=t,this._document=r,this._injector=a,this._hasAttached=!1,this.startAnchorListener=()=>this.focusLastTabbableElement(),this.endAnchorListener=()=>this.focusFirstTabbableElement(),this._enabled=!0,o||this.attachAnchors()}destroy(){let n=this._startAnchor,e=this._endAnchor;n&&(n.removeEventListener("focus",this.startAnchorListener),n.remove()),e&&(e.removeEventListener("focus",this.endAnchorListener),e.remove()),this._startAnchor=this._endAnchor=null,this._hasAttached=!1}attachAnchors(){return this._hasAttached?!0:(this._ngZone.runOutsideAngular(()=>{this._startAnchor||(this._startAnchor=this._createAnchor(),this._startAnchor.addEventListener("focus",this.startAnchorListener)),this._endAnchor||(this._endAnchor=this._createAnchor(),this._endAnchor.addEventListener("focus",this.endAnchorListener))}),this._element.parentNode&&(this._element.parentNode.insertBefore(this._startAnchor,this._element),this._element.parentNode.insertBefore(this._endAnchor,this._element.nextSibling),this._hasAttached=!0),this._hasAttached)}focusInitialElementWhenReady(n){return new Promise(e=>{this._executeOnStable(()=>e(this.focusInitialElement(n)))})}focusFirstTabbableElementWhenReady(n){return new Promise(e=>{this._executeOnStable(()=>e(this.focusFirstTabbableElement(n)))})}focusLastTabbableElementWhenReady(n){return new Promise(e=>{this._executeOnStable(()=>e(this.focusLastTabbableElement(n)))})}_getRegionBoundary(n){let e=this._element.querySelectorAll(`[cdk-focus-region-${n}], [cdkFocusRegion${n}], [cdk-focus-${n}]`);return n=="start"?e.length?e[0]:this._getFirstTabbableElement(this._element):e.length?e[e.length-1]:this._getLastTabbableElement(this._element)}focusInitialElement(n){let e=this._element.querySelector("[cdk-focus-initial], [cdkFocusInitial]");if(e){if(!this._checker.isFocusable(e)){let t=this._getFirstTabbableElement(e);return t?.focus(n),!!t}return e.focus(n),!0}return this.focusFirstTabbableElement(n)}focusFirstTabbableElement(n){let e=this._getRegionBoundary("start");return e&&e.focus(n),!!e}focusLastTabbableElement(n){let e=this._getRegionBoundary("end");return e&&e.focus(n),!!e}hasAttached(){return this._hasAttached}_getFirstTabbableElement(n){if(this._checker.isFocusable(n)&&this._checker.isTabbable(n))return n;let e=n.children;for(let t=0;t=0;t--){let r=e[t].nodeType===this._document.ELEMENT_NODE?this._getLastTabbableElement(e[t]):null;if(r)return r}return null}_createAnchor(){let n=this._document.createElement("div");return this._toggleAnchorTabIndex(this._enabled,n),n.classList.add("cdk-visually-hidden"),n.classList.add("cdk-focus-trap-anchor"),n.setAttribute("aria-hidden","true"),n}_toggleAnchorTabIndex(n,e){n?e.setAttribute("tabindex","0"):e.removeAttribute("tabindex")}toggleAnchors(n){this._startAnchor&&this._endAnchor&&(this._toggleAnchorTabIndex(n,this._startAnchor),this._toggleAnchorTabIndex(n,this._endAnchor))}_executeOnStable(n){this._injector?tt(n,{injector:this._injector}):setTimeout(n)}},Nr=(()=>{class i{constructor(e,t,r){this._checker=e,this._ngZone=t,this._injector=F(Ee),this._document=r}create(e,t=!1){return new ad(e,this._checker,this._ngZone,this._document,t,this._injector)}static{this.\u0275fac=function(t){return new(t||i)(x(Nn),x(B),x(oe))}}static{this.\u0275prov=Z({token:i,factory:i.\u0275fac,providedIn:"root"})}}return i})();function Fo(i){return i.buttons===0||i.detail===0}function Po(i){let n=i.touches&&i.touches[0]||i.changedTouches&&i.changedTouches[0];return!!n&&n.identifier===-1&&(n.radiusX==null||n.radiusX===1)&&(n.radiusY==null||n.radiusY===1)}var ux=new C("cdk-input-modality-detector-options"),hx={ignoreKeys:[18,17,224,91,16]},ff=650,Ar=Bt({passive:!0,capture:!0}),mx=(()=>{class i{get mostRecentModality(){return this._modality.value}constructor(e,t,r,o){this._platform=e,this._mostRecentTarget=null,this._modality=new Vi(null),this._lastTouchMs=0,this._onKeydown=a=>{this._options?.ignoreKeys?.some(s=>s===a.keyCode)||(this._modality.next("keyboard"),this._mostRecentTarget=Ot(a))},this._onMousedown=a=>{Date.now()-this._lastTouchMs{if(Po(a)){this._modality.next("keyboard");return}this._lastTouchMs=Date.now(),this._modality.next("touch"),this._mostRecentTarget=Ot(a)},this._options=N(N({},hx),o),this.modalityDetected=this._modality.pipe(Yn(1)),this.modalityChanged=this.modalityDetected.pipe(Di()),e.isBrowser&&t.runOutsideAngular(()=>{r.addEventListener("keydown",this._onKeydown,Ar),r.addEventListener("mousedown",this._onMousedown,Ar),r.addEventListener("touchstart",this._onTouchstart,Ar)})}ngOnDestroy(){this._modality.complete(),this._platform.isBrowser&&(document.removeEventListener("keydown",this._onKeydown,Ar),document.removeEventListener("mousedown",this._onMousedown,Ar),document.removeEventListener("touchstart",this._onTouchstart,Ar))}static{this.\u0275fac=function(t){return new(t||i)(x(me),x(B),x(oe),x(ux,8))}}static{this.\u0275prov=Z({token:i,factory:i.\u0275fac,providedIn:"root"})}}return i})(),px=new C("liveAnnouncerElement",{providedIn:"root",factory:fx});function fx(){return null}var gx=new C("LIVE_ANNOUNCER_DEFAULT_OPTIONS"),bx=0,gf=(()=>{class i{constructor(e,t,r,o){this._ngZone=t,this._defaultOptions=o,this._document=r,this._liveElement=e||this._createLiveElement()}announce(e,...t){let r=this._defaultOptions,o,a;return t.length===1&&typeof t[0]=="number"?a=t[0]:[o,a]=t,this.clear(),clearTimeout(this._previousTimeout),o||(o=r&&r.politeness?r.politeness:"polite"),a==null&&r&&(a=r.duration),this._liveElement.setAttribute("aria-live",o),this._liveElement.id&&this._exposeAnnouncerToModals(this._liveElement.id),this._ngZone.runOutsideAngular(()=>(this._currentPromise||(this._currentPromise=new Promise(s=>this._currentResolve=s)),clearTimeout(this._previousTimeout),this._previousTimeout=setTimeout(()=>{this._liveElement.textContent=e,typeof a=="number"&&(this._previousTimeout=setTimeout(()=>this.clear(),a)),this._currentResolve?.(),this._currentPromise=this._currentResolve=void 0},100),this._currentPromise))}clear(){this._liveElement&&(this._liveElement.textContent="")}ngOnDestroy(){clearTimeout(this._previousTimeout),this._liveElement?.remove(),this._liveElement=null,this._currentResolve?.(),this._currentPromise=this._currentResolve=void 0}_createLiveElement(){let e="cdk-live-announcer-element",t=this._document.getElementsByClassName(e),r=this._document.createElement("div");for(let o=0;o .cdk-overlay-container [aria-modal="true"]');for(let r=0;r{class i{constructor(e,t,r,o,a){this._ngZone=e,this._platform=t,this._inputModalityDetector=r,this._origin=null,this._windowFocused=!1,this._originFromTouchInteraction=!1,this._elementInfo=new Map,this._monitoredElementCount=0,this._rootNodeFocusListenerCount=new Map,this._windowFocusListener=()=>{this._windowFocused=!0,this._windowFocusTimeoutId=window.setTimeout(()=>this._windowFocused=!1)},this._stopInputModalityDetector=new R,this._rootNodeFocusAndBlurListener=s=>{let c=Ot(s);for(let l=c;l;l=l.parentElement)s.type==="focus"?this._onFocus(s,l):this._onBlur(s,l)},this._document=o,this._detectionMode=a?.detectionMode||Es.IMMEDIATE}monitor(e,t=!1){let r=zt(e);if(!this._platform.isBrowser||r.nodeType!==1)return He();let o=tf(r)||this._getDocument(),a=this._elementInfo.get(r);if(a)return t&&(a.checkChildren=!0),a.subject;let s={checkChildren:t,subject:new R,rootNode:o};return this._elementInfo.set(r,s),this._registerGlobalListeners(s),s.subject}stopMonitoring(e){let t=zt(e),r=this._elementInfo.get(t);r&&(r.subject.complete(),this._setClasses(t),this._elementInfo.delete(t),this._removeGlobalListeners(r))}focusVia(e,t,r){let o=zt(e),a=this._getDocument().activeElement;o===a?this._getClosestElementsInfo(o).forEach(([s,c])=>this._originChanged(s,t,c)):(this._setOrigin(t),typeof o.focus=="function"&&o.focus(r))}ngOnDestroy(){this._elementInfo.forEach((e,t)=>this.stopMonitoring(t))}_getDocument(){return this._document||document}_getWindow(){return this._getDocument().defaultView||window}_getFocusOrigin(e){return this._origin?this._originFromTouchInteraction?this._shouldBeAttributedToTouch(e)?"touch":"program":this._origin:this._windowFocused&&this._lastFocusOrigin?this._lastFocusOrigin:e&&this._isLastInteractionFromInputLabel(e)?"mouse":"program"}_shouldBeAttributedToTouch(e){return this._detectionMode===Es.EVENTUAL||!!e?.contains(this._inputModalityDetector._mostRecentTarget)}_setClasses(e,t){e.classList.toggle("cdk-focused",!!t),e.classList.toggle("cdk-touch-focused",t==="touch"),e.classList.toggle("cdk-keyboard-focused",t==="keyboard"),e.classList.toggle("cdk-mouse-focused",t==="mouse"),e.classList.toggle("cdk-program-focused",t==="program")}_setOrigin(e,t=!1){this._ngZone.runOutsideAngular(()=>{if(this._origin=e,this._originFromTouchInteraction=e==="touch"&&t,this._detectionMode===Es.IMMEDIATE){clearTimeout(this._originTimeoutId);let r=this._originFromTouchInteraction?ff:1;this._originTimeoutId=setTimeout(()=>this._origin=null,r)}})}_onFocus(e,t){let r=this._elementInfo.get(t),o=Ot(e);!r||!r.checkChildren&&t!==o||this._originChanged(t,this._getFocusOrigin(o),r)}_onBlur(e,t){let r=this._elementInfo.get(t);!r||r.checkChildren&&e.relatedTarget instanceof Node&&t.contains(e.relatedTarget)||(this._setClasses(t),this._emitOrigin(r,null))}_emitOrigin(e,t){e.subject.observers.length&&this._ngZone.run(()=>e.subject.next(t))}_registerGlobalListeners(e){if(!this._platform.isBrowser)return;let t=e.rootNode,r=this._rootNodeFocusListenerCount.get(t)||0;r||this._ngZone.runOutsideAngular(()=>{t.addEventListener("focus",this._rootNodeFocusAndBlurListener,Ds),t.addEventListener("blur",this._rootNodeFocusAndBlurListener,Ds)}),this._rootNodeFocusListenerCount.set(t,r+1),++this._monitoredElementCount===1&&(this._ngZone.runOutsideAngular(()=>{this._getWindow().addEventListener("focus",this._windowFocusListener)}),this._inputModalityDetector.modalityDetected.pipe($(this._stopInputModalityDetector)).subscribe(o=>{this._setOrigin(o,!0)}))}_removeGlobalListeners(e){let t=e.rootNode;if(this._rootNodeFocusListenerCount.has(t)){let r=this._rootNodeFocusListenerCount.get(t);r>1?this._rootNodeFocusListenerCount.set(t,r-1):(t.removeEventListener("focus",this._rootNodeFocusAndBlurListener,Ds),t.removeEventListener("blur",this._rootNodeFocusAndBlurListener,Ds),this._rootNodeFocusListenerCount.delete(t))}--this._monitoredElementCount||(this._getWindow().removeEventListener("focus",this._windowFocusListener),this._stopInputModalityDetector.next(),clearTimeout(this._windowFocusTimeoutId),clearTimeout(this._originTimeoutId))}_originChanged(e,t,r){this._setClasses(e,t),this._emitOrigin(r,t),this._lastFocusOrigin=t}_getClosestElementsInfo(e){let t=[];return this._elementInfo.forEach((r,o)=>{(o===e||r.checkChildren&&o.contains(e))&&t.push([o,r])}),t}_isLastInteractionFromInputLabel(e){let{_mostRecentTarget:t,mostRecentModality:r}=this._inputModalityDetector;if(r!=="mouse"||!t||t===e||e.nodeName!=="INPUT"&&e.nodeName!=="TEXTAREA"||e.disabled)return!1;let o=e.labels;if(o){for(let a=0;a{class i{constructor(e,t){this._elementRef=e,this._focusMonitor=t,this._focusOrigin=null,this.cdkFocusChange=new z}get focusOrigin(){return this._focusOrigin}ngAfterViewInit(){let e=this._elementRef.nativeElement;this._monitorSubscription=this._focusMonitor.monitor(e,e.nodeType===1&&e.hasAttribute("cdkMonitorSubtreeFocus")).subscribe(t=>{this._focusOrigin=t,this.cdkFocusChange.emit(t)})}ngOnDestroy(){this._focusMonitor.stopMonitoring(this._elementRef),this._monitorSubscription&&this._monitorSubscription.unsubscribe()}static{this.\u0275fac=function(t){return new(t||i)(u(E),u(ot))}}static{this.\u0275dir=D({type:i,selectors:[["","cdkMonitorElementFocus",""],["","cdkMonitorSubtreeFocus",""]],outputs:{cdkFocusChange:"cdkFocusChange"},exportAs:["cdkMonitorFocus"],standalone:!0})}}return i})(),Pn=function(i){return i[i.NONE=0]="NONE",i[i.BLACK_ON_WHITE=1]="BLACK_ON_WHITE",i[i.WHITE_ON_BLACK=2]="WHITE_ON_BLACK",i}(Pn||{}),lf="cdk-high-contrast-black-on-white",df="cdk-high-contrast-white-on-black",nd="cdk-high-contrast-active",cd=(()=>{class i{constructor(e,t){this._platform=e,this._document=t,this._breakpointSubscription=F(Cs).observe("(forced-colors: active)").subscribe(()=>{this._hasCheckedHighContrastMode&&(this._hasCheckedHighContrastMode=!1,this._applyBodyHighContrastModeCssClasses())})}getHighContrastMode(){if(!this._platform.isBrowser)return Pn.NONE;let e=this._document.createElement("div");e.style.backgroundColor="rgb(1,2,3)",e.style.position="absolute",this._document.body.appendChild(e);let t=this._document.defaultView||window,r=t&&t.getComputedStyle?t.getComputedStyle(e):null,o=(r&&r.backgroundColor||"").replace(/ /g,"");switch(e.remove(),o){case"rgb(0,0,0)":case"rgb(45,50,54)":case"rgb(32,32,32)":return Pn.WHITE_ON_BLACK;case"rgb(255,255,255)":case"rgb(255,250,239)":return Pn.BLACK_ON_WHITE}return Pn.NONE}ngOnDestroy(){this._breakpointSubscription.unsubscribe()}_applyBodyHighContrastModeCssClasses(){if(!this._hasCheckedHighContrastMode&&this._platform.isBrowser&&this._document.body){let e=this._document.body.classList;e.remove(nd,lf,df),this._hasCheckedHighContrastMode=!0;let t=this.getHighContrastMode();t===Pn.BLACK_ON_WHITE?e.add(nd,lf):t===Pn.WHITE_ON_BLACK&&e.add(nd,df)}}static{this.\u0275fac=function(t){return new(t||i)(x(me),x(oe))}}static{this.\u0275prov=Z({token:i,factory:i.\u0275fac,providedIn:"root"})}}return i})(),Ts=(()=>{class i{constructor(e){e._applyBodyHighContrastModeCssClasses()}static{this.\u0275fac=function(t){return new(t||i)(x(cd))}}static{this.\u0275mod=j({type:i})}static{this.\u0275inj=L({imports:[ws]})}}return i})();var _x=new C("cdk-dir-doc",{providedIn:"root",factory:yx});function yx(){return F(oe)}var xx=/^(ar|ckb|dv|he|iw|fa|nqo|ps|sd|ug|ur|yi|.*[-_](Adlm|Arab|Hebr|Nkoo|Rohg|Thaa))(?!.*[-_](Latn|Cyrl)($|-|_))($|-|_)/i;function wx(i){let n=i?.toLowerCase()||"";return n==="auto"&&typeof navigator<"u"&&navigator?.language?xx.test(navigator.language)?"rtl":"ltr":n==="rtl"?"rtl":"ltr"}var Re=(()=>{class i{constructor(e){if(this.value="ltr",this.change=new z,e){let t=e.body?e.body.dir:null,r=e.documentElement?e.documentElement.dir:null;this.value=wx(t||r||"ltr")}}ngOnDestroy(){this.change.complete()}static{this.\u0275fac=function(t){return new(t||i)(x(_x,8))}}static{this.\u0275prov=Z({token:i,factory:i.\u0275fac,providedIn:"root"})}}return i})();var cn=(()=>{class i{static{this.\u0275fac=function(t){return new(t||i)}}static{this.\u0275mod=j({type:i})}static{this.\u0275inj=L({})}}return i})();var Cx=["text"],kx=[[["mat-icon"]],"*"],Dx=["mat-icon","*"];function Ex(i,n){if(i&1&&ie(0,"mat-pseudo-checkbox",1),i&2){let e=fe();ue("disabled",e.disabled)("state",e.selected?"checked":"unchecked")}}function Ix(i,n){if(i&1&&ie(0,"mat-pseudo-checkbox",3),i&2){let e=fe();ue("disabled",e.disabled)}}function Sx(i,n){if(i&1&&(w(0,"span",4),Tt(1),I()),i&2){let e=fe();V(),ra("(",e.group.label,")")}}var Tx=["mat-internal-form-field",""],Mx=["*"];function Ax(){return!0}var Ox=new C("mat-sanity-checks",{providedIn:"root",factory:Ax}),K=(()=>{class i{constructor(e,t,r){this._sanityChecks=t,this._document=r,this._hasDoneGlobalChecks=!1,e._applyBodyHighContrastModeCssClasses(),this._hasDoneGlobalChecks||(this._hasDoneGlobalChecks=!0)}_checkIsEnabled(e){return Oo()?!1:typeof this._sanityChecks=="boolean"?this._sanityChecks:!!this._sanityChecks[e]}static{this.\u0275fac=function(t){return new(t||i)(x(cd),x(Ox,8),x(oe))}}static{this.\u0275mod=j({type:i})}static{this.\u0275inj=L({imports:[cn,cn]})}}return i})();var ln=class{constructor(n,e,t,r,o){this._defaultMatcher=n,this.ngControl=e,this._parentFormGroup=t,this._parentForm=r,this._stateChanges=o,this.errorState=!1}updateErrorState(){let n=this.errorState,e=this._parentFormGroup||this._parentForm,t=this.matcher||this._defaultMatcher,r=this.ngControl?this.ngControl.control:null,o=t?.isErrorState(r,e)??!1;o!==n&&(this.errorState=o,this._stateChanges.next())}};var dn=(()=>{class i{isErrorState(e,t){return!!(e&&e.invalid&&(e.touched||t&&t.submitted))}static{this.\u0275fac=function(t){return new(t||i)}}static{this.\u0275prov=Z({token:i,factory:i.\u0275fac,providedIn:"root"})}}return i})();var pd=(()=>{class i{static{this.\u0275fac=function(t){return new(t||i)}}static{this.\u0275mod=j({type:i})}static{this.\u0275inj=L({imports:[K,K]})}}return i})(),ei=function(i){return i[i.FADING_IN=0]="FADING_IN",i[i.VISIBLE=1]="VISIBLE",i[i.FADING_OUT=2]="FADING_OUT",i[i.HIDDEN=3]="HIDDEN",i}(ei||{}),ud=class{constructor(n,e,t,r=!1){this._renderer=n,this.element=e,this.config=t,this._animationForciblyDisabledThroughCss=r,this.state=ei.HIDDEN}fadeOut(){this._renderer.fadeOutRipple(this)}},vf=Bt({passive:!0,capture:!0}),hd=class{constructor(){this._events=new Map,this._delegateEventHandler=n=>{let e=Ot(n);e&&this._events.get(n.type)?.forEach((t,r)=>{(r===e||r.contains(e))&&t.forEach(o=>o.handleEvent(n))})}}addHandler(n,e,t,r){let o=this._events.get(e);if(o){let a=o.get(t);a?a.add(r):o.set(t,new Set([r]))}else this._events.set(e,new Map([[t,new Set([r])]])),n.runOutsideAngular(()=>{document.addEventListener(e,this._delegateEventHandler,vf)})}removeHandler(n,e,t){let r=this._events.get(n);if(!r)return;let o=r.get(e);o&&(o.delete(t),o.size===0&&r.delete(e),r.size===0&&(this._events.delete(n),document.removeEventListener(n,this._delegateEventHandler,vf)))}},_f={enterDuration:225,exitDuration:150},Rx=800,yf=Bt({passive:!0,capture:!0}),xf=["mousedown","touchstart"],wf=["mouseup","mouseleave","touchend","touchcancel"],md=class i{static{this._eventManager=new hd}constructor(n,e,t,r){this._target=n,this._ngZone=e,this._platform=r,this._isPointerDown=!1,this._activeRipples=new Map,this._pointerUpEventsRegistered=!1,r.isBrowser&&(this._containerElement=zt(t))}fadeInRipple(n,e,t={}){let r=this._containerRect=this._containerRect||this._containerElement.getBoundingClientRect(),o=N(N({},_f),t.animation);t.centered&&(n=r.left+r.width/2,e=r.top+r.height/2);let a=t.radius||Fx(n,e,r),s=n-r.left,c=e-r.top,l=o.enterDuration,d=document.createElement("div");d.classList.add("mat-ripple-element"),d.style.left=`${s-a}px`,d.style.top=`${c-a}px`,d.style.height=`${a*2}px`,d.style.width=`${a*2}px`,t.color!=null&&(d.style.backgroundColor=t.color),d.style.transitionDuration=`${l}ms`,this._containerElement.appendChild(d);let h=window.getComputedStyle(d),m=h.transitionProperty,p=h.transitionDuration,f=m==="none"||p==="0s"||p==="0s, 0s"||r.width===0&&r.height===0,g=new ud(this,d,t,f);d.style.transform="scale3d(1, 1, 1)",g.state=ei.FADING_IN,t.persistent||(this._mostRecentTransientRipple=g);let _=null;return!f&&(l||o.exitDuration)&&this._ngZone.runOutsideAngular(()=>{let v=()=>{_&&(_.fallbackTimer=null),clearTimeout(y),this._finishRippleTransition(g)},M=()=>this._destroyRipple(g),y=setTimeout(M,l+100);d.addEventListener("transitionend",v),d.addEventListener("transitioncancel",M),_={onTransitionEnd:v,onTransitionCancel:M,fallbackTimer:y}}),this._activeRipples.set(g,_),(f||!l)&&this._finishRippleTransition(g),g}fadeOutRipple(n){if(n.state===ei.FADING_OUT||n.state===ei.HIDDEN)return;let e=n.element,t=N(N({},_f),n.config.animation);e.style.transitionDuration=`${t.exitDuration}ms`,e.style.opacity="0",n.state=ei.FADING_OUT,(n._animationForciblyDisabledThroughCss||!t.exitDuration)&&this._finishRippleTransition(n)}fadeOutAll(){this._getActiveRipples().forEach(n=>n.fadeOut())}fadeOutAllNonPersistent(){this._getActiveRipples().forEach(n=>{n.config.persistent||n.fadeOut()})}setupTriggerEvents(n){let e=zt(n);!this._platform.isBrowser||!e||e===this._triggerElement||(this._removeTriggerEvents(),this._triggerElement=e,xf.forEach(t=>{i._eventManager.addHandler(this._ngZone,t,e,this)}))}handleEvent(n){n.type==="mousedown"?this._onMousedown(n):n.type==="touchstart"?this._onTouchStart(n):this._onPointerUp(),this._pointerUpEventsRegistered||(this._ngZone.runOutsideAngular(()=>{wf.forEach(e=>{this._triggerElement.addEventListener(e,this,yf)})}),this._pointerUpEventsRegistered=!0)}_finishRippleTransition(n){n.state===ei.FADING_IN?this._startFadeOutTransition(n):n.state===ei.FADING_OUT&&this._destroyRipple(n)}_startFadeOutTransition(n){let e=n===this._mostRecentTransientRipple,{persistent:t}=n.config;n.state=ei.VISIBLE,!t&&(!e||!this._isPointerDown)&&n.fadeOut()}_destroyRipple(n){let e=this._activeRipples.get(n)??null;this._activeRipples.delete(n),this._activeRipples.size||(this._containerRect=null),n===this._mostRecentTransientRipple&&(this._mostRecentTransientRipple=null),n.state=ei.HIDDEN,e!==null&&(n.element.removeEventListener("transitionend",e.onTransitionEnd),n.element.removeEventListener("transitioncancel",e.onTransitionCancel),e.fallbackTimer!==null&&clearTimeout(e.fallbackTimer)),n.element.remove()}_onMousedown(n){let e=Fo(n),t=this._lastTouchStartEvent&&Date.now(){let e=n.state===ei.VISIBLE||n.config.terminateOnPointerUp&&n.state===ei.FADING_IN;!n.config.persistent&&e&&n.fadeOut()}))}_getActiveRipples(){return Array.from(this._activeRipples.keys())}_removeTriggerEvents(){let n=this._triggerElement;n&&(xf.forEach(e=>i._eventManager.removeHandler(e,n,this)),this._pointerUpEventsRegistered&&(wf.forEach(e=>n.removeEventListener(e,this,yf)),this._pointerUpEventsRegistered=!1))}};function Fx(i,n,e){let t=Math.max(Math.abs(i-e.left),Math.abs(i-e.right)),r=Math.max(Math.abs(n-e.top),Math.abs(n-e.bottom));return Math.sqrt(t*t+r*r)}var Ln=new C("mat-ripple-global-options"),ti=(()=>{class i{get disabled(){return this._disabled}set disabled(e){e&&this.fadeOutAllNonPersistent(),this._disabled=e,this._setupTriggerEventsIfEnabled()}get trigger(){return this._trigger||this._elementRef.nativeElement}set trigger(e){this._trigger=e,this._setupTriggerEventsIfEnabled()}constructor(e,t,r,o,a){this._elementRef=e,this._animationMode=a,this.radius=0,this._disabled=!1,this._isInitialized=!1,this._globalOptions=o||{},this._rippleRenderer=new md(this,t,e,r)}ngOnInit(){this._isInitialized=!0,this._setupTriggerEventsIfEnabled()}ngOnDestroy(){this._rippleRenderer._removeTriggerEvents()}fadeOutAll(){this._rippleRenderer.fadeOutAll()}fadeOutAllNonPersistent(){this._rippleRenderer.fadeOutAllNonPersistent()}get rippleConfig(){return{centered:this.centered,radius:this.radius,color:this.color,animation:N(N(N({},this._globalOptions.animation),this._animationMode==="NoopAnimations"?{enterDuration:0,exitDuration:0}:{}),this.animation),terminateOnPointerUp:this._globalOptions.terminateOnPointerUp}}get rippleDisabled(){return this.disabled||!!this._globalOptions.disabled}_setupTriggerEventsIfEnabled(){!this.disabled&&this._isInitialized&&this._rippleRenderer.setupTriggerEvents(this.trigger)}launch(e,t=0,r){return typeof e=="number"?this._rippleRenderer.fadeInRipple(e,t,N(N({},this.rippleConfig),r)):this._rippleRenderer.fadeInRipple(0,0,N(N({},this.rippleConfig),e))}static{this.\u0275fac=function(t){return new(t||i)(u(E),u(B),u(me),u(Ln,8),u(we,8))}}static{this.\u0275dir=D({type:i,selectors:[["","mat-ripple",""],["","matRipple",""]],hostAttrs:[1,"mat-ripple"],hostVars:2,hostBindings:function(t,r){t&2&&P("mat-ripple-unbounded",r.unbounded)},inputs:{color:[0,"matRippleColor","color"],unbounded:[0,"matRippleUnbounded","unbounded"],centered:[0,"matRippleCentered","centered"],radius:[0,"matRippleRadius","radius"],animation:[0,"matRippleAnimation","animation"],disabled:[0,"matRippleDisabled","disabled"],trigger:[0,"matRippleTrigger","trigger"]},exportAs:["matRipple"],standalone:!0})}}return i})(),jn=(()=>{class i{static{this.\u0275fac=function(t){return new(t||i)}}static{this.\u0275mod=j({type:i})}static{this.\u0275inj=L({imports:[K,K]})}}return i})(),Px=(()=>{class i{constructor(e){this._animationMode=e,this.state="unchecked",this.disabled=!1,this.appearance="full"}static{this.\u0275fac=function(t){return new(t||i)(u(we,8))}}static{this.\u0275cmp=H({type:i,selectors:[["mat-pseudo-checkbox"]],hostAttrs:[1,"mat-pseudo-checkbox"],hostVars:12,hostBindings:function(t,r){t&2&&P("mat-pseudo-checkbox-indeterminate",r.state==="indeterminate")("mat-pseudo-checkbox-checked",r.state==="checked")("mat-pseudo-checkbox-disabled",r.disabled)("mat-pseudo-checkbox-minimal",r.appearance==="minimal")("mat-pseudo-checkbox-full",r.appearance==="full")("_mat-animation-noopable",r._animationMode==="NoopAnimations")},inputs:{state:"state",disabled:"disabled",appearance:"appearance"},standalone:!0,features:[Q],decls:0,vars:0,template:function(t,r){},styles:['.mat-pseudo-checkbox{border-radius:2px;cursor:pointer;display:inline-block;vertical-align:middle;box-sizing:border-box;position:relative;flex-shrink:0;transition:border-color 90ms cubic-bezier(0, 0, 0.2, 0.1),background-color 90ms cubic-bezier(0, 0, 0.2, 0.1)}.mat-pseudo-checkbox::after{position:absolute;opacity:0;content:"";border-bottom:2px solid currentColor;transition:opacity 90ms cubic-bezier(0, 0, 0.2, 0.1)}.mat-pseudo-checkbox._mat-animation-noopable{transition:none !important;animation:none !important}.mat-pseudo-checkbox._mat-animation-noopable::after{transition:none}.mat-pseudo-checkbox-disabled{cursor:default}.mat-pseudo-checkbox-indeterminate::after{left:1px;opacity:1;border-radius:2px}.mat-pseudo-checkbox-checked::after{left:1px;border-left:2px solid currentColor;transform:rotate(-45deg);opacity:1;box-sizing:content-box}.mat-pseudo-checkbox-minimal.mat-pseudo-checkbox-checked::after,.mat-pseudo-checkbox-minimal.mat-pseudo-checkbox-indeterminate::after{color:var(--mat-minimal-pseudo-checkbox-selected-checkmark-color, var(--mat-app-primary))}.mat-pseudo-checkbox-minimal.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-disabled::after,.mat-pseudo-checkbox-minimal.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-disabled::after{color:var(--mat-minimal-pseudo-checkbox-disabled-selected-checkmark-color)}.mat-pseudo-checkbox-full{border-color:var(--mat-full-pseudo-checkbox-unselected-icon-color, var(--mat-app-on-surface-variant));border-width:2px;border-style:solid}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-disabled{border-color:var(--mat-full-pseudo-checkbox-disabled-unselected-icon-color)}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-checked,.mat-pseudo-checkbox-full.mat-pseudo-checkbox-indeterminate{background-color:var(--mat-full-pseudo-checkbox-selected-icon-color, var(--mat-app-primary));border-color:rgba(0,0,0,0)}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-checked::after,.mat-pseudo-checkbox-full.mat-pseudo-checkbox-indeterminate::after{color:var(--mat-full-pseudo-checkbox-selected-checkmark-color, var(--mat-app-on-primary))}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-disabled,.mat-pseudo-checkbox-full.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-disabled{background-color:var(--mat-full-pseudo-checkbox-disabled-selected-icon-color)}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-disabled::after,.mat-pseudo-checkbox-full.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-disabled::after{color:var(--mat-full-pseudo-checkbox-disabled-selected-checkmark-color, var(--mat-app-surface))}.mat-pseudo-checkbox{width:18px;height:18px}.mat-pseudo-checkbox-minimal.mat-pseudo-checkbox-checked::after{width:14px;height:6px;transform-origin:center;top:-4.2426406871px;left:0;bottom:0;right:0;margin:auto}.mat-pseudo-checkbox-minimal.mat-pseudo-checkbox-indeterminate::after{top:8px;width:16px}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-checked::after{width:10px;height:4px;transform-origin:center;top:-2.8284271247px;left:0;bottom:0;right:0;margin:auto}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-indeterminate::after{top:6px;width:12px}'],encapsulation:2,changeDetection:0})}}return i})(),Nx=(()=>{class i{static{this.\u0275fac=function(t){return new(t||i)}}static{this.\u0275mod=j({type:i})}static{this.\u0275inj=L({imports:[K]})}}return i})(),Lo=new C("MAT_OPTION_PARENT_COMPONENT");var jo=new C("MatOptgroup");var Lx=0,No=class{constructor(n,e=!1){this.source=n,this.isUserInput=e}},As=(()=>{class i{get multiple(){return this._parent&&this._parent.multiple}get selected(){return this._selected}get disabled(){return this.group&&this.group.disabled||this._disabled}set disabled(e){this._disabled=e}get disableRipple(){return!!(this._parent&&this._parent.disableRipple)}get hideSingleSelectionIndicator(){return!!(this._parent&&this._parent.hideSingleSelectionIndicator)}constructor(e,t,r,o){this._element=e,this._changeDetectorRef=t,this._parent=r,this.group=o,this._selected=!1,this._active=!1,this._disabled=!1,this._mostRecentViewValue="",this.id=`mat-option-${Lx++}`,this.onSelectionChange=new z,this._stateChanges=new R}get active(){return this._active}get viewValue(){return(this._text?.nativeElement.textContent||"").trim()}select(e=!0){this._selected||(this._selected=!0,this._changeDetectorRef.markForCheck(),e&&this._emitSelectionChangeEvent())}deselect(e=!0){this._selected&&(this._selected=!1,this._changeDetectorRef.markForCheck(),e&&this._emitSelectionChangeEvent())}focus(e,t){let r=this._getHostElement();typeof r.focus=="function"&&r.focus(t)}setActiveStyles(){this._active||(this._active=!0,this._changeDetectorRef.markForCheck())}setInactiveStyles(){this._active&&(this._active=!1,this._changeDetectorRef.markForCheck())}getLabel(){return this.viewValue}_handleKeydown(e){(e.keyCode===13||e.keyCode===32)&&!Le(e)&&(this._selectViaInteraction(),e.preventDefault())}_selectViaInteraction(){this.disabled||(this._selected=this.multiple?!this._selected:!0,this._changeDetectorRef.markForCheck(),this._emitSelectionChangeEvent(!0))}_getTabIndex(){return this.disabled?"-1":"0"}_getHostElement(){return this._element.nativeElement}ngAfterViewChecked(){if(this._selected){let e=this.viewValue;e!==this._mostRecentViewValue&&(this._mostRecentViewValue&&this._stateChanges.next(),this._mostRecentViewValue=e)}}ngOnDestroy(){this._stateChanges.complete()}_emitSelectionChangeEvent(e=!1){this.onSelectionChange.emit(new No(this,e))}static{this.\u0275fac=function(t){return new(t||i)(u(E),u(pe),u(Lo,8),u(jo,8))}}static{this.\u0275cmp=H({type:i,selectors:[["mat-option"]],viewQuery:function(t,r){if(t&1&&re(Cx,7),t&2){let o;S(o=T())&&(r._text=o.first)}},hostAttrs:["role","option",1,"mat-mdc-option","mdc-list-item"],hostVars:11,hostBindings:function(t,r){t&1&&ee("click",function(){return r._selectViaInteraction()})("keydown",function(a){return r._handleKeydown(a)}),t&2&&(St("id",r.id),W("aria-selected",r.selected)("aria-disabled",r.disabled.toString()),P("mdc-list-item--selected",r.selected)("mat-mdc-option-multiple",r.multiple)("mat-mdc-option-active",r.active)("mdc-list-item--disabled",r.disabled))},inputs:{value:"value",id:"id",disabled:[2,"disabled","disabled",O]},outputs:{onSelectionChange:"onSelectionChange"},exportAs:["matOption"],standalone:!0,features:[ae,Q],ngContentSelectors:Dx,decls:8,vars:5,consts:[["text",""],["aria-hidden","true",1,"mat-mdc-option-pseudo-checkbox",3,"disabled","state"],[1,"mdc-list-item__primary-text"],["state","checked","aria-hidden","true","appearance","minimal",1,"mat-mdc-option-pseudo-checkbox",3,"disabled"],[1,"cdk-visually-hidden"],["aria-hidden","true","mat-ripple","",1,"mat-mdc-option-ripple","mat-mdc-focus-indicator",3,"matRippleTrigger","matRippleDisabled"]],template:function(t,r){t&1&&(se(kx),te(0,Ex,1,2,"mat-pseudo-checkbox",1),A(1),w(2,"span",2,0),A(4,1),I(),te(5,Ix,1,1,"mat-pseudo-checkbox",3)(6,Sx,2,1,"span",4),ie(7,"div",5)),t&2&&(ge(r.multiple?0:-1),V(5),ge(!r.multiple&&r.selected&&!r.hideSingleSelectionIndicator?5:-1),V(),ge(r.group&&r.group._inert?6:-1),V(),ue("matRippleTrigger",r._getHostElement())("matRippleDisabled",r.disabled||r.disableRipple))},dependencies:[Px,ti],styles:['.mat-mdc-option{-webkit-user-select:none;user-select:none;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:flex;position:relative;align-items:center;justify-content:flex-start;overflow:hidden;min-height:48px;padding:0 16px;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0);color:var(--mat-option-label-text-color, var(--mat-app-on-surface));font-family:var(--mat-option-label-text-font, var(--mat-app-label-large-font));line-height:var(--mat-option-label-text-line-height, var(--mat-app-label-large-line-height));font-size:var(--mat-option-label-text-size, var(--mat-app-body-large-size));letter-spacing:var(--mat-option-label-text-tracking, var(--mat-app-label-large-tracking));font-weight:var(--mat-option-label-text-weight, var(--mat-app-body-large-weight))}.mat-mdc-option:hover:not(.mdc-list-item--disabled){background-color:var(--mat-option-hover-state-layer-color)}.mat-mdc-option:focus.mdc-list-item,.mat-mdc-option.mat-mdc-option-active.mdc-list-item{background-color:var(--mat-option-focus-state-layer-color);outline:0}.mat-mdc-option.mdc-list-item--selected:not(.mdc-list-item--disabled) .mdc-list-item__primary-text{color:var(--mat-option-selected-state-label-text-color, var(--mat-app-on-secondary-container))}.mat-mdc-option.mdc-list-item--selected:not(.mdc-list-item--disabled):not(.mat-mdc-option-multiple){background-color:var(--mat-option-selected-state-layer-color, var(--mat-app-secondary-container))}.mat-mdc-option .mat-pseudo-checkbox{--mat-minimal-pseudo-checkbox-selected-checkmark-color: var(--mat-option-selected-state-label-text-color, var(--mat-app-on-secondary-container))}.mat-mdc-option.mdc-list-item{align-items:center;background:rgba(0,0,0,0)}.mat-mdc-option.mdc-list-item--disabled{cursor:default;pointer-events:none}.mat-mdc-option.mdc-list-item--disabled .mat-mdc-option-pseudo-checkbox,.mat-mdc-option.mdc-list-item--disabled .mdc-list-item__primary-text,.mat-mdc-option.mdc-list-item--disabled>mat-icon{opacity:.38}.mat-mdc-optgroup .mat-mdc-option:not(.mat-mdc-option-multiple){padding-left:32px}[dir=rtl] .mat-mdc-optgroup .mat-mdc-option:not(.mat-mdc-option-multiple){padding-left:16px;padding-right:32px}.mat-mdc-option .mat-icon,.mat-mdc-option .mat-pseudo-checkbox-full{margin-right:16px;flex-shrink:0}[dir=rtl] .mat-mdc-option .mat-icon,[dir=rtl] .mat-mdc-option .mat-pseudo-checkbox-full{margin-right:0;margin-left:16px}.mat-mdc-option .mat-pseudo-checkbox-minimal{margin-left:16px;flex-shrink:0}[dir=rtl] .mat-mdc-option .mat-pseudo-checkbox-minimal{margin-right:16px;margin-left:0}.mat-mdc-option .mat-mdc-option-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}.mat-mdc-option .mdc-list-item__primary-text{white-space:normal;font-size:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;font-family:inherit;text-decoration:inherit;text-transform:inherit;margin-right:auto}[dir=rtl] .mat-mdc-option .mdc-list-item__primary-text{margin-right:0;margin-left:auto}.cdk-high-contrast-active .mat-mdc-option.mdc-list-item--selected:not(.mat-mdc-option-multiple)::after{content:"";position:absolute;top:50%;right:16px;transform:translateY(-50%);width:10px;height:0;border-bottom:solid 10px;border-radius:10px}[dir=rtl] .cdk-high-contrast-active .mat-mdc-option.mdc-list-item--selected:not(.mat-mdc-option-multiple)::after{right:auto;left:16px}.mat-mdc-option-multiple{--mdc-list-list-item-selected-container-color:var(--mdc-list-list-item-container-color, transparent)}.mat-mdc-option-active .mat-mdc-focus-indicator::before{content:""}'],encapsulation:2,changeDetection:0})}}return i})();function Os(i,n,e){if(e.length){let t=n.toArray(),r=e.toArray(),o=0;for(let a=0;ae+t?Math.max(0,i-t+n):e}var Lr=(()=>{class i{static{this.\u0275fac=function(t){return new(t||i)}}static{this.\u0275mod=j({type:i})}static{this.\u0275inj=L({imports:[jn,K,Nx]})}}return i})(),Cf={capture:!0},kf=["focus","mousedown","mouseenter","touchstart"],ld="mat-ripple-loader-uninitialized",dd="mat-ripple-loader-class-name",Df="mat-ripple-loader-centered",Ms="mat-ripple-loader-disabled",Fs=(()=>{class i{constructor(){this._document=F(oe,{optional:!0}),this._animationMode=F(we,{optional:!0}),this._globalRippleOptions=F(Ln,{optional:!0}),this._platform=F(me),this._ngZone=F(B),this._hosts=new Map,this._onInteraction=e=>{let t=Ot(e);if(t instanceof HTMLElement){let r=t.closest(`[${ld}="${this._globalRippleOptions?.namespace??""}"]`);r&&this._createRipple(r)}},this._ngZone.runOutsideAngular(()=>{for(let e of kf)this._document?.addEventListener(e,this._onInteraction,Cf)})}ngOnDestroy(){let e=this._hosts.keys();for(let t of e)this.destroyRipple(t);for(let t of kf)this._document?.removeEventListener(t,this._onInteraction,Cf)}configureRipple(e,t){e.setAttribute(ld,this._globalRippleOptions?.namespace??""),(t.className||!e.hasAttribute(dd))&&e.setAttribute(dd,t.className||""),t.centered&&e.setAttribute(Df,""),t.disabled&&e.setAttribute(Ms,"")}getRipple(e){return this._hosts.get(e)||this._createRipple(e)}setDisabled(e,t){let r=this._hosts.get(e);if(r){r.disabled=t;return}t?e.setAttribute(Ms,""):e.removeAttribute(Ms)}_createRipple(e){if(!this._document)return;let t=this._hosts.get(e);if(t)return t;e.querySelector(".mat-ripple")?.remove();let r=this._document.createElement("span");r.classList.add("mat-ripple",e.getAttribute(dd)),e.append(r);let o=new ti(new E(r),this._ngZone,this._platform,this._globalRippleOptions?this._globalRippleOptions:void 0,this._animationMode?this._animationMode:void 0);return o._isInitialized=!0,o.trigger=e,o.centered=e.hasAttribute(Df),o.disabled=e.hasAttribute(Ms),this.attachRipple(e,o),o}attachRipple(e,t){e.removeAttribute(ld),this._hosts.set(e,t)}destroyRipple(e){let t=this._hosts.get(e);t&&(t.ngOnDestroy(),this._hosts.delete(e))}static{this.\u0275fac=function(t){return new(t||i)}}static{this.\u0275prov=Z({token:i,factory:i.\u0275fac,providedIn:"root"})}}return i})(),Ef=(()=>{class i{static{this.\u0275fac=function(t){return new(t||i)}}static{this.\u0275cmp=H({type:i,selectors:[["div","mat-internal-form-field",""]],hostAttrs:[1,"mdc-form-field","mat-internal-form-field"],hostVars:2,hostBindings:function(t,r){t&2&&P("mdc-form-field--align-end",r.labelPosition==="before")},inputs:{labelPosition:"labelPosition"},standalone:!0,features:[Q],attrs:Tx,ngContentSelectors:Mx,decls:1,vars:0,template:function(t,r){t&1&&(se(),A(0))},styles:[".mat-internal-form-field{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-flex;align-items:center;vertical-align:middle}.mat-internal-form-field>label{margin-left:0;margin-right:auto;padding-left:4px;padding-right:0;order:0}[dir=rtl] .mat-internal-form-field>label{margin-left:auto;margin-right:0;padding-left:0;padding-right:4px}.mdc-form-field--align-end>label{margin-left:auto;margin-right:0;padding-left:0;padding-right:4px;order:-1}[dir=rtl] .mdc-form-field--align-end .mdc-form-field--align-end label{margin-left:0;margin-right:auto;padding-left:4px;padding-right:0}"],encapsulation:2,changeDetection:0})}}return i})();var Sf=["mat-button",""],gd=[[["",8,"material-icons",3,"iconPositionEnd",""],["mat-icon",3,"iconPositionEnd",""],["","matButtonIcon","",3,"iconPositionEnd",""]],"*",[["","iconPositionEnd","",8,"material-icons"],["mat-icon","iconPositionEnd",""],["","matButtonIcon","","iconPositionEnd",""]]],bd=[".material-icons:not([iconPositionEnd]), mat-icon:not([iconPositionEnd]), [matButtonIcon]:not([iconPositionEnd])","*",".material-icons[iconPositionEnd], mat-icon[iconPositionEnd], [matButtonIcon][iconPositionEnd]"],jx='.mat-mdc-button-base{text-decoration:none}.mdc-button{-webkit-user-select:none;user-select:none;position:relative;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;min-width:64px;border:none;outline:none;line-height:inherit;-webkit-appearance:none;overflow:visible;vertical-align:middle;background:rgba(0,0,0,0);padding:0 8px}.mdc-button::-moz-focus-inner{padding:0;border:0}.mdc-button:active{outline:none}.mdc-button:hover{cursor:pointer}.mdc-button:disabled{cursor:default;pointer-events:none}.mdc-button[hidden]{display:none}.mdc-button .mdc-button__label{position:relative}.mat-mdc-button{padding:0 var(--mat-text-button-horizontal-padding, 8px);height:var(--mdc-text-button-container-height);font-family:var(--mdc-text-button-label-text-font, var(--mat-app-label-large-font));font-size:var(--mdc-text-button-label-text-size, var(--mat-app-label-large-size));letter-spacing:var(--mdc-text-button-label-text-tracking, var(--mat-app-label-large-tracking));text-transform:var(--mdc-text-button-label-text-transform);font-weight:var(--mdc-text-button-label-text-weight, var(--mat-app-label-large-weight))}.mat-mdc-button:has(.material-icons,mat-icon,[matButtonIcon]){padding:0 var(--mat-text-button-with-icon-horizontal-padding, 8px)}.mat-mdc-button>.mat-icon{margin-right:var(--mat-text-button-icon-spacing, 8px);margin-left:var(--mat-text-button-icon-offset, 0)}[dir=rtl] .mat-mdc-button>.mat-icon{margin-right:var(--mat-text-button-icon-offset, 0);margin-left:var(--mat-text-button-icon-spacing, 8px)}.mat-mdc-button .mdc-button__label+.mat-icon{margin-right:var(--mat-text-button-icon-offset, 0);margin-left:var(--mat-text-button-icon-spacing, 8px)}[dir=rtl] .mat-mdc-button .mdc-button__label+.mat-icon{margin-right:var(--mat-text-button-icon-spacing, 8px);margin-left:var(--mat-text-button-icon-offset, 0)}.mat-mdc-button .mat-ripple-element{background-color:var(--mat-text-button-ripple-color)}.mat-mdc-button .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-text-button-state-layer-color, var(--mat-app-primary))}.mat-mdc-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-text-button-disabled-state-layer-color, var(--mat-app-on-surface-variant))}.mat-mdc-button:hover .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-text-button-hover-state-layer-opacity, var(--mat-app-hover-state-layer-opacity))}.mat-mdc-button.cdk-program-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-button.mat-mdc-button-disabled-interactive:focus .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-text-button-focus-state-layer-opacity, var(--mat-app-focus-state-layer-opacity))}.mat-mdc-button:active .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-text-button-pressed-state-layer-opacity, var(--mat-app-pressed-state-layer-opacity))}.mat-mdc-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:48px;left:0;right:0;transform:translateY(-50%);display:var(--mat-text-button-touch-target-display)}.mat-mdc-button,.mat-mdc-button .mdc-button__ripple{border-radius:var(--mdc-text-button-container-shape, var(--mat-app-corner-full))}.mat-mdc-button:not(:disabled){color:var(--mdc-text-button-label-text-color, var(--mat-app-primary))}.mat-mdc-button[disabled],.mat-mdc-button.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mdc-text-button-disabled-label-text-color)}.mat-mdc-button.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-mdc-unelevated-button{transition:box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);padding:0 var(--mat-filled-button-horizontal-padding, 16px);height:var(--mdc-filled-button-container-height);font-family:var(--mdc-filled-button-label-text-font, var(--mat-app-label-large-font));font-size:var(--mdc-filled-button-label-text-size, var(--mat-app-label-large-size));letter-spacing:var(--mdc-filled-button-label-text-tracking, var(--mat-app-label-large-tracking));text-transform:var(--mdc-filled-button-label-text-transform);font-weight:var(--mdc-filled-button-label-text-weight, var(--mat-app-label-large-weight))}.mat-mdc-unelevated-button>.mat-icon{margin-right:var(--mat-filled-button-icon-spacing, 8px);margin-left:var(--mat-filled-button-icon-offset, -4px)}[dir=rtl] .mat-mdc-unelevated-button>.mat-icon{margin-right:var(--mat-filled-button-icon-offset, -4px);margin-left:var(--mat-filled-button-icon-spacing, 8px)}.mat-mdc-unelevated-button .mdc-button__label+.mat-icon{margin-right:var(--mat-filled-button-icon-offset, -4px);margin-left:var(--mat-filled-button-icon-spacing, 8px)}[dir=rtl] .mat-mdc-unelevated-button .mdc-button__label+.mat-icon{margin-right:var(--mat-filled-button-icon-spacing, 8px);margin-left:var(--mat-filled-button-icon-offset, -4px)}.mat-mdc-unelevated-button .mat-ripple-element{background-color:var(--mat-filled-button-ripple-color)}.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-filled-button-state-layer-color, var(--mat-app-on-primary))}.mat-mdc-unelevated-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-filled-button-disabled-state-layer-color, var(--mat-app-on-surface-variant))}.mat-mdc-unelevated-button:hover .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-filled-button-hover-state-layer-opacity, var(--mat-app-hover-state-layer-opacity))}.mat-mdc-unelevated-button.cdk-program-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button.mat-mdc-button-disabled-interactive:focus .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-filled-button-focus-state-layer-opacity, var(--mat-app-focus-state-layer-opacity))}.mat-mdc-unelevated-button:active .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-filled-button-pressed-state-layer-opacity, var(--mat-app-pressed-state-layer-opacity))}.mat-mdc-unelevated-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:48px;left:0;right:0;transform:translateY(-50%);display:var(--mat-filled-button-touch-target-display)}.mat-mdc-unelevated-button:not(:disabled){color:var(--mdc-filled-button-label-text-color, var(--mat-app-on-primary));background-color:var(--mdc-filled-button-container-color, var(--mat-app-primary))}.mat-mdc-unelevated-button,.mat-mdc-unelevated-button .mdc-button__ripple{border-radius:var(--mdc-filled-button-container-shape, var(--mat-app-corner-full))}.mat-mdc-unelevated-button[disabled],.mat-mdc-unelevated-button.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mdc-filled-button-disabled-label-text-color);background-color:var(--mdc-filled-button-disabled-container-color)}.mat-mdc-unelevated-button.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-mdc-raised-button{transition:box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);padding:0 var(--mat-protected-button-horizontal-padding, 16px);box-shadow:var(--mdc-protected-button-container-elevation-shadow, var(--mat-app-level1));height:var(--mdc-protected-button-container-height);font-family:var(--mdc-protected-button-label-text-font, var(--mat-app-label-large-font));font-size:var(--mdc-protected-button-label-text-size, var(--mat-app-label-large-size));letter-spacing:var(--mdc-protected-button-label-text-tracking, var(--mat-app-label-large-tracking));text-transform:var(--mdc-protected-button-label-text-transform);font-weight:var(--mdc-protected-button-label-text-weight, var(--mat-app-label-large-weight))}.mat-mdc-raised-button>.mat-icon{margin-right:var(--mat-protected-button-icon-spacing, 8px);margin-left:var(--mat-protected-button-icon-offset, -4px)}[dir=rtl] .mat-mdc-raised-button>.mat-icon{margin-right:var(--mat-protected-button-icon-offset, -4px);margin-left:var(--mat-protected-button-icon-spacing, 8px)}.mat-mdc-raised-button .mdc-button__label+.mat-icon{margin-right:var(--mat-protected-button-icon-offset, -4px);margin-left:var(--mat-protected-button-icon-spacing, 8px)}[dir=rtl] .mat-mdc-raised-button .mdc-button__label+.mat-icon{margin-right:var(--mat-protected-button-icon-spacing, 8px);margin-left:var(--mat-protected-button-icon-offset, -4px)}.mat-mdc-raised-button .mat-ripple-element{background-color:var(--mat-protected-button-ripple-color)}.mat-mdc-raised-button .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-protected-button-state-layer-color, var(--mat-app-primary))}.mat-mdc-raised-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-protected-button-disabled-state-layer-color, var(--mat-app-on-surface-variant))}.mat-mdc-raised-button:hover .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-protected-button-hover-state-layer-opacity, var(--mat-app-hover-state-layer-opacity))}.mat-mdc-raised-button.cdk-program-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button.mat-mdc-button-disabled-interactive:focus .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-protected-button-focus-state-layer-opacity, var(--mat-app-focus-state-layer-opacity))}.mat-mdc-raised-button:active .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-protected-button-pressed-state-layer-opacity, var(--mat-app-pressed-state-layer-opacity))}.mat-mdc-raised-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:48px;left:0;right:0;transform:translateY(-50%);display:var(--mat-protected-button-touch-target-display)}.mat-mdc-raised-button:not(:disabled){color:var(--mdc-protected-button-label-text-color, var(--mat-app-primary));background-color:var(--mdc-protected-button-container-color, var(--mat-app-surface))}.mat-mdc-raised-button,.mat-mdc-raised-button .mdc-button__ripple{border-radius:var(--mdc-protected-button-container-shape, var(--mat-app-corner-full))}.mat-mdc-raised-button:hover{box-shadow:var(--mdc-protected-button-hover-container-elevation-shadow, var(--mat-app-level2))}.mat-mdc-raised-button:focus{box-shadow:var(--mdc-protected-button-focus-container-elevation-shadow, var(--mat-app-level1))}.mat-mdc-raised-button:active,.mat-mdc-raised-button:focus:active{box-shadow:var(--mdc-protected-button-pressed-container-elevation-shadow, var(--mat-app-level1))}.mat-mdc-raised-button[disabled],.mat-mdc-raised-button.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mdc-protected-button-disabled-label-text-color);background-color:var(--mdc-protected-button-disabled-container-color)}.mat-mdc-raised-button[disabled].mat-mdc-button-disabled,.mat-mdc-raised-button.mat-mdc-button-disabled.mat-mdc-button-disabled{box-shadow:var(--mdc-protected-button-disabled-container-elevation-shadow, var(--mat-app-level0))}.mat-mdc-raised-button.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-mdc-outlined-button{border-style:solid;transition:border 280ms cubic-bezier(0.4, 0, 0.2, 1);padding:0 var(--mat-outlined-button-horizontal-padding, 15px);height:var(--mdc-outlined-button-container-height);font-family:var(--mdc-outlined-button-label-text-font, var(--mat-app-label-large-font));font-size:var(--mdc-outlined-button-label-text-size, var(--mat-app-label-large-size));letter-spacing:var(--mdc-outlined-button-label-text-tracking, var(--mat-app-label-large-tracking));text-transform:var(--mdc-outlined-button-label-text-transform);font-weight:var(--mdc-outlined-button-label-text-weight, var(--mat-app-label-large-weight));border-radius:var(--mdc-outlined-button-container-shape, var(--mat-app-corner-full));border-width:var(--mdc-outlined-button-outline-width)}.mat-mdc-outlined-button>.mat-icon{margin-right:var(--mat-outlined-button-icon-spacing, 8px);margin-left:var(--mat-outlined-button-icon-offset, -4px)}[dir=rtl] .mat-mdc-outlined-button>.mat-icon{margin-right:var(--mat-outlined-button-icon-offset, -4px);margin-left:var(--mat-outlined-button-icon-spacing, 8px)}.mat-mdc-outlined-button .mdc-button__label+.mat-icon{margin-right:var(--mat-outlined-button-icon-offset, -4px);margin-left:var(--mat-outlined-button-icon-spacing, 8px)}[dir=rtl] .mat-mdc-outlined-button .mdc-button__label+.mat-icon{margin-right:var(--mat-outlined-button-icon-spacing, 8px);margin-left:var(--mat-outlined-button-icon-offset, -4px)}.mat-mdc-outlined-button .mat-ripple-element{background-color:var(--mat-outlined-button-ripple-color)}.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-outlined-button-state-layer-color, var(--mat-app-primary))}.mat-mdc-outlined-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-outlined-button-disabled-state-layer-color, var(--mat-app-on-surface-variant))}.mat-mdc-outlined-button:hover .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-outlined-button-hover-state-layer-opacity, var(--mat-app-hover-state-layer-opacity))}.mat-mdc-outlined-button.cdk-program-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button.mat-mdc-button-disabled-interactive:focus .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-outlined-button-focus-state-layer-opacity, var(--mat-app-focus-state-layer-opacity))}.mat-mdc-outlined-button:active .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-outlined-button-pressed-state-layer-opacity, var(--mat-app-pressed-state-layer-opacity))}.mat-mdc-outlined-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:48px;left:0;right:0;transform:translateY(-50%);display:var(--mat-outlined-button-touch-target-display)}.mat-mdc-outlined-button:not(:disabled){color:var(--mdc-outlined-button-label-text-color, var(--mat-app-primary));border-color:var(--mdc-outlined-button-outline-color, var(--mat-app-outline))}.mat-mdc-outlined-button[disabled],.mat-mdc-outlined-button.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mdc-outlined-button-disabled-label-text-color);border-color:var(--mdc-outlined-button-disabled-outline-color)}.mat-mdc-outlined-button.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-mdc-outlined-button .mdc-button__ripple{border-width:var(--mdc-outlined-button-outline-width);border-style:solid;border-color:rgba(0,0,0,0)}.mat-mdc-button,.mat-mdc-unelevated-button,.mat-mdc-raised-button,.mat-mdc-outlined-button{-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-button .mat-mdc-button-ripple,.mat-mdc-button .mat-mdc-button-persistent-ripple,.mat-mdc-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button .mat-mdc-button-ripple,.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple,.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button .mat-mdc-button-ripple,.mat-mdc-raised-button .mat-mdc-button-persistent-ripple,.mat-mdc-raised-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button .mat-mdc-button-ripple,.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple,.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple::before{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-mdc-button .mat-mdc-button-ripple,.mat-mdc-unelevated-button .mat-mdc-button-ripple,.mat-mdc-raised-button .mat-mdc-button-ripple,.mat-mdc-outlined-button .mat-mdc-button-ripple{overflow:hidden}.mat-mdc-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple::before{content:"";opacity:0}.mat-mdc-button .mdc-button__label,.mat-mdc-button .mat-icon,.mat-mdc-unelevated-button .mdc-button__label,.mat-mdc-unelevated-button .mat-icon,.mat-mdc-raised-button .mdc-button__label,.mat-mdc-raised-button .mat-icon,.mat-mdc-outlined-button .mdc-button__label,.mat-mdc-outlined-button .mat-icon{z-index:1;position:relative}.mat-mdc-button .mat-mdc-focus-indicator,.mat-mdc-unelevated-button .mat-mdc-focus-indicator,.mat-mdc-raised-button .mat-mdc-focus-indicator,.mat-mdc-outlined-button .mat-mdc-focus-indicator{top:0;left:0;right:0;bottom:0;position:absolute}.mat-mdc-button:focus .mat-mdc-focus-indicator::before,.mat-mdc-unelevated-button:focus .mat-mdc-focus-indicator::before,.mat-mdc-raised-button:focus .mat-mdc-focus-indicator::before,.mat-mdc-outlined-button:focus .mat-mdc-focus-indicator::before{content:""}.mat-mdc-button._mat-animation-noopable,.mat-mdc-unelevated-button._mat-animation-noopable,.mat-mdc-raised-button._mat-animation-noopable,.mat-mdc-outlined-button._mat-animation-noopable{transition:none !important;animation:none !important}.mat-mdc-button>.mat-icon,.mat-mdc-unelevated-button>.mat-icon,.mat-mdc-raised-button>.mat-icon,.mat-mdc-outlined-button>.mat-icon{display:inline-block;position:relative;vertical-align:top;font-size:1.125rem;height:1.125rem;width:1.125rem}.mat-mdc-outlined-button .mat-mdc-button-ripple,.mat-mdc-outlined-button .mdc-button__ripple{top:-1px;left:-1px;bottom:-1px;right:-1px}.mat-mdc-unelevated-button .mat-mdc-focus-indicator::before,.mat-mdc-raised-button .mat-mdc-focus-indicator::before{margin:calc(calc(var(--mat-mdc-focus-indicator-border-width, 3px) + 2px)*-1)}.mat-mdc-outlined-button .mat-mdc-focus-indicator::before{margin:calc(calc(var(--mat-mdc-focus-indicator-border-width, 3px) + 3px)*-1)}',vd=".cdk-high-contrast-active .mat-mdc-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-unelevated-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-raised-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-outlined-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-icon-button{outline:solid 1px}";var Vx=["mat-mini-fab",""],Bx='.mat-mdc-fab-base{-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-user-select:none;user-select:none;position:relative;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;width:56px;height:56px;padding:0;border:none;fill:currentColor;text-decoration:none;cursor:pointer;-moz-appearance:none;-webkit-appearance:none;overflow:visible;transition:box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1),opacity 15ms linear 30ms,transform 270ms 0ms cubic-bezier(0, 0, 0.2, 1);flex-shrink:0}.mat-mdc-fab-base .mat-mdc-button-ripple,.mat-mdc-fab-base .mat-mdc-button-persistent-ripple,.mat-mdc-fab-base .mat-mdc-button-persistent-ripple::before{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-mdc-fab-base .mat-mdc-button-ripple{overflow:hidden}.mat-mdc-fab-base .mat-mdc-button-persistent-ripple::before{content:"";opacity:0}.mat-mdc-fab-base .mdc-button__label,.mat-mdc-fab-base .mat-icon{z-index:1;position:relative}.mat-mdc-fab-base .mat-mdc-focus-indicator{top:0;left:0;right:0;bottom:0;position:absolute}.mat-mdc-fab-base:focus .mat-mdc-focus-indicator::before{content:""}.mat-mdc-fab-base._mat-animation-noopable{transition:none !important;animation:none !important}.mat-mdc-fab-base::before{position:absolute;box-sizing:border-box;width:100%;height:100%;top:0;left:0;border:1px solid rgba(0,0,0,0);border-radius:inherit;content:"";pointer-events:none}.mat-mdc-fab-base[hidden]{display:none}.mat-mdc-fab-base::-moz-focus-inner{padding:0;border:0}.mat-mdc-fab-base:active,.mat-mdc-fab-base:focus{outline:none}.mat-mdc-fab-base:hover{cursor:pointer}.mat-mdc-fab-base>svg{width:100%}.mat-mdc-fab-base .mat-icon,.mat-mdc-fab-base .material-icons{transition:transform 180ms 90ms cubic-bezier(0, 0, 0.2, 1);fill:currentColor;will-change:transform}.mat-mdc-fab-base .mat-mdc-focus-indicator::before{margin:calc(calc(var(--mat-mdc-focus-indicator-border-width, 3px) + 2px)*-1)}.mat-mdc-fab-base[disabled],.mat-mdc-fab-base.mat-mdc-button-disabled{cursor:default;pointer-events:none}.mat-mdc-fab-base[disabled],.mat-mdc-fab-base[disabled]:focus,.mat-mdc-fab-base.mat-mdc-button-disabled,.mat-mdc-fab-base.mat-mdc-button-disabled:focus{box-shadow:none}.mat-mdc-fab-base.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-mdc-fab{background-color:var(--mdc-fab-container-color, var(--mat-app-primary-container));border-radius:var(--mdc-fab-container-shape, var(--mat-app-corner-large));color:var(--mat-fab-foreground-color, var(--mat-app-on-primary-container, inherit));box-shadow:var(--mdc-fab-container-elevation-shadow, var(--mat-app-level3))}.mat-mdc-fab .mat-mdc-button-touch-target{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%, -50%);display:var(--mat-fab-touch-target-display)}.mat-mdc-fab .mat-ripple-element{background-color:var(--mat-fab-ripple-color)}.mat-mdc-fab .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-fab-state-layer-color, var(--mat-app-on-primary-container))}.mat-mdc-fab.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-fab-disabled-state-layer-color)}.mat-mdc-fab:hover .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-fab-hover-state-layer-opacity, var(--mat-app-hover-state-layer-opacity))}.mat-mdc-fab.cdk-program-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-fab.cdk-keyboard-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-fab.mat-mdc-button-disabled-interactive:focus .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-fab-focus-state-layer-opacity, var(--mat-app-focus-state-layer-opacity))}.mat-mdc-fab:active .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-fab-pressed-state-layer-opacity, var(--mat-app-pressed-state-layer-opacity))}.mat-mdc-fab:hover{box-shadow:var(--mdc-fab-hover-container-elevation-shadow, var(--mat-app-level4))}.mat-mdc-fab:focus{box-shadow:var(--mdc-fab-focus-container-elevation-shadow, var(--mat-app-level3))}.mat-mdc-fab:active,.mat-mdc-fab:focus:active{box-shadow:var(--mdc-fab-pressed-container-elevation-shadow, var(--mat-app-level3))}.mat-mdc-fab[disabled],.mat-mdc-fab.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mat-fab-disabled-state-foreground-color);background-color:var(--mat-fab-disabled-state-container-color)}.mat-mdc-fab.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-mdc-mini-fab{width:40px;height:40px;background-color:var(--mdc-fab-small-container-color, var(--mat-app-primary-container));border-radius:var(--mdc-fab-small-container-shape, var(--mat-app-corner-medium));color:var(--mat-fab-small-foreground-color, var(--mat-app-on-primary-container, inherit));box-shadow:var(--mdc-fab-small-container-elevation-shadow, var(--mat-app-level3))}.mat-mdc-mini-fab .mat-mdc-button-touch-target{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%, -50%);display:var(--mat-fab-small-touch-target-display)}.mat-mdc-mini-fab .mat-ripple-element{background-color:var(--mat-fab-small-ripple-color)}.mat-mdc-mini-fab .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-fab-small-state-layer-color, var(--mat-app-on-primary-container))}.mat-mdc-mini-fab.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-fab-small-disabled-state-layer-color)}.mat-mdc-mini-fab:hover .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-fab-small-hover-state-layer-opacity, var(--mat-app-hover-state-layer-opacity))}.mat-mdc-mini-fab.cdk-program-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-mini-fab.cdk-keyboard-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-mini-fab.mat-mdc-button-disabled-interactive:focus .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-fab-small-focus-state-layer-opacity, var(--mat-app-focus-state-layer-opacity))}.mat-mdc-mini-fab:active .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-fab-small-pressed-state-layer-opacity, var(--mat-app-pressed-state-layer-opacity))}.mat-mdc-mini-fab:hover{box-shadow:var(--mdc-fab-small-hover-container-elevation-shadow, var(--mat-app-level4))}.mat-mdc-mini-fab:focus{box-shadow:var(--mdc-fab-small-focus-container-elevation-shadow, var(--mat-app-level3))}.mat-mdc-mini-fab:active,.mat-mdc-mini-fab:focus:active{box-shadow:var(--mdc-fab-small-pressed-container-elevation-shadow, var(--mat-app-level3))}.mat-mdc-mini-fab[disabled],.mat-mdc-mini-fab.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mat-fab-small-disabled-state-foreground-color);background-color:var(--mat-fab-small-disabled-state-container-color)}.mat-mdc-mini-fab.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-mdc-extended-fab{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;border-radius:24px;padding-left:20px;padding-right:20px;width:auto;max-width:100%;line-height:normal;box-shadow:var(--mdc-extended-fab-container-elevation-shadow, var(--mat-app-level3));height:var(--mdc-extended-fab-container-height);border-radius:var(--mdc-extended-fab-container-shape, var(--mat-app-corner-large));font-family:var(--mdc-extended-fab-label-text-font, var(--mat-app-label-large-font));font-size:var(--mdc-extended-fab-label-text-size, var(--mat-app-label-large-size));font-weight:var(--mdc-extended-fab-label-text-weight, var(--mat-app-label-large-weight));letter-spacing:var(--mdc-extended-fab-label-text-tracking, var(--mat-app-label-large-tracking))}.mat-mdc-extended-fab:hover{box-shadow:var(--mdc-extended-fab-hover-container-elevation-shadow, var(--mat-app-level4))}.mat-mdc-extended-fab:focus{box-shadow:var(--mdc-extended-fab-focus-container-elevation-shadow, var(--mat-app-level3))}.mat-mdc-extended-fab:active,.mat-mdc-extended-fab:focus:active{box-shadow:var(--mdc-extended-fab-pressed-container-elevation-shadow, var(--mat-app-level3))}.mat-mdc-extended-fab[disabled],.mat-mdc-extended-fab.mat-mdc-button-disabled{cursor:default;pointer-events:none}.mat-mdc-extended-fab[disabled],.mat-mdc-extended-fab[disabled]:focus,.mat-mdc-extended-fab.mat-mdc-button-disabled,.mat-mdc-extended-fab.mat-mdc-button-disabled:focus{box-shadow:none}.mat-mdc-extended-fab.mat-mdc-button-disabled-interactive{pointer-events:auto}[dir=rtl] .mat-mdc-extended-fab .mdc-button__label+.mat-icon,[dir=rtl] .mat-mdc-extended-fab .mdc-button__label+.material-icons,.mat-mdc-extended-fab>.mat-icon,.mat-mdc-extended-fab>.material-icons{margin-left:-8px;margin-right:12px}.mat-mdc-extended-fab .mdc-button__label+.mat-icon,.mat-mdc-extended-fab .mdc-button__label+.material-icons,[dir=rtl] .mat-mdc-extended-fab>.mat-icon,[dir=rtl] .mat-mdc-extended-fab>.material-icons{margin-left:12px;margin-right:-8px}.mat-mdc-extended-fab .mat-mdc-button-touch-target{width:100%}',Tf=["mat-icon-button",""],Mf=["*"],zx='.mat-mdc-icon-button{-webkit-user-select:none;user-select:none;display:inline-block;position:relative;box-sizing:border-box;border:none;outline:none;background-color:rgba(0,0,0,0);fill:currentColor;color:inherit;text-decoration:none;cursor:pointer;z-index:0;overflow:visible;border-radius:50%;flex-shrink:0;text-align:center;width:var(--mdc-icon-button-state-layer-size, 48px);height:var(--mdc-icon-button-state-layer-size, 48px);padding:calc(calc(var(--mdc-icon-button-state-layer-size, 48px) - var(--mdc-icon-button-icon-size, 24px)) / 2);font-size:var(--mdc-icon-button-icon-size);color:var(--mdc-icon-button-icon-color, var(--mat-app-on-surface-variant));-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-icon-button[disabled],.mat-mdc-icon-button.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mdc-icon-button-disabled-icon-color)}.mat-mdc-icon-button.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-mdc-icon-button img,.mat-mdc-icon-button svg{width:var(--mdc-icon-button-icon-size);height:var(--mdc-icon-button-icon-size);vertical-align:baseline}.mat-mdc-icon-button .mat-mdc-button-ripple,.mat-mdc-icon-button .mat-mdc-button-persistent-ripple,.mat-mdc-icon-button .mat-mdc-button-persistent-ripple::before{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-mdc-icon-button .mat-mdc-button-ripple{overflow:hidden}.mat-mdc-icon-button .mat-mdc-button-persistent-ripple::before{content:"";opacity:0}.mat-mdc-icon-button .mdc-button__label,.mat-mdc-icon-button .mat-icon{z-index:1;position:relative}.mat-mdc-icon-button .mat-mdc-focus-indicator{top:0;left:0;right:0;bottom:0;position:absolute}.mat-mdc-icon-button:focus .mat-mdc-focus-indicator::before{content:""}.mat-mdc-icon-button .mat-ripple-element{background-color:var(--mat-icon-button-ripple-color)}.mat-mdc-icon-button .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-icon-button-state-layer-color, var(--mat-app-on-surface-variant))}.mat-mdc-icon-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-icon-button-disabled-state-layer-color, var(--mat-app-on-surface-variant))}.mat-mdc-icon-button:hover .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-icon-button-hover-state-layer-opacity, var(--mat-app-hover-state-layer-opacity))}.mat-mdc-icon-button.cdk-program-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-icon-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-icon-button.mat-mdc-button-disabled-interactive:focus .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-icon-button-focus-state-layer-opacity, var(--mat-app-focus-state-layer-opacity))}.mat-mdc-icon-button:active .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-icon-button-pressed-state-layer-opacity, var(--mat-app-pressed-state-layer-opacity))}.mat-mdc-icon-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%, -50%);display:var(--mat-icon-button-touch-target-display)}.mat-mdc-icon-button._mat-animation-noopable{transition:none !important;animation:none !important}.mat-mdc-icon-button .mat-mdc-button-persistent-ripple{border-radius:50%}.mat-mdc-icon-button[hidden]{display:none}.mat-mdc-icon-button.mat-unthemed:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-icon-button.mat-primary:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-icon-button.mat-accent:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-icon-button.mat-warn:not(.mdc-ripple-upgraded):focus::before{background:rgba(0,0,0,0);opacity:1}',Hx=new C("MAT_BUTTON_CONFIG");var Qx=[{attribute:"mat-button",mdcClasses:["mdc-button","mat-mdc-button"]},{attribute:"mat-flat-button",mdcClasses:["mdc-button","mdc-button--unelevated","mat-mdc-unelevated-button"]},{attribute:"mat-raised-button",mdcClasses:["mdc-button","mdc-button--raised","mat-mdc-raised-button"]},{attribute:"mat-stroked-button",mdcClasses:["mdc-button","mdc-button--outlined","mat-mdc-outlined-button"]},{attribute:"mat-fab",mdcClasses:["mdc-fab","mat-mdc-fab-base","mat-mdc-fab"]},{attribute:"mat-mini-fab",mdcClasses:["mdc-fab","mat-mdc-fab-base","mdc-fab--mini","mat-mdc-mini-fab"]},{attribute:"mat-icon-button",mdcClasses:["mdc-icon-button","mat-mdc-icon-button"]}],Ps=(()=>{class i{get ripple(){return this._rippleLoader?.getRipple(this._elementRef.nativeElement)}set ripple(e){this._rippleLoader?.attachRipple(this._elementRef.nativeElement,e)}get disableRipple(){return this._disableRipple}set disableRipple(e){this._disableRipple=e,this._updateRippleDisabled()}get disabled(){return this._disabled}set disabled(e){this._disabled=e,this._updateRippleDisabled()}constructor(e,t,r,o){this._elementRef=e,this._platform=t,this._ngZone=r,this._animationMode=o,this._focusMonitor=F(ot),this._rippleLoader=F(Fs),this._isFab=!1,this._disableRipple=!1,this._disabled=!1;let a=F(Hx,{optional:!0}),s=e.nativeElement,c=s.classList;this.disabledInteractive=a?.disabledInteractive??!1,this.color=a?.color??null,this._rippleLoader?.configureRipple(s,{className:"mat-mdc-button-ripple"});for(let{attribute:l,mdcClasses:d}of Qx)s.hasAttribute(l)&&c.add(...d)}ngAfterViewInit(){this._focusMonitor.monitor(this._elementRef,!0)}ngOnDestroy(){this._focusMonitor.stopMonitoring(this._elementRef),this._rippleLoader?.destroyRipple(this._elementRef.nativeElement)}focus(e="program",t){e?this._focusMonitor.focusVia(this._elementRef.nativeElement,e,t):this._elementRef.nativeElement.focus(t)}_getAriaDisabled(){return this.ariaDisabled!=null?this.ariaDisabled:this.disabled&&this.disabledInteractive?!0:null}_getDisabledAttribute(){return this.disabledInteractive||!this.disabled?null:!0}_updateRippleDisabled(){this._rippleLoader?.setDisabled(this._elementRef.nativeElement,this.disableRipple||this.disabled)}static{this.\u0275fac=function(t){rc()}}static{this.\u0275dir=D({type:i,inputs:{color:"color",disableRipple:[2,"disableRipple","disableRipple",O],disabled:[2,"disabled","disabled",O],ariaDisabled:[2,"aria-disabled","ariaDisabled",O],disabledInteractive:[2,"disabledInteractive","disabledInteractive",O]},features:[ae]})}}return i})();var Af=(()=>{class i extends Ps{constructor(e,t,r,o){super(e,t,r,o),this._haltDisabledEvents=a=>{this.disabled&&(a.preventDefault(),a.stopImmediatePropagation())}}ngOnInit(){this._ngZone.runOutsideAngular(()=>{this._elementRef.nativeElement.addEventListener("click",this._haltDisabledEvents)})}ngOnDestroy(){super.ngOnDestroy(),this._elementRef.nativeElement.removeEventListener("click",this._haltDisabledEvents)}_getAriaDisabled(){return this.ariaDisabled==null?this.disabled:this.ariaDisabled}static{this.\u0275fac=function(t){rc()}}static{this.\u0275dir=D({type:i,inputs:{tabIndex:[2,"tabIndex","tabIndex",e=>e==null?void 0:$e(e)]},features:[ae,ne]})}}return i})(),LN=(()=>{class i extends Ps{constructor(e,t,r,o){super(e,t,r,o)}static{this.\u0275fac=function(t){return new(t||i)(u(E),u(me),u(B),u(we,8))}}static{this.\u0275cmp=H({type:i,selectors:[["button","mat-button",""],["button","mat-raised-button",""],["button","mat-flat-button",""],["button","mat-stroked-button",""]],hostVars:14,hostBindings:function(t,r){t&2&&(W("disabled",r._getDisabledAttribute())("aria-disabled",r._getAriaDisabled()),qe(r.color?"mat-"+r.color:""),P("mat-mdc-button-disabled",r.disabled)("mat-mdc-button-disabled-interactive",r.disabledInteractive)("_mat-animation-noopable",r._animationMode==="NoopAnimations")("mat-unthemed",!r.color)("mat-mdc-button-base",!0))},exportAs:["matButton"],standalone:!0,features:[ne,Q],attrs:Sf,ngContentSelectors:bd,decls:7,vars:4,consts:[[1,"mat-mdc-button-persistent-ripple"],[1,"mdc-button__label"],[1,"mat-mdc-focus-indicator"],[1,"mat-mdc-button-touch-target"]],template:function(t,r){t&1&&(se(gd),ie(0,"span",0),A(1),w(2,"span",1),A(3,1),I(),A(4,2),ie(5,"span",2)(6,"span",3)),t&2&&P("mdc-button__ripple",!r._isFab)("mdc-fab__ripple",r._isFab)},styles:['.mat-mdc-button-base{text-decoration:none}.mdc-button{-webkit-user-select:none;user-select:none;position:relative;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;min-width:64px;border:none;outline:none;line-height:inherit;-webkit-appearance:none;overflow:visible;vertical-align:middle;background:rgba(0,0,0,0);padding:0 8px}.mdc-button::-moz-focus-inner{padding:0;border:0}.mdc-button:active{outline:none}.mdc-button:hover{cursor:pointer}.mdc-button:disabled{cursor:default;pointer-events:none}.mdc-button[hidden]{display:none}.mdc-button .mdc-button__label{position:relative}.mat-mdc-button{padding:0 var(--mat-text-button-horizontal-padding, 8px);height:var(--mdc-text-button-container-height);font-family:var(--mdc-text-button-label-text-font, var(--mat-app-label-large-font));font-size:var(--mdc-text-button-label-text-size, var(--mat-app-label-large-size));letter-spacing:var(--mdc-text-button-label-text-tracking, var(--mat-app-label-large-tracking));text-transform:var(--mdc-text-button-label-text-transform);font-weight:var(--mdc-text-button-label-text-weight, var(--mat-app-label-large-weight))}.mat-mdc-button:has(.material-icons,mat-icon,[matButtonIcon]){padding:0 var(--mat-text-button-with-icon-horizontal-padding, 8px)}.mat-mdc-button>.mat-icon{margin-right:var(--mat-text-button-icon-spacing, 8px);margin-left:var(--mat-text-button-icon-offset, 0)}[dir=rtl] .mat-mdc-button>.mat-icon{margin-right:var(--mat-text-button-icon-offset, 0);margin-left:var(--mat-text-button-icon-spacing, 8px)}.mat-mdc-button .mdc-button__label+.mat-icon{margin-right:var(--mat-text-button-icon-offset, 0);margin-left:var(--mat-text-button-icon-spacing, 8px)}[dir=rtl] .mat-mdc-button .mdc-button__label+.mat-icon{margin-right:var(--mat-text-button-icon-spacing, 8px);margin-left:var(--mat-text-button-icon-offset, 0)}.mat-mdc-button .mat-ripple-element{background-color:var(--mat-text-button-ripple-color)}.mat-mdc-button .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-text-button-state-layer-color, var(--mat-app-primary))}.mat-mdc-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-text-button-disabled-state-layer-color, var(--mat-app-on-surface-variant))}.mat-mdc-button:hover .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-text-button-hover-state-layer-opacity, var(--mat-app-hover-state-layer-opacity))}.mat-mdc-button.cdk-program-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-button.mat-mdc-button-disabled-interactive:focus .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-text-button-focus-state-layer-opacity, var(--mat-app-focus-state-layer-opacity))}.mat-mdc-button:active .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-text-button-pressed-state-layer-opacity, var(--mat-app-pressed-state-layer-opacity))}.mat-mdc-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:48px;left:0;right:0;transform:translateY(-50%);display:var(--mat-text-button-touch-target-display)}.mat-mdc-button,.mat-mdc-button .mdc-button__ripple{border-radius:var(--mdc-text-button-container-shape, var(--mat-app-corner-full))}.mat-mdc-button:not(:disabled){color:var(--mdc-text-button-label-text-color, var(--mat-app-primary))}.mat-mdc-button[disabled],.mat-mdc-button.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mdc-text-button-disabled-label-text-color)}.mat-mdc-button.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-mdc-unelevated-button{transition:box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);padding:0 var(--mat-filled-button-horizontal-padding, 16px);height:var(--mdc-filled-button-container-height);font-family:var(--mdc-filled-button-label-text-font, var(--mat-app-label-large-font));font-size:var(--mdc-filled-button-label-text-size, var(--mat-app-label-large-size));letter-spacing:var(--mdc-filled-button-label-text-tracking, var(--mat-app-label-large-tracking));text-transform:var(--mdc-filled-button-label-text-transform);font-weight:var(--mdc-filled-button-label-text-weight, var(--mat-app-label-large-weight))}.mat-mdc-unelevated-button>.mat-icon{margin-right:var(--mat-filled-button-icon-spacing, 8px);margin-left:var(--mat-filled-button-icon-offset, -4px)}[dir=rtl] .mat-mdc-unelevated-button>.mat-icon{margin-right:var(--mat-filled-button-icon-offset, -4px);margin-left:var(--mat-filled-button-icon-spacing, 8px)}.mat-mdc-unelevated-button .mdc-button__label+.mat-icon{margin-right:var(--mat-filled-button-icon-offset, -4px);margin-left:var(--mat-filled-button-icon-spacing, 8px)}[dir=rtl] .mat-mdc-unelevated-button .mdc-button__label+.mat-icon{margin-right:var(--mat-filled-button-icon-spacing, 8px);margin-left:var(--mat-filled-button-icon-offset, -4px)}.mat-mdc-unelevated-button .mat-ripple-element{background-color:var(--mat-filled-button-ripple-color)}.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-filled-button-state-layer-color, var(--mat-app-on-primary))}.mat-mdc-unelevated-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-filled-button-disabled-state-layer-color, var(--mat-app-on-surface-variant))}.mat-mdc-unelevated-button:hover .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-filled-button-hover-state-layer-opacity, var(--mat-app-hover-state-layer-opacity))}.mat-mdc-unelevated-button.cdk-program-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button.mat-mdc-button-disabled-interactive:focus .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-filled-button-focus-state-layer-opacity, var(--mat-app-focus-state-layer-opacity))}.mat-mdc-unelevated-button:active .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-filled-button-pressed-state-layer-opacity, var(--mat-app-pressed-state-layer-opacity))}.mat-mdc-unelevated-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:48px;left:0;right:0;transform:translateY(-50%);display:var(--mat-filled-button-touch-target-display)}.mat-mdc-unelevated-button:not(:disabled){color:var(--mdc-filled-button-label-text-color, var(--mat-app-on-primary));background-color:var(--mdc-filled-button-container-color, var(--mat-app-primary))}.mat-mdc-unelevated-button,.mat-mdc-unelevated-button .mdc-button__ripple{border-radius:var(--mdc-filled-button-container-shape, var(--mat-app-corner-full))}.mat-mdc-unelevated-button[disabled],.mat-mdc-unelevated-button.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mdc-filled-button-disabled-label-text-color);background-color:var(--mdc-filled-button-disabled-container-color)}.mat-mdc-unelevated-button.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-mdc-raised-button{transition:box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);padding:0 var(--mat-protected-button-horizontal-padding, 16px);box-shadow:var(--mdc-protected-button-container-elevation-shadow, var(--mat-app-level1));height:var(--mdc-protected-button-container-height);font-family:var(--mdc-protected-button-label-text-font, var(--mat-app-label-large-font));font-size:var(--mdc-protected-button-label-text-size, var(--mat-app-label-large-size));letter-spacing:var(--mdc-protected-button-label-text-tracking, var(--mat-app-label-large-tracking));text-transform:var(--mdc-protected-button-label-text-transform);font-weight:var(--mdc-protected-button-label-text-weight, var(--mat-app-label-large-weight))}.mat-mdc-raised-button>.mat-icon{margin-right:var(--mat-protected-button-icon-spacing, 8px);margin-left:var(--mat-protected-button-icon-offset, -4px)}[dir=rtl] .mat-mdc-raised-button>.mat-icon{margin-right:var(--mat-protected-button-icon-offset, -4px);margin-left:var(--mat-protected-button-icon-spacing, 8px)}.mat-mdc-raised-button .mdc-button__label+.mat-icon{margin-right:var(--mat-protected-button-icon-offset, -4px);margin-left:var(--mat-protected-button-icon-spacing, 8px)}[dir=rtl] .mat-mdc-raised-button .mdc-button__label+.mat-icon{margin-right:var(--mat-protected-button-icon-spacing, 8px);margin-left:var(--mat-protected-button-icon-offset, -4px)}.mat-mdc-raised-button .mat-ripple-element{background-color:var(--mat-protected-button-ripple-color)}.mat-mdc-raised-button .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-protected-button-state-layer-color, var(--mat-app-primary))}.mat-mdc-raised-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-protected-button-disabled-state-layer-color, var(--mat-app-on-surface-variant))}.mat-mdc-raised-button:hover .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-protected-button-hover-state-layer-opacity, var(--mat-app-hover-state-layer-opacity))}.mat-mdc-raised-button.cdk-program-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button.mat-mdc-button-disabled-interactive:focus .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-protected-button-focus-state-layer-opacity, var(--mat-app-focus-state-layer-opacity))}.mat-mdc-raised-button:active .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-protected-button-pressed-state-layer-opacity, var(--mat-app-pressed-state-layer-opacity))}.mat-mdc-raised-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:48px;left:0;right:0;transform:translateY(-50%);display:var(--mat-protected-button-touch-target-display)}.mat-mdc-raised-button:not(:disabled){color:var(--mdc-protected-button-label-text-color, var(--mat-app-primary));background-color:var(--mdc-protected-button-container-color, var(--mat-app-surface))}.mat-mdc-raised-button,.mat-mdc-raised-button .mdc-button__ripple{border-radius:var(--mdc-protected-button-container-shape, var(--mat-app-corner-full))}.mat-mdc-raised-button:hover{box-shadow:var(--mdc-protected-button-hover-container-elevation-shadow, var(--mat-app-level2))}.mat-mdc-raised-button:focus{box-shadow:var(--mdc-protected-button-focus-container-elevation-shadow, var(--mat-app-level1))}.mat-mdc-raised-button:active,.mat-mdc-raised-button:focus:active{box-shadow:var(--mdc-protected-button-pressed-container-elevation-shadow, var(--mat-app-level1))}.mat-mdc-raised-button[disabled],.mat-mdc-raised-button.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mdc-protected-button-disabled-label-text-color);background-color:var(--mdc-protected-button-disabled-container-color)}.mat-mdc-raised-button[disabled].mat-mdc-button-disabled,.mat-mdc-raised-button.mat-mdc-button-disabled.mat-mdc-button-disabled{box-shadow:var(--mdc-protected-button-disabled-container-elevation-shadow, var(--mat-app-level0))}.mat-mdc-raised-button.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-mdc-outlined-button{border-style:solid;transition:border 280ms cubic-bezier(0.4, 0, 0.2, 1);padding:0 var(--mat-outlined-button-horizontal-padding, 15px);height:var(--mdc-outlined-button-container-height);font-family:var(--mdc-outlined-button-label-text-font, var(--mat-app-label-large-font));font-size:var(--mdc-outlined-button-label-text-size, var(--mat-app-label-large-size));letter-spacing:var(--mdc-outlined-button-label-text-tracking, var(--mat-app-label-large-tracking));text-transform:var(--mdc-outlined-button-label-text-transform);font-weight:var(--mdc-outlined-button-label-text-weight, var(--mat-app-label-large-weight));border-radius:var(--mdc-outlined-button-container-shape, var(--mat-app-corner-full));border-width:var(--mdc-outlined-button-outline-width)}.mat-mdc-outlined-button>.mat-icon{margin-right:var(--mat-outlined-button-icon-spacing, 8px);margin-left:var(--mat-outlined-button-icon-offset, -4px)}[dir=rtl] .mat-mdc-outlined-button>.mat-icon{margin-right:var(--mat-outlined-button-icon-offset, -4px);margin-left:var(--mat-outlined-button-icon-spacing, 8px)}.mat-mdc-outlined-button .mdc-button__label+.mat-icon{margin-right:var(--mat-outlined-button-icon-offset, -4px);margin-left:var(--mat-outlined-button-icon-spacing, 8px)}[dir=rtl] .mat-mdc-outlined-button .mdc-button__label+.mat-icon{margin-right:var(--mat-outlined-button-icon-spacing, 8px);margin-left:var(--mat-outlined-button-icon-offset, -4px)}.mat-mdc-outlined-button .mat-ripple-element{background-color:var(--mat-outlined-button-ripple-color)}.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-outlined-button-state-layer-color, var(--mat-app-primary))}.mat-mdc-outlined-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-outlined-button-disabled-state-layer-color, var(--mat-app-on-surface-variant))}.mat-mdc-outlined-button:hover .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-outlined-button-hover-state-layer-opacity, var(--mat-app-hover-state-layer-opacity))}.mat-mdc-outlined-button.cdk-program-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button.mat-mdc-button-disabled-interactive:focus .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-outlined-button-focus-state-layer-opacity, var(--mat-app-focus-state-layer-opacity))}.mat-mdc-outlined-button:active .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-outlined-button-pressed-state-layer-opacity, var(--mat-app-pressed-state-layer-opacity))}.mat-mdc-outlined-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:48px;left:0;right:0;transform:translateY(-50%);display:var(--mat-outlined-button-touch-target-display)}.mat-mdc-outlined-button:not(:disabled){color:var(--mdc-outlined-button-label-text-color, var(--mat-app-primary));border-color:var(--mdc-outlined-button-outline-color, var(--mat-app-outline))}.mat-mdc-outlined-button[disabled],.mat-mdc-outlined-button.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mdc-outlined-button-disabled-label-text-color);border-color:var(--mdc-outlined-button-disabled-outline-color)}.mat-mdc-outlined-button.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-mdc-outlined-button .mdc-button__ripple{border-width:var(--mdc-outlined-button-outline-width);border-style:solid;border-color:rgba(0,0,0,0)}.mat-mdc-button,.mat-mdc-unelevated-button,.mat-mdc-raised-button,.mat-mdc-outlined-button{-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-button .mat-mdc-button-ripple,.mat-mdc-button .mat-mdc-button-persistent-ripple,.mat-mdc-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button .mat-mdc-button-ripple,.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple,.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button .mat-mdc-button-ripple,.mat-mdc-raised-button .mat-mdc-button-persistent-ripple,.mat-mdc-raised-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button .mat-mdc-button-ripple,.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple,.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple::before{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-mdc-button .mat-mdc-button-ripple,.mat-mdc-unelevated-button .mat-mdc-button-ripple,.mat-mdc-raised-button .mat-mdc-button-ripple,.mat-mdc-outlined-button .mat-mdc-button-ripple{overflow:hidden}.mat-mdc-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple::before{content:"";opacity:0}.mat-mdc-button .mdc-button__label,.mat-mdc-button .mat-icon,.mat-mdc-unelevated-button .mdc-button__label,.mat-mdc-unelevated-button .mat-icon,.mat-mdc-raised-button .mdc-button__label,.mat-mdc-raised-button .mat-icon,.mat-mdc-outlined-button .mdc-button__label,.mat-mdc-outlined-button .mat-icon{z-index:1;position:relative}.mat-mdc-button .mat-mdc-focus-indicator,.mat-mdc-unelevated-button .mat-mdc-focus-indicator,.mat-mdc-raised-button .mat-mdc-focus-indicator,.mat-mdc-outlined-button .mat-mdc-focus-indicator{top:0;left:0;right:0;bottom:0;position:absolute}.mat-mdc-button:focus .mat-mdc-focus-indicator::before,.mat-mdc-unelevated-button:focus .mat-mdc-focus-indicator::before,.mat-mdc-raised-button:focus .mat-mdc-focus-indicator::before,.mat-mdc-outlined-button:focus .mat-mdc-focus-indicator::before{content:""}.mat-mdc-button._mat-animation-noopable,.mat-mdc-unelevated-button._mat-animation-noopable,.mat-mdc-raised-button._mat-animation-noopable,.mat-mdc-outlined-button._mat-animation-noopable{transition:none !important;animation:none !important}.mat-mdc-button>.mat-icon,.mat-mdc-unelevated-button>.mat-icon,.mat-mdc-raised-button>.mat-icon,.mat-mdc-outlined-button>.mat-icon{display:inline-block;position:relative;vertical-align:top;font-size:1.125rem;height:1.125rem;width:1.125rem}.mat-mdc-outlined-button .mat-mdc-button-ripple,.mat-mdc-outlined-button .mdc-button__ripple{top:-1px;left:-1px;bottom:-1px;right:-1px}.mat-mdc-unelevated-button .mat-mdc-focus-indicator::before,.mat-mdc-raised-button .mat-mdc-focus-indicator::before{margin:calc(calc(var(--mat-mdc-focus-indicator-border-width, 3px) + 2px)*-1)}.mat-mdc-outlined-button .mat-mdc-focus-indicator::before{margin:calc(calc(var(--mat-mdc-focus-indicator-border-width, 3px) + 3px)*-1)}',".cdk-high-contrast-active .mat-mdc-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-unelevated-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-raised-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-outlined-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-icon-button{outline:solid 1px}"],encapsulation:2,changeDetection:0})}}return i})(),jN=(()=>{class i extends Af{constructor(e,t,r,o){super(e,t,r,o)}static{this.\u0275fac=function(t){return new(t||i)(u(E),u(me),u(B),u(we,8))}}static{this.\u0275cmp=H({type:i,selectors:[["a","mat-button",""],["a","mat-raised-button",""],["a","mat-flat-button",""],["a","mat-stroked-button",""]],hostVars:15,hostBindings:function(t,r){t&2&&(W("disabled",r._getDisabledAttribute())("tabindex",r.disabled&&!r.disabledInteractive?-1:r.tabIndex)("aria-disabled",r._getDisabledAttribute()),qe(r.color?"mat-"+r.color:""),P("mat-mdc-button-disabled",r.disabled)("mat-mdc-button-disabled-interactive",r.disabledInteractive)("_mat-animation-noopable",r._animationMode==="NoopAnimations")("mat-unthemed",!r.color)("mat-mdc-button-base",!0))},exportAs:["matButton","matAnchor"],standalone:!0,features:[ne,Q],attrs:Sf,ngContentSelectors:bd,decls:7,vars:4,consts:[[1,"mat-mdc-button-persistent-ripple"],[1,"mdc-button__label"],[1,"mat-mdc-focus-indicator"],[1,"mat-mdc-button-touch-target"]],template:function(t,r){t&1&&(se(gd),ie(0,"span",0),A(1),w(2,"span",1),A(3,1),I(),A(4,2),ie(5,"span",2)(6,"span",3)),t&2&&P("mdc-button__ripple",!r._isFab)("mdc-fab__ripple",r._isFab)},styles:[jx,vd],encapsulation:2,changeDetection:0})}}return i})(),Ux=new C("mat-mdc-fab-default-options",{providedIn:"root",factory:Of});function Of(){return{color:"accent"}}var If=Of();var VN=(()=>{class i extends Ps{constructor(e,t,r,o,a){super(e,t,r,o),this._options=a,this._isFab=!0,this._options=this._options||If,this.color=this._options.color||If.color}static{this.\u0275fac=function(t){return new(t||i)(u(E),u(me),u(B),u(we,8),u(Ux,8))}}static{this.\u0275cmp=H({type:i,selectors:[["button","mat-mini-fab",""]],hostVars:14,hostBindings:function(t,r){t&2&&(W("disabled",r._getDisabledAttribute())("aria-disabled",r._getAriaDisabled()),qe(r.color?"mat-"+r.color:""),P("mat-mdc-button-disabled",r.disabled)("mat-mdc-button-disabled-interactive",r.disabledInteractive)("_mat-animation-noopable",r._animationMode==="NoopAnimations")("mat-unthemed",!r.color)("mat-mdc-button-base",!0))},exportAs:["matButton"],standalone:!0,features:[ne,Q],attrs:Vx,ngContentSelectors:bd,decls:7,vars:4,consts:[[1,"mat-mdc-button-persistent-ripple"],[1,"mdc-button__label"],[1,"mat-mdc-focus-indicator"],[1,"mat-mdc-button-touch-target"]],template:function(t,r){t&1&&(se(gd),ie(0,"span",0),A(1),w(2,"span",1),A(3,1),I(),A(4,2),ie(5,"span",2)(6,"span",3)),t&2&&P("mdc-button__ripple",!r._isFab)("mdc-fab__ripple",r._isFab)},styles:[Bx],encapsulation:2,changeDetection:0})}}return i})();var BN=(()=>{class i extends Ps{constructor(e,t,r,o){super(e,t,r,o),this._rippleLoader.configureRipple(this._elementRef.nativeElement,{centered:!0})}static{this.\u0275fac=function(t){return new(t||i)(u(E),u(me),u(B),u(we,8))}}static{this.\u0275cmp=H({type:i,selectors:[["button","mat-icon-button",""]],hostVars:14,hostBindings:function(t,r){t&2&&(W("disabled",r._getDisabledAttribute())("aria-disabled",r._getAriaDisabled()),qe(r.color?"mat-"+r.color:""),P("mat-mdc-button-disabled",r.disabled)("mat-mdc-button-disabled-interactive",r.disabledInteractive)("_mat-animation-noopable",r._animationMode==="NoopAnimations")("mat-unthemed",!r.color)("mat-mdc-button-base",!0))},exportAs:["matButton"],standalone:!0,features:[ne,Q],attrs:Tf,ngContentSelectors:Mf,decls:4,vars:0,consts:[[1,"mat-mdc-button-persistent-ripple","mdc-icon-button__ripple"],[1,"mat-mdc-focus-indicator"],[1,"mat-mdc-button-touch-target"]],template:function(t,r){t&1&&(se(),ie(0,"span",0),A(1),ie(2,"span",1)(3,"span",2))},styles:['.mat-mdc-icon-button{-webkit-user-select:none;user-select:none;display:inline-block;position:relative;box-sizing:border-box;border:none;outline:none;background-color:rgba(0,0,0,0);fill:currentColor;color:inherit;text-decoration:none;cursor:pointer;z-index:0;overflow:visible;border-radius:50%;flex-shrink:0;text-align:center;width:var(--mdc-icon-button-state-layer-size, 48px);height:var(--mdc-icon-button-state-layer-size, 48px);padding:calc(calc(var(--mdc-icon-button-state-layer-size, 48px) - var(--mdc-icon-button-icon-size, 24px)) / 2);font-size:var(--mdc-icon-button-icon-size);color:var(--mdc-icon-button-icon-color, var(--mat-app-on-surface-variant));-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-icon-button[disabled],.mat-mdc-icon-button.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mdc-icon-button-disabled-icon-color)}.mat-mdc-icon-button.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-mdc-icon-button img,.mat-mdc-icon-button svg{width:var(--mdc-icon-button-icon-size);height:var(--mdc-icon-button-icon-size);vertical-align:baseline}.mat-mdc-icon-button .mat-mdc-button-ripple,.mat-mdc-icon-button .mat-mdc-button-persistent-ripple,.mat-mdc-icon-button .mat-mdc-button-persistent-ripple::before{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-mdc-icon-button .mat-mdc-button-ripple{overflow:hidden}.mat-mdc-icon-button .mat-mdc-button-persistent-ripple::before{content:"";opacity:0}.mat-mdc-icon-button .mdc-button__label,.mat-mdc-icon-button .mat-icon{z-index:1;position:relative}.mat-mdc-icon-button .mat-mdc-focus-indicator{top:0;left:0;right:0;bottom:0;position:absolute}.mat-mdc-icon-button:focus .mat-mdc-focus-indicator::before{content:""}.mat-mdc-icon-button .mat-ripple-element{background-color:var(--mat-icon-button-ripple-color)}.mat-mdc-icon-button .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-icon-button-state-layer-color, var(--mat-app-on-surface-variant))}.mat-mdc-icon-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-icon-button-disabled-state-layer-color, var(--mat-app-on-surface-variant))}.mat-mdc-icon-button:hover .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-icon-button-hover-state-layer-opacity, var(--mat-app-hover-state-layer-opacity))}.mat-mdc-icon-button.cdk-program-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-icon-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-icon-button.mat-mdc-button-disabled-interactive:focus .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-icon-button-focus-state-layer-opacity, var(--mat-app-focus-state-layer-opacity))}.mat-mdc-icon-button:active .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-icon-button-pressed-state-layer-opacity, var(--mat-app-pressed-state-layer-opacity))}.mat-mdc-icon-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%, -50%);display:var(--mat-icon-button-touch-target-display)}.mat-mdc-icon-button._mat-animation-noopable{transition:none !important;animation:none !important}.mat-mdc-icon-button .mat-mdc-button-persistent-ripple{border-radius:50%}.mat-mdc-icon-button[hidden]{display:none}.mat-mdc-icon-button.mat-unthemed:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-icon-button.mat-primary:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-icon-button.mat-accent:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-icon-button.mat-warn:not(.mdc-ripple-upgraded):focus::before{background:rgba(0,0,0,0);opacity:1}',vd],encapsulation:2,changeDetection:0})}}return i})(),zN=(()=>{class i extends Af{constructor(e,t,r,o){super(e,t,r,o)}static{this.\u0275fac=function(t){return new(t||i)(u(E),u(me),u(B),u(we,8))}}static{this.\u0275cmp=H({type:i,selectors:[["a","mat-icon-button",""]],hostVars:15,hostBindings:function(t,r){t&2&&(W("disabled",r._getDisabledAttribute())("tabindex",r.disabled&&!r.disabledInteractive?-1:r.tabIndex)("aria-disabled",r._getDisabledAttribute()),qe(r.color?"mat-"+r.color:""),P("mat-mdc-button-disabled",r.disabled)("mat-mdc-button-disabled-interactive",r.disabledInteractive)("_mat-animation-noopable",r._animationMode==="NoopAnimations")("mat-unthemed",!r.color)("mat-mdc-button-base",!0))},exportAs:["matButton","matAnchor"],standalone:!0,features:[ne,Q],attrs:Tf,ngContentSelectors:Mf,decls:4,vars:0,consts:[[1,"mat-mdc-button-persistent-ripple","mdc-icon-button__ripple"],[1,"mat-mdc-focus-indicator"],[1,"mat-mdc-button-touch-target"]],template:function(t,r){t&1&&(se(),ie(0,"span",0),A(1),ie(2,"span",1)(3,"span",2))},styles:[zx,vd],encapsulation:2,changeDetection:0})}}return i})(),Rf=(()=>{class i{static{this.\u0275fac=function(t){return new(t||i)}}static{this.\u0275mod=j({type:i})}static{this.\u0275inj=L({imports:[K,jn,K]})}}return i})();var qx=Je` + fragment QueueJob on QueueJob { + id + queue + status + payload + priority + retries + maxRetries + runAfter + ranAt + error + createdAt +} + `,Wx=Je` + fragment QueueJobsQueryResult on QueueJobsQueryResult { + items { + ...QueueJob + } + totalCount + hasNextPage + aggregations { + queue { + value + label + count + } + status { + value + label + count + } + } +} + ${qx}`,Gx=Je` + fragment Torrent on Torrent { + infoHash + name + size + filesStatus + filesCount + hasFilesInfo + singleFile + fileType + sources { + key + name + } + seeders + leechers + tagNames + magnetUri + createdAt + updatedAt +} + `,$x=Je` + fragment Content on Content { + type + source + id + metadataSource { + key + name + } + title + releaseDate + releaseYear + overview + runtime + voteAverage + voteCount + originalLanguage { + id + name + } + attributes { + metadataSource { + key + name + } + source + key + value + createdAt + updatedAt + } + collections { + metadataSource { + key + name + } + type + source + id + name + createdAt + updatedAt + } + externalLinks { + metadataSource { + key + name + } + url + } + createdAt + updatedAt +} + `,Yx=Je` + fragment TorrentContent on TorrentContent { + id + infoHash + contentType + title + torrent { + ...Torrent + } + content { + ...Content + } + languages { + id + name + } + episodes { + label + seasons { + season + episodes + } + } + video3d + videoCodec + videoModifier + videoResolution + videoSource + seeders + leechers + publishedAt + createdAt + updatedAt +} + ${Gx} +${$x}`,Kx=Je` + fragment TorrentContentSearchResult on TorrentContentSearchResult { + items { + ...TorrentContent + } + totalCount + totalCountIsEstimate + hasNextPage + aggregations { + contentType { + value + label + count + isEstimate + } + torrentSource { + value + label + count + isEstimate + } + torrentTag { + value + label + count + isEstimate + } + torrentFileType { + value + label + count + isEstimate + } + language { + value + label + count + isEstimate + } + genre { + value + label + count + isEstimate + } + releaseYear { + value + label + count + isEstimate + } + videoResolution { + value + label + count + isEstimate + } + videoSource { + value + label + count + isEstimate + } + } +} + ${Yx}`,Xx=Je` + fragment TorrentFile on TorrentFile { + infoHash + index + path + size + fileType + createdAt + updatedAt +} + `,Zx=Je` + fragment TorrentFilesQueryResult on TorrentFilesQueryResult { + items { + ...TorrentFile + } + totalCount + hasNextPage +} + ${Xx}`,UN=Je` + mutation QueueEnqueueReprocessTorrentsBatch($input: QueueEnqueueReprocessTorrentsBatchInput!) { + queue { + enqueueReprocessTorrentsBatch(input: $input) + } +} + `;var qN=Je` + mutation QueuePurgeJobs($input: QueuePurgeJobsInput!) { + queue { + purgeJobs(input: $input) + } +} + `;var Ff=Je` + mutation TorrentDelete($infoHashes: [Hash20!]!) { + torrent { + delete(infoHashes: $infoHashes) + } +} + `;var Pf=Je` + mutation TorrentDeleteTags($infoHashes: [Hash20!], $tagNames: [String!]) { + torrent { + deleteTags(infoHashes: $infoHashes, tagNames: $tagNames) + } +} + `;var Nf=Je` + mutation TorrentPutTags($infoHashes: [Hash20!]!, $tagNames: [String!]!) { + torrent { + putTags(infoHashes: $infoHashes, tagNames: $tagNames) + } +} + `;var Lf=Je` + mutation TorrentSetTags($infoHashes: [Hash20!]!, $tagNames: [String!]!) { + torrent { + setTags(infoHashes: $infoHashes, tagNames: $tagNames) + } +} + `;var WN=Je` + query HealthCheck { + health { + status + checks { + key + status + timestamp + error + } + } + workers { + listAll { + workers { + key + started + } + } + } +} + `;var GN=Je` + query QueueJobs($input: QueueJobsQueryInput!) { + queue { + jobs(input: $input) { + ...QueueJobsQueryResult + } + } +} + ${Wx}`;var $N=Je` + query QueueMetrics($input: QueueMetricsQueryInput!) { + queue { + metrics(input: $input) { + buckets { + queue + status + createdAtBucket + ranAtBucket + count + latency + } + } + } +} + `;var YN=Je` + query TorrentContentSearch($input: TorrentContentSearchQueryInput!) { + torrentContent { + search(input: $input) { + ...TorrentContentSearchResult + } + } +} + ${Kx}`;var KN=Je` + query TorrentFiles($input: TorrentFilesQueryInput!) { + torrent { + files(input: $input) { + ...TorrentFilesQueryResult + } + } +} + ${Zx}`;var XN=Je` + query TorrentMetrics($input: TorrentMetricsQueryInput!) { + torrent { + metrics(input: $input) { + buckets { + source + updated + bucket + count + } + } + listSources { + sources { + key + name + } + } + } +} + `;var jf=Je` + query TorrentSuggestTags($input: SuggestTagsQueryInput!) { + torrent { + suggestTags(input: $input) { + suggestions { + name + count + } + } + } +} + `;var ZN=Je` + query Version { + version +} + `;var tw=(i,n,e)=>{let t=["POST","PUT","PATCH"].indexOf(i.method.toUpperCase())!==-1,r=l=>["variables","extensions"].indexOf(l.toLowerCase())!==-1,o=i.body.length,a=i.options&&i.options.useMultipart,s;if(a){if(o)return new We(l=>l.error(new Error("File upload is not available when combined with Batching")));if(!t)return new We(l=>l.error(new Error("File upload is not available when GET is used")));if(!e)return new We(l=>l.error(new Error(`To use File upload you need to pass "extractFiles" function from "extract-files" library to HttpLink's options`)));s=e(i.body),a=!!s.files.size}let c={};if(o){if(!t)return new We(l=>l.error(new Error("Batching is not available for GET requests")));c={body:i.body}}else{let l=a?s.clone:i.body;t?c={body:l}:c={params:Object.keys(i.body).reduce((h,m)=>{let p=i.body[m];return h[m]=r(m)?JSON.stringify(p):p,h},{})}}if(a&&t){let l=new FormData;l.append("operations",JSON.stringify(c.body));let d={},h=s.files,m=0;h.forEach(p=>{d[++m]=p}),l.append("map",JSON.stringify(d)),m=0,h.forEach((p,f)=>{l.append(++m+"",f,f.name)}),c.body=l}return n.request(i.method,i.url,N(N({observe:"response",responseType:"json",reportProgress:!1},c),i.options))},iw=(i,n)=>i&&n?n.keys().reduce((t,r)=>t.set(r,n.getAll(r)),i):n||i;function nw(...i){return i.find(n=>typeof n<"u")}function rw(i){let n=i.headers&&i.headers instanceof hc?i.headers:new hc(i.headers);if(i.clientAwareness){let{name:e,version:t}=i.clientAwareness;e&&!n.has("apollographql-client-name")&&(n=n.set("apollographql-client-name",e)),t&&!n.has("apollographql-client-version")&&(n=n.set("apollographql-client-version",t))}return n}var ow={batchInterval:10,batchMax:10,uri:"graphql",method:"POST",withCredentials:!1,includeQuery:!0,includeExtensions:!1,useMultipart:!1};function jr(i,n,e){return nw(i[e],n[e],ow[e])}var _d=class extends Xt{httpClient;options;requester;print=mr;constructor(n,e){super(),this.httpClient=n,this.options=e,this.options.operationPrinter&&(this.print=this.options.operationPrinter),this.requester=t=>new xe(r=>{let o=t.getContext(),a=jr(o,this.options,"method"),s=jr(o,this.options,"includeQuery"),c=jr(o,this.options,"includeExtensions"),l=jr(o,this.options,"uri"),d=jr(o,this.options,"withCredentials"),h=jr(o,this.options,"useMultipart"),m=this.options.useGETForQueries===!0,p=t.query.definitions.some(v=>v.kind==="OperationDefinition"&&v.operation==="query");m&&p&&(a="GET");let f={method:a,url:typeof l=="function"?l(t):l,body:{operationName:t.operationName,variables:t.variables},options:{withCredentials:d,useMultipart:h,headers:this.options.headers}};c&&(f.body.extensions=t.extensions),s&&(f.body.query=this.print(t.query));let g=rw(o);f.options.headers=iw(f.options.headers,g);let _=tw(f,this.httpClient,this.options.extractFiles).subscribe({next:v=>{t.setContext({response:v}),r.next(v.body)},error:v=>r.error(v),complete:()=>r.complete()});return()=>{_.closed||_.unsubscribe()}})}request(n){return this.requester(n)}},Vf=(()=>{class i{httpClient;constructor(e){this.httpClient=e}create(e){return new _d(this.httpClient,e)}static \u0275fac=function(t){return new(t||i)(x(la))};static \u0275prov=Z({token:i,factory:i.\u0275fac,providedIn:"root"})}return i})();var Bf=window.location.protocol+"//"+window.location.hostname+":"+window.location.port+"/graphql";var zf=(()=>{class i{constructor(e){this.apollo=e}torrentDelete(e){return this.apollo.mutate({mutation:Ff,variables:e,fetchPolicy:Vo}).pipe(ke(()=>{}))}torrentPutTags(e){return this.apollo.mutate({mutation:Nf,variables:e,fetchPolicy:Vo}).pipe(ke(()=>{}))}torrentSetTags(e){return this.apollo.mutate({mutation:Lf,variables:e,fetchPolicy:Vo}).pipe(ke(()=>{}))}torrentDeleteTags(e){return this.apollo.mutate({mutation:Pf,variables:e,fetchPolicy:Vo}).pipe(ke(()=>{}))}torrentSuggestTags(e){return this.apollo.query({query:jf,variables:e,fetchPolicy:Vo}).pipe(ke(t=>t.data.torrent.suggestTags))}static{this.\u0275fac=function(t){return new(t||i)(x(Xl))}}static{this.\u0275prov=Z({token:i,factory:i.\u0275fac})}}return i})(),Vo="no-cache";function aw(i){return{link:i.create({uri:Bf}),cache:new Io({typePolicies:{Query:{fields:{search:{merge(n,e){return N(N({},n),e)}}}}}})}}var Hf=(()=>{class i{static{this.\u0275fac=function(t){return new(t||i)}}static{this.\u0275mod=j({type:i})}static{this.\u0275inj=L({providers:[{provide:Kl,useFactory:aw,deps:[Vf]},zf],imports:[Jp]})}}return i})();var yd=class{constructor(n){this._box=n,this._destroyed=new R,this._resizeSubject=new R,this._elementObservables=new Map,typeof ResizeObserver<"u"&&(this._resizeObserver=new ResizeObserver(e=>this._resizeSubject.next(e)))}observe(n){return this._elementObservables.has(n)||this._elementObservables.set(n,new We(e=>{let t=this._resizeSubject.subscribe(e);return this._resizeObserver?.observe(n,{box:this._box}),()=>{this._resizeObserver?.unobserve(n),t.unsubscribe(),this._elementObservables.delete(n)}}).pipe(ye(e=>e.some(t=>t.target===n)),qr({bufferSize:1,refCount:!0}),$(this._destroyed))),this._elementObservables.get(n)}destroy(){this._destroyed.next(),this._destroyed.complete(),this._resizeSubject.complete(),this._elementObservables.clear()}},Ns=(()=>{class i{constructor(){this._observers=new Map,this._ngZone=F(B),typeof ResizeObserver<"u"}ngOnDestroy(){for(let[,e]of this._observers)e.destroy();this._observers.clear(),typeof ResizeObserver<"u"}observe(e,t){let r=t?.box||"content-box";return this._observers.has(r)||this._observers.set(r,new yd(r)),this._observers.get(r).observe(e)}static{this.\u0275fac=function(t){return new(t||i)}}static{this.\u0275prov=Z({token:i,factory:i.\u0275fac,providedIn:"root"})}}return i})();var sw=["notch"],cw=["matFormFieldNotchedOutline",""],lw=["*"],dw=["textField"],uw=["iconPrefixContainer"],hw=["textPrefixContainer"],mw=["iconSuffixContainer"],pw=["textSuffixContainer"],fw=["*",[["mat-label"]],[["","matPrefix",""],["","matIconPrefix",""]],[["","matTextPrefix",""]],[["","matTextSuffix",""]],[["","matSuffix",""],["","matIconSuffix",""]],[["mat-error"],["","matError",""]],[["mat-hint",3,"align","end"]],[["mat-hint","align","end"]]],gw=["*","mat-label","[matPrefix], [matIconPrefix]","[matTextPrefix]","[matTextSuffix]","[matSuffix], [matIconSuffix]","mat-error, [matError]","mat-hint:not([align='end'])","mat-hint[align='end']"];function bw(i,n){i&1&&ie(0,"span",21)}function vw(i,n){if(i&1&&(w(0,"label",20),A(1,1),te(2,bw,1,0,"span",21),I()),i&2){let e=fe(2);ue("floating",e._shouldLabelFloat())("monitorResize",e._hasOutline())("id",e._labelId),W("for",e._control.disableAutomaticLabeling?null:e._control.id),V(2),ge(!e.hideRequiredMarker&&e._control.required?2:-1)}}function _w(i,n){if(i&1&&te(0,vw,3,5,"label",20),i&2){let e=fe();ge(e._hasFloatingLabel()?0:-1)}}function yw(i,n){i&1&&ie(0,"div",7)}function xw(i,n){}function ww(i,n){if(i&1&&te(0,xw,0,0,"ng-template",13),i&2){fe(2);let e=$t(1);ue("ngTemplateOutlet",e)}}function Cw(i,n){if(i&1&&(w(0,"div",9),te(1,ww,1,1,null,13),I()),i&2){let e=fe();ue("matFormFieldNotchedOutlineOpen",e._shouldLabelFloat()),V(),ge(e._forceDisplayInfixLabel()?-1:1)}}function kw(i,n){i&1&&(w(0,"div",10,2),A(2,2),I())}function Dw(i,n){i&1&&(w(0,"div",11,3),A(2,3),I())}function Ew(i,n){}function Iw(i,n){if(i&1&&te(0,Ew,0,0,"ng-template",13),i&2){fe();let e=$t(1);ue("ngTemplateOutlet",e)}}function Sw(i,n){i&1&&(w(0,"div",14,4),A(2,4),I())}function Tw(i,n){i&1&&(w(0,"div",15,5),A(2,5),I())}function Mw(i,n){i&1&&ie(0,"div",16)}function Aw(i,n){if(i&1&&(w(0,"div",18),A(1,6),I()),i&2){let e=fe();ue("@transitionMessages",e._subscriptAnimationState)}}function Ow(i,n){if(i&1&&(w(0,"mat-hint",22),Tt(1),I()),i&2){let e=fe(2);ue("id",e._hintLabelId),V(),oi(e.hintLabel)}}function Rw(i,n){if(i&1&&(w(0,"div",19),te(1,Ow,2,2,"mat-hint",22),A(2,7),ie(3,"div",23),A(4,8),I()),i&2){let e=fe();ue("@transitionMessages",e._subscriptAnimationState),V(),ge(e.hintLabel?1:-1)}}var Qf=(()=>{class i{static{this.\u0275fac=function(t){return new(t||i)}}static{this.\u0275dir=D({type:i,selectors:[["mat-label"]],standalone:!0})}}return i})();var Fw=new C("MatError");var Pw=0,Uf=(()=>{class i{constructor(){this.align="start",this.id=`mat-mdc-hint-${Pw++}`}static{this.\u0275fac=function(t){return new(t||i)}}static{this.\u0275dir=D({type:i,selectors:[["mat-hint"]],hostAttrs:[1,"mat-mdc-form-field-hint","mat-mdc-form-field-bottom-align"],hostVars:4,hostBindings:function(t,r){t&2&&(St("id",r.id),W("align",null),P("mat-mdc-form-field-hint-end",r.align==="end"))},inputs:{align:"align",id:"id"},standalone:!0})}}return i})(),Nw=new C("MatPrefix");var Lw=new C("MatSuffix");var Zf=new C("FloatingLabelParent"),qf=(()=>{class i{get floating(){return this._floating}set floating(e){this._floating=e,this.monitorResize&&this._handleResize()}get monitorResize(){return this._monitorResize}set monitorResize(e){this._monitorResize=e,this._monitorResize?this._subscribeToResize():this._resizeSubscription.unsubscribe()}constructor(e){this._elementRef=e,this._floating=!1,this._monitorResize=!1,this._resizeObserver=F(Ns),this._ngZone=F(B),this._parent=F(Zf),this._resizeSubscription=new Te}ngOnDestroy(){this._resizeSubscription.unsubscribe()}getWidth(){return jw(this._elementRef.nativeElement)}get element(){return this._elementRef.nativeElement}_handleResize(){setTimeout(()=>this._parent._handleLabelResized())}_subscribeToResize(){this._resizeSubscription.unsubscribe(),this._ngZone.runOutsideAngular(()=>{this._resizeSubscription=this._resizeObserver.observe(this._elementRef.nativeElement,{box:"border-box"}).subscribe(()=>this._handleResize())})}static{this.\u0275fac=function(t){return new(t||i)(u(E))}}static{this.\u0275dir=D({type:i,selectors:[["label","matFormFieldFloatingLabel",""]],hostAttrs:[1,"mdc-floating-label","mat-mdc-floating-label"],hostVars:2,hostBindings:function(t,r){t&2&&P("mdc-floating-label--float-above",r.floating)},inputs:{floating:"floating",monitorResize:"monitorResize"},standalone:!0})}}return i})();function jw(i){let n=i;if(n.offsetParent!==null)return n.scrollWidth;let e=n.cloneNode(!0);e.style.setProperty("position","absolute"),e.style.setProperty("transform","translate(-9999px, -9999px)"),document.documentElement.appendChild(e);let t=e.scrollWidth;return e.remove(),t}var Wf="mdc-line-ripple--active",Ls="mdc-line-ripple--deactivating",Gf=(()=>{class i{constructor(e,t){this._elementRef=e,this._handleTransitionEnd=r=>{let o=this._elementRef.nativeElement.classList,a=o.contains(Ls);r.propertyName==="opacity"&&a&&o.remove(Wf,Ls)},t.runOutsideAngular(()=>{e.nativeElement.addEventListener("transitionend",this._handleTransitionEnd)})}activate(){let e=this._elementRef.nativeElement.classList;e.remove(Ls),e.add(Wf)}deactivate(){this._elementRef.nativeElement.classList.add(Ls)}ngOnDestroy(){this._elementRef.nativeElement.removeEventListener("transitionend",this._handleTransitionEnd)}static{this.\u0275fac=function(t){return new(t||i)(u(E),u(B))}}static{this.\u0275dir=D({type:i,selectors:[["div","matFormFieldLineRipple",""]],hostAttrs:[1,"mdc-line-ripple"],standalone:!0})}}return i})(),$f=(()=>{class i{constructor(e,t){this._elementRef=e,this._ngZone=t,this.open=!1}ngAfterViewInit(){let e=this._elementRef.nativeElement.querySelector(".mdc-floating-label");e?(this._elementRef.nativeElement.classList.add("mdc-notched-outline--upgraded"),typeof requestAnimationFrame=="function"&&(e.style.transitionDuration="0s",this._ngZone.runOutsideAngular(()=>{requestAnimationFrame(()=>e.style.transitionDuration="")}))):this._elementRef.nativeElement.classList.add("mdc-notched-outline--no-label")}_setNotchWidth(e){!this.open||!e?this._notch.nativeElement.style.width="":this._notch.nativeElement.style.width=`calc(${e}px * var(--mat-mdc-form-field-floating-label-scale, 0.75) + 9px)`}static{this.\u0275fac=function(t){return new(t||i)(u(E),u(B))}}static{this.\u0275cmp=H({type:i,selectors:[["div","matFormFieldNotchedOutline",""]],viewQuery:function(t,r){if(t&1&&re(sw,5),t&2){let o;S(o=T())&&(r._notch=o.first)}},hostAttrs:[1,"mdc-notched-outline"],hostVars:2,hostBindings:function(t,r){t&2&&P("mdc-notched-outline--notched",r.open)},inputs:{open:[0,"matFormFieldNotchedOutlineOpen","open"]},standalone:!0,features:[Q],attrs:cw,ngContentSelectors:lw,decls:5,vars:0,consts:[["notch",""],[1,"mat-mdc-notch-piece","mdc-notched-outline__leading"],[1,"mat-mdc-notch-piece","mdc-notched-outline__notch"],[1,"mat-mdc-notch-piece","mdc-notched-outline__trailing"]],template:function(t,r){t&1&&(se(),ie(0,"div",1),w(1,"div",2,0),A(3),I(),ie(4,"div",3))},encapsulation:2,changeDetection:0})}}return i})(),Vw={transitionMessages:gt("transitionMessages",[nt("enter",Oe({opacity:1,transform:"translateY(0%)"})),Ze("void => enter",[Oe({opacity:0,transform:"translateY(-5px)"}),Xe("300ms cubic-bezier(0.55, 0, 0.55, 0.2)")])])},Vn=(()=>{class i{static{this.\u0275fac=function(t){return new(t||i)}}static{this.\u0275dir=D({type:i})}}return i})();var Ri=new C("MatFormField"),Bw=new C("MAT_FORM_FIELD_DEFAULT_OPTIONS"),Yf=0,Kf="fill",zw="auto",Xf="fixed",Hw="translateY(-50%)",zL=(()=>{class i{get hideRequiredMarker(){return this._hideRequiredMarker}set hideRequiredMarker(e){this._hideRequiredMarker=ut(e)}get floatLabel(){return this._floatLabel||this._defaults?.floatLabel||zw}set floatLabel(e){e!==this._floatLabel&&(this._floatLabel=e,this._changeDetectorRef.markForCheck())}get appearance(){return this._appearance}set appearance(e){let t=this._appearance,r=e||this._defaults?.appearance||Kf;this._appearance=r,this._appearance==="outline"&&this._appearance!==t&&(this._needsOutlineLabelOffsetUpdate=!0)}get subscriptSizing(){return this._subscriptSizing||this._defaults?.subscriptSizing||Xf}set subscriptSizing(e){this._subscriptSizing=e||this._defaults?.subscriptSizing||Xf}get hintLabel(){return this._hintLabel}set hintLabel(e){this._hintLabel=e,this._processHints()}get _control(){return this._explicitFormFieldControl||this._formFieldControl}set _control(e){this._explicitFormFieldControl=e}constructor(e,t,r,o,a,s,c,l){this._elementRef=e,this._changeDetectorRef=t,this._dir=o,this._platform=a,this._defaults=s,this._animationMode=c,this._labelChild=Fu(Qf),this._hideRequiredMarker=!1,this.color="primary",this._appearance=Kf,this._subscriptSizing=null,this._hintLabel="",this._hasIconPrefix=!1,this._hasTextPrefix=!1,this._hasIconSuffix=!1,this._hasTextSuffix=!1,this._labelId=`mat-mdc-form-field-label-${Yf++}`,this._hintLabelId=`mat-mdc-hint-${Yf++}`,this._subscriptAnimationState="",this._destroyed=new R,this._isFocused=null,this._needsOutlineLabelOffsetUpdate=!1,this._previousControl=null,this._injector=F(Ee),this.getLabelId=bi(()=>this._hasFloatingLabel()?this._labelId:null),this._hasFloatingLabel=bi(()=>!!this._labelChild()),s&&(s.appearance&&(this.appearance=s.appearance),this._hideRequiredMarker=!!s?.hideRequiredMarker,s.color&&(this.color=s.color))}ngAfterViewInit(){this._updateFocusState(),this._subscriptAnimationState="enter",this._changeDetectorRef.detectChanges()}ngAfterContentInit(){this._assertFormFieldControl(),this._initializeSubscript(),this._initializePrefixAndSuffix(),this._initializeOutlineLabelOffsetSubscriptions()}ngAfterContentChecked(){this._assertFormFieldControl(),this._control!==this._previousControl&&(this._initializeControl(this._previousControl),this._previousControl=this._control)}ngOnDestroy(){this._stateChanges?.unsubscribe(),this._valueChanges?.unsubscribe(),this._destroyed.next(),this._destroyed.complete()}getConnectedOverlayOrigin(){return this._textField||this._elementRef}_animateAndLockLabel(){this._hasFloatingLabel()&&(this.floatLabel="always")}_initializeControl(e){let t=this._control,r="mat-mdc-form-field-type-";e&&this._elementRef.nativeElement.classList.remove(r+e.controlType),t.controlType&&this._elementRef.nativeElement.classList.add(r+t.controlType),this._stateChanges?.unsubscribe(),this._stateChanges=t.stateChanges.subscribe(()=>{this._updateFocusState(),this._syncDescribedByIds(),this._changeDetectorRef.markForCheck()}),this._valueChanges?.unsubscribe(),t.ngControl&&t.ngControl.valueChanges&&(this._valueChanges=t.ngControl.valueChanges.pipe($(this._destroyed)).subscribe(()=>this._changeDetectorRef.markForCheck()))}_checkPrefixAndSuffixTypes(){this._hasIconPrefix=!!this._prefixChildren.find(e=>!e._isText),this._hasTextPrefix=!!this._prefixChildren.find(e=>e._isText),this._hasIconSuffix=!!this._suffixChildren.find(e=>!e._isText),this._hasTextSuffix=!!this._suffixChildren.find(e=>e._isText)}_initializePrefixAndSuffix(){this._checkPrefixAndSuffixTypes(),Fe(this._prefixChildren.changes,this._suffixChildren.changes).subscribe(()=>{this._checkPrefixAndSuffixTypes(),this._changeDetectorRef.markForCheck()})}_initializeSubscript(){this._hintChildren.changes.subscribe(()=>{this._processHints(),this._changeDetectorRef.markForCheck()}),this._errorChildren.changes.subscribe(()=>{this._syncDescribedByIds(),this._changeDetectorRef.markForCheck()}),this._validateHints(),this._syncDescribedByIds()}_assertFormFieldControl(){this._control}_updateFocusState(){this._control.focused&&!this._isFocused?(this._isFocused=!0,this._lineRipple?.activate()):!this._control.focused&&(this._isFocused||this._isFocused===null)&&(this._isFocused=!1,this._lineRipple?.deactivate()),this._textField?.nativeElement.classList.toggle("mdc-text-field--focused",this._control.focused)}_initializeOutlineLabelOffsetSubscriptions(){this._prefixChildren.changes.subscribe(()=>this._needsOutlineLabelOffsetUpdate=!0),na(()=>{this._needsOutlineLabelOffsetUpdate&&(this._needsOutlineLabelOffsetUpdate=!1,this._updateOutlineLabelOffset())},{injector:this._injector}),this._dir.change.pipe($(this._destroyed)).subscribe(()=>this._needsOutlineLabelOffsetUpdate=!0)}_shouldAlwaysFloat(){return this.floatLabel==="always"}_hasOutline(){return this.appearance==="outline"}_forceDisplayInfixLabel(){return!this._platform.isBrowser&&this._prefixChildren.length&&!this._shouldLabelFloat()}_shouldLabelFloat(){return this._hasFloatingLabel()?this._control.shouldLabelFloat||this._shouldAlwaysFloat():!1}_shouldForward(e){let t=this._control?this._control.ngControl:null;return t&&t[e]}_getDisplayedMessages(){return this._errorChildren&&this._errorChildren.length>0&&this._control.errorState?"error":"hint"}_handleLabelResized(){this._refreshOutlineNotchWidth()}_refreshOutlineNotchWidth(){!this._hasOutline()||!this._floatingLabel||!this._shouldLabelFloat()?this._notchedOutline?._setNotchWidth(0):this._notchedOutline?._setNotchWidth(this._floatingLabel.getWidth())}_processHints(){this._validateHints(),this._syncDescribedByIds()}_validateHints(){this._hintChildren}_syncDescribedByIds(){if(this._control){let e=[];if(this._control.userAriaDescribedBy&&typeof this._control.userAriaDescribedBy=="string"&&e.push(...this._control.userAriaDescribedBy.split(" ")),this._getDisplayedMessages()==="hint"){let t=this._hintChildren?this._hintChildren.find(o=>o.align==="start"):null,r=this._hintChildren?this._hintChildren.find(o=>o.align==="end"):null;t?e.push(t.id):this._hintLabel&&e.push(this._hintLabelId),r&&e.push(r.id)}else this._errorChildren&&e.push(...this._errorChildren.map(t=>t.id));this._control.setDescribedByIds(e)}}_updateOutlineLabelOffset(){if(!this._hasOutline()||!this._floatingLabel)return;let e=this._floatingLabel.element;if(!(this._iconPrefixContainer||this._textPrefixContainer)){e.style.transform="";return}if(!this._isAttachedToDom()){this._needsOutlineLabelOffsetUpdate=!0;return}let t=this._iconPrefixContainer?.nativeElement,r=this._textPrefixContainer?.nativeElement,o=this._iconSuffixContainer?.nativeElement,a=this._textSuffixContainer?.nativeElement,s=t?.getBoundingClientRect().width??0,c=r?.getBoundingClientRect().width??0,l=o?.getBoundingClientRect().width??0,d=a?.getBoundingClientRect().width??0,h=this._dir.value==="rtl"?"-1":"1",m=`${s+c}px`,f=`calc(${h} * (${m} + var(--mat-mdc-form-field-label-offset-x, 0px)))`;e.style.transform=`var( + --mat-mdc-form-field-label-transform, + ${Hw} translateX(${f}) + )`;let g=s+c+l+d;this._elementRef.nativeElement.style.setProperty("--mat-form-field-notch-max-width",`calc(100% - ${g}px)`)}_isAttachedToDom(){let e=this._elementRef.nativeElement;if(e.getRootNode){let t=e.getRootNode();return t&&t!==e}return document.documentElement.contains(e)}static{this.\u0275fac=function(t){return new(t||i)(u(E),u(pe),u(B),u(Re),u(me),u(Bw,8),u(we,8),u(oe))}}static{this.\u0275cmp=H({type:i,selectors:[["mat-form-field"]],contentQueries:function(t,r,o){if(t&1&&(Bu(o,r._labelChild,Qf,5),he(o,Vn,5),he(o,Nw,5),he(o,Lw,5),he(o,Fw,5),he(o,Uf,5)),t&2){zu();let a;S(a=T())&&(r._formFieldControl=a.first),S(a=T())&&(r._prefixChildren=a),S(a=T())&&(r._suffixChildren=a),S(a=T())&&(r._errorChildren=a),S(a=T())&&(r._hintChildren=a)}},viewQuery:function(t,r){if(t&1&&(re(dw,5),re(uw,5),re(hw,5),re(mw,5),re(pw,5),re(qf,5),re($f,5),re(Gf,5)),t&2){let o;S(o=T())&&(r._textField=o.first),S(o=T())&&(r._iconPrefixContainer=o.first),S(o=T())&&(r._textPrefixContainer=o.first),S(o=T())&&(r._iconSuffixContainer=o.first),S(o=T())&&(r._textSuffixContainer=o.first),S(o=T())&&(r._floatingLabel=o.first),S(o=T())&&(r._notchedOutline=o.first),S(o=T())&&(r._lineRipple=o.first)}},hostAttrs:[1,"mat-mdc-form-field"],hostVars:42,hostBindings:function(t,r){t&2&&P("mat-mdc-form-field-label-always-float",r._shouldAlwaysFloat())("mat-mdc-form-field-has-icon-prefix",r._hasIconPrefix)("mat-mdc-form-field-has-icon-suffix",r._hasIconSuffix)("mat-form-field-invalid",r._control.errorState)("mat-form-field-disabled",r._control.disabled)("mat-form-field-autofilled",r._control.autofilled)("mat-form-field-no-animations",r._animationMode==="NoopAnimations")("mat-form-field-appearance-fill",r.appearance=="fill")("mat-form-field-appearance-outline",r.appearance=="outline")("mat-form-field-hide-placeholder",r._hasFloatingLabel()&&!r._shouldLabelFloat())("mat-focused",r._control.focused)("mat-primary",r.color!=="accent"&&r.color!=="warn")("mat-accent",r.color==="accent")("mat-warn",r.color==="warn")("ng-untouched",r._shouldForward("untouched"))("ng-touched",r._shouldForward("touched"))("ng-pristine",r._shouldForward("pristine"))("ng-dirty",r._shouldForward("dirty"))("ng-valid",r._shouldForward("valid"))("ng-invalid",r._shouldForward("invalid"))("ng-pending",r._shouldForward("pending"))},inputs:{hideRequiredMarker:"hideRequiredMarker",color:"color",floatLabel:"floatLabel",appearance:"appearance",subscriptSizing:"subscriptSizing",hintLabel:"hintLabel"},exportAs:["matFormField"],standalone:!0,features:[de([{provide:Ri,useExisting:i},{provide:Zf,useExisting:i}]),Q],ngContentSelectors:gw,decls:18,vars:21,consts:[["labelTemplate",""],["textField",""],["iconPrefixContainer",""],["textPrefixContainer",""],["textSuffixContainer",""],["iconSuffixContainer",""],[1,"mat-mdc-text-field-wrapper","mdc-text-field",3,"click"],[1,"mat-mdc-form-field-focus-overlay"],[1,"mat-mdc-form-field-flex"],["matFormFieldNotchedOutline","",3,"matFormFieldNotchedOutlineOpen"],[1,"mat-mdc-form-field-icon-prefix"],[1,"mat-mdc-form-field-text-prefix"],[1,"mat-mdc-form-field-infix"],[3,"ngTemplateOutlet"],[1,"mat-mdc-form-field-text-suffix"],[1,"mat-mdc-form-field-icon-suffix"],["matFormFieldLineRipple",""],[1,"mat-mdc-form-field-subscript-wrapper","mat-mdc-form-field-bottom-align"],[1,"mat-mdc-form-field-error-wrapper"],[1,"mat-mdc-form-field-hint-wrapper"],["matFormFieldFloatingLabel","",3,"floating","monitorResize","id"],["aria-hidden","true",1,"mat-mdc-form-field-required-marker","mdc-floating-label--required"],[3,"id"],[1,"mat-mdc-form-field-hint-spacer"]],template:function(t,r){if(t&1){let o=Ge();se(fw),te(0,_w,1,1,"ng-template",null,0,oa),w(2,"div",6,1),ee("click",function(s){return ce(o),le(r._control.onContainerClick(s))}),te(4,yw,1,0,"div",7),w(5,"div",8),te(6,Cw,2,2,"div",9)(7,kw,3,0,"div",10)(8,Dw,3,0,"div",11),w(9,"div",12),te(10,Iw,1,1,null,13),A(11),I(),te(12,Sw,3,0,"div",14)(13,Tw,3,0,"div",15),I(),te(14,Mw,1,0,"div",16),I(),w(15,"div",17),te(16,Aw,2,1,"div",18)(17,Rw,5,2,"div",19),I()}if(t&2){let o;V(2),P("mdc-text-field--filled",!r._hasOutline())("mdc-text-field--outlined",r._hasOutline())("mdc-text-field--no-label",!r._hasFloatingLabel())("mdc-text-field--disabled",r._control.disabled)("mdc-text-field--invalid",r._control.errorState),V(2),ge(!r._hasOutline()&&!r._control.disabled?4:-1),V(2),ge(r._hasOutline()?6:-1),V(),ge(r._hasIconPrefix?7:-1),V(),ge(r._hasTextPrefix?8:-1),V(2),ge(!r._hasOutline()||r._forceDisplayInfixLabel()?10:-1),V(2),ge(r._hasTextSuffix?12:-1),V(),ge(r._hasIconSuffix?13:-1),V(),ge(r._hasOutline()?-1:14),V(),P("mat-mdc-form-field-subscript-dynamic-size",r.subscriptSizing==="dynamic"),V(),ge((o=r._getDisplayedMessages())==="error"?16:o==="hint"?17:-1)}},dependencies:[qf,$f,ca,Gf,Uf],styles:['.mdc-text-field{display:inline-flex;align-items:baseline;padding:0 16px;position:relative;box-sizing:border-box;overflow:hidden;will-change:opacity,transform,color;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.mdc-text-field__input{width:100%;min-width:0;border:none;border-radius:0;background:none;padding:0;-moz-appearance:none;-webkit-appearance:none;height:28px}.mdc-text-field__input::-webkit-calendar-picker-indicator{display:none}.mdc-text-field__input::-ms-clear{display:none}.mdc-text-field__input:focus{outline:none}.mdc-text-field__input:invalid{box-shadow:none}.mdc-text-field__input::placeholder{opacity:0}.mdc-text-field__input::-moz-placeholder{opacity:0}.mdc-text-field__input::-webkit-input-placeholder{opacity:0}.mdc-text-field__input:-ms-input-placeholder{opacity:0}.mdc-text-field--no-label .mdc-text-field__input::placeholder,.mdc-text-field--focused .mdc-text-field__input::placeholder{opacity:1}.mdc-text-field--no-label .mdc-text-field__input::-moz-placeholder,.mdc-text-field--focused .mdc-text-field__input::-moz-placeholder{opacity:1}.mdc-text-field--no-label .mdc-text-field__input::-webkit-input-placeholder,.mdc-text-field--focused .mdc-text-field__input::-webkit-input-placeholder{opacity:1}.mdc-text-field--no-label .mdc-text-field__input:-ms-input-placeholder,.mdc-text-field--focused .mdc-text-field__input:-ms-input-placeholder{opacity:1}.mdc-text-field--outlined .mdc-text-field__input,.mdc-text-field--filled.mdc-text-field--no-label .mdc-text-field__input{height:100%}.mdc-text-field--outlined .mdc-text-field__input{display:flex;border:none !important;background-color:rgba(0,0,0,0)}.mdc-text-field--disabled .mdc-text-field__input{pointer-events:auto}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-text-field__input{color:var(--mdc-filled-text-field-input-text-color, var(--mat-app-on-surface));caret-color:var(--mdc-filled-text-field-caret-color, var(--mat-app-primary))}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-text-field__input::placeholder{color:var(--mdc-filled-text-field-input-text-placeholder-color, var(--mat-app-on-surface-variant))}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-text-field__input::-moz-placeholder{color:var(--mdc-filled-text-field-input-text-placeholder-color, var(--mat-app-on-surface-variant))}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-text-field__input::-webkit-input-placeholder{color:var(--mdc-filled-text-field-input-text-placeholder-color, var(--mat-app-on-surface-variant))}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-text-field__input:-ms-input-placeholder{color:var(--mdc-filled-text-field-input-text-placeholder-color, var(--mat-app-on-surface-variant))}.mdc-text-field--filled.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-text-field__input{caret-color:var(--mdc-filled-text-field-error-caret-color)}.mdc-text-field--filled.mdc-text-field--disabled .mdc-text-field__input{color:var(--mdc-filled-text-field-disabled-input-text-color)}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-text-field__input{color:var(--mdc-outlined-text-field-input-text-color, var(--mat-app-on-surface));caret-color:var(--mdc-outlined-text-field-caret-color, var(--mat-app-primary))}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-text-field__input::placeholder{color:var(--mdc-outlined-text-field-input-text-placeholder-color, var(--mat-app-on-surface-variant))}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-text-field__input::-moz-placeholder{color:var(--mdc-outlined-text-field-input-text-placeholder-color, var(--mat-app-on-surface-variant))}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-text-field__input::-webkit-input-placeholder{color:var(--mdc-outlined-text-field-input-text-placeholder-color, var(--mat-app-on-surface-variant))}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-text-field__input:-ms-input-placeholder{color:var(--mdc-outlined-text-field-input-text-placeholder-color, var(--mat-app-on-surface-variant))}.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-text-field__input{caret-color:var(--mdc-outlined-text-field-error-caret-color)}.mdc-text-field--outlined.mdc-text-field--disabled .mdc-text-field__input{color:var(--mdc-outlined-text-field-disabled-input-text-color)}.mdc-text-field--disabled .cdk-high-contrast-active .mdc-text-field__input{background-color:Window}.mdc-text-field--filled{height:56px;border-bottom-right-radius:0;border-bottom-left-radius:0;border-top-left-radius:var(--mdc-filled-text-field-container-shape, var(--mat-app-corner-extra-small-top));border-top-right-radius:var(--mdc-filled-text-field-container-shape, var(--mat-app-corner-extra-small-top))}.mdc-text-field--filled:not(.mdc-text-field--disabled){background-color:var(--mdc-filled-text-field-container-color, var(--mat-app-surface-variant))}.mdc-text-field--filled.mdc-text-field--disabled{background-color:var(--mdc-filled-text-field-disabled-container-color)}.mdc-text-field--outlined{height:56px;overflow:visible;padding-right:max(16px,var(--mdc-outlined-text-field-container-shape, var(--mat-app-corner-extra-small)));padding-left:max(16px,var(--mdc-outlined-text-field-container-shape, var(--mat-app-corner-extra-small)) + 4px)}[dir=rtl] .mdc-text-field--outlined{padding-right:max(16px,var(--mdc-outlined-text-field-container-shape, var(--mat-app-corner-extra-small)) + 4px);padding-left:max(16px,var(--mdc-outlined-text-field-container-shape, var(--mat-app-corner-extra-small)))}.mdc-floating-label{position:absolute;left:0;transform-origin:left top;line-height:1.15rem;text-align:left;text-overflow:ellipsis;white-space:nowrap;cursor:text;overflow:hidden;will-change:transform}[dir=rtl] .mdc-floating-label{right:0;left:auto;transform-origin:right top;text-align:right}.mdc-text-field .mdc-floating-label{top:50%;transform:translateY(-50%);pointer-events:none}.mdc-notched-outline .mdc-floating-label{display:inline-block;position:relative;max-width:100%}.mdc-text-field--outlined .mdc-floating-label{left:4px;right:auto}[dir=rtl] .mdc-text-field--outlined .mdc-floating-label{left:auto;right:4px}.mdc-text-field--filled .mdc-floating-label{left:16px;right:auto}[dir=rtl] .mdc-text-field--filled .mdc-floating-label{left:auto;right:16px}.mdc-text-field--disabled .mdc-floating-label{cursor:default}.cdk-high-contrast-active .mdc-text-field--disabled .mdc-floating-label{z-index:1}.mdc-text-field--filled.mdc-text-field--no-label .mdc-floating-label{display:none}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-floating-label{color:var(--mdc-filled-text-field-label-text-color, var(--mat-app-on-surface-variant))}.mdc-text-field--filled:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-floating-label{color:var(--mdc-filled-text-field-focus-label-text-color, var(--mat-app-primary))}.mdc-text-field--filled:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-floating-label{color:var(--mdc-filled-text-field-hover-label-text-color, var(--mat-app-on-surface-variant))}.mdc-text-field--filled.mdc-text-field--disabled .mdc-floating-label{color:var(--mdc-filled-text-field-disabled-label-text-color)}.mdc-text-field--filled:not(.mdc-text-field--disabled).mdc-text-field--invalid .mdc-floating-label{color:var(--mdc-filled-text-field-error-label-text-color, var(--mat-app-error))}.mdc-text-field--filled:not(.mdc-text-field--disabled).mdc-text-field--invalid.mdc-text-field--focused .mdc-floating-label{color:var(--mdc-filled-text-field-error-focus-label-text-color, var(--mat-app-error))}.mdc-text-field--filled:not(.mdc-text-field--disabled).mdc-text-field--invalid:not(.mdc-text-field--disabled):hover .mdc-floating-label{color:var(--mdc-filled-text-field-error-hover-label-text-color, var(--mat-app-on-error-container))}.mdc-text-field--filled .mdc-floating-label{font-family:var(--mdc-filled-text-field-label-text-font, var(--mat-app-body-large-font));font-size:var(--mdc-filled-text-field-label-text-size, var(--mat-app-body-large-size));font-weight:var(--mdc-filled-text-field-label-text-weight, var(--mat-app-body-large-weight));letter-spacing:var(--mdc-filled-text-field-label-text-tracking, var(--mat-app-body-large-tracking))}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-floating-label{color:var(--mdc-outlined-text-field-label-text-color, var(--mat-app-on-surface-variant))}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-floating-label{color:var(--mdc-outlined-text-field-focus-label-text-color, var(--mat-app-primary))}.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-floating-label{color:var(--mdc-outlined-text-field-hover-label-text-color, var(--mat-app-on-surface))}.mdc-text-field--outlined.mdc-text-field--disabled .mdc-floating-label{color:var(--mdc-outlined-text-field-disabled-label-text-color)}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--invalid .mdc-floating-label{color:var(--mdc-outlined-text-field-error-label-text-color, var(--mat-app-error))}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--invalid.mdc-text-field--focused .mdc-floating-label{color:var(--mdc-outlined-text-field-error-focus-label-text-color, var(--mat-app-error))}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--invalid:not(.mdc-text-field--disabled):hover .mdc-floating-label{color:var(--mdc-outlined-text-field-error-hover-label-text-color, var(--mat-app-on-error-container))}.mdc-text-field--outlined .mdc-floating-label{font-family:var(--mdc-outlined-text-field-label-text-font, var(--mat-app-body-large-font));font-size:var(--mdc-outlined-text-field-label-text-size, var(--mat-app-body-large-size));font-weight:var(--mdc-outlined-text-field-label-text-weight, var(--mat-app-body-large-weight));letter-spacing:var(--mdc-outlined-text-field-label-text-tracking, var(--mat-app-body-large-tracking))}.mdc-floating-label--float-above{cursor:auto;transform:translateY(-106%) scale(0.75)}.mdc-text-field--filled .mdc-floating-label--float-above{transform:translateY(-106%) scale(0.75)}.mdc-text-field--outlined .mdc-floating-label--float-above{transform:translateY(-37.25px) scale(1);font-size:.75rem}.mdc-notched-outline .mdc-floating-label--float-above{text-overflow:clip}.mdc-notched-outline--upgraded .mdc-floating-label--float-above{max-width:133.3333333333%}.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{transform:translateY(-34.75px) scale(0.75)}.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:1rem}.mdc-floating-label--required:not(.mdc-floating-label--hide-required-marker)::after{margin-left:1px;margin-right:0;content:"*"}[dir=rtl] .mdc-floating-label--required:not(.mdc-floating-label--hide-required-marker)::after{margin-left:0;margin-right:1px}.mdc-notched-outline{display:flex;position:absolute;top:0;right:0;left:0;box-sizing:border-box;width:100%;max-width:100%;height:100%;text-align:left;pointer-events:none}[dir=rtl] .mdc-notched-outline{text-align:right}.mdc-text-field--outlined .mdc-notched-outline{z-index:1}.mat-mdc-notch-piece{box-sizing:border-box;height:100%;pointer-events:none;border-top:1px solid;border-bottom:1px solid}.mdc-text-field--focused .mat-mdc-notch-piece{border-width:2px}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mat-mdc-notch-piece{border-color:var(--mdc-outlined-text-field-outline-color, var(--mat-app-outline));border-width:var(--mdc-outlined-text-field-outline-width)}.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mat-mdc-notch-piece{border-color:var(--mdc-outlined-text-field-hover-outline-color, var(--mat-app-on-surface))}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mat-mdc-notch-piece{border-color:var(--mdc-outlined-text-field-focus-outline-color, var(--mat-app-primary))}.mdc-text-field--outlined.mdc-text-field--disabled .mat-mdc-notch-piece{border-color:var(--mdc-outlined-text-field-disabled-outline-color)}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--invalid .mat-mdc-notch-piece{border-color:var(--mdc-outlined-text-field-error-outline-color, var(--mat-app-error))}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--invalid:not(.mdc-text-field--focused):hover .mdc-notched-outline .mat-mdc-notch-piece{border-color:var(--mdc-outlined-text-field-error-hover-outline-color, var(--mat-app-on-error-container))}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--invalid.mdc-text-field--focused .mat-mdc-notch-piece{border-color:var(--mdc-outlined-text-field-error-focus-outline-color, var(--mat-app-error))}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline .mat-mdc-notch-piece{border-width:var(--mdc-outlined-text-field-focus-outline-width)}.mdc-notched-outline__leading{border-left:1px solid;border-right:none;border-top-right-radius:0;border-bottom-right-radius:0;border-top-left-radius:var(--mdc-outlined-text-field-container-shape, var(--mat-app-corner-extra-small));border-bottom-left-radius:var(--mdc-outlined-text-field-container-shape, var(--mat-app-corner-extra-small))}.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading{width:max(12px,var(--mdc-outlined-text-field-container-shape, var(--mat-app-corner-extra-small)))}[dir=rtl] .mdc-notched-outline__leading{border-left:none;border-right:1px solid;border-bottom-left-radius:0;border-top-left-radius:0;border-top-right-radius:var(--mdc-outlined-text-field-container-shape, var(--mat-app-corner-extra-small));border-bottom-right-radius:var(--mdc-outlined-text-field-container-shape, var(--mat-app-corner-extra-small))}.mdc-notched-outline__trailing{flex-grow:1;border-left:none;border-right:1px solid;border-top-left-radius:0;border-bottom-left-radius:0;border-top-right-radius:var(--mdc-outlined-text-field-container-shape, var(--mat-app-corner-extra-small));border-bottom-right-radius:var(--mdc-outlined-text-field-container-shape, var(--mat-app-corner-extra-small))}[dir=rtl] .mdc-notched-outline__trailing{border-left:1px solid;border-right:none;border-top-right-radius:0;border-bottom-right-radius:0;border-top-left-radius:var(--mdc-outlined-text-field-container-shape, var(--mat-app-corner-extra-small));border-bottom-left-radius:var(--mdc-outlined-text-field-container-shape, var(--mat-app-corner-extra-small))}.mdc-notched-outline__notch{flex:0 0 auto;width:auto}.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__notch{max-width:min(var(--mat-form-field-notch-max-width, 100%),100% - max(12px,var(--mdc-outlined-text-field-container-shape, var(--mat-app-corner-extra-small)))*2)}.mdc-text-field--outlined .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-top:1px}.mdc-text-field--focused.mdc-text-field--outlined .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-top:2px}.mdc-notched-outline--notched .mdc-notched-outline__notch{padding-left:0;padding-right:8px;border-top:none;--mat-form-field-notch-max-width: 100%}[dir=rtl] .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-left:8px;padding-right:0}.mdc-notched-outline--no-label .mdc-notched-outline__notch{display:none}.mdc-line-ripple::before,.mdc-line-ripple::after{position:absolute;bottom:0;left:0;width:100%;border-bottom-style:solid;content:""}.mdc-line-ripple::before{z-index:1;border-bottom-width:var(--mdc-filled-text-field-active-indicator-height)}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-line-ripple::before{border-bottom-color:var(--mdc-filled-text-field-active-indicator-color, var(--mat-app-on-surface-variant))}.mdc-text-field--filled:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-line-ripple::before{border-bottom-color:var(--mdc-filled-text-field-hover-active-indicator-color, var(--mat-app-on-surface))}.mdc-text-field--filled.mdc-text-field--disabled .mdc-line-ripple::before{border-bottom-color:var(--mdc-filled-text-field-disabled-active-indicator-color)}.mdc-text-field--filled:not(.mdc-text-field--disabled).mdc-text-field--invalid .mdc-line-ripple::before{border-bottom-color:var(--mdc-filled-text-field-error-active-indicator-color, var(--mat-app-error))}.mdc-text-field--filled:not(.mdc-text-field--disabled).mdc-text-field--invalid:not(.mdc-text-field--focused):hover .mdc-line-ripple::before{border-bottom-color:var(--mdc-filled-text-field-error-hover-active-indicator-color, var(--mat-app-on-error-container))}.mdc-line-ripple::after{transform:scaleX(0);opacity:0;z-index:2}.mdc-text-field--filled .mdc-line-ripple::after{border-bottom-width:var(--mdc-filled-text-field-focus-active-indicator-height)}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-line-ripple::after{border-bottom-color:var(--mdc-filled-text-field-focus-active-indicator-color, var(--mat-app-primary))}.mdc-text-field--filled.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple::after{border-bottom-color:var(--mdc-filled-text-field-error-focus-active-indicator-color, var(--mat-app-error))}.mdc-line-ripple--active::after{transform:scaleX(1);opacity:1}.mdc-line-ripple--deactivating::after{opacity:0}.mdc-text-field--disabled{pointer-events:none}.mat-mdc-form-field-textarea-control{vertical-align:middle;resize:vertical;box-sizing:border-box;height:auto;margin:0;padding:0;border:none;overflow:auto}.mat-mdc-form-field-input-control.mat-mdc-form-field-input-control{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font:inherit;letter-spacing:inherit;text-decoration:inherit;text-transform:inherit;border:none}.mat-mdc-form-field .mat-mdc-floating-label.mdc-floating-label{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;line-height:normal;pointer-events:all;will-change:auto}.mat-mdc-form-field:not(.mat-form-field-disabled) .mat-mdc-floating-label.mdc-floating-label{cursor:inherit}.mdc-text-field--no-label:not(.mdc-text-field--textarea) .mat-mdc-form-field-input-control.mdc-text-field__input,.mat-mdc-text-field-wrapper .mat-mdc-form-field-input-control{height:auto}.mat-mdc-text-field-wrapper .mat-mdc-form-field-input-control.mdc-text-field__input[type=color]{height:23px}.mat-mdc-text-field-wrapper{height:auto;flex:auto;will-change:auto}.mat-mdc-form-field-has-icon-prefix .mat-mdc-text-field-wrapper{padding-left:0;--mat-mdc-form-field-label-offset-x: -16px}.mat-mdc-form-field-has-icon-suffix .mat-mdc-text-field-wrapper{padding-right:0}[dir=rtl] .mat-mdc-text-field-wrapper{padding-left:16px;padding-right:16px}[dir=rtl] .mat-mdc-form-field-has-icon-suffix .mat-mdc-text-field-wrapper{padding-left:0}[dir=rtl] .mat-mdc-form-field-has-icon-prefix .mat-mdc-text-field-wrapper{padding-right:0}.mat-form-field-disabled .mdc-text-field__input::placeholder{color:var(--mat-form-field-disabled-input-text-placeholder-color)}.mat-form-field-disabled .mdc-text-field__input::-moz-placeholder{color:var(--mat-form-field-disabled-input-text-placeholder-color)}.mat-form-field-disabled .mdc-text-field__input::-webkit-input-placeholder{color:var(--mat-form-field-disabled-input-text-placeholder-color)}.mat-form-field-disabled .mdc-text-field__input:-ms-input-placeholder{color:var(--mat-form-field-disabled-input-text-placeholder-color)}.mat-mdc-form-field-label-always-float .mdc-text-field__input::placeholder{transition-delay:40ms;transition-duration:110ms;opacity:1}.mat-mdc-text-field-wrapper .mat-mdc-form-field-infix .mat-mdc-floating-label{left:auto;right:auto}.mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-text-field__input{display:inline-block}.mat-mdc-form-field .mat-mdc-text-field-wrapper.mdc-text-field .mdc-notched-outline__notch{padding-top:0}.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field .mdc-notched-outline__notch{border-left:1px solid rgba(0,0,0,0)}[dir=rtl] .mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field .mdc-notched-outline__notch{border-left:none;border-right:1px solid rgba(0,0,0,0)}.mat-mdc-form-field-infix{min-height:var(--mat-form-field-container-height);padding-top:var(--mat-form-field-filled-with-label-container-padding-top);padding-bottom:var(--mat-form-field-filled-with-label-container-padding-bottom)}.mdc-text-field--outlined .mat-mdc-form-field-infix,.mdc-text-field--no-label .mat-mdc-form-field-infix{padding-top:var(--mat-form-field-container-vertical-padding);padding-bottom:var(--mat-form-field-container-vertical-padding)}.mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label{top:calc(var(--mat-form-field-container-height)/2)}.mdc-text-field--filled .mat-mdc-floating-label{display:var(--mat-form-field-filled-label-display, block)}.mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{--mat-mdc-form-field-label-transform: translateY(calc(calc(6.75px + var(--mat-form-field-container-height) / 2) * -1)) scale(var(--mat-mdc-form-field-floating-label-scale, 0.75));transform:var(--mat-mdc-form-field-label-transform)}.mat-mdc-form-field-subscript-wrapper{box-sizing:border-box;width:100%;position:relative}.mat-mdc-form-field-hint-wrapper,.mat-mdc-form-field-error-wrapper{position:absolute;top:0;left:0;right:0;padding:0 16px}.mat-mdc-form-field-subscript-dynamic-size .mat-mdc-form-field-hint-wrapper,.mat-mdc-form-field-subscript-dynamic-size .mat-mdc-form-field-error-wrapper{position:static}.mat-mdc-form-field-bottom-align::before{content:"";display:inline-block;height:16px}.mat-mdc-form-field-bottom-align.mat-mdc-form-field-subscript-dynamic-size::before{content:unset}.mat-mdc-form-field-hint-end{order:1}.mat-mdc-form-field-hint-wrapper{display:flex}.mat-mdc-form-field-hint-spacer{flex:1 0 1em}.mat-mdc-form-field-error{display:block;color:var(--mat-form-field-error-text-color, var(--mat-app-error))}.mat-mdc-form-field-subscript-wrapper,.mat-mdc-form-field-bottom-align::before{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mat-form-field-subscript-text-font, var(--mat-app-body-small-font));line-height:var(--mat-form-field-subscript-text-line-height, var(--mat-app-body-small-line-height));font-size:var(--mat-form-field-subscript-text-size, var(--mat-app-body-small-size));letter-spacing:var(--mat-form-field-subscript-text-tracking, var(--mat-app-body-small-tracking));font-weight:var(--mat-form-field-subscript-text-weight, var(--mat-app-body-small-weight))}.mat-mdc-form-field-focus-overlay{top:0;left:0;right:0;bottom:0;position:absolute;opacity:0;pointer-events:none;background-color:var(--mat-form-field-state-layer-color, var(--mat-app-on-surface))}.mat-mdc-text-field-wrapper:hover .mat-mdc-form-field-focus-overlay{opacity:var(--mat-form-field-hover-state-layer-opacity, var(--mat-app-hover-state-layer-opacity))}.mat-mdc-form-field.mat-focused .mat-mdc-form-field-focus-overlay{opacity:var(--mat-form-field-focus-state-layer-opacity)}select.mat-mdc-form-field-input-control{-moz-appearance:none;-webkit-appearance:none;background-color:rgba(0,0,0,0);display:inline-flex;box-sizing:border-box}select.mat-mdc-form-field-input-control:not(:disabled){cursor:pointer}select.mat-mdc-form-field-input-control:not(.mat-mdc-native-select-inline) option{color:var(--mat-form-field-select-option-text-color)}select.mat-mdc-form-field-input-control:not(.mat-mdc-native-select-inline) option:disabled{color:var(--mat-form-field-select-disabled-option-text-color)}.mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-infix::after{content:"";width:0;height:0;border-left:5px solid rgba(0,0,0,0);border-right:5px solid rgba(0,0,0,0);border-top:5px solid;position:absolute;right:0;top:50%;margin-top:-2.5px;pointer-events:none;color:var(--mat-form-field-enabled-select-arrow-color, var(--mat-app-on-surface-variant))}[dir=rtl] .mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-infix::after{right:auto;left:0}.mat-mdc-form-field-type-mat-native-select.mat-focused .mat-mdc-form-field-infix::after{color:var(--mat-form-field-focus-select-arrow-color, var(--mat-app-primary))}.mat-mdc-form-field-type-mat-native-select.mat-form-field-disabled .mat-mdc-form-field-infix::after{color:var(--mat-form-field-disabled-select-arrow-color)}.mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-input-control{padding-right:15px}[dir=rtl] .mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-input-control{padding-right:0;padding-left:15px}.cdk-high-contrast-active .mat-form-field-appearance-fill .mat-mdc-text-field-wrapper{outline:solid 1px}.cdk-high-contrast-active .mat-form-field-appearance-fill.mat-form-field-disabled .mat-mdc-text-field-wrapper{outline-color:GrayText}.cdk-high-contrast-active .mat-form-field-appearance-fill.mat-focused .mat-mdc-text-field-wrapper{outline:dashed 3px}.cdk-high-contrast-active .mat-mdc-form-field.mat-focused .mdc-notched-outline{border:dashed 3px}.mat-mdc-form-field-input-control[type=date],.mat-mdc-form-field-input-control[type=datetime],.mat-mdc-form-field-input-control[type=datetime-local],.mat-mdc-form-field-input-control[type=month],.mat-mdc-form-field-input-control[type=week],.mat-mdc-form-field-input-control[type=time]{line-height:1}.mat-mdc-form-field-input-control::-webkit-datetime-edit{line-height:1;padding:0;margin-bottom:-2px}.mat-mdc-form-field{--mat-mdc-form-field-floating-label-scale: 0.75;display:inline-flex;flex-direction:column;min-width:0;text-align:left;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mat-form-field-container-text-font, var(--mat-app-body-large-font));line-height:var(--mat-form-field-container-text-line-height, var(--mat-app-body-large-line-height));font-size:var(--mat-form-field-container-text-size, var(--mat-app-body-large-size));letter-spacing:var(--mat-form-field-container-text-tracking, var(--mat-app-body-large-tracking));font-weight:var(--mat-form-field-container-text-weight, var(--mat-app-body-large-weight))}[dir=rtl] .mat-mdc-form-field{text-align:right}.mat-mdc-form-field .mdc-text-field--outlined .mdc-floating-label--float-above{font-size:calc(var(--mat-form-field-outlined-label-text-populated-size)*var(--mat-mdc-form-field-floating-label-scale))}.mat-mdc-form-field .mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:var(--mat-form-field-outlined-label-text-populated-size)}.mat-mdc-form-field-flex{display:inline-flex;align-items:baseline;box-sizing:border-box;width:100%}.mat-mdc-text-field-wrapper{width:100%;z-index:0}.mat-mdc-form-field-icon-prefix,.mat-mdc-form-field-icon-suffix{align-self:center;line-height:0;pointer-events:auto;position:relative;z-index:1}.mat-mdc-form-field-icon-prefix>.mat-icon,.mat-mdc-form-field-icon-suffix>.mat-icon{padding:0 12px;box-sizing:content-box}.mat-mdc-form-field-icon-prefix{color:var(--mat-form-field-leading-icon-color, var(--mat-app-on-surface-variant))}.mat-form-field-disabled .mat-mdc-form-field-icon-prefix{color:var(--mat-form-field-disabled-leading-icon-color)}.mat-mdc-form-field-icon-suffix{color:var(--mat-form-field-trailing-icon-color, var(--mat-app-on-surface-variant))}.mat-form-field-disabled .mat-mdc-form-field-icon-suffix{color:var(--mat-form-field-disabled-trailing-icon-color)}.mat-form-field-invalid .mat-mdc-form-field-icon-suffix{color:var(--mat-form-field-error-trailing-icon-color, var(--mat-app-error))}.mat-form-field-invalid:not(.mat-focused):not(.mat-form-field-disabled) .mat-mdc-text-field-wrapper:hover .mat-mdc-form-field-icon-suffix{color:var(--mat-form-field-error-hover-trailing-icon-color, var(--mat-app-on-error-container))}.mat-form-field-invalid.mat-focused .mat-mdc-text-field-wrapper .mat-mdc-form-field-icon-suffix{color:var(--mat-form-field-error-focus-trailing-icon-color, var(--mat-app-error))}.mat-mdc-form-field-icon-prefix,[dir=rtl] .mat-mdc-form-field-icon-suffix{padding:0 4px 0 0}.mat-mdc-form-field-icon-suffix,[dir=rtl] .mat-mdc-form-field-icon-prefix{padding:0 0 0 4px}.mat-mdc-form-field-subscript-wrapper .mat-icon,.mat-mdc-form-field label .mat-icon{width:1em;height:1em;font-size:inherit}.mat-mdc-form-field-infix{flex:auto;min-width:0;width:180px;position:relative;box-sizing:border-box}.mat-mdc-form-field .mdc-notched-outline__notch{margin-left:-1px;-webkit-clip-path:inset(-9em -999em -9em 1px);clip-path:inset(-9em -999em -9em 1px)}[dir=rtl] .mat-mdc-form-field .mdc-notched-outline__notch{margin-left:0;margin-right:-1px;-webkit-clip-path:inset(-9em 1px -9em -999em);clip-path:inset(-9em 1px -9em -999em)}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-floating-label{transition:transform 150ms cubic-bezier(0.4, 0, 0.2, 1),color 150ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input{transition:opacity 150ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input::placeholder{transition:opacity 67ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input::-moz-placeholder{transition:opacity 67ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input::-webkit-input-placeholder{transition:opacity 67ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input:-ms-input-placeholder{transition:opacity 67ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-mdc-form-field:not(.mat-form-field-no-animations).mdc-text-field--no-label .mdc-text-field__input::placeholder,.mat-mdc-form-field:not(.mat-form-field-no-animations).mdc-text-field--focused .mdc-text-field__input::placeholder{transition-delay:40ms;transition-duration:110ms}.mat-mdc-form-field:not(.mat-form-field-no-animations).mdc-text-field--no-label .mdc-text-field__input::-moz-placeholder,.mat-mdc-form-field:not(.mat-form-field-no-animations).mdc-text-field--focused .mdc-text-field__input::-moz-placeholder{transition-delay:40ms;transition-duration:110ms}.mat-mdc-form-field:not(.mat-form-field-no-animations).mdc-text-field--no-label .mdc-text-field__input::-webkit-input-placeholder,.mat-mdc-form-field:not(.mat-form-field-no-animations).mdc-text-field--focused .mdc-text-field__input::-webkit-input-placeholder{transition-delay:40ms;transition-duration:110ms}.mat-mdc-form-field:not(.mat-form-field-no-animations).mdc-text-field--no-label .mdc-text-field__input:-ms-input-placeholder,.mat-mdc-form-field:not(.mat-form-field-no-animations).mdc-text-field--focused .mdc-text-field__input:-ms-input-placeholder{transition-delay:40ms;transition-duration:110ms}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--filled:not(.mdc-ripple-upgraded):focus .mdc-text-field__ripple::before{transition-duration:75ms}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-line-ripple::after{transition:transform 180ms cubic-bezier(0.4, 0, 0.2, 1),opacity 180ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-notched-outline .mdc-floating-label{max-width:calc(100% + 1px)}.mdc-notched-outline--upgraded .mdc-floating-label--float-above{max-width:calc(133.3333333333% + 1px)}'],encapsulation:2,data:{animation:[Vw.transitionMessages]},changeDetection:0})}}return i})(),Bn=(()=>{class i{static{this.\u0275fac=function(t){return new(t||i)}}static{this.\u0275mod=j({type:i})}static{this.\u0275inj=L({imports:[K,yt,ws,K]})}}return i})();var Qw=["*"];var Uw=[[["","mat-card-avatar",""],["","matCardAvatar",""]],[["mat-card-title"],["mat-card-subtitle"],["","mat-card-title",""],["","mat-card-subtitle",""],["","matCardTitle",""],["","matCardSubtitle",""]],"*"],qw=["[mat-card-avatar], [matCardAvatar]",`mat-card-title, mat-card-subtitle, + [mat-card-title], [mat-card-subtitle], + [matCardTitle], [matCardSubtitle]`,"*"],Ww=new C("MAT_CARD_CONFIG"),ej=(()=>{class i{constructor(e){this.appearance=e?.appearance||"raised"}static{this.\u0275fac=function(t){return new(t||i)(u(Ww,8))}}static{this.\u0275cmp=H({type:i,selectors:[["mat-card"]],hostAttrs:[1,"mat-mdc-card","mdc-card"],hostVars:4,hostBindings:function(t,r){t&2&&P("mat-mdc-card-outlined",r.appearance==="outlined")("mdc-card--outlined",r.appearance==="outlined")},inputs:{appearance:"appearance"},exportAs:["matCard"],standalone:!0,features:[Q],ngContentSelectors:Qw,decls:1,vars:0,template:function(t,r){t&1&&(se(),A(0))},styles:['.mat-mdc-card{display:flex;flex-direction:column;box-sizing:border-box;position:relative;border-style:solid;border-width:0;background-color:var(--mdc-elevated-card-container-color, var(--mat-app-surface));border-color:var(--mdc-elevated-card-container-color, var(--mat-app-surface));border-radius:var(--mdc-elevated-card-container-shape, var(--mat-app-corner-medium));box-shadow:var(--mdc-elevated-card-container-elevation, var(--mat-app-level1))}.mat-mdc-card::after{position:absolute;top:0;left:0;width:100%;height:100%;border:solid 1px rgba(0,0,0,0);content:"";display:block;pointer-events:none;box-sizing:border-box;border-radius:var(--mdc-elevated-card-container-shape, var(--mat-app-corner-medium))}.mat-mdc-card-outlined{background-color:var(--mdc-outlined-card-container-color, var(--mat-app-surface));border-radius:var(--mdc-outlined-card-container-shape, var(--mat-app-corner-medium));border-width:var(--mdc-outlined-card-outline-width);border-color:var(--mdc-outlined-card-outline-color, var(--mat-app-outline-variant));box-shadow:var(--mdc-outlined-card-container-elevation, var(--mat-app-level0))}.mat-mdc-card-outlined::after{border:none}.mdc-card__media{position:relative;box-sizing:border-box;background-repeat:no-repeat;background-position:center;background-size:cover}.mdc-card__media::before{display:block;content:""}.mdc-card__media:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.mdc-card__media:last-child{border-bottom-left-radius:inherit;border-bottom-right-radius:inherit}.mat-mdc-card-actions{display:flex;flex-direction:row;align-items:center;box-sizing:border-box;min-height:52px;padding:8px}.mat-mdc-card-title{font-family:var(--mat-card-title-text-font, var(--mat-app-title-large-font));line-height:var(--mat-card-title-text-line-height, var(--mat-app-title-large-line-height));font-size:var(--mat-card-title-text-size, var(--mat-app-title-large-size));letter-spacing:var(--mat-card-title-text-tracking, var(--mat-app-title-large-tracking));font-weight:var(--mat-card-title-text-weight, var(--mat-app-title-large-weight))}.mat-mdc-card-subtitle{color:var(--mat-card-subtitle-text-color, var(--mat-app-on-surface));font-family:var(--mat-card-subtitle-text-font, var(--mat-app-title-medium-font));line-height:var(--mat-card-subtitle-text-line-height, var(--mat-app-title-medium-line-height));font-size:var(--mat-card-subtitle-text-size, var(--mat-app-title-medium-size));letter-spacing:var(--mat-card-subtitle-text-tracking, var(--mat-app-title-medium-tracking));font-weight:var(--mat-card-subtitle-text-weight, var(--mat-app-title-medium-weight))}.mat-mdc-card-title,.mat-mdc-card-subtitle{display:block;margin:0}.mat-mdc-card-avatar~.mat-mdc-card-header-text .mat-mdc-card-title,.mat-mdc-card-avatar~.mat-mdc-card-header-text .mat-mdc-card-subtitle{padding:16px 16px 0}.mat-mdc-card-header{display:flex;padding:16px 16px 0}.mat-mdc-card-content{display:block;padding:0 16px}.mat-mdc-card-content:first-child{padding-top:16px}.mat-mdc-card-content:last-child{padding-bottom:16px}.mat-mdc-card-title-group{display:flex;justify-content:space-between;width:100%}.mat-mdc-card-avatar{height:40px;width:40px;border-radius:50%;flex-shrink:0;margin-bottom:16px;object-fit:cover}.mat-mdc-card-avatar~.mat-mdc-card-header-text .mat-mdc-card-subtitle,.mat-mdc-card-avatar~.mat-mdc-card-header-text .mat-mdc-card-title{line-height:normal}.mat-mdc-card-sm-image{width:80px;height:80px}.mat-mdc-card-md-image{width:112px;height:112px}.mat-mdc-card-lg-image{width:152px;height:152px}.mat-mdc-card-xl-image{width:240px;height:240px}.mat-mdc-card-subtitle~.mat-mdc-card-title,.mat-mdc-card-title~.mat-mdc-card-subtitle,.mat-mdc-card-header .mat-mdc-card-header-text .mat-mdc-card-title,.mat-mdc-card-header .mat-mdc-card-header-text .mat-mdc-card-subtitle,.mat-mdc-card-title-group .mat-mdc-card-title,.mat-mdc-card-title-group .mat-mdc-card-subtitle{padding-top:0}.mat-mdc-card-content>:last-child:not(.mat-mdc-card-footer){margin-bottom:0}.mat-mdc-card-actions-align-end{justify-content:flex-end}'],encapsulation:2,changeDetection:0})}}return i})(),tj=(()=>{class i{static{this.\u0275fac=function(t){return new(t||i)}}static{this.\u0275dir=D({type:i,selectors:[["mat-card-title"],["","mat-card-title",""],["","matCardTitle",""]],hostAttrs:[1,"mat-mdc-card-title"],standalone:!0})}}return i})();var ij=(()=>{class i{static{this.\u0275fac=function(t){return new(t||i)}}static{this.\u0275dir=D({type:i,selectors:[["mat-card-content"]],hostAttrs:[1,"mat-mdc-card-content"],standalone:!0})}}return i})(),nj=(()=>{class i{static{this.\u0275fac=function(t){return new(t||i)}}static{this.\u0275dir=D({type:i,selectors:[["mat-card-subtitle"],["","mat-card-subtitle",""],["","matCardSubtitle",""]],hostAttrs:[1,"mat-mdc-card-subtitle"],standalone:!0})}}return i})(),rj=(()=>{class i{constructor(){this.align="start"}static{this.\u0275fac=function(t){return new(t||i)}}static{this.\u0275dir=D({type:i,selectors:[["mat-card-actions"]],hostAttrs:[1,"mat-mdc-card-actions","mdc-card__actions"],hostVars:2,hostBindings:function(t,r){t&2&&P("mat-mdc-card-actions-align-end",r.align==="end")},inputs:{align:"align"},exportAs:["matCardActions"],standalone:!0})}}return i})(),oj=(()=>{class i{static{this.\u0275fac=function(t){return new(t||i)}}static{this.\u0275cmp=H({type:i,selectors:[["mat-card-header"]],hostAttrs:[1,"mat-mdc-card-header"],standalone:!0,features:[Q],ngContentSelectors:qw,decls:4,vars:0,consts:[[1,"mat-mdc-card-header-text"]],template:function(t,r){t&1&&(se(Uw),A(0),w(1,"div",0),A(2,1),I(),A(3,2))},encapsulation:2,changeDetection:0})}}return i})();var aj=(()=>{class i{static{this.\u0275fac=function(t){return new(t||i)}}static{this.\u0275dir=D({type:i,selectors:[["","mat-card-avatar",""],["","matCardAvatar",""]],hostAttrs:[1,"mat-mdc-card-avatar"],standalone:!0})}}return i})();var Jf=(()=>{class i{static{this.\u0275fac=function(t){return new(t||i)}}static{this.\u0275mod=j({type:i})}static{this.\u0275inj=L({imports:[K,yt,K]})}}return i})();var Gw=["input"],$w=["label"],Yw=["*"],Kw=new C("mat-checkbox-default-options",{providedIn:"root",factory:tg});function tg(){return{color:"accent",clickAction:"check-indeterminate",disabledInteractive:!1}}var kt=function(i){return i[i.Init=0]="Init",i[i.Checked=1]="Checked",i[i.Unchecked=2]="Unchecked",i[i.Indeterminate=3]="Indeterminate",i}(kt||{}),Xw={provide:vn,useExisting:Lt(()=>ig),multi:!0},xd=class{},Zw=0,eg=tg(),ig=(()=>{class i{focus(){this._inputElement.nativeElement.focus()}_createChangeEvent(e){let t=new xd;return t.source=this,t.checked=e,t}_getAnimationTargetElement(){return this._inputElement?.nativeElement}get inputId(){return`${this.id||this._uniqueId}-input`}constructor(e,t,r,o,a,s){this._elementRef=e,this._changeDetectorRef=t,this._ngZone=r,this._animationMode=a,this._options=s,this._animationClasses={uncheckedToChecked:"mdc-checkbox--anim-unchecked-checked",uncheckedToIndeterminate:"mdc-checkbox--anim-unchecked-indeterminate",checkedToUnchecked:"mdc-checkbox--anim-checked-unchecked",checkedToIndeterminate:"mdc-checkbox--anim-checked-indeterminate",indeterminateToChecked:"mdc-checkbox--anim-indeterminate-checked",indeterminateToUnchecked:"mdc-checkbox--anim-indeterminate-unchecked"},this.ariaLabel="",this.ariaLabelledby=null,this.labelPosition="after",this.name=null,this.change=new z,this.indeterminateChange=new z,this._onTouched=()=>{},this._currentAnimationClass="",this._currentCheckState=kt.Init,this._controlValueAccessorChangeFn=()=>{},this._validatorChangeFn=()=>{},this._checked=!1,this._disabled=!1,this._indeterminate=!1,this._options=this._options||eg,this.color=this._options.color||eg.color,this.tabIndex=parseInt(o)||0,this.id=this._uniqueId=`mat-mdc-checkbox-${++Zw}`,this.disabledInteractive=s?.disabledInteractive??!1}ngOnChanges(e){e.required&&this._validatorChangeFn()}ngAfterViewInit(){this._syncIndeterminate(this._indeterminate)}get checked(){return this._checked}set checked(e){e!=this.checked&&(this._checked=e,this._changeDetectorRef.markForCheck())}get disabled(){return this._disabled}set disabled(e){e!==this.disabled&&(this._disabled=e,this._changeDetectorRef.markForCheck())}get indeterminate(){return this._indeterminate}set indeterminate(e){let t=e!=this._indeterminate;this._indeterminate=e,t&&(this._indeterminate?this._transitionCheckState(kt.Indeterminate):this._transitionCheckState(this.checked?kt.Checked:kt.Unchecked),this.indeterminateChange.emit(this._indeterminate)),this._syncIndeterminate(this._indeterminate)}_isRippleDisabled(){return this.disableRipple||this.disabled}_onLabelTextChange(){this._changeDetectorRef.detectChanges()}writeValue(e){this.checked=!!e}registerOnChange(e){this._controlValueAccessorChangeFn=e}registerOnTouched(e){this._onTouched=e}setDisabledState(e){this.disabled=e}validate(e){return this.required&&e.value!==!0?{required:!0}:null}registerOnValidatorChange(e){this._validatorChangeFn=e}_transitionCheckState(e){let t=this._currentCheckState,r=this._getAnimationTargetElement();if(!(t===e||!r)&&(this._currentAnimationClass&&r.classList.remove(this._currentAnimationClass),this._currentAnimationClass=this._getAnimationClassForCheckStateTransition(t,e),this._currentCheckState=e,this._currentAnimationClass.length>0)){r.classList.add(this._currentAnimationClass);let o=this._currentAnimationClass;this._ngZone.runOutsideAngular(()=>{setTimeout(()=>{r.classList.remove(o)},1e3)})}}_emitChangeEvent(){this._controlValueAccessorChangeFn(this.checked),this.change.emit(this._createChangeEvent(this.checked)),this._inputElement&&(this._inputElement.nativeElement.checked=this.checked)}toggle(){this.checked=!this.checked,this._controlValueAccessorChangeFn(this.checked)}_handleInputClick(){let e=this._options?.clickAction;!this.disabled&&e!=="noop"?(this.indeterminate&&e!=="check"&&Promise.resolve().then(()=>{this._indeterminate=!1,this.indeterminateChange.emit(this._indeterminate)}),this._checked=!this._checked,this._transitionCheckState(this._checked?kt.Checked:kt.Unchecked),this._emitChangeEvent()):(this.disabled&&this.disabledInteractive||!this.disabled&&e==="noop")&&(this._inputElement.nativeElement.checked=this.checked,this._inputElement.nativeElement.indeterminate=this.indeterminate)}_onInteractionEvent(e){e.stopPropagation()}_onBlur(){Promise.resolve().then(()=>{this._onTouched(),this._changeDetectorRef.markForCheck()})}_getAnimationClassForCheckStateTransition(e,t){if(this._animationMode==="NoopAnimations")return"";switch(e){case kt.Init:if(t===kt.Checked)return this._animationClasses.uncheckedToChecked;if(t==kt.Indeterminate)return this._checked?this._animationClasses.checkedToIndeterminate:this._animationClasses.uncheckedToIndeterminate;break;case kt.Unchecked:return t===kt.Checked?this._animationClasses.uncheckedToChecked:this._animationClasses.uncheckedToIndeterminate;case kt.Checked:return t===kt.Unchecked?this._animationClasses.checkedToUnchecked:this._animationClasses.checkedToIndeterminate;case kt.Indeterminate:return t===kt.Checked?this._animationClasses.indeterminateToChecked:this._animationClasses.indeterminateToUnchecked}return""}_syncIndeterminate(e){let t=this._inputElement;t&&(t.nativeElement.indeterminate=e)}_onInputClick(){this._handleInputClick()}_onTouchTargetClick(){this._handleInputClick(),this.disabled||this._inputElement.nativeElement.focus()}_preventBubblingFromLabel(e){e.target&&this._labelElement.nativeElement.contains(e.target)&&e.stopPropagation()}static{this.\u0275fac=function(t){return new(t||i)(u(E),u(pe),u(B),It("tabindex"),u(we,8),u(Kw,8))}}static{this.\u0275cmp=H({type:i,selectors:[["mat-checkbox"]],viewQuery:function(t,r){if(t&1&&(re(Gw,5),re($w,5),re(ti,5)),t&2){let o;S(o=T())&&(r._inputElement=o.first),S(o=T())&&(r._labelElement=o.first),S(o=T())&&(r.ripple=o.first)}},hostAttrs:[1,"mat-mdc-checkbox"],hostVars:16,hostBindings:function(t,r){t&2&&(St("id",r.id),W("tabindex",null)("aria-label",null)("aria-labelledby",null),qe(r.color?"mat-"+r.color:"mat-accent"),P("_mat-animation-noopable",r._animationMode==="NoopAnimations")("mdc-checkbox--disabled",r.disabled)("mat-mdc-checkbox-disabled",r.disabled)("mat-mdc-checkbox-checked",r.checked)("mat-mdc-checkbox-disabled-interactive",r.disabledInteractive))},inputs:{ariaLabel:[0,"aria-label","ariaLabel"],ariaLabelledby:[0,"aria-labelledby","ariaLabelledby"],ariaDescribedby:[0,"aria-describedby","ariaDescribedby"],id:"id",required:[2,"required","required",O],labelPosition:"labelPosition",name:"name",value:"value",disableRipple:[2,"disableRipple","disableRipple",O],tabIndex:[2,"tabIndex","tabIndex",e=>e==null?void 0:$e(e)],color:"color",disabledInteractive:[2,"disabledInteractive","disabledInteractive",O],checked:[2,"checked","checked",O],disabled:[2,"disabled","disabled",O],indeterminate:[2,"indeterminate","indeterminate",O]},outputs:{change:"change",indeterminateChange:"indeterminateChange"},exportAs:["matCheckbox"],standalone:!0,features:[de([Xw,{provide:eo,useExisting:i,multi:!0}]),ae,Pe,Q],ngContentSelectors:Yw,decls:15,vars:20,consts:[["checkbox",""],["input",""],["label",""],["mat-internal-form-field","",3,"click","labelPosition"],[1,"mdc-checkbox"],[1,"mat-mdc-checkbox-touch-target",3,"click"],["type","checkbox",1,"mdc-checkbox__native-control",3,"blur","click","change","checked","indeterminate","disabled","id","required","tabIndex"],[1,"mdc-checkbox__ripple"],[1,"mdc-checkbox__background"],["focusable","false","viewBox","0 0 24 24","aria-hidden","true",1,"mdc-checkbox__checkmark"],["fill","none","d","M1.73,12.91 8.1,19.28 22.79,4.59",1,"mdc-checkbox__checkmark-path"],[1,"mdc-checkbox__mixedmark"],["mat-ripple","",1,"mat-mdc-checkbox-ripple","mat-mdc-focus-indicator",3,"matRippleTrigger","matRippleDisabled","matRippleCentered"],[1,"mdc-label",3,"for"]],template:function(t,r){if(t&1){let o=Ge();se(),w(0,"div",3),ee("click",function(s){return ce(o),le(r._preventBubblingFromLabel(s))}),w(1,"div",4,0)(3,"div",5),ee("click",function(){return ce(o),le(r._onTouchTargetClick())}),I(),w(4,"input",6,1),ee("blur",function(){return ce(o),le(r._onBlur())})("click",function(){return ce(o),le(r._onInputClick())})("change",function(s){return ce(o),le(r._onInteractionEvent(s))}),I(),ie(6,"div",7),w(7,"div",8),Wt(),w(8,"svg",9),ie(9,"path",10),I(),ea(),ie(10,"div",11),I(),ie(11,"div",12),I(),w(12,"label",13,2),A(14),I()()}if(t&2){let o=$t(2);ue("labelPosition",r.labelPosition),V(4),P("mdc-checkbox--selected",r.checked),ue("checked",r.checked)("indeterminate",r.indeterminate)("disabled",r.disabled&&!r.disabledInteractive)("id",r.inputId)("required",r.required)("tabIndex",r.disabled&&!r.disabledInteractive?-1:r.tabIndex),W("aria-label",r.ariaLabel||null)("aria-labelledby",r.ariaLabelledby)("aria-describedby",r.ariaDescribedby)("aria-checked",r.indeterminate?"mixed":null)("aria-disabled",r.disabled&&r.disabledInteractive?!0:null)("name",r.name)("value",r.value),V(7),ue("matRippleTrigger",o)("matRippleDisabled",r.disableRipple||r.disabled)("matRippleCentered",!0),V(),ue("for",r.inputId)}},dependencies:[ti,Ef],styles:['.mdc-checkbox{display:inline-block;position:relative;flex:0 0 18px;box-sizing:content-box;width:18px;height:18px;line-height:0;white-space:nowrap;cursor:pointer;vertical-align:bottom;padding:calc((var(--mdc-checkbox-state-layer-size, 40px) - 18px)/2);margin:calc((var(--mdc-checkbox-state-layer-size, 40px) - var(--mdc-checkbox-state-layer-size, 40px))/2)}.mdc-checkbox:hover .mdc-checkbox__ripple{opacity:var(--mdc-checkbox-unselected-hover-state-layer-opacity, var(--mat-app-hover-state-layer-opacity));background-color:var(--mdc-checkbox-unselected-hover-state-layer-color, var(--mat-app-on-surface))}.mdc-checkbox:hover .mat-mdc-checkbox-ripple .mat-ripple-element{background-color:var(--mdc-checkbox-unselected-hover-state-layer-color, var(--mat-app-on-surface))}.mdc-checkbox .mdc-checkbox__native-control:focus~.mdc-checkbox__ripple{opacity:var(--mdc-checkbox-unselected-focus-state-layer-opacity, var(--mat-app-focus-state-layer-opacity));background-color:var(--mdc-checkbox-unselected-focus-state-layer-color, var(--mat-app-on-surface))}.mdc-checkbox .mdc-checkbox__native-control:focus~.mat-mdc-checkbox-ripple .mat-ripple-element{background-color:var(--mdc-checkbox-unselected-focus-state-layer-color, var(--mat-app-on-surface))}.mdc-checkbox:active .mdc-checkbox__native-control~.mdc-checkbox__ripple{opacity:var(--mdc-checkbox-unselected-pressed-state-layer-opacity, var(--mat-app-pressed-state-layer-opacity));background-color:var(--mdc-checkbox-unselected-pressed-state-layer-color, var(--mat-app-primary))}.mdc-checkbox:active .mdc-checkbox__native-control~.mat-mdc-checkbox-ripple .mat-ripple-element{background-color:var(--mdc-checkbox-unselected-pressed-state-layer-color, var(--mat-app-primary))}.mdc-checkbox:hover .mdc-checkbox__native-control:checked~.mdc-checkbox__ripple{opacity:var(--mdc-checkbox-selected-hover-state-layer-opacity, var(--mat-app-hover-state-layer-opacity));background-color:var(--mdc-checkbox-selected-hover-state-layer-color, var(--mat-app-primary))}.mdc-checkbox:hover .mdc-checkbox__native-control:checked~.mat-mdc-checkbox-ripple .mat-ripple-element{background-color:var(--mdc-checkbox-selected-hover-state-layer-color, var(--mat-app-primary))}.mdc-checkbox .mdc-checkbox__native-control:focus:checked~.mdc-checkbox__ripple{opacity:var(--mdc-checkbox-selected-focus-state-layer-opacity, var(--mat-app-focus-state-layer-opacity));background-color:var(--mdc-checkbox-selected-focus-state-layer-color, var(--mat-app-primary))}.mdc-checkbox .mdc-checkbox__native-control:focus:checked~.mat-mdc-checkbox-ripple .mat-ripple-element{background-color:var(--mdc-checkbox-selected-focus-state-layer-color, var(--mat-app-primary))}.mdc-checkbox:active .mdc-checkbox__native-control:checked~.mdc-checkbox__ripple{opacity:var(--mdc-checkbox-selected-pressed-state-layer-opacity, var(--mat-app-pressed-state-layer-opacity));background-color:var(--mdc-checkbox-selected-pressed-state-layer-color, var(--mat-app-on-surface))}.mdc-checkbox:active .mdc-checkbox__native-control:checked~.mat-mdc-checkbox-ripple .mat-ripple-element{background-color:var(--mdc-checkbox-selected-pressed-state-layer-color, var(--mat-app-on-surface))}.mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox .mdc-checkbox__native-control~.mat-mdc-checkbox-ripple .mat-ripple-element,.mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox .mdc-checkbox__native-control~.mdc-checkbox__ripple{background-color:var(--mdc-checkbox-unselected-hover-state-layer-color, var(--mat-app-on-surface))}.mdc-checkbox .mdc-checkbox__native-control{position:absolute;margin:0;padding:0;opacity:0;cursor:inherit;width:var(--mdc-checkbox-state-layer-size, 40px);height:var(--mdc-checkbox-state-layer-size, 40px);top:calc((var(--mdc-checkbox-state-layer-size, 40px) - var(--mdc-checkbox-state-layer-size, 40px))/2);right:calc((var(--mdc-checkbox-state-layer-size, 40px) - var(--mdc-checkbox-state-layer-size, 40px))/2);left:calc((var(--mdc-checkbox-state-layer-size, 40px) - var(--mdc-checkbox-state-layer-size, 40px))/2)}.mdc-checkbox--disabled{cursor:default;pointer-events:none}.cdk-high-contrast-active .mdc-checkbox--disabled{opacity:.5}.mdc-checkbox__background{display:inline-flex;position:absolute;align-items:center;justify-content:center;box-sizing:border-box;width:18px;height:18px;border:2px solid currentColor;border-radius:2px;background-color:rgba(0,0,0,0);pointer-events:none;will-change:background-color,border-color;transition:background-color 90ms cubic-bezier(0.4, 0, 0.6, 1),border-color 90ms cubic-bezier(0.4, 0, 0.6, 1);-webkit-print-color-adjust:exact;color-adjust:exact;border-color:var(--mdc-checkbox-unselected-icon-color, var(--mat-app-on-surface-variant));top:calc((var(--mdc-checkbox-state-layer-size, 40px) - 18px)/2);left:calc((var(--mdc-checkbox-state-layer-size, 40px) - 18px)/2)}.mdc-checkbox__native-control:enabled:checked~.mdc-checkbox__background,.mdc-checkbox__native-control:enabled:indeterminate~.mdc-checkbox__background{border-color:var(--mdc-checkbox-selected-icon-color, var(--mat-app-primary));background-color:var(--mdc-checkbox-selected-icon-color, var(--mat-app-primary))}.mdc-checkbox--disabled .mdc-checkbox__background{border-color:var(--mdc-checkbox-disabled-unselected-icon-color)}.mdc-checkbox__native-control:disabled:checked~.mdc-checkbox__background,.mdc-checkbox__native-control:disabled:indeterminate~.mdc-checkbox__background{background-color:var(--mdc-checkbox-disabled-selected-icon-color);border-color:rgba(0,0,0,0)}.mdc-checkbox:hover .mdc-checkbox__native-control:not(:checked)~.mdc-checkbox__background,.mdc-checkbox:hover .mdc-checkbox__native-control:not(:indeterminate)~.mdc-checkbox__background{border-color:var(--mdc-checkbox-unselected-hover-icon-color, var(--mat-app-on-surface));background-color:rgba(0,0,0,0)}.mdc-checkbox:hover .mdc-checkbox__native-control:checked~.mdc-checkbox__background,.mdc-checkbox:hover .mdc-checkbox__native-control:indeterminate~.mdc-checkbox__background{border-color:var(--mdc-checkbox-selected-hover-icon-color, var(--mat-app-primary));background-color:var(--mdc-checkbox-selected-hover-icon-color, var(--mat-app-primary))}.mdc-checkbox__native-control:focus:focus:not(:checked)~.mdc-checkbox__background,.mdc-checkbox__native-control:focus:focus:not(:indeterminate)~.mdc-checkbox__background{border-color:var(--mdc-checkbox-unselected-focus-icon-color, var(--mat-app-on-surface))}.mdc-checkbox__native-control:focus:focus:checked~.mdc-checkbox__background,.mdc-checkbox__native-control:focus:focus:indeterminate~.mdc-checkbox__background{border-color:var(--mdc-checkbox-selected-focus-icon-color, var(--mat-app-primary));background-color:var(--mdc-checkbox-selected-focus-icon-color, var(--mat-app-primary))}.mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox:hover .mdc-checkbox__native-control~.mdc-checkbox__background,.mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox .mdc-checkbox__native-control:focus~.mdc-checkbox__background,.mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox__background{border-color:var(--mdc-checkbox-disabled-unselected-icon-color)}.mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox__native-control:checked~.mdc-checkbox__background,.mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox__native-control:indeterminate~.mdc-checkbox__background{background-color:var(--mdc-checkbox-disabled-selected-icon-color);border-color:rgba(0,0,0,0)}.mdc-checkbox__checkmark{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;opacity:0;transition:opacity 180ms cubic-bezier(0.4, 0, 0.6, 1);color:var(--mdc-checkbox-selected-checkmark-color, var(--mat-app-on-primary))}.cdk-high-contrast-active .mdc-checkbox__checkmark{color:CanvasText}.mdc-checkbox--disabled .mdc-checkbox__checkmark,.mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox__checkmark{color:var(--mdc-checkbox-disabled-selected-checkmark-color, var(--mat-app-surface))}.cdk-high-contrast-active .mdc-checkbox--disabled .mdc-checkbox__checkmark,.cdk-high-contrast-active .mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox__checkmark{color:CanvasText}.mdc-checkbox__checkmark-path{transition:stroke-dashoffset 180ms cubic-bezier(0.4, 0, 0.6, 1);stroke:currentColor;stroke-width:3.12px;stroke-dashoffset:29.7833385;stroke-dasharray:29.7833385}.mdc-checkbox__mixedmark{width:100%;height:0;transform:scaleX(0) rotate(0deg);border-width:1px;border-style:solid;opacity:0;transition:opacity 90ms cubic-bezier(0.4, 0, 0.6, 1),transform 90ms cubic-bezier(0.4, 0, 0.6, 1);border-color:var(--mdc-checkbox-selected-checkmark-color, var(--mat-app-on-primary))}.cdk-high-contrast-active .mdc-checkbox__mixedmark{margin:0 1px}.mdc-checkbox--disabled .mdc-checkbox__mixedmark,.mdc-checkbox--disabled.mat-mdc-checkbox-disabled-interactive .mdc-checkbox__mixedmark{border-color:var(--mdc-checkbox-disabled-selected-checkmark-color, var(--mat-app-surface))}.mdc-checkbox--anim-unchecked-checked .mdc-checkbox__background,.mdc-checkbox--anim-unchecked-indeterminate .mdc-checkbox__background,.mdc-checkbox--anim-checked-unchecked .mdc-checkbox__background,.mdc-checkbox--anim-indeterminate-unchecked .mdc-checkbox__background{animation-duration:180ms;animation-timing-function:linear}.mdc-checkbox--anim-unchecked-checked .mdc-checkbox__checkmark-path{animation:mdc-checkbox-unchecked-checked-checkmark-path 180ms linear;transition:none}.mdc-checkbox--anim-unchecked-indeterminate .mdc-checkbox__mixedmark{animation:mdc-checkbox-unchecked-indeterminate-mixedmark 90ms linear;transition:none}.mdc-checkbox--anim-checked-unchecked .mdc-checkbox__checkmark-path{animation:mdc-checkbox-checked-unchecked-checkmark-path 90ms linear;transition:none}.mdc-checkbox--anim-checked-indeterminate .mdc-checkbox__checkmark{animation:mdc-checkbox-checked-indeterminate-checkmark 90ms linear;transition:none}.mdc-checkbox--anim-checked-indeterminate .mdc-checkbox__mixedmark{animation:mdc-checkbox-checked-indeterminate-mixedmark 90ms linear;transition:none}.mdc-checkbox--anim-indeterminate-checked .mdc-checkbox__checkmark{animation:mdc-checkbox-indeterminate-checked-checkmark 500ms linear;transition:none}.mdc-checkbox--anim-indeterminate-checked .mdc-checkbox__mixedmark{animation:mdc-checkbox-indeterminate-checked-mixedmark 500ms linear;transition:none}.mdc-checkbox--anim-indeterminate-unchecked .mdc-checkbox__mixedmark{animation:mdc-checkbox-indeterminate-unchecked-mixedmark 300ms linear;transition:none}.mdc-checkbox__native-control:checked~.mdc-checkbox__background,.mdc-checkbox__native-control:indeterminate~.mdc-checkbox__background{transition:border-color 90ms cubic-bezier(0, 0, 0.2, 1),background-color 90ms cubic-bezier(0, 0, 0.2, 1)}.mdc-checkbox__native-control:checked~.mdc-checkbox__background .mdc-checkbox__checkmark-path,.mdc-checkbox__native-control:indeterminate~.mdc-checkbox__background .mdc-checkbox__checkmark-path{stroke-dashoffset:0}.mdc-checkbox__native-control:checked~.mdc-checkbox__background .mdc-checkbox__checkmark{transition:opacity 180ms cubic-bezier(0, 0, 0.2, 1),transform 180ms cubic-bezier(0, 0, 0.2, 1);opacity:1}.mdc-checkbox__native-control:checked~.mdc-checkbox__background .mdc-checkbox__mixedmark{transform:scaleX(1) rotate(-45deg)}.mdc-checkbox__native-control:indeterminate~.mdc-checkbox__background .mdc-checkbox__checkmark{transform:rotate(45deg);opacity:0;transition:opacity 90ms cubic-bezier(0.4, 0, 0.6, 1),transform 90ms cubic-bezier(0.4, 0, 0.6, 1)}.mdc-checkbox__native-control:indeterminate~.mdc-checkbox__background .mdc-checkbox__mixedmark{transform:scaleX(1) rotate(0deg);opacity:1}@keyframes mdc-checkbox-unchecked-checked-checkmark-path{0%,50%{stroke-dashoffset:29.7833385}50%{animation-timing-function:cubic-bezier(0, 0, 0.2, 1)}100%{stroke-dashoffset:0}}@keyframes mdc-checkbox-unchecked-indeterminate-mixedmark{0%,68.2%{transform:scaleX(0)}68.2%{animation-timing-function:cubic-bezier(0, 0, 0, 1)}100%{transform:scaleX(1)}}@keyframes mdc-checkbox-checked-unchecked-checkmark-path{from{animation-timing-function:cubic-bezier(0.4, 0, 1, 1);opacity:1;stroke-dashoffset:0}to{opacity:0;stroke-dashoffset:-29.7833385}}@keyframes mdc-checkbox-checked-indeterminate-checkmark{from{animation-timing-function:cubic-bezier(0, 0, 0.2, 1);transform:rotate(0deg);opacity:1}to{transform:rotate(45deg);opacity:0}}@keyframes mdc-checkbox-indeterminate-checked-checkmark{from{animation-timing-function:cubic-bezier(0.14, 0, 0, 1);transform:rotate(45deg);opacity:0}to{transform:rotate(360deg);opacity:1}}@keyframes mdc-checkbox-checked-indeterminate-mixedmark{from{animation-timing-function:cubic-bezier(0, 0, 0.2, 1);transform:rotate(-45deg);opacity:0}to{transform:rotate(0deg);opacity:1}}@keyframes mdc-checkbox-indeterminate-checked-mixedmark{from{animation-timing-function:cubic-bezier(0.14, 0, 0, 1);transform:rotate(0deg);opacity:1}to{transform:rotate(315deg);opacity:0}}@keyframes mdc-checkbox-indeterminate-unchecked-mixedmark{0%{animation-timing-function:linear;transform:scaleX(1);opacity:1}32.8%,100%{transform:scaleX(0);opacity:0}}.mat-mdc-checkbox{display:inline-block;position:relative;-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-checkbox._mat-animation-noopable .mdc-checkbox *,.mat-mdc-checkbox._mat-animation-noopable .mdc-checkbox *::before{transition:none !important;animation:none !important}.mat-mdc-checkbox label{cursor:pointer}.mat-mdc-checkbox .mat-internal-form-field{color:var(--mat-checkbox-label-text-color, var(--mat-app-on-surface));font-family:var(--mat-checkbox-label-text-font, var(--mat-app-body-medium-font));line-height:var(--mat-checkbox-label-text-line-height, var(--mat-app-body-medium-line-height));font-size:var(--mat-checkbox-label-text-size, var(--mat-app-body-medium-size));letter-spacing:var(--mat-checkbox-label-text-tracking, var(--mat-app-body-medium-tracking));font-weight:var(--mat-checkbox-label-text-weight, var(--mat-app-body-medium-weight))}.mat-mdc-checkbox.mat-mdc-checkbox-disabled.mat-mdc-checkbox-disabled-interactive{pointer-events:auto}.mat-mdc-checkbox.mat-mdc-checkbox-disabled.mat-mdc-checkbox-disabled-interactive input{cursor:default}.mat-mdc-checkbox.mat-mdc-checkbox-disabled label{cursor:default;color:var(--mat-checkbox-disabled-label-color)}.mat-mdc-checkbox label:empty{display:none}.mat-mdc-checkbox .mdc-checkbox__ripple{opacity:0}.mat-mdc-checkbox-ripple,.mdc-checkbox__ripple{top:0;left:0;right:0;bottom:0;position:absolute;border-radius:50%;pointer-events:none}.mat-mdc-checkbox-ripple:not(:empty),.mdc-checkbox__ripple:not(:empty){transform:translateZ(0)}.mat-mdc-checkbox-ripple .mat-ripple-element{opacity:.1}.mat-mdc-checkbox-touch-target{position:absolute;top:50%;left:50%;height:48px;width:48px;transform:translate(-50%, -50%);display:var(--mat-checkbox-touch-target-display)}.mat-mdc-checkbox-ripple::before{border-radius:50%}.mdc-checkbox__native-control:focus~.mat-mdc-focus-indicator::before{content:""}'],encapsulation:2,changeDetection:0})}}return i})();var ng=(()=>{class i{static{this.\u0275fac=function(t){return new(t||i)}}static{this.\u0275mod=j({type:i})}static{this.\u0275inj=L({imports:[ig,K,K]})}}return i})();var Jw=20,un=(()=>{class i{constructor(e,t,r){this._ngZone=e,this._platform=t,this._scrolled=new R,this._globalSubscription=null,this._scrolledCount=0,this.scrollContainers=new Map,this._document=r}register(e){this.scrollContainers.has(e)||this.scrollContainers.set(e,e.elementScrolled().subscribe(()=>this._scrolled.next(e)))}deregister(e){let t=this.scrollContainers.get(e);t&&(t.unsubscribe(),this.scrollContainers.delete(e))}scrolled(e=Jw){return this._platform.isBrowser?new We(t=>{this._globalSubscription||this._addGlobalListener();let r=e>0?this._scrolled.pipe(ic(e)).subscribe(t):this._scrolled.subscribe(t);return this._scrolledCount++,()=>{r.unsubscribe(),this._scrolledCount--,this._scrolledCount||this._removeGlobalListener()}}):He()}ngOnDestroy(){this._removeGlobalListener(),this.scrollContainers.forEach((e,t)=>this.deregister(t)),this._scrolled.complete()}ancestorScrolled(e,t){let r=this.getAncestorScrollContainers(e);return this.scrolled(t).pipe(ye(o=>!o||r.indexOf(o)>-1))}getAncestorScrollContainers(e){let t=[];return this.scrollContainers.forEach((r,o)=>{this._scrollableContainsElement(o,e)&&t.push(o)}),t}_getWindow(){return this._document.defaultView||window}_scrollableContainsElement(e,t){let r=zt(t),o=e.getElementRef().nativeElement;do if(r==o)return!0;while(r=r.parentElement);return!1}_addGlobalListener(){this._globalSubscription=this._ngZone.runOutsideAngular(()=>{let e=this._getWindow();return Nt(e.document,"scroll").subscribe(()=>this._scrolled.next())})}_removeGlobalListener(){this._globalSubscription&&(this._globalSubscription.unsubscribe(),this._globalSubscription=null)}static{this.\u0275fac=function(t){return new(t||i)(x(B),x(me),x(oe,8))}}static{this.\u0275prov=Z({token:i,factory:i.\u0275fac,providedIn:"root"})}}return i})(),Fi=(()=>{class i{constructor(e,t,r,o){this.elementRef=e,this.scrollDispatcher=t,this.ngZone=r,this.dir=o,this._destroyed=new R,this._elementScrolled=new We(a=>this.ngZone.runOutsideAngular(()=>Nt(this.elementRef.nativeElement,"scroll").pipe($(this._destroyed)).subscribe(a)))}ngOnInit(){this.scrollDispatcher.register(this)}ngOnDestroy(){this.scrollDispatcher.deregister(this),this._destroyed.next(),this._destroyed.complete()}elementScrolled(){return this._elementScrolled}getElementRef(){return this.elementRef}scrollTo(e){let t=this.elementRef.nativeElement,r=this.dir&&this.dir.value=="rtl";e.left==null&&(e.left=r?e.end:e.start),e.right==null&&(e.right=r?e.start:e.end),e.bottom!=null&&(e.top=t.scrollHeight-t.clientHeight-e.bottom),r&&Tr()!=hi.NORMAL?(e.left!=null&&(e.right=t.scrollWidth-t.clientWidth-e.left),Tr()==hi.INVERTED?e.left=e.right:Tr()==hi.NEGATED&&(e.left=e.right?-e.right:e.right)):e.right!=null&&(e.left=t.scrollWidth-t.clientWidth-e.right),this._applyScrollToOptions(e)}_applyScrollToOptions(e){let t=this.elementRef.nativeElement;xs()?t.scrollTo(e):(e.top!=null&&(t.scrollTop=e.top),e.left!=null&&(t.scrollLeft=e.left))}measureScrollOffset(e){let t="left",r="right",o=this.elementRef.nativeElement;if(e=="top")return o.scrollTop;if(e=="bottom")return o.scrollHeight-o.clientHeight-o.scrollTop;let a=this.dir&&this.dir.value=="rtl";return e=="start"?e=a?r:t:e=="end"&&(e=a?t:r),a&&Tr()==hi.INVERTED?e==t?o.scrollWidth-o.clientWidth-o.scrollLeft:o.scrollLeft:a&&Tr()==hi.NEGATED?e==t?o.scrollLeft+o.scrollWidth-o.clientWidth:-o.scrollLeft:e==t?o.scrollLeft:o.scrollWidth-o.clientWidth-o.scrollLeft}static{this.\u0275fac=function(t){return new(t||i)(u(E),u(un),u(B),u(Re,8))}}static{this.\u0275dir=D({type:i,selectors:[["","cdk-scrollable",""],["","cdkScrollable",""]],standalone:!0})}}return i})(),eC=20,Dt=(()=>{class i{constructor(e,t,r){this._platform=e,this._change=new R,this._changeListener=o=>{this._change.next(o)},this._document=r,t.runOutsideAngular(()=>{if(e.isBrowser){let o=this._getWindow();o.addEventListener("resize",this._changeListener),o.addEventListener("orientationchange",this._changeListener)}this.change().subscribe(()=>this._viewportSize=null)})}ngOnDestroy(){if(this._platform.isBrowser){let e=this._getWindow();e.removeEventListener("resize",this._changeListener),e.removeEventListener("orientationchange",this._changeListener)}this._change.complete()}getViewportSize(){this._viewportSize||this._updateViewportSize();let e={width:this._viewportSize.width,height:this._viewportSize.height};return this._platform.isBrowser||(this._viewportSize=null),e}getViewportRect(){let e=this.getViewportScrollPosition(),{width:t,height:r}=this.getViewportSize();return{top:e.top,left:e.left,bottom:e.top+r,right:e.left+t,height:r,width:t}}getViewportScrollPosition(){if(!this._platform.isBrowser)return{top:0,left:0};let e=this._document,t=this._getWindow(),r=e.documentElement,o=r.getBoundingClientRect(),a=-o.top||e.body.scrollTop||t.scrollY||r.scrollTop||0,s=-o.left||e.body.scrollLeft||t.scrollX||r.scrollLeft||0;return{top:a,left:s}}change(e=eC){return e>0?this._change.pipe(ic(e)):this._change}_getWindow(){return this._document.defaultView||window}_updateViewportSize(){let e=this._getWindow();this._viewportSize=this._platform.isBrowser?{width:e.innerWidth,height:e.innerHeight}:{width:0,height:0}}static{this.\u0275fac=function(t){return new(t||i)(x(me),x(B),x(oe,8))}}static{this.\u0275prov=Z({token:i,factory:i.\u0275fac,providedIn:"root"})}}return i})();var Ut=(()=>{class i{static{this.\u0275fac=function(t){return new(t||i)}}static{this.\u0275mod=j({type:i})}static{this.\u0275inj=L({})}}return i})(),Bo=(()=>{class i{static{this.\u0275fac=function(t){return new(t||i)}}static{this.\u0275mod=j({type:i})}static{this.\u0275inj=L({imports:[cn,Ut,cn,Ut]})}}return i})();var zo=class{attach(n){return this._attachedHost=n,n.attach(this)}detach(){let n=this._attachedHost;n!=null&&(this._attachedHost=null,n.detach())}get isAttached(){return this._attachedHost!=null}setAttachedHost(n){this._attachedHost=n}},hn=class extends zo{constructor(n,e,t,r,o){super(),this.component=n,this.viewContainerRef=e,this.injector=t,this.componentFactoryResolver=r,this.projectableNodes=o}},Et=class extends zo{constructor(n,e,t,r){super(),this.templateRef=n,this.viewContainerRef=e,this.context=t,this.injector=r}get origin(){return this.templateRef.elementRef}attach(n,e=this.context){return this.context=e,super.attach(n)}detach(){return this.context=void 0,super.detach()}},wd=class extends zo{constructor(n){super(),this.element=n instanceof E?n.nativeElement:n}},Vr=class{constructor(){this._isDisposed=!1,this.attachDomPortal=null}hasAttached(){return!!this._attachedPortal}attach(n){if(n instanceof hn)return this._attachedPortal=n,this.attachComponentPortal(n);if(n instanceof Et)return this._attachedPortal=n,this.attachTemplatePortal(n);if(this.attachDomPortal&&n instanceof wd)return this._attachedPortal=n,this.attachDomPortal(n)}detach(){this._attachedPortal&&(this._attachedPortal.setAttachedHost(null),this._attachedPortal=null),this._invokeDisposeFn()}dispose(){this.hasAttached()&&this.detach(),this._invokeDisposeFn(),this._isDisposed=!0}setDisposeFn(n){this._disposeFn=n}_invokeDisposeFn(){this._disposeFn&&(this._disposeFn(),this._disposeFn=null)}};var Ho=class extends Vr{constructor(n,e,t,r,o){super(),this.outletElement=n,this._componentFactoryResolver=e,this._appRef=t,this._defaultInjector=r,this.attachDomPortal=a=>{this._document;let s=a.element;s.parentNode;let c=this._document.createComment("dom-portal");s.parentNode.insertBefore(c,s),this.outletElement.appendChild(s),this._attachedPortal=a,super.setDisposeFn(()=>{c.parentNode&&c.parentNode.replaceChild(s,c)})},this._document=o}attachComponentPortal(n){let t=(n.componentFactoryResolver||this._componentFactoryResolver).resolveComponentFactory(n.component),r;return n.viewContainerRef?(r=n.viewContainerRef.createComponent(t,n.viewContainerRef.length,n.injector||n.viewContainerRef.injector,n.projectableNodes||void 0),this.setDisposeFn(()=>r.destroy())):(r=t.create(n.injector||this._defaultInjector||Ee.NULL),this._appRef.attachView(r.hostView),this.setDisposeFn(()=>{this._appRef.viewCount>0&&this._appRef.detachView(r.hostView),r.destroy()})),this.outletElement.appendChild(this._getComponentRootNode(r)),this._attachedPortal=n,r}attachTemplatePortal(n){let e=n.viewContainerRef,t=e.createEmbeddedView(n.templateRef,n.context,{injector:n.injector});return t.rootNodes.forEach(r=>this.outletElement.appendChild(r)),t.detectChanges(),this.setDisposeFn(()=>{let r=e.indexOf(t);r!==-1&&e.remove(r)}),this._attachedPortal=n,t}dispose(){super.dispose(),this.outletElement.remove()}_getComponentRootNode(n){return n.hostView.rootNodes[0]}};var rg=(()=>{class i extends Et{constructor(e,t){super(e,t)}static{this.\u0275fac=function(t){return new(t||i)(u(Ae),u(Ue))}}static{this.\u0275dir=D({type:i,selectors:[["","cdkPortal",""]],exportAs:["cdkPortal"],standalone:!0,features:[ne]})}}return i})();var mi=(()=>{class i extends Vr{constructor(e,t,r){super(),this._componentFactoryResolver=e,this._viewContainerRef=t,this._isInitialized=!1,this.attached=new z,this.attachDomPortal=o=>{this._document;let a=o.element;a.parentNode;let s=this._document.createComment("dom-portal");o.setAttachedHost(this),a.parentNode.insertBefore(s,a),this._getRootNode().appendChild(a),this._attachedPortal=o,super.setDisposeFn(()=>{s.parentNode&&s.parentNode.replaceChild(a,s)})},this._document=r}get portal(){return this._attachedPortal}set portal(e){this.hasAttached()&&!e&&!this._isInitialized||(this.hasAttached()&&super.detach(),e&&super.attach(e),this._attachedPortal=e||null)}get attachedRef(){return this._attachedRef}ngOnInit(){this._isInitialized=!0}ngOnDestroy(){super.dispose(),this._attachedRef=this._attachedPortal=null}attachComponentPortal(e){e.setAttachedHost(this);let t=e.viewContainerRef!=null?e.viewContainerRef:this._viewContainerRef,o=(e.componentFactoryResolver||this._componentFactoryResolver).resolveComponentFactory(e.component),a=t.createComponent(o,t.length,e.injector||t.injector,e.projectableNodes||void 0);return t!==this._viewContainerRef&&this._getRootNode().appendChild(a.hostView.rootNodes[0]),super.setDisposeFn(()=>a.destroy()),this._attachedPortal=e,this._attachedRef=a,this.attached.emit(a),a}attachTemplatePortal(e){e.setAttachedHost(this);let t=this._viewContainerRef.createEmbeddedView(e.templateRef,e.context,{injector:e.injector});return super.setDisposeFn(()=>this._viewContainerRef.clear()),this._attachedPortal=e,this._attachedRef=t,this.attached.emit(t),t}_getRootNode(){let e=this._viewContainerRef.element.nativeElement;return e.nodeType===e.ELEMENT_NODE?e:e.parentNode}static{this.\u0275fac=function(t){return new(t||i)(u(fn),u(Ue),u(oe))}}static{this.\u0275dir=D({type:i,selectors:[["","cdkPortalOutlet",""]],inputs:{portal:[0,"cdkPortalOutlet","portal"]},outputs:{attached:"attached"},exportAs:["cdkPortalOutlet"],standalone:!0,features:[ne]})}}return i})();var Pi=(()=>{class i{static{this.\u0275fac=function(t){return new(t||i)}}static{this.\u0275mod=j({type:i})}static{this.\u0275inj=L({})}}return i})();var og=xs(),Cd=class{constructor(n,e){this._viewportRuler=n,this._previousHTMLStyles={top:"",left:""},this._isEnabled=!1,this._document=e}attach(){}enable(){if(this._canBeEnabled()){let n=this._document.documentElement;this._previousScrollPosition=this._viewportRuler.getViewportScrollPosition(),this._previousHTMLStyles.left=n.style.left||"",this._previousHTMLStyles.top=n.style.top||"",n.style.left=rt(-this._previousScrollPosition.left),n.style.top=rt(-this._previousScrollPosition.top),n.classList.add("cdk-global-scrollblock"),this._isEnabled=!0}}disable(){if(this._isEnabled){let n=this._document.documentElement,e=this._document.body,t=n.style,r=e.style,o=t.scrollBehavior||"",a=r.scrollBehavior||"";this._isEnabled=!1,t.left=this._previousHTMLStyles.left,t.top=this._previousHTMLStyles.top,n.classList.remove("cdk-global-scrollblock"),og&&(t.scrollBehavior=r.scrollBehavior="auto"),window.scroll(this._previousScrollPosition.left,this._previousScrollPosition.top),og&&(t.scrollBehavior=o,r.scrollBehavior=a)}}_canBeEnabled(){if(this._document.documentElement.classList.contains("cdk-global-scrollblock")||this._isEnabled)return!1;let e=this._document.body,t=this._viewportRuler.getViewportSize();return e.scrollHeight>t.height||e.scrollWidth>t.width}};var kd=class{constructor(n,e,t,r){this._scrollDispatcher=n,this._ngZone=e,this._viewportRuler=t,this._config=r,this._scrollSubscription=null,this._detach=()=>{this.disable(),this._overlayRef.hasAttached()&&this._ngZone.run(()=>this._overlayRef.detach())}}attach(n){this._overlayRef,this._overlayRef=n}enable(){if(this._scrollSubscription)return;let n=this._scrollDispatcher.scrolled(0).pipe(ye(e=>!e||!this._overlayRef.overlayElement.contains(e.getElementRef().nativeElement)));this._config&&this._config.threshold&&this._config.threshold>1?(this._initialScrollPosition=this._viewportRuler.getViewportScrollPosition().top,this._scrollSubscription=n.subscribe(()=>{let e=this._viewportRuler.getViewportScrollPosition().top;Math.abs(e-this._initialScrollPosition)>this._config.threshold?this._detach():this._overlayRef.updatePosition()})):this._scrollSubscription=n.subscribe(this._detach)}disable(){this._scrollSubscription&&(this._scrollSubscription.unsubscribe(),this._scrollSubscription=null)}detach(){this.disable(),this._overlayRef=null}},js=class{enable(){}disable(){}attach(){}};function Dd(i,n){return n.some(e=>{let t=i.bottome.bottom,o=i.righte.right;return t||r||o||a})}function ag(i,n){return n.some(e=>{let t=i.tope.bottom,o=i.lefte.right;return t||r||o||a})}var Ed=class{constructor(n,e,t,r){this._scrollDispatcher=n,this._viewportRuler=e,this._ngZone=t,this._config=r,this._scrollSubscription=null}attach(n){this._overlayRef,this._overlayRef=n}enable(){if(!this._scrollSubscription){let n=this._config?this._config.scrollThrottle:0;this._scrollSubscription=this._scrollDispatcher.scrolled(n).subscribe(()=>{if(this._overlayRef.updatePosition(),this._config&&this._config.autoClose){let e=this._overlayRef.overlayElement.getBoundingClientRect(),{width:t,height:r}=this._viewportRuler.getViewportSize();Dd(e,[{width:t,height:r,bottom:r,right:t,top:0,left:0}])&&(this.disable(),this._ngZone.run(()=>this._overlayRef.detach()))}})}}disable(){this._scrollSubscription&&(this._scrollSubscription.unsubscribe(),this._scrollSubscription=null)}detach(){this.disable(),this._overlayRef=null}},iC=(()=>{class i{constructor(e,t,r,o){this._scrollDispatcher=e,this._viewportRuler=t,this._ngZone=r,this.noop=()=>new js,this.close=a=>new kd(this._scrollDispatcher,this._ngZone,this._viewportRuler,a),this.block=()=>new Cd(this._viewportRuler,this._document),this.reposition=a=>new Ed(this._scrollDispatcher,this._viewportRuler,this._ngZone,a),this._document=o}static{this.\u0275fac=function(t){return new(t||i)(x(un),x(Dt),x(B),x(oe))}}static{this.\u0275prov=Z({token:i,factory:i.\u0275fac,providedIn:"root"})}}return i})(),Ci=class{constructor(n){if(this.scrollStrategy=new js,this.panelClass="",this.hasBackdrop=!1,this.backdropClass="cdk-overlay-dark-backdrop",this.disposeOnNavigation=!1,n){let e=Object.keys(n);for(let t of e)n[t]!==void 0&&(this[t]=n[t])}}};var Id=class{constructor(n,e){this.connectionPair=n,this.scrollableViewProperties=e}};var hg=(()=>{class i{constructor(e){this._attachedOverlays=[],this._document=e}ngOnDestroy(){this.detach()}add(e){this.remove(e),this._attachedOverlays.push(e)}remove(e){let t=this._attachedOverlays.indexOf(e);t>-1&&this._attachedOverlays.splice(t,1),this._attachedOverlays.length===0&&this.detach()}static{this.\u0275fac=function(t){return new(t||i)(x(oe))}}static{this.\u0275prov=Z({token:i,factory:i.\u0275fac,providedIn:"root"})}}return i})(),nC=(()=>{class i extends hg{constructor(e,t){super(e),this._ngZone=t,this._keydownListener=r=>{let o=this._attachedOverlays;for(let a=o.length-1;a>-1;a--)if(o[a]._keydownEvents.observers.length>0){let s=o[a]._keydownEvents;this._ngZone?this._ngZone.run(()=>s.next(r)):s.next(r);break}}}add(e){super.add(e),this._isAttached||(this._ngZone?this._ngZone.runOutsideAngular(()=>this._document.body.addEventListener("keydown",this._keydownListener)):this._document.body.addEventListener("keydown",this._keydownListener),this._isAttached=!0)}detach(){this._isAttached&&(this._document.body.removeEventListener("keydown",this._keydownListener),this._isAttached=!1)}static{this.\u0275fac=function(t){return new(t||i)(x(oe),x(B,8))}}static{this.\u0275prov=Z({token:i,factory:i.\u0275fac,providedIn:"root"})}}return i})(),rC=(()=>{class i extends hg{constructor(e,t,r){super(e),this._platform=t,this._ngZone=r,this._cursorStyleIsSet=!1,this._pointerDownListener=o=>{this._pointerDownEventTarget=Ot(o)},this._clickListener=o=>{let a=Ot(o),s=o.type==="click"&&this._pointerDownEventTarget?this._pointerDownEventTarget:a;this._pointerDownEventTarget=null;let c=this._attachedOverlays.slice();for(let l=c.length-1;l>-1;l--){let d=c[l];if(d._outsidePointerEvents.observers.length<1||!d.hasAttached())continue;if(sg(d.overlayElement,a)||sg(d.overlayElement,s))break;let h=d._outsidePointerEvents;this._ngZone?this._ngZone.run(()=>h.next(o)):h.next(o)}}}add(e){if(super.add(e),!this._isAttached){let t=this._document.body;this._ngZone?this._ngZone.runOutsideAngular(()=>this._addEventListeners(t)):this._addEventListeners(t),this._platform.IOS&&!this._cursorStyleIsSet&&(this._cursorOriginalValue=t.style.cursor,t.style.cursor="pointer",this._cursorStyleIsSet=!0),this._isAttached=!0}}detach(){if(this._isAttached){let e=this._document.body;e.removeEventListener("pointerdown",this._pointerDownListener,!0),e.removeEventListener("click",this._clickListener,!0),e.removeEventListener("auxclick",this._clickListener,!0),e.removeEventListener("contextmenu",this._clickListener,!0),this._platform.IOS&&this._cursorStyleIsSet&&(e.style.cursor=this._cursorOriginalValue,this._cursorStyleIsSet=!1),this._isAttached=!1}}_addEventListeners(e){e.addEventListener("pointerdown",this._pointerDownListener,!0),e.addEventListener("click",this._clickListener,!0),e.addEventListener("auxclick",this._clickListener,!0),e.addEventListener("contextmenu",this._clickListener,!0)}static{this.\u0275fac=function(t){return new(t||i)(x(oe),x(me),x(B,8))}}static{this.\u0275prov=Z({token:i,factory:i.\u0275fac,providedIn:"root"})}}return i})();function sg(i,n){let e=typeof ShadowRoot<"u"&&ShadowRoot,t=n;for(;t;){if(t===i)return!0;t=e&&t instanceof ShadowRoot?t.host:t.parentNode}return!1}var Br=(()=>{class i{constructor(e,t){this._platform=t,this._document=e}ngOnDestroy(){this._containerElement?.remove()}getContainerElement(){return this._containerElement||this._createContainer(),this._containerElement}_createContainer(){let e="cdk-overlay-container";if(this._platform.isBrowser||Oo()){let r=this._document.querySelectorAll(`.${e}[platform="server"], .${e}[platform="test"]`);for(let o=0;othis._backdropClick.next(m),this._backdropTransitionendHandler=m=>{this._disposeBackdrop(m.target)},this._keydownEvents=new R,this._outsidePointerEvents=new R,this._renders=new R,r.scrollStrategy&&(this._scrollStrategy=r.scrollStrategy,this._scrollStrategy.attach(this)),this._positionStrategy=r.positionStrategy,this._afterRenderRef=Yt(()=>na(()=>{this._renders.next()},{injector:this._injector}))}get overlayElement(){return this._pane}get backdropElement(){return this._backdropElement}get hostElement(){return this._host}attach(n){!this._host.parentElement&&this._previousHostParent&&this._previousHostParent.appendChild(this._host);let e=this._portalOutlet.attach(n);return this._positionStrategy&&this._positionStrategy.attach(this),this._updateStackingOrder(),this._updateElementSize(),this._updateElementDirection(),this._scrollStrategy&&this._scrollStrategy.enable(),this._afterNextRenderRef?.destroy(),this._afterNextRenderRef=tt(()=>{this.hasAttached()&&this.updatePosition()},{injector:this._injector}),this._togglePointerEvents(!0),this._config.hasBackdrop&&this._attachBackdrop(),this._config.panelClass&&this._toggleClasses(this._pane,this._config.panelClass,!0),this._attachments.next(),this._keyboardDispatcher.add(this),this._config.disposeOnNavigation&&(this._locationChanges=this._location.subscribe(()=>this.dispose())),this._outsideClickDispatcher.add(this),typeof e?.onDestroy=="function"&&e.onDestroy(()=>{this.hasAttached()&&this._ngZone.runOutsideAngular(()=>Promise.resolve().then(()=>this.detach()))}),e}detach(){if(!this.hasAttached())return;this.detachBackdrop(),this._togglePointerEvents(!1),this._positionStrategy&&this._positionStrategy.detach&&this._positionStrategy.detach(),this._scrollStrategy&&this._scrollStrategy.disable();let n=this._portalOutlet.detach();return this._detachments.next(),this._keyboardDispatcher.remove(this),this._detachContentWhenEmpty(),this._locationChanges.unsubscribe(),this._outsideClickDispatcher.remove(this),n}dispose(){let n=this.hasAttached();this._positionStrategy&&this._positionStrategy.dispose(),this._disposeScrollStrategy(),this._disposeBackdrop(this._backdropElement),this._locationChanges.unsubscribe(),this._keyboardDispatcher.remove(this),this._portalOutlet.dispose(),this._attachments.complete(),this._backdropClick.complete(),this._keydownEvents.complete(),this._outsidePointerEvents.complete(),this._outsideClickDispatcher.remove(this),this._host?.remove(),this._afterNextRenderRef?.destroy(),this._previousHostParent=this._pane=this._host=null,n&&this._detachments.next(),this._detachments.complete(),this._afterRenderRef.destroy(),this._renders.complete()}hasAttached(){return this._portalOutlet.hasAttached()}backdropClick(){return this._backdropClick}attachments(){return this._attachments}detachments(){return this._detachments}keydownEvents(){return this._keydownEvents}outsidePointerEvents(){return this._outsidePointerEvents}getConfig(){return this._config}updatePosition(){this._positionStrategy&&this._positionStrategy.apply()}updatePositionStrategy(n){n!==this._positionStrategy&&(this._positionStrategy&&this._positionStrategy.dispose(),this._positionStrategy=n,this.hasAttached()&&(n.attach(this),this.updatePosition()))}updateSize(n){this._config=N(N({},this._config),n),this._updateElementSize()}setDirection(n){this._config=Qe(N({},this._config),{direction:n}),this._updateElementDirection()}addPanelClass(n){this._pane&&this._toggleClasses(this._pane,n,!0)}removePanelClass(n){this._pane&&this._toggleClasses(this._pane,n,!1)}getDirection(){let n=this._config.direction;return n?typeof n=="string"?n:n.value:"ltr"}updateScrollStrategy(n){n!==this._scrollStrategy&&(this._disposeScrollStrategy(),this._scrollStrategy=n,this.hasAttached()&&(n.attach(this),n.enable()))}_updateElementDirection(){this._host.setAttribute("dir",this.getDirection())}_updateElementSize(){if(!this._pane)return;let n=this._pane.style;n.width=rt(this._config.width),n.height=rt(this._config.height),n.minWidth=rt(this._config.minWidth),n.minHeight=rt(this._config.minHeight),n.maxWidth=rt(this._config.maxWidth),n.maxHeight=rt(this._config.maxHeight)}_togglePointerEvents(n){this._pane.style.pointerEvents=n?"":"none"}_attachBackdrop(){let n="cdk-overlay-backdrop-showing";this._backdropElement=this._document.createElement("div"),this._backdropElement.classList.add("cdk-overlay-backdrop"),this._animationsDisabled&&this._backdropElement.classList.add("cdk-overlay-backdrop-noop-animation"),this._config.backdropClass&&this._toggleClasses(this._backdropElement,this._config.backdropClass,!0),this._host.parentElement.insertBefore(this._backdropElement,this._host),this._backdropElement.addEventListener("click",this._backdropClickHandler),!this._animationsDisabled&&typeof requestAnimationFrame<"u"?this._ngZone.runOutsideAngular(()=>{requestAnimationFrame(()=>{this._backdropElement&&this._backdropElement.classList.add(n)})}):this._backdropElement.classList.add(n)}_updateStackingOrder(){this._host.nextSibling&&this._host.parentNode.appendChild(this._host)}detachBackdrop(){let n=this._backdropElement;if(n){if(this._animationsDisabled){this._disposeBackdrop(n);return}n.classList.remove("cdk-overlay-backdrop-showing"),this._ngZone.runOutsideAngular(()=>{n.addEventListener("transitionend",this._backdropTransitionendHandler)}),n.style.pointerEvents="none",this._backdropTimeout=this._ngZone.runOutsideAngular(()=>setTimeout(()=>{this._disposeBackdrop(n)},500))}}_toggleClasses(n,e,t){let r=Mr(e||[]).filter(o=>!!o);r.length&&(t?n.classList.add(...r):n.classList.remove(...r))}_detachContentWhenEmpty(){this._ngZone.runOutsideAngular(()=>{let n=this._renders.pipe($(Fe(this._attachments,this._detachments))).subscribe(()=>{(!this._pane||!this._host||this._pane.children.length===0)&&(this._pane&&this._config.panelClass&&this._toggleClasses(this._pane,this._config.panelClass,!1),this._host&&this._host.parentElement&&(this._previousHostParent=this._host.parentElement,this._host.remove()),n.unsubscribe())})})}_disposeScrollStrategy(){let n=this._scrollStrategy;n&&(n.disable(),n.detach&&n.detach())}_disposeBackdrop(n){n&&(n.removeEventListener("click",this._backdropClickHandler),n.removeEventListener("transitionend",this._backdropTransitionendHandler),n.remove(),this._backdropElement===n&&(this._backdropElement=null)),this._backdropTimeout&&(clearTimeout(this._backdropTimeout),this._backdropTimeout=void 0)}},cg="cdk-overlay-connected-position-bounding-box",oC=/([A-Za-z%]+)$/,Sd=class{get positions(){return this._preferredPositions}constructor(n,e,t,r,o){this._viewportRuler=e,this._document=t,this._platform=r,this._overlayContainer=o,this._lastBoundingBoxSize={width:0,height:0},this._isPushed=!1,this._canPush=!0,this._growAfterOpen=!1,this._hasFlexibleDimensions=!0,this._positionLocked=!1,this._viewportMargin=0,this._scrollables=[],this._preferredPositions=[],this._positionChanges=new R,this._resizeSubscription=Te.EMPTY,this._offsetX=0,this._offsetY=0,this._appliedPanelClasses=[],this.positionChanges=this._positionChanges,this.setOrigin(n)}attach(n){this._overlayRef&&this._overlayRef,this._validatePositions(),n.hostElement.classList.add(cg),this._overlayRef=n,this._boundingBox=n.hostElement,this._pane=n.overlayElement,this._isDisposed=!1,this._isInitialRender=!0,this._lastPosition=null,this._resizeSubscription.unsubscribe(),this._resizeSubscription=this._viewportRuler.change().subscribe(()=>{this._isInitialRender=!0,this.apply()})}apply(){if(this._isDisposed||!this._platform.isBrowser)return;if(!this._isInitialRender&&this._positionLocked&&this._lastPosition){this.reapplyLastPosition();return}this._clearPanelClasses(),this._resetOverlayElementStyles(),this._resetBoundingBoxStyles(),this._viewportRect=this._getNarrowedViewportRect(),this._originRect=this._getOriginRect(),this._overlayRect=this._pane.getBoundingClientRect(),this._containerRect=this._overlayContainer.getContainerElement().getBoundingClientRect();let n=this._originRect,e=this._overlayRect,t=this._viewportRect,r=this._containerRect,o=[],a;for(let s of this._preferredPositions){let c=this._getOriginPoint(n,r,s),l=this._getOverlayPoint(c,e,s),d=this._getOverlayFit(l,e,t,s);if(d.isCompletelyWithinViewport){this._isPushed=!1,this._applyPosition(s,c);return}if(this._canFitWithFlexibleDimensions(d,l,t)){o.push({position:s,origin:c,overlayRect:e,boundingBoxRect:this._calculateBoundingBoxRect(c,s)});continue}(!a||a.overlayFit.visibleAreac&&(c=d,s=l)}this._isPushed=!1,this._applyPosition(s.position,s.origin);return}if(this._canPush){this._isPushed=!0,this._applyPosition(a.position,a.originPoint);return}this._applyPosition(a.position,a.originPoint)}detach(){this._clearPanelClasses(),this._lastPosition=null,this._previousPushAmount=null,this._resizeSubscription.unsubscribe()}dispose(){this._isDisposed||(this._boundingBox&&Hn(this._boundingBox.style,{top:"",left:"",right:"",bottom:"",height:"",width:"",alignItems:"",justifyContent:""}),this._pane&&this._resetOverlayElementStyles(),this._overlayRef&&this._overlayRef.hostElement.classList.remove(cg),this.detach(),this._positionChanges.complete(),this._overlayRef=this._boundingBox=null,this._isDisposed=!0)}reapplyLastPosition(){if(this._isDisposed||!this._platform.isBrowser)return;let n=this._lastPosition;if(n){this._originRect=this._getOriginRect(),this._overlayRect=this._pane.getBoundingClientRect(),this._viewportRect=this._getNarrowedViewportRect(),this._containerRect=this._overlayContainer.getContainerElement().getBoundingClientRect();let e=this._getOriginPoint(this._originRect,this._containerRect,n);this._applyPosition(n,e)}else this.apply()}withScrollableContainers(n){return this._scrollables=n,this}withPositions(n){return this._preferredPositions=n,n.indexOf(this._lastPosition)===-1&&(this._lastPosition=null),this._validatePositions(),this}withViewportMargin(n){return this._viewportMargin=n,this}withFlexibleDimensions(n=!0){return this._hasFlexibleDimensions=n,this}withGrowAfterOpen(n=!0){return this._growAfterOpen=n,this}withPush(n=!0){return this._canPush=n,this}withLockedPosition(n=!0){return this._positionLocked=n,this}setOrigin(n){return this._origin=n,this}withDefaultOffsetX(n){return this._offsetX=n,this}withDefaultOffsetY(n){return this._offsetY=n,this}withTransformOriginOn(n){return this._transformOriginSelector=n,this}_getOriginPoint(n,e,t){let r;if(t.originX=="center")r=n.left+n.width/2;else{let a=this._isRtl()?n.right:n.left,s=this._isRtl()?n.left:n.right;r=t.originX=="start"?a:s}e.left<0&&(r-=e.left);let o;return t.originY=="center"?o=n.top+n.height/2:o=t.originY=="top"?n.top:n.bottom,e.top<0&&(o-=e.top),{x:r,y:o}}_getOverlayPoint(n,e,t){let r;t.overlayX=="center"?r=-e.width/2:t.overlayX==="start"?r=this._isRtl()?-e.width:0:r=this._isRtl()?0:-e.width;let o;return t.overlayY=="center"?o=-e.height/2:o=t.overlayY=="top"?0:-e.height,{x:n.x+r,y:n.y+o}}_getOverlayFit(n,e,t,r){let o=dg(e),{x:a,y:s}=n,c=this._getOffset(r,"x"),l=this._getOffset(r,"y");c&&(a+=c),l&&(s+=l);let d=0-a,h=a+o.width-t.width,m=0-s,p=s+o.height-t.height,f=this._subtractOverflows(o.width,d,h),g=this._subtractOverflows(o.height,m,p),_=f*g;return{visibleArea:_,isCompletelyWithinViewport:o.width*o.height===_,fitsInViewportVertically:g===o.height,fitsInViewportHorizontally:f==o.width}}_canFitWithFlexibleDimensions(n,e,t){if(this._hasFlexibleDimensions){let r=t.bottom-e.y,o=t.right-e.x,a=lg(this._overlayRef.getConfig().minHeight),s=lg(this._overlayRef.getConfig().minWidth),c=n.fitsInViewportVertically||a!=null&&a<=r,l=n.fitsInViewportHorizontally||s!=null&&s<=o;return c&&l}return!1}_pushOverlayOnScreen(n,e,t){if(this._previousPushAmount&&this._positionLocked)return{x:n.x+this._previousPushAmount.x,y:n.y+this._previousPushAmount.y};let r=dg(e),o=this._viewportRect,a=Math.max(n.x+r.width-o.width,0),s=Math.max(n.y+r.height-o.height,0),c=Math.max(o.top-t.top-n.y,0),l=Math.max(o.left-t.left-n.x,0),d=0,h=0;return r.width<=o.width?d=l||-a:d=n.xf&&!this._isInitialRender&&!this._growAfterOpen&&(a=n.y-f/2)}let c=e.overlayX==="start"&&!r||e.overlayX==="end"&&r,l=e.overlayX==="end"&&!r||e.overlayX==="start"&&r,d,h,m;if(l)m=t.width-n.x+this._viewportMargin*2,d=n.x-this._viewportMargin;else if(c)h=n.x,d=t.right-n.x;else{let p=Math.min(t.right-n.x+t.left,n.x),f=this._lastBoundingBoxSize.width;d=p*2,h=n.x-p,d>f&&!this._isInitialRender&&!this._growAfterOpen&&(h=n.x-f/2)}return{top:a,left:h,bottom:s,right:m,width:d,height:o}}_setBoundingBoxStyles(n,e){let t=this._calculateBoundingBoxRect(n,e);!this._isInitialRender&&!this._growAfterOpen&&(t.height=Math.min(t.height,this._lastBoundingBoxSize.height),t.width=Math.min(t.width,this._lastBoundingBoxSize.width));let r={};if(this._hasExactPosition())r.top=r.left="0",r.bottom=r.right=r.maxHeight=r.maxWidth="",r.width=r.height="100%";else{let o=this._overlayRef.getConfig().maxHeight,a=this._overlayRef.getConfig().maxWidth;r.height=rt(t.height),r.top=rt(t.top),r.bottom=rt(t.bottom),r.width=rt(t.width),r.left=rt(t.left),r.right=rt(t.right),e.overlayX==="center"?r.alignItems="center":r.alignItems=e.overlayX==="end"?"flex-end":"flex-start",e.overlayY==="center"?r.justifyContent="center":r.justifyContent=e.overlayY==="bottom"?"flex-end":"flex-start",o&&(r.maxHeight=rt(o)),a&&(r.maxWidth=rt(a))}this._lastBoundingBoxSize=t,Hn(this._boundingBox.style,r)}_resetBoundingBoxStyles(){Hn(this._boundingBox.style,{top:"0",left:"0",right:"0",bottom:"0",height:"",width:"",alignItems:"",justifyContent:""})}_resetOverlayElementStyles(){Hn(this._pane.style,{top:"",left:"",bottom:"",right:"",position:"",transform:""})}_setOverlayElementStyles(n,e){let t={},r=this._hasExactPosition(),o=this._hasFlexibleDimensions,a=this._overlayRef.getConfig();if(r){let d=this._viewportRuler.getViewportScrollPosition();Hn(t,this._getExactOverlayY(e,n,d)),Hn(t,this._getExactOverlayX(e,n,d))}else t.position="static";let s="",c=this._getOffset(e,"x"),l=this._getOffset(e,"y");c&&(s+=`translateX(${c}px) `),l&&(s+=`translateY(${l}px)`),t.transform=s.trim(),a.maxHeight&&(r?t.maxHeight=rt(a.maxHeight):o&&(t.maxHeight="")),a.maxWidth&&(r?t.maxWidth=rt(a.maxWidth):o&&(t.maxWidth="")),Hn(this._pane.style,t)}_getExactOverlayY(n,e,t){let r={top:"",bottom:""},o=this._getOverlayPoint(e,this._overlayRect,n);if(this._isPushed&&(o=this._pushOverlayOnScreen(o,this._overlayRect,t)),n.overlayY==="bottom"){let a=this._document.documentElement.clientHeight;r.bottom=`${a-(o.y+this._overlayRect.height)}px`}else r.top=rt(o.y);return r}_getExactOverlayX(n,e,t){let r={left:"",right:""},o=this._getOverlayPoint(e,this._overlayRect,n);this._isPushed&&(o=this._pushOverlayOnScreen(o,this._overlayRect,t));let a;if(this._isRtl()?a=n.overlayX==="end"?"left":"right":a=n.overlayX==="end"?"right":"left",a==="right"){let s=this._document.documentElement.clientWidth;r.right=`${s-(o.x+this._overlayRect.width)}px`}else r.left=rt(o.x);return r}_getScrollVisibility(){let n=this._getOriginRect(),e=this._pane.getBoundingClientRect(),t=this._scrollables.map(r=>r.getElementRef().nativeElement.getBoundingClientRect());return{isOriginClipped:ag(n,t),isOriginOutsideView:Dd(n,t),isOverlayClipped:ag(e,t),isOverlayOutsideView:Dd(e,t)}}_subtractOverflows(n,...e){return e.reduce((t,r)=>t-Math.max(r,0),n)}_getNarrowedViewportRect(){let n=this._document.documentElement.clientWidth,e=this._document.documentElement.clientHeight,t=this._viewportRuler.getViewportScrollPosition();return{top:t.top+this._viewportMargin,left:t.left+this._viewportMargin,right:t.left+n-this._viewportMargin,bottom:t.top+e-this._viewportMargin,width:n-2*this._viewportMargin,height:e-2*this._viewportMargin}}_isRtl(){return this._overlayRef.getDirection()==="rtl"}_hasExactPosition(){return!this._hasFlexibleDimensions||this._isPushed}_getOffset(n,e){return e==="x"?n.offsetX==null?this._offsetX:n.offsetX:n.offsetY==null?this._offsetY:n.offsetY}_validatePositions(){}_addPanelClasses(n){this._pane&&Mr(n).forEach(e=>{e!==""&&this._appliedPanelClasses.indexOf(e)===-1&&(this._appliedPanelClasses.push(e),this._pane.classList.add(e))})}_clearPanelClasses(){this._pane&&(this._appliedPanelClasses.forEach(n=>{this._pane.classList.remove(n)}),this._appliedPanelClasses=[])}_getOriginRect(){let n=this._origin;if(n instanceof E)return n.nativeElement.getBoundingClientRect();if(n instanceof Element)return n.getBoundingClientRect();let e=n.width||0,t=n.height||0;return{top:n.y,bottom:n.y+t,left:n.x,right:n.x+e,height:t,width:e}}};function Hn(i,n){for(let e in n)n.hasOwnProperty(e)&&(i[e]=n[e]);return i}function lg(i){if(typeof i!="number"&&i!=null){let[n,e]=i.split(oC);return!e||e==="px"?parseFloat(n):null}return i||null}function dg(i){return{top:Math.floor(i.top),right:Math.floor(i.right),bottom:Math.floor(i.bottom),left:Math.floor(i.left),width:Math.floor(i.width),height:Math.floor(i.height)}}function aC(i,n){return i===n?!0:i.isOriginClipped===n.isOriginClipped&&i.isOriginOutsideView===n.isOriginOutsideView&&i.isOverlayClipped===n.isOverlayClipped&&i.isOverlayOutsideView===n.isOverlayOutsideView}var ug="cdk-global-overlay-wrapper",Td=class{constructor(){this._cssPosition="static",this._topOffset="",this._bottomOffset="",this._alignItems="",this._xPosition="",this._xOffset="",this._width="",this._height="",this._isDisposed=!1}attach(n){let e=n.getConfig();this._overlayRef=n,this._width&&!e.width&&n.updateSize({width:this._width}),this._height&&!e.height&&n.updateSize({height:this._height}),n.hostElement.classList.add(ug),this._isDisposed=!1}top(n=""){return this._bottomOffset="",this._topOffset=n,this._alignItems="flex-start",this}left(n=""){return this._xOffset=n,this._xPosition="left",this}bottom(n=""){return this._topOffset="",this._bottomOffset=n,this._alignItems="flex-end",this}right(n=""){return this._xOffset=n,this._xPosition="right",this}start(n=""){return this._xOffset=n,this._xPosition="start",this}end(n=""){return this._xOffset=n,this._xPosition="end",this}width(n=""){return this._overlayRef?this._overlayRef.updateSize({width:n}):this._width=n,this}height(n=""){return this._overlayRef?this._overlayRef.updateSize({height:n}):this._height=n,this}centerHorizontally(n=""){return this.left(n),this._xPosition="center",this}centerVertically(n=""){return this.top(n),this._alignItems="center",this}apply(){if(!this._overlayRef||!this._overlayRef.hasAttached())return;let n=this._overlayRef.overlayElement.style,e=this._overlayRef.hostElement.style,t=this._overlayRef.getConfig(),{width:r,height:o,maxWidth:a,maxHeight:s}=t,c=(r==="100%"||r==="100vw")&&(!a||a==="100%"||a==="100vw"),l=(o==="100%"||o==="100vh")&&(!s||s==="100%"||s==="100vh"),d=this._xPosition,h=this._xOffset,m=this._overlayRef.getConfig().direction==="rtl",p="",f="",g="";c?g="flex-start":d==="center"?(g="center",m?f=h:p=h):m?d==="left"||d==="end"?(g="flex-end",p=h):(d==="right"||d==="start")&&(g="flex-start",f=h):d==="left"||d==="start"?(g="flex-start",p=h):(d==="right"||d==="end")&&(g="flex-end",f=h),n.position=this._cssPosition,n.marginLeft=c?"0":p,n.marginTop=l?"0":this._topOffset,n.marginBottom=this._bottomOffset,n.marginRight=c?"0":f,e.justifyContent=g,e.alignItems=l?"flex-start":this._alignItems}dispose(){if(this._isDisposed||!this._overlayRef)return;let n=this._overlayRef.overlayElement.style,e=this._overlayRef.hostElement,t=e.style;e.classList.remove(ug),t.justifyContent=t.alignItems=n.marginTop=n.marginBottom=n.marginLeft=n.marginRight=n.position="",this._overlayRef=null,this._isDisposed=!0}},sC=(()=>{class i{constructor(e,t,r,o){this._viewportRuler=e,this._document=t,this._platform=r,this._overlayContainer=o}global(){return new Td}flexibleConnectedTo(e){return new Sd(e,this._viewportRuler,this._document,this._platform,this._overlayContainer)}static{this.\u0275fac=function(t){return new(t||i)(x(Dt),x(oe),x(me),x(Br))}}static{this.\u0275prov=Z({token:i,factory:i.\u0275fac,providedIn:"root"})}}return i})(),cC=0,je=(()=>{class i{constructor(e,t,r,o,a,s,c,l,d,h,m,p){this.scrollStrategies=e,this._overlayContainer=t,this._componentFactoryResolver=r,this._positionBuilder=o,this._keyboardDispatcher=a,this._injector=s,this._ngZone=c,this._document=l,this._directionality=d,this._location=h,this._outsideClickDispatcher=m,this._animationsModuleType=p}create(e){let t=this._createHostElement(),r=this._createPaneElement(t),o=this._createPortalOutlet(r),a=new Ci(e);return a.direction=a.direction||this._directionality.value,new Ni(o,t,r,a,this._ngZone,this._keyboardDispatcher,this._document,this._location,this._outsideClickDispatcher,this._animationsModuleType==="NoopAnimations",this._injector.get(Su))}position(){return this._positionBuilder}_createPaneElement(e){let t=this._document.createElement("div");return t.id=`cdk-overlay-${cC++}`,t.classList.add("cdk-overlay-pane"),e.appendChild(t),t}_createHostElement(){let e=this._document.createElement("div");return this._overlayContainer.getContainerElement().appendChild(e),e}_createPortalOutlet(e){return this._appRef||(this._appRef=this._injector.get(lc)),new Ho(e,this._componentFactoryResolver,this._appRef,this._injector,this._document)}static{this.\u0275fac=function(t){return new(t||i)(x(iC),x(Br),x(fn),x(sC),x(nC),x(Ee),x(B),x(oe),x(Re),x(aa),x(rC),x(we,8))}}static{this.\u0275prov=Z({token:i,factory:i.\u0275fac,providedIn:"root"})}}return i})(),lC=[{originX:"start",originY:"bottom",overlayX:"start",overlayY:"top"},{originX:"start",originY:"top",overlayX:"start",overlayY:"bottom"},{originX:"end",originY:"top",overlayX:"end",overlayY:"bottom"},{originX:"end",originY:"bottom",overlayX:"end",overlayY:"top"}],mg=new C("cdk-connected-overlay-scroll-strategy",{providedIn:"root",factory:()=>{let i=F(je);return()=>i.scrollStrategies.reposition()}}),Qo=(()=>{class i{constructor(e){this.elementRef=e}static{this.\u0275fac=function(t){return new(t||i)(u(E))}}static{this.\u0275dir=D({type:i,selectors:[["","cdk-overlay-origin",""],["","overlay-origin",""],["","cdkOverlayOrigin",""]],exportAs:["cdkOverlayOrigin"],standalone:!0})}}return i})(),Md=(()=>{class i{get offsetX(){return this._offsetX}set offsetX(e){this._offsetX=e,this._position&&this._updatePositionStrategy(this._position)}get offsetY(){return this._offsetY}set offsetY(e){this._offsetY=e,this._position&&this._updatePositionStrategy(this._position)}get disposeOnNavigation(){return this._disposeOnNavigation}set disposeOnNavigation(e){this._disposeOnNavigation=e}constructor(e,t,r,o,a){this._overlay=e,this._dir=a,this._backdropSubscription=Te.EMPTY,this._attachSubscription=Te.EMPTY,this._detachSubscription=Te.EMPTY,this._positionSubscription=Te.EMPTY,this._disposeOnNavigation=!1,this._ngZone=F(B),this.viewportMargin=0,this.open=!1,this.disableClose=!1,this.hasBackdrop=!1,this.lockPosition=!1,this.flexibleDimensions=!1,this.growAfterOpen=!1,this.push=!1,this.backdropClick=new z,this.positionChange=new z,this.attach=new z,this.detach=new z,this.overlayKeydown=new z,this.overlayOutsideClick=new z,this._templatePortal=new Et(t,r),this._scrollStrategyFactory=o,this.scrollStrategy=this._scrollStrategyFactory()}get overlayRef(){return this._overlayRef}get dir(){return this._dir?this._dir.value:"ltr"}ngOnDestroy(){this._attachSubscription.unsubscribe(),this._detachSubscription.unsubscribe(),this._backdropSubscription.unsubscribe(),this._positionSubscription.unsubscribe(),this._overlayRef&&this._overlayRef.dispose()}ngOnChanges(e){this._position&&(this._updatePositionStrategy(this._position),this._overlayRef.updateSize({width:this.width,minWidth:this.minWidth,height:this.height,minHeight:this.minHeight}),e.origin&&this.open&&this._position.apply()),e.open&&(this.open?this._attachOverlay():this._detachOverlay())}_createOverlay(){(!this.positions||!this.positions.length)&&(this.positions=lC);let e=this._overlayRef=this._overlay.create(this._buildConfig());this._attachSubscription=e.attachments().subscribe(()=>this.attach.emit()),this._detachSubscription=e.detachments().subscribe(()=>this.detach.emit()),e.keydownEvents().subscribe(t=>{this.overlayKeydown.next(t),t.keyCode===27&&!this.disableClose&&!Le(t)&&(t.preventDefault(),this._detachOverlay())}),this._overlayRef.outsidePointerEvents().subscribe(t=>{let r=this._getOriginElement(),o=Ot(t);(!r||r!==o&&!r.contains(o))&&this.overlayOutsideClick.next(t)})}_buildConfig(){let e=this._position=this.positionStrategy||this._createPositionStrategy(),t=new Ci({direction:this._dir,positionStrategy:e,scrollStrategy:this.scrollStrategy,hasBackdrop:this.hasBackdrop,disposeOnNavigation:this.disposeOnNavigation});return(this.width||this.width===0)&&(t.width=this.width),(this.height||this.height===0)&&(t.height=this.height),(this.minWidth||this.minWidth===0)&&(t.minWidth=this.minWidth),(this.minHeight||this.minHeight===0)&&(t.minHeight=this.minHeight),this.backdropClass&&(t.backdropClass=this.backdropClass),this.panelClass&&(t.panelClass=this.panelClass),t}_updatePositionStrategy(e){let t=this.positions.map(r=>({originX:r.originX,originY:r.originY,overlayX:r.overlayX,overlayY:r.overlayY,offsetX:r.offsetX||this.offsetX,offsetY:r.offsetY||this.offsetY,panelClass:r.panelClass||void 0}));return e.setOrigin(this._getOrigin()).withPositions(t).withFlexibleDimensions(this.flexibleDimensions).withPush(this.push).withGrowAfterOpen(this.growAfterOpen).withViewportMargin(this.viewportMargin).withLockedPosition(this.lockPosition).withTransformOriginOn(this.transformOriginSelector)}_createPositionStrategy(){let e=this._overlay.position().flexibleConnectedTo(this._getOrigin());return this._updatePositionStrategy(e),e}_getOrigin(){return this.origin instanceof Qo?this.origin.elementRef:this.origin}_getOriginElement(){return this.origin instanceof Qo?this.origin.elementRef.nativeElement:this.origin instanceof E?this.origin.nativeElement:typeof Element<"u"&&this.origin instanceof Element?this.origin:null}_attachOverlay(){this._overlayRef?this._overlayRef.getConfig().hasBackdrop=this.hasBackdrop:this._createOverlay(),this._overlayRef.hasAttached()||this._overlayRef.attach(this._templatePortal),this.hasBackdrop?this._backdropSubscription=this._overlayRef.backdropClick().subscribe(e=>{this.backdropClick.emit(e)}):this._backdropSubscription.unsubscribe(),this._positionSubscription.unsubscribe(),this.positionChange.observers.length>0&&(this._positionSubscription=this._position.positionChanges.pipe(Iu(()=>this.positionChange.observers.length>0)).subscribe(e=>{this._ngZone.run(()=>this.positionChange.emit(e)),this.positionChange.observers.length===0&&this._positionSubscription.unsubscribe()}))}_detachOverlay(){this._overlayRef&&this._overlayRef.detach(),this._backdropSubscription.unsubscribe(),this._positionSubscription.unsubscribe()}static{this.\u0275fac=function(t){return new(t||i)(u(je),u(Ae),u(Ue),u(mg),u(Re,8))}}static{this.\u0275dir=D({type:i,selectors:[["","cdk-connected-overlay",""],["","connected-overlay",""],["","cdkConnectedOverlay",""]],inputs:{origin:[0,"cdkConnectedOverlayOrigin","origin"],positions:[0,"cdkConnectedOverlayPositions","positions"],positionStrategy:[0,"cdkConnectedOverlayPositionStrategy","positionStrategy"],offsetX:[0,"cdkConnectedOverlayOffsetX","offsetX"],offsetY:[0,"cdkConnectedOverlayOffsetY","offsetY"],width:[0,"cdkConnectedOverlayWidth","width"],height:[0,"cdkConnectedOverlayHeight","height"],minWidth:[0,"cdkConnectedOverlayMinWidth","minWidth"],minHeight:[0,"cdkConnectedOverlayMinHeight","minHeight"],backdropClass:[0,"cdkConnectedOverlayBackdropClass","backdropClass"],panelClass:[0,"cdkConnectedOverlayPanelClass","panelClass"],viewportMargin:[0,"cdkConnectedOverlayViewportMargin","viewportMargin"],scrollStrategy:[0,"cdkConnectedOverlayScrollStrategy","scrollStrategy"],open:[0,"cdkConnectedOverlayOpen","open"],disableClose:[0,"cdkConnectedOverlayDisableClose","disableClose"],transformOriginSelector:[0,"cdkConnectedOverlayTransformOriginOn","transformOriginSelector"],hasBackdrop:[2,"cdkConnectedOverlayHasBackdrop","hasBackdrop",O],lockPosition:[2,"cdkConnectedOverlayLockPosition","lockPosition",O],flexibleDimensions:[2,"cdkConnectedOverlayFlexibleDimensions","flexibleDimensions",O],growAfterOpen:[2,"cdkConnectedOverlayGrowAfterOpen","growAfterOpen",O],push:[2,"cdkConnectedOverlayPush","push",O],disposeOnNavigation:[2,"cdkConnectedOverlayDisposeOnNavigation","disposeOnNavigation",O]},outputs:{backdropClick:"backdropClick",positionChange:"positionChange",attach:"attach",detach:"detach",overlayKeydown:"overlayKeydown",overlayOutsideClick:"overlayOutsideClick"},exportAs:["cdkConnectedOverlay"],standalone:!0,features:[ae,Pe]})}}return i})();function dC(i){return()=>i.scrollStrategies.reposition()}var uC={provide:mg,deps:[je],useFactory:dC},ii=(()=>{class i{static{this.\u0275fac=function(t){return new(t||i)}}static{this.\u0275mod=j({type:i})}static{this.\u0275inj=L({providers:[je,uC],imports:[cn,Pi,Bo,Bo]})}}return i})();function hC(i,n){}var Qn=class{constructor(){this.role="dialog",this.panelClass="",this.hasBackdrop=!0,this.backdropClass="",this.disableClose=!1,this.width="",this.height="",this.data=null,this.ariaDescribedBy=null,this.ariaLabelledBy=null,this.ariaLabel=null,this.ariaModal=!0,this.autoFocus="first-tabbable",this.restoreFocus=!0,this.closeOnNavigation=!0,this.closeOnDestroy=!0,this.closeOnOverlayDetachments=!0}};var Od=(()=>{class i extends Vr{constructor(e,t,r,o,a,s,c,l){super(),this._elementRef=e,this._focusTrapFactory=t,this._config=o,this._interactivityChecker=a,this._ngZone=s,this._overlayRef=c,this._focusMonitor=l,this._platform=F(me),this._focusTrap=null,this._elementFocusedBeforeDialogWasOpened=null,this._closeInteractionType=null,this._ariaLabelledByQueue=[],this._changeDetectorRef=F(pe),this._injector=F(Ee),this._isDestroyed=!1,this.attachDomPortal=d=>{this._portalOutlet.hasAttached();let h=this._portalOutlet.attachDomPortal(d);return this._contentAttached(),h},this._document=r,this._config.ariaLabelledBy&&this._ariaLabelledByQueue.push(this._config.ariaLabelledBy)}_addAriaLabelledBy(e){this._ariaLabelledByQueue.push(e),this._changeDetectorRef.markForCheck()}_removeAriaLabelledBy(e){let t=this._ariaLabelledByQueue.indexOf(e);t>-1&&(this._ariaLabelledByQueue.splice(t,1),this._changeDetectorRef.markForCheck())}_contentAttached(){this._initializeFocusTrap(),this._handleBackdropClicks(),this._captureInitialFocus()}_captureInitialFocus(){this._trapFocus()}ngOnDestroy(){this._isDestroyed=!0,this._restoreFocus()}attachComponentPortal(e){this._portalOutlet.hasAttached();let t=this._portalOutlet.attachComponentPortal(e);return this._contentAttached(),t}attachTemplatePortal(e){this._portalOutlet.hasAttached();let t=this._portalOutlet.attachTemplatePortal(e);return this._contentAttached(),t}_recaptureFocus(){this._containsFocus()||this._trapFocus()}_forceFocus(e,t){this._interactivityChecker.isFocusable(e)||(e.tabIndex=-1,this._ngZone.runOutsideAngular(()=>{let r=()=>{e.removeEventListener("blur",r),e.removeEventListener("mousedown",r),e.removeAttribute("tabindex")};e.addEventListener("blur",r),e.addEventListener("mousedown",r)})),e.focus(t)}_focusByCssSelector(e,t){let r=this._elementRef.nativeElement.querySelector(e);r&&this._forceFocus(r,t)}_trapFocus(){this._isDestroyed||tt(()=>{let e=this._elementRef.nativeElement;switch(this._config.autoFocus){case!1:case"dialog":this._containsFocus()||e.focus();break;case!0:case"first-tabbable":this._focusTrap?.focusInitialElement()||this._focusDialogContainer();break;case"first-heading":this._focusByCssSelector('h1, h2, h3, h4, h5, h6, [role="heading"]');break;default:this._focusByCssSelector(this._config.autoFocus);break}},{injector:this._injector})}_restoreFocus(){let e=this._config.restoreFocus,t=null;if(typeof e=="string"?t=this._document.querySelector(e):typeof e=="boolean"?t=e?this._elementFocusedBeforeDialogWasOpened:null:e&&(t=e),this._config.restoreFocus&&t&&typeof t.focus=="function"){let r=Ao(),o=this._elementRef.nativeElement;(!r||r===this._document.body||r===o||o.contains(r))&&(this._focusMonitor?(this._focusMonitor.focusVia(t,this._closeInteractionType),this._closeInteractionType=null):t.focus())}this._focusTrap&&this._focusTrap.destroy()}_focusDialogContainer(){this._elementRef.nativeElement.focus&&this._elementRef.nativeElement.focus()}_containsFocus(){let e=this._elementRef.nativeElement,t=Ao();return e===t||e.contains(t)}_initializeFocusTrap(){this._platform.isBrowser&&(this._focusTrap=this._focusTrapFactory.create(this._elementRef.nativeElement),this._document&&(this._elementFocusedBeforeDialogWasOpened=Ao()))}_handleBackdropClicks(){this._overlayRef.backdropClick().subscribe(()=>{this._config.disableClose&&this._recaptureFocus()})}static{this.\u0275fac=function(t){return new(t||i)(u(E),u(Nr),u(oe,8),u(Qn),u(Nn),u(B),u(Ni),u(ot))}}static{this.\u0275cmp=H({type:i,selectors:[["cdk-dialog-container"]],viewQuery:function(t,r){if(t&1&&re(mi,7),t&2){let o;S(o=T())&&(r._portalOutlet=o.first)}},hostAttrs:["tabindex","-1",1,"cdk-dialog-container"],hostVars:6,hostBindings:function(t,r){t&2&&W("id",r._config.id||null)("role",r._config.role)("aria-modal",r._config.ariaModal)("aria-labelledby",r._config.ariaLabel?null:r._ariaLabelledByQueue[0])("aria-label",r._config.ariaLabel)("aria-describedby",r._config.ariaDescribedBy||null)},standalone:!0,features:[ne,Q],decls:1,vars:0,consts:[["cdkPortalOutlet",""]],template:function(t,r){t&1&&te(0,hC,0,0,"ng-template",0)},dependencies:[mi],styles:[".cdk-dialog-container{display:block;width:100%;height:100%;min-height:inherit;max-height:inherit}"],encapsulation:2})}}return i})(),qo=class{constructor(n,e){this.overlayRef=n,this.config=e,this.closed=new R,this.disableClose=e.disableClose,this.backdropClick=n.backdropClick(),this.keydownEvents=n.keydownEvents(),this.outsidePointerEvents=n.outsidePointerEvents(),this.id=e.id,this.keydownEvents.subscribe(t=>{t.keyCode===27&&!this.disableClose&&!Le(t)&&(t.preventDefault(),this.close(void 0,{focusOrigin:"keyboard"}))}),this.backdropClick.subscribe(()=>{this.disableClose||this.close(void 0,{focusOrigin:"mouse"})}),this._detachSubscription=n.detachments().subscribe(()=>{e.closeOnOverlayDetachments!==!1&&this.close()})}close(n,e){if(this.containerInstance){let t=this.closed;this.containerInstance._closeInteractionType=e?.focusOrigin||"program",this._detachSubscription.unsubscribe(),this.overlayRef.dispose(),t.next(n),t.complete(),this.componentInstance=this.containerInstance=null}}updatePosition(){return this.overlayRef.updatePosition(),this}updateSize(n="",e=""){return this.overlayRef.updateSize({width:n,height:e}),this}addPanelClass(n){return this.overlayRef.addPanelClass(n),this}removePanelClass(n){return this.overlayRef.removePanelClass(n),this}},mC=new C("DialogScrollStrategy",{providedIn:"root",factory:()=>{let i=F(je);return()=>i.scrollStrategies.block()}}),pC=new C("DialogData"),fC=new C("DefaultDialogConfig");var gC=0,Rd=(()=>{class i{get openDialogs(){return this._parentDialog?this._parentDialog.openDialogs:this._openDialogsAtThisLevel}get afterOpened(){return this._parentDialog?this._parentDialog.afterOpened:this._afterOpenedAtThisLevel}constructor(e,t,r,o,a,s){this._overlay=e,this._injector=t,this._defaultOptions=r,this._parentDialog=o,this._overlayContainer=a,this._openDialogsAtThisLevel=[],this._afterAllClosedAtThisLevel=new R,this._afterOpenedAtThisLevel=new R,this._ariaHiddenElements=new Map,this.afterAllClosed=zi(()=>this.openDialogs.length?this._getAfterAllClosed():this._getAfterAllClosed().pipe(Me(void 0))),this._scrollStrategy=s}open(e,t){let r=this._defaultOptions||new Qn;t=N(N({},r),t),t.id=t.id||`cdk-dialog-${gC++}`,t.id&&this.getDialogById(t.id);let o=this._getOverlayConfig(t),a=this._overlay.create(o),s=new qo(a,t),c=this._attachContainer(a,s,t);return s.containerInstance=c,this._attachDialogContent(e,s,c,t),this.openDialogs.length||this._hideNonDialogContentFromAssistiveTechnology(),this.openDialogs.push(s),s.closed.subscribe(()=>this._removeOpenDialog(s,!0)),this.afterOpened.next(s),s}closeAll(){Ad(this.openDialogs,e=>e.close())}getDialogById(e){return this.openDialogs.find(t=>t.id===e)}ngOnDestroy(){Ad(this._openDialogsAtThisLevel,e=>{e.config.closeOnDestroy===!1&&this._removeOpenDialog(e,!1)}),Ad(this._openDialogsAtThisLevel,e=>e.close()),this._afterAllClosedAtThisLevel.complete(),this._afterOpenedAtThisLevel.complete(),this._openDialogsAtThisLevel=[]}_getOverlayConfig(e){let t=new Ci({positionStrategy:e.positionStrategy||this._overlay.position().global().centerHorizontally().centerVertically(),scrollStrategy:e.scrollStrategy||this._scrollStrategy(),panelClass:e.panelClass,hasBackdrop:e.hasBackdrop,direction:e.direction,minWidth:e.minWidth,minHeight:e.minHeight,maxWidth:e.maxWidth,maxHeight:e.maxHeight,width:e.width,height:e.height,disposeOnNavigation:e.closeOnNavigation});return e.backdropClass&&(t.backdropClass=e.backdropClass),t}_attachContainer(e,t,r){let o=r.injector||r.viewContainerRef?.injector,a=[{provide:Qn,useValue:r},{provide:qo,useValue:t},{provide:Ni,useValue:e}],s;r.container?typeof r.container=="function"?s=r.container:(s=r.container.type,a.push(...r.container.providers(r))):s=Od;let c=new hn(s,r.viewContainerRef,Ee.create({parent:o||this._injector,providers:a}),r.componentFactoryResolver);return e.attach(c).instance}_attachDialogContent(e,t,r,o){if(e instanceof Ae){let a=this._createInjector(o,t,r,void 0),s={$implicit:o.data,dialogRef:t};o.templateContext&&(s=N(N({},s),typeof o.templateContext=="function"?o.templateContext():o.templateContext)),r.attachTemplatePortal(new Et(e,null,s,a))}else{let a=this._createInjector(o,t,r,this._injector),s=r.attachComponentPortal(new hn(e,o.viewContainerRef,a,o.componentFactoryResolver));t.componentRef=s,t.componentInstance=s.instance}}_createInjector(e,t,r,o){let a=e.injector||e.viewContainerRef?.injector,s=[{provide:pC,useValue:e.data},{provide:qo,useValue:t}];return e.providers&&(typeof e.providers=="function"?s.push(...e.providers(t,e,r)):s.push(...e.providers)),e.direction&&(!a||!a.get(Re,null,{optional:!0}))&&s.push({provide:Re,useValue:{value:e.direction,change:He()}}),Ee.create({parent:a||o,providers:s})}_removeOpenDialog(e,t){let r=this.openDialogs.indexOf(e);r>-1&&(this.openDialogs.splice(r,1),this.openDialogs.length||(this._ariaHiddenElements.forEach((o,a)=>{o?a.setAttribute("aria-hidden",o):a.removeAttribute("aria-hidden")}),this._ariaHiddenElements.clear(),t&&this._getAfterAllClosed().next()))}_hideNonDialogContentFromAssistiveTechnology(){let e=this._overlayContainer.getContainerElement();if(e.parentElement){let t=e.parentElement.children;for(let r=t.length-1;r>-1;r--){let o=t[r];o!==e&&o.nodeName!=="SCRIPT"&&o.nodeName!=="STYLE"&&!o.hasAttribute("aria-live")&&(this._ariaHiddenElements.set(o,o.getAttribute("aria-hidden")),o.setAttribute("aria-hidden","true"))}}}_getAfterAllClosed(){let e=this._parentDialog;return e?e._getAfterAllClosed():this._afterAllClosedAtThisLevel}static{this.\u0275fac=function(t){return new(t||i)(x(je),x(Ee),x(fC,8),x(i,12),x(Br),x(mC))}}static{this.\u0275prov=Z({token:i,factory:i.\u0275fac,providedIn:"root"})}}return i})();function Ad(i,n){let e=i.length;for(;e--;)n(i[e])}var pg=(()=>{class i{static{this.\u0275fac=function(t){return new(t||i)}}static{this.\u0275mod=j({type:i})}static{this.\u0275inj=L({providers:[Rd],imports:[ii,Pi,Ts,Pi]})}}return i})();function bC(i,n){}var Wo=class{constructor(){this.role="dialog",this.panelClass="",this.hasBackdrop=!0,this.backdropClass="",this.disableClose=!1,this.width="",this.height="",this.data=null,this.ariaDescribedBy=null,this.ariaLabelledBy=null,this.ariaLabel=null,this.ariaModal=!0,this.autoFocus="first-tabbable",this.restoreFocus=!0,this.delayFocusTrap=!0,this.closeOnNavigation=!0}},Fd="mdc-dialog--open",fg="mdc-dialog--opening",gg="mdc-dialog--closing",vC=150,_C=75,yC=(()=>{class i extends Od{constructor(e,t,r,o,a,s,c,l,d){super(e,t,r,o,a,s,c,d),this._animationMode=l,this._animationStateChanged=new z,this._animationsEnabled=this._animationMode!=="NoopAnimations",this._actionSectionCount=0,this._hostElement=this._elementRef.nativeElement,this._enterAnimationDuration=this._animationsEnabled?vg(this._config.enterAnimationDuration)??vC:0,this._exitAnimationDuration=this._animationsEnabled?vg(this._config.exitAnimationDuration)??_C:0,this._animationTimer=null,this._finishDialogOpen=()=>{this._clearAnimationClasses(),this._openAnimationDone(this._enterAnimationDuration)},this._finishDialogClose=()=>{this._clearAnimationClasses(),this._animationStateChanged.emit({state:"closed",totalTime:this._exitAnimationDuration})}}_contentAttached(){super._contentAttached(),this._startOpenAnimation()}_startOpenAnimation(){this._animationStateChanged.emit({state:"opening",totalTime:this._enterAnimationDuration}),this._animationsEnabled?(this._hostElement.style.setProperty(bg,`${this._enterAnimationDuration}ms`),this._requestAnimationFrame(()=>this._hostElement.classList.add(fg,Fd)),this._waitForAnimationToComplete(this._enterAnimationDuration,this._finishDialogOpen)):(this._hostElement.classList.add(Fd),Promise.resolve().then(()=>this._finishDialogOpen()))}_startExitAnimation(){this._animationStateChanged.emit({state:"closing",totalTime:this._exitAnimationDuration}),this._hostElement.classList.remove(Fd),this._animationsEnabled?(this._hostElement.style.setProperty(bg,`${this._exitAnimationDuration}ms`),this._requestAnimationFrame(()=>this._hostElement.classList.add(gg)),this._waitForAnimationToComplete(this._exitAnimationDuration,this._finishDialogClose)):Promise.resolve().then(()=>this._finishDialogClose())}_updateActionSectionCount(e){this._actionSectionCount+=e,this._changeDetectorRef.markForCheck()}_clearAnimationClasses(){this._hostElement.classList.remove(fg,gg)}_waitForAnimationToComplete(e,t){this._animationTimer!==null&&clearTimeout(this._animationTimer),this._animationTimer=setTimeout(t,e)}_requestAnimationFrame(e){this._ngZone.runOutsideAngular(()=>{typeof requestAnimationFrame=="function"?requestAnimationFrame(e):e()})}_captureInitialFocus(){this._config.delayFocusTrap||this._trapFocus()}_openAnimationDone(e){this._config.delayFocusTrap&&this._trapFocus(),this._animationStateChanged.next({state:"opened",totalTime:e})}ngOnDestroy(){super.ngOnDestroy(),this._animationTimer!==null&&clearTimeout(this._animationTimer)}attachComponentPortal(e){let t=super.attachComponentPortal(e);return t.location.nativeElement.classList.add("mat-mdc-dialog-component-host"),t}static{this.\u0275fac=function(t){return new(t||i)(u(E),u(Nr),u(oe,8),u(Wo),u(Nn),u(B),u(Ni),u(we,8),u(ot))}}static{this.\u0275cmp=H({type:i,selectors:[["mat-dialog-container"]],hostAttrs:["tabindex","-1",1,"mat-mdc-dialog-container","mdc-dialog"],hostVars:10,hostBindings:function(t,r){t&2&&(St("id",r._config.id),W("aria-modal",r._config.ariaModal)("role",r._config.role)("aria-labelledby",r._config.ariaLabel?null:r._ariaLabelledByQueue[0])("aria-label",r._config.ariaLabel)("aria-describedby",r._config.ariaDescribedBy||null),P("_mat-animation-noopable",!r._animationsEnabled)("mat-mdc-dialog-container-with-actions",r._actionSectionCount>0))},standalone:!0,features:[ne,Q],decls:3,vars:0,consts:[[1,"mat-mdc-dialog-inner-container","mdc-dialog__container"],[1,"mat-mdc-dialog-surface","mdc-dialog__surface"],["cdkPortalOutlet",""]],template:function(t,r){t&1&&(w(0,"div",0)(1,"div",1),te(2,bC,0,0,"ng-template",2),I()())},dependencies:[mi],styles:['.mat-mdc-dialog-container{width:100%;height:100%;display:block;box-sizing:border-box;max-height:inherit;min-height:inherit;min-width:inherit;max-width:inherit;outline:0}.cdk-overlay-pane.mat-mdc-dialog-panel{max-width:var(--mat-dialog-container-max-width, 80vw);min-width:var(--mat-dialog-container-min-width, 0)}@media(max-width: 599px){.cdk-overlay-pane.mat-mdc-dialog-panel{max-width:var(--mat-dialog-container-small-max-width, 80vw)}}.mat-mdc-dialog-inner-container{display:flex;flex-direction:row;align-items:center;justify-content:space-around;box-sizing:border-box;height:100%;opacity:0;transition:opacity linear var(--mat-dialog-transition-duration, 0ms);max-height:inherit;min-height:inherit;min-width:inherit;max-width:inherit}.mdc-dialog--closing .mat-mdc-dialog-inner-container{transition:opacity 75ms linear;transform:none}.mdc-dialog--open .mat-mdc-dialog-inner-container{opacity:1}._mat-animation-noopable .mat-mdc-dialog-inner-container{transition:none}.mat-mdc-dialog-surface{display:flex;flex-direction:column;flex-grow:0;flex-shrink:0;box-sizing:border-box;width:100%;height:100%;position:relative;overflow-y:auto;outline:0;transform:scale(0.8);transition:transform var(--mat-dialog-transition-duration, 0ms) cubic-bezier(0, 0, 0.2, 1);max-height:inherit;min-height:inherit;min-width:inherit;max-width:inherit;box-shadow:var(--mat-dialog-container-elevation-shadow, 0px 11px 15px -7px rgba(0, 0, 0, 0.2), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 9px 46px 8px rgba(0, 0, 0, 0.12));border-radius:var(--mdc-dialog-container-shape, var(--mat-app-corner-extra-large, 4px));background-color:var(--mdc-dialog-container-color, var(--mat-app-surface, white))}[dir=rtl] .mat-mdc-dialog-surface{text-align:right}.mdc-dialog--open .mat-mdc-dialog-surface,.mdc-dialog--closing .mat-mdc-dialog-surface{transform:none}._mat-animation-noopable .mat-mdc-dialog-surface{transition:none}.mat-mdc-dialog-surface::before{position:absolute;box-sizing:border-box;width:100%;height:100%;top:0;left:0;border:2px solid rgba(0,0,0,0);border-radius:inherit;content:"";pointer-events:none}.mat-mdc-dialog-title{display:block;position:relative;flex-shrink:0;box-sizing:border-box;margin:0 0 1px;padding:var(--mat-dialog-headline-padding, 0 24px 9px)}.mat-mdc-dialog-title::before{display:inline-block;width:0;height:40px;content:"";vertical-align:0}[dir=rtl] .mat-mdc-dialog-title{text-align:right}.mat-mdc-dialog-container .mat-mdc-dialog-title{color:var(--mdc-dialog-subhead-color, var(--mat-app-on-surface, rgba(0, 0, 0, 0.87)));font-family:var(--mdc-dialog-subhead-font, var(--mat-app-headline-small-font, inherit));line-height:var(--mdc-dialog-subhead-line-height, var(--mat-app-headline-small-line-height, 1.5rem));font-size:var(--mdc-dialog-subhead-size, var(--mat-app-headline-small-size, 1rem));font-weight:var(--mdc-dialog-subhead-weight, var(--mat-app-headline-small-weight, 400));letter-spacing:var(--mdc-dialog-subhead-tracking, var(--mat-app-headline-small-tracking, 0.03125em))}.mat-mdc-dialog-content{display:block;flex-grow:1;box-sizing:border-box;margin:0;overflow:auto;max-height:65vh}.mat-mdc-dialog-content>:first-child{margin-top:0}.mat-mdc-dialog-content>:last-child{margin-bottom:0}.mat-mdc-dialog-container .mat-mdc-dialog-content{color:var(--mdc-dialog-supporting-text-color, var(--mat-app-on-surface-variant, rgba(0, 0, 0, 0.6)));font-family:var(--mdc-dialog-supporting-text-font, var(--mat-app-body-medium-font, inherit));line-height:var(--mdc-dialog-supporting-text-line-height, var(--mat-app-body-medium-line-height, 1.5rem));font-size:var(--mdc-dialog-supporting-text-size, var(--mat-app-body-medium-size, 1rem));font-weight:var(--mdc-dialog-supporting-text-weight, var(--mat-app-body-medium-weight, 400));letter-spacing:var(--mdc-dialog-supporting-text-tracking, var(--mat-app-body-medium-tracking, 0.03125em))}.mat-mdc-dialog-container .mat-mdc-dialog-content{padding:var(--mat-dialog-content-padding, 20px 24px)}.mat-mdc-dialog-container-with-actions .mat-mdc-dialog-content{padding:var(--mat-dialog-with-actions-content-padding, 20px 24px)}.mat-mdc-dialog-container .mat-mdc-dialog-title+.mat-mdc-dialog-content{padding-top:0}.mat-mdc-dialog-actions{display:flex;position:relative;flex-shrink:0;flex-wrap:wrap;align-items:center;justify-content:flex-end;box-sizing:border-box;min-height:52px;margin:0;padding:8px;border-top:1px solid rgba(0,0,0,0);padding:var(--mat-dialog-actions-padding, 8px);justify-content:var(--mat-dialog-actions-alignment, start)}.cdk-high-contrast-active .mat-mdc-dialog-actions{border-top-color:CanvasText}.mat-mdc-dialog-actions.mat-mdc-dialog-actions-align-start,.mat-mdc-dialog-actions[align=start]{justify-content:start}.mat-mdc-dialog-actions.mat-mdc-dialog-actions-align-center,.mat-mdc-dialog-actions[align=center]{justify-content:center}.mat-mdc-dialog-actions.mat-mdc-dialog-actions-align-end,.mat-mdc-dialog-actions[align=end]{justify-content:flex-end}.mat-mdc-dialog-actions .mat-button-base+.mat-button-base,.mat-mdc-dialog-actions .mat-mdc-button-base+.mat-mdc-button-base{margin-left:8px}[dir=rtl] .mat-mdc-dialog-actions .mat-button-base+.mat-button-base,[dir=rtl] .mat-mdc-dialog-actions .mat-mdc-button-base+.mat-mdc-button-base{margin-left:0;margin-right:8px}.mat-mdc-dialog-component-host{display:contents}'],encapsulation:2})}}return i})(),bg="--mat-dialog-transition-duration";function vg(i){return i==null?null:typeof i=="number"?i:i.endsWith("ms")?Ct(i.substring(0,i.length-2)):i.endsWith("s")?Ct(i.substring(0,i.length-1))*1e3:i==="0"?0:null}var Vs=function(i){return i[i.OPEN=0]="OPEN",i[i.CLOSING=1]="CLOSING",i[i.CLOSED=2]="CLOSED",i}(Vs||{}),Go=class{constructor(n,e,t){this._ref=n,this._containerInstance=t,this._afterOpened=new R,this._beforeClosed=new R,this._state=Vs.OPEN,this.disableClose=e.disableClose,this.id=n.id,n.addPanelClass("mat-mdc-dialog-panel"),t._animationStateChanged.pipe(ye(r=>r.state==="opened"),Ye(1)).subscribe(()=>{this._afterOpened.next(),this._afterOpened.complete()}),t._animationStateChanged.pipe(ye(r=>r.state==="closed"),Ye(1)).subscribe(()=>{clearTimeout(this._closeFallbackTimeout),this._finishDialogClose()}),n.overlayRef.detachments().subscribe(()=>{this._beforeClosed.next(this._result),this._beforeClosed.complete(),this._finishDialogClose()}),Fe(this.backdropClick(),this.keydownEvents().pipe(ye(r=>r.keyCode===27&&!this.disableClose&&!Le(r)))).subscribe(r=>{this.disableClose||(r.preventDefault(),_g(this,r.type==="keydown"?"keyboard":"mouse"))})}close(n){this._result=n,this._containerInstance._animationStateChanged.pipe(ye(e=>e.state==="closing"),Ye(1)).subscribe(e=>{this._beforeClosed.next(n),this._beforeClosed.complete(),this._ref.overlayRef.detachBackdrop(),this._closeFallbackTimeout=setTimeout(()=>this._finishDialogClose(),e.totalTime+100)}),this._state=Vs.CLOSING,this._containerInstance._startExitAnimation()}afterOpened(){return this._afterOpened}afterClosed(){return this._ref.closed}beforeClosed(){return this._beforeClosed}backdropClick(){return this._ref.backdropClick}keydownEvents(){return this._ref.keydownEvents}updatePosition(n){let e=this._ref.config.positionStrategy;return n&&(n.left||n.right)?n.left?e.left(n.left):e.right(n.right):e.centerHorizontally(),n&&(n.top||n.bottom)?n.top?e.top(n.top):e.bottom(n.bottom):e.centerVertically(),this._ref.updatePosition(),this}updateSize(n="",e=""){return this._ref.updateSize(n,e),this}addPanelClass(n){return this._ref.addPanelClass(n),this}removePanelClass(n){return this._ref.removePanelClass(n),this}getState(){return this._state}_finishDialogClose(){this._state=Vs.CLOSED,this._ref.close(this._result,{focusOrigin:this._closeInteractionType}),this.componentInstance=null}};function _g(i,n,e){return i._closeInteractionType=n,i.close(e)}var xC=new C("MatMdcDialogData"),wC=new C("mat-mdc-dialog-default-options"),CC=new C("mat-mdc-dialog-scroll-strategy",{providedIn:"root",factory:()=>{let i=F(je);return()=>i.scrollStrategies.block()}});var kC=0,Pd=(()=>{class i{get openDialogs(){return this._parentDialog?this._parentDialog.openDialogs:this._openDialogsAtThisLevel}get afterOpened(){return this._parentDialog?this._parentDialog.afterOpened:this._afterOpenedAtThisLevel}_getAfterAllClosed(){let e=this._parentDialog;return e?e._getAfterAllClosed():this._afterAllClosedAtThisLevel}constructor(e,t,r,o,a,s,c,l){this._overlay=e,this._defaultOptions=o,this._scrollStrategy=a,this._parentDialog=s,this._openDialogsAtThisLevel=[],this._afterAllClosedAtThisLevel=new R,this._afterOpenedAtThisLevel=new R,this.dialogConfigClass=Wo,this.afterAllClosed=zi(()=>this.openDialogs.length?this._getAfterAllClosed():this._getAfterAllClosed().pipe(Me(void 0))),this._dialog=t.get(Rd),this._dialogRefConstructor=Go,this._dialogContainerType=yC,this._dialogDataToken=xC}open(e,t){let r;t=N(N({},this._defaultOptions||new Wo),t),t.id=t.id||`mat-mdc-dialog-${kC++}`,t.scrollStrategy=t.scrollStrategy||this._scrollStrategy();let o=this._dialog.open(e,Qe(N({},t),{positionStrategy:this._overlay.position().global().centerHorizontally().centerVertically(),disableClose:!0,closeOnDestroy:!1,closeOnOverlayDetachments:!1,container:{type:this._dialogContainerType,providers:()=>[{provide:this.dialogConfigClass,useValue:t},{provide:Qn,useValue:t}]},templateContext:()=>({dialogRef:r}),providers:(a,s,c)=>(r=new this._dialogRefConstructor(a,t,c),r.updatePosition(t?.position),[{provide:this._dialogContainerType,useValue:c},{provide:this._dialogDataToken,useValue:s.data},{provide:this._dialogRefConstructor,useValue:r}])}));return r.componentRef=o.componentRef,r.componentInstance=o.componentInstance,this.openDialogs.push(r),this.afterOpened.next(r),r.afterClosed().subscribe(()=>{let a=this.openDialogs.indexOf(r);a>-1&&(this.openDialogs.splice(a,1),this.openDialogs.length||this._getAfterAllClosed().next())}),r}closeAll(){this._closeDialogs(this.openDialogs)}getDialogById(e){return this.openDialogs.find(t=>t.id===e)}ngOnDestroy(){this._closeDialogs(this._openDialogsAtThisLevel),this._afterAllClosedAtThisLevel.complete(),this._afterOpenedAtThisLevel.complete()}_closeDialogs(e){let t=e.length;for(;t--;)e[t].close()}static{this.\u0275fac=function(t){return new(t||i)(x(je),x(Ee),x(aa,8),x(wC,8),x(CC),x(i,12),x(Br),x(we,8))}}static{this.\u0275prov=Z({token:i,factory:i.\u0275fac,providedIn:"root"})}}return i})(),DC=0,WV=(()=>{class i{constructor(e,t,r){this.dialogRef=e,this._elementRef=t,this._dialog=r,this.type="button"}ngOnInit(){this.dialogRef||(this.dialogRef=xg(this._elementRef,this._dialog.openDialogs))}ngOnChanges(e){let t=e._matDialogClose||e._matDialogCloseResult;t&&(this.dialogResult=t.currentValue)}_onButtonClick(e){_g(this.dialogRef,e.screenX===0&&e.screenY===0?"keyboard":"mouse",this.dialogResult)}static{this.\u0275fac=function(t){return new(t||i)(u(Go,8),u(E),u(Pd))}}static{this.\u0275dir=D({type:i,selectors:[["","mat-dialog-close",""],["","matDialogClose",""]],hostVars:2,hostBindings:function(t,r){t&1&&ee("click",function(a){return r._onButtonClick(a)}),t&2&&W("aria-label",r.ariaLabel||null)("type",r.type)},inputs:{ariaLabel:[0,"aria-label","ariaLabel"],type:"type",dialogResult:[0,"mat-dialog-close","dialogResult"],_matDialogClose:[0,"matDialogClose","_matDialogClose"]},exportAs:["matDialogClose"],standalone:!0,features:[Pe]})}}return i})(),yg=(()=>{class i{constructor(e,t,r){this._dialogRef=e,this._elementRef=t,this._dialog=r}ngOnInit(){this._dialogRef||(this._dialogRef=xg(this._elementRef,this._dialog.openDialogs)),this._dialogRef&&Promise.resolve().then(()=>{this._onAdd()})}ngOnDestroy(){this._dialogRef?._containerInstance&&Promise.resolve().then(()=>{this._onRemove()})}static{this.\u0275fac=function(t){return new(t||i)(u(Go,8),u(E),u(Pd))}}static{this.\u0275dir=D({type:i,standalone:!0})}}return i})(),GV=(()=>{class i extends yg{constructor(){super(...arguments),this.id=`mat-mdc-dialog-title-${DC++}`}_onAdd(){this._dialogRef._containerInstance?._addAriaLabelledBy?.(this.id)}_onRemove(){this._dialogRef?._containerInstance?._removeAriaLabelledBy?.(this.id)}static{this.\u0275fac=(()=>{let e;return function(r){return(e||(e=Ke(i)))(r||i)}})()}static{this.\u0275dir=D({type:i,selectors:[["","mat-dialog-title",""],["","matDialogTitle",""]],hostAttrs:[1,"mat-mdc-dialog-title","mdc-dialog__title"],hostVars:1,hostBindings:function(t,r){t&2&&St("id",r.id)},inputs:{id:"id"},exportAs:["matDialogTitle"],standalone:!0,features:[ne]})}}return i})(),$V=(()=>{class i{static{this.\u0275fac=function(t){return new(t||i)}}static{this.\u0275dir=D({type:i,selectors:[["","mat-dialog-content",""],["mat-dialog-content"],["","matDialogContent",""]],hostAttrs:[1,"mat-mdc-dialog-content","mdc-dialog__content"],standalone:!0,features:[Pu([Fi])]})}}return i})(),YV=(()=>{class i extends yg{_onAdd(){this._dialogRef._containerInstance?._updateActionSectionCount?.(1)}_onRemove(){this._dialogRef._containerInstance?._updateActionSectionCount?.(-1)}static{this.\u0275fac=(()=>{let e;return function(r){return(e||(e=Ke(i)))(r||i)}})()}static{this.\u0275dir=D({type:i,selectors:[["","mat-dialog-actions",""],["mat-dialog-actions"],["","matDialogActions",""]],hostAttrs:[1,"mat-mdc-dialog-actions","mdc-dialog__actions"],hostVars:6,hostBindings:function(t,r){t&2&&P("mat-mdc-dialog-actions-align-start",r.align==="start")("mat-mdc-dialog-actions-align-center",r.align==="center")("mat-mdc-dialog-actions-align-end",r.align==="end")},inputs:{align:"align"},standalone:!0,features:[ne]})}}return i})();function xg(i,n){let e=i.nativeElement.parentElement;for(;e&&!e.classList.contains("mat-mdc-dialog-container");)e=e.parentElement;return e?n.find(t=>t.id===e.id):null}var wg=(()=>{class i{static{this.\u0275fac=function(t){return new(t||i)}}static{this.\u0275mod=j({type:i})}static{this.\u0275inj=L({providers:[Pd],imports:[pg,ii,Pi,K,K]})}}return i})();var e2=(()=>{class i{constructor(){this._vertical=!1,this._inset=!1}get vertical(){return this._vertical}set vertical(e){this._vertical=ut(e)}get inset(){return this._inset}set inset(e){this._inset=ut(e)}static{this.\u0275fac=function(t){return new(t||i)}}static{this.\u0275cmp=H({type:i,selectors:[["mat-divider"]],hostAttrs:["role","separator",1,"mat-divider"],hostVars:7,hostBindings:function(t,r){t&2&&(W("aria-orientation",r.vertical?"vertical":"horizontal"),P("mat-divider-vertical",r.vertical)("mat-divider-horizontal",!r.vertical)("mat-divider-inset",r.inset))},inputs:{vertical:"vertical",inset:"inset"},standalone:!0,features:[Q],decls:0,vars:0,template:function(t,r){},styles:[".mat-divider{display:block;margin:0;border-top-style:solid;border-top-color:var(--mat-divider-color, var(--mat-app-outline));border-top-width:var(--mat-divider-width)}.mat-divider.mat-divider-vertical{border-top:0;border-right-style:solid;border-right-color:var(--mat-divider-color, var(--mat-app-outline));border-right-width:var(--mat-divider-width)}.mat-divider.mat-divider-inset{margin-left:80px}[dir=rtl] .mat-divider.mat-divider-inset{margin-left:auto;margin-right:80px}"],encapsulation:2,changeDetection:0})}}return i})(),Cg=(()=>{class i{static{this.\u0275fac=function(t){return new(t||i)}}static{this.\u0275mod=j({type:i})}static{this.\u0275inj=L({imports:[K,K]})}}return i})();var kg=new C("CdkAccordion");var EC=0,Dg=(()=>{class i{get expanded(){return this._expanded}set expanded(e){if(this._expanded!==e){if(this._expanded=e,this.expandedChange.emit(e),e){this.opened.emit();let t=this.accordion?this.accordion.id:this.id;this._expansionDispatcher.notify(this.id,t)}else this.closed.emit();this._changeDetectorRef.markForCheck()}}constructor(e,t,r){this.accordion=e,this._changeDetectorRef=t,this._expansionDispatcher=r,this._openCloseAllSubscription=Te.EMPTY,this.closed=new z,this.opened=new z,this.destroyed=new z,this.expandedChange=new z,this.id=`cdk-accordion-child-${EC++}`,this._expanded=!1,this.disabled=!1,this._removeUniqueSelectionListener=()=>{},this._removeUniqueSelectionListener=r.listen((o,a)=>{this.accordion&&!this.accordion.multi&&this.accordion.id===a&&this.id!==o&&(this.expanded=!1)}),this.accordion&&(this._openCloseAllSubscription=this._subscribeToOpenCloseAllActions())}ngOnDestroy(){this.opened.complete(),this.closed.complete(),this.destroyed.emit(),this.destroyed.complete(),this._removeUniqueSelectionListener(),this._openCloseAllSubscription.unsubscribe()}toggle(){this.disabled||(this.expanded=!this.expanded)}close(){this.disabled||(this.expanded=!1)}open(){this.disabled||(this.expanded=!0)}_subscribeToOpenCloseAllActions(){return this.accordion._openCloseAllActions.subscribe(e=>{this.disabled||(this.expanded=e)})}static{this.\u0275fac=function(t){return new(t||i)(u(kg,12),u(pe),u(Da))}}static{this.\u0275dir=D({type:i,selectors:[["cdk-accordion-item"],["","cdkAccordionItem",""]],inputs:{expanded:[2,"expanded","expanded",O],disabled:[2,"disabled","disabled",O]},outputs:{closed:"closed",opened:"opened",destroyed:"destroyed",expandedChange:"expandedChange"},exportAs:["cdkAccordionItem"],standalone:!0,features:[de([{provide:kg,useValue:void 0}]),ae]})}}return i})(),Eg=(()=>{class i{static{this.\u0275fac=function(t){return new(t||i)}}static{this.\u0275mod=j({type:i})}static{this.\u0275inj=L({})}}return i})();var IC=["body"],SC=[[["mat-expansion-panel-header"]],"*",[["mat-action-row"]]],TC=["mat-expansion-panel-header","*","mat-action-row"];function MC(i,n){}var AC=[[["mat-panel-title"]],[["mat-panel-description"]],"*"],OC=["mat-panel-title","mat-panel-description","*"];function RC(i,n){if(i&1&&(w(0,"span",1),Wt(),w(1,"svg",2),ie(2,"path",3),I()()),i&2){let e=fe();ue("@indicatorRotate",e._getExpandedState())}}var Ig=new C("MAT_ACCORDION"),Sg="225ms cubic-bezier(0.4,0.0,0.2,1)",Mg={indicatorRotate:gt("indicatorRotate",[nt("collapsed, void",Oe({transform:"rotate(0deg)"})),nt("expanded",Oe({transform:"rotate(180deg)"})),Ze("expanded <=> collapsed, void => collapsed",Xe(Sg))]),bodyExpansion:gt("bodyExpansion",[nt("collapsed, void",Oe({height:"0px",visibility:"hidden"})),nt("expanded",Oe({height:"*",visibility:""})),Ze("expanded <=> collapsed, void => collapsed",Xe(Sg))])},Ag=new C("MAT_EXPANSION_PANEL"),FC=(()=>{class i{constructor(e,t){this._template=e,this._expansionPanel=t}static{this.\u0275fac=function(t){return new(t||i)(u(Ae),u(Ag,8))}}static{this.\u0275dir=D({type:i,selectors:[["ng-template","matExpansionPanelContent",""]],standalone:!0})}}return i})(),PC=0,Og=new C("MAT_EXPANSION_PANEL_DEFAULT_OPTIONS"),NC=(()=>{class i extends Dg{get hideToggle(){return this._hideToggle||this.accordion&&this.accordion.hideToggle}set hideToggle(e){this._hideToggle=e}get togglePosition(){return this._togglePosition||this.accordion&&this.accordion.togglePosition}set togglePosition(e){this._togglePosition=e}constructor(e,t,r,o,a,s,c){super(e,t,r),this._viewContainerRef=o,this._animationMode=s,this._hideToggle=!1,this.afterExpand=new z,this.afterCollapse=new z,this._inputChanges=new R,this._headerId=`mat-expansion-panel-header-${PC++}`,this.accordion=e,this._document=a,this._animationsDisabled=s==="NoopAnimations",c&&(this.hideToggle=c.hideToggle)}_hasSpacing(){return this.accordion?this.expanded&&this.accordion.displayMode==="default":!1}_getExpandedState(){return this.expanded?"expanded":"collapsed"}toggle(){this.expanded=!this.expanded}close(){this.expanded=!1}open(){this.expanded=!0}ngAfterContentInit(){this._lazyContent&&this._lazyContent._expansionPanel===this&&this.opened.pipe(Me(null),ye(()=>this.expanded&&!this._portal),Ye(1)).subscribe(()=>{this._portal=new Et(this._lazyContent._template,this._viewContainerRef)})}ngOnChanges(e){this._inputChanges.next(e)}ngOnDestroy(){super.ngOnDestroy(),this._inputChanges.complete()}_containsFocus(){if(this._body){let e=this._document.activeElement,t=this._body.nativeElement;return e===t||t.contains(e)}return!1}_animationStarted(e){!Tg(e)&&!this._animationsDisabled&&this._body&&this._body?.nativeElement.setAttribute("inert","")}_animationDone(e){Tg(e)||(e.toState==="expanded"?this.afterExpand.emit():e.toState==="collapsed"&&this.afterCollapse.emit(),!this._animationsDisabled&&this._body&&this._body.nativeElement.removeAttribute("inert"))}static{this.\u0275fac=function(t){return new(t||i)(u(Ig,12),u(pe),u(Da),u(Ue),u(oe),u(we,8),u(Og,8))}}static{this.\u0275cmp=H({type:i,selectors:[["mat-expansion-panel"]],contentQueries:function(t,r,o){if(t&1&&he(o,FC,5),t&2){let a;S(a=T())&&(r._lazyContent=a.first)}},viewQuery:function(t,r){if(t&1&&re(IC,5),t&2){let o;S(o=T())&&(r._body=o.first)}},hostAttrs:[1,"mat-expansion-panel"],hostVars:6,hostBindings:function(t,r){t&2&&P("mat-expanded",r.expanded)("_mat-animation-noopable",r._animationsDisabled)("mat-expansion-panel-spacing",r._hasSpacing())},inputs:{hideToggle:[2,"hideToggle","hideToggle",O],togglePosition:"togglePosition"},outputs:{afterExpand:"afterExpand",afterCollapse:"afterCollapse"},exportAs:["matExpansionPanel"],standalone:!0,features:[de([{provide:Ig,useValue:void 0},{provide:Ag,useExisting:i}]),ae,ne,Pe,Q],ngContentSelectors:TC,decls:7,vars:4,consts:[["body",""],["role","region",1,"mat-expansion-panel-content",3,"id"],[1,"mat-expansion-panel-body"],[3,"cdkPortalOutlet"]],template:function(t,r){if(t&1){let o=Ge();se(SC),A(0),w(1,"div",1,0),ee("@bodyExpansion.start",function(s){return ce(o),le(r._animationStarted(s))})("@bodyExpansion.done",function(s){return ce(o),le(r._animationDone(s))}),w(3,"div",2),A(4,1),te(5,MC,0,0,"ng-template",3),I(),A(6,2),I()}t&2&&(V(),ue("@bodyExpansion",r._getExpandedState())("id",r.id),W("aria-labelledby",r._headerId),V(4),ue("cdkPortalOutlet",r._portal))},dependencies:[mi],styles:['.mat-expansion-panel{box-sizing:content-box;display:block;margin:0;overflow:hidden;transition:margin 225ms cubic-bezier(0.4, 0, 0.2, 1),box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);position:relative;background:var(--mat-expansion-container-background-color, var(--mat-app-surface));color:var(--mat-expansion-container-text-color, var(--mat-app-on-surface));border-radius:var(--mat-expansion-container-shape)}.mat-expansion-panel:not([class*=mat-elevation-z]){box-shadow:0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12)}.mat-accordion .mat-expansion-panel:not(.mat-expanded),.mat-accordion .mat-expansion-panel:not(.mat-expansion-panel-spacing){border-radius:0}.mat-accordion .mat-expansion-panel:first-of-type{border-top-right-radius:var(--mat-expansion-container-shape);border-top-left-radius:var(--mat-expansion-container-shape)}.mat-accordion .mat-expansion-panel:last-of-type{border-bottom-right-radius:var(--mat-expansion-container-shape);border-bottom-left-radius:var(--mat-expansion-container-shape)}.cdk-high-contrast-active .mat-expansion-panel{outline:solid 1px}.mat-expansion-panel.ng-animate-disabled,.ng-animate-disabled .mat-expansion-panel,.mat-expansion-panel._mat-animation-noopable{transition:none}.mat-expansion-panel-content{display:flex;flex-direction:column;overflow:visible;font-family:var(--mat-expansion-container-text-font, var(--mat-app-body-large-font));font-size:var(--mat-expansion-container-text-size, var(--mat-app-body-large-size));font-weight:var(--mat-expansion-container-text-weight, var(--mat-app-body-large-weight));line-height:var(--mat-expansion-container-text-line-height, var(--mat-app-body-large-line-height));letter-spacing:var(--mat-expansion-container-text-tracking, var(--mat-app-body-large-tracking))}.mat-expansion-panel-content[style*="visibility: hidden"] *{visibility:hidden !important}.mat-expansion-panel-body{padding:0 24px 16px}.mat-expansion-panel-spacing{margin:16px 0}.mat-accordion>.mat-expansion-panel-spacing:first-child,.mat-accordion>*:first-child:not(.mat-expansion-panel) .mat-expansion-panel-spacing{margin-top:0}.mat-accordion>.mat-expansion-panel-spacing:last-child,.mat-accordion>*:last-child:not(.mat-expansion-panel) .mat-expansion-panel-spacing{margin-bottom:0}.mat-action-row{border-top-style:solid;border-top-width:1px;display:flex;flex-direction:row;justify-content:flex-end;padding:16px 8px 16px 24px;border-top-color:var(--mat-expansion-actions-divider-color, var(--mat-app-outline))}.mat-action-row .mat-button-base,.mat-action-row .mat-mdc-button-base{margin-left:8px}[dir=rtl] .mat-action-row .mat-button-base,[dir=rtl] .mat-action-row .mat-mdc-button-base{margin-left:0;margin-right:8px}'],encapsulation:2,data:{animation:[Mg.bodyExpansion]},changeDetection:0})}}return i})();function Tg(i){return i.fromState==="void"}var L2=(()=>{class i{constructor(e,t,r,o,a,s,c){this.panel=e,this._element=t,this._focusMonitor=r,this._changeDetectorRef=o,this._animationMode=s,this._parentChangeSubscription=Te.EMPTY,this.tabIndex=0;let l=e.accordion?e.accordion._stateChanges.pipe(ye(d=>!!(d.hideToggle||d.togglePosition))):Bi;this.tabIndex=parseInt(c||"")||0,this._parentChangeSubscription=Fe(e.opened,e.closed,l,e._inputChanges.pipe(ye(d=>!!(d.hideToggle||d.disabled||d.togglePosition)))).subscribe(()=>this._changeDetectorRef.markForCheck()),e.closed.pipe(ye(()=>e._containsFocus())).subscribe(()=>r.focusVia(t,"program")),a&&(this.expandedHeight=a.expandedHeight,this.collapsedHeight=a.collapsedHeight)}get disabled(){return this.panel.disabled}_toggle(){this.disabled||this.panel.toggle()}_isExpanded(){return this.panel.expanded}_getExpandedState(){return this.panel._getExpandedState()}_getPanelId(){return this.panel.id}_getTogglePosition(){return this.panel.togglePosition}_showToggle(){return!this.panel.hideToggle&&!this.panel.disabled}_getHeaderHeight(){let e=this._isExpanded();return e&&this.expandedHeight?this.expandedHeight:!e&&this.collapsedHeight?this.collapsedHeight:null}_keydown(e){switch(e.keyCode){case 32:case 13:Le(e)||(e.preventDefault(),this._toggle());break;default:this.panel.accordion&&this.panel.accordion._handleHeaderKeydown(e);return}}focus(e,t){e?this._focusMonitor.focusVia(this._element,e,t):this._element.nativeElement.focus(t)}ngAfterViewInit(){this._focusMonitor.monitor(this._element).subscribe(e=>{e&&this.panel.accordion&&this.panel.accordion._handleHeaderFocus(this)})}ngOnDestroy(){this._parentChangeSubscription.unsubscribe(),this._focusMonitor.stopMonitoring(this._element)}static{this.\u0275fac=function(t){return new(t||i)(u(NC,1),u(E),u(ot),u(pe),u(Og,8),u(we,8),It("tabindex"))}}static{this.\u0275cmp=H({type:i,selectors:[["mat-expansion-panel-header"]],hostAttrs:["role","button",1,"mat-expansion-panel-header","mat-focus-indicator"],hostVars:15,hostBindings:function(t,r){t&1&&ee("click",function(){return r._toggle()})("keydown",function(a){return r._keydown(a)}),t&2&&(W("id",r.panel._headerId)("tabindex",r.disabled?-1:r.tabIndex)("aria-controls",r._getPanelId())("aria-expanded",r._isExpanded())("aria-disabled",r.panel.disabled),ft("height",r._getHeaderHeight()),P("mat-expanded",r._isExpanded())("mat-expansion-toggle-indicator-after",r._getTogglePosition()==="after")("mat-expansion-toggle-indicator-before",r._getTogglePosition()==="before")("_mat-animation-noopable",r._animationMode==="NoopAnimations"))},inputs:{expandedHeight:"expandedHeight",collapsedHeight:"collapsedHeight",tabIndex:[2,"tabIndex","tabIndex",e=>e==null?0:$e(e)]},standalone:!0,features:[ae,Q],ngContentSelectors:OC,decls:5,vars:3,consts:[[1,"mat-content"],[1,"mat-expansion-indicator"],["xmlns","http://www.w3.org/2000/svg","viewBox","0 -960 960 960","aria-hidden","true","focusable","false"],["d","M480-345 240-585l56-56 184 184 184-184 56 56-240 240Z"]],template:function(t,r){t&1&&(se(AC),w(0,"span",0),A(1),A(2,1),A(3,2),I(),te(4,RC,3,1,"span",1)),t&2&&(P("mat-content-hide-toggle",!r._showToggle()),V(4),ge(r._showToggle()?4:-1))},styles:['.mat-expansion-panel-header{display:flex;flex-direction:row;align-items:center;padding:0 24px;border-radius:inherit;transition:height 225ms cubic-bezier(0.4, 0, 0.2, 1);height:var(--mat-expansion-header-collapsed-state-height);font-family:var(--mat-expansion-header-text-font, var(--mat-app-title-medium-font));font-size:var(--mat-expansion-header-text-size, var(--mat-app-title-medium-size));font-weight:var(--mat-expansion-header-text-weight, var(--mat-app-title-medium-weight));line-height:var(--mat-expansion-header-text-line-height, var(--mat-app-title-medium-line-height));letter-spacing:var(--mat-expansion-header-text-tracking, var(--mat-app-title-medium-tracking))}.mat-expansion-panel-header.mat-expanded{height:var(--mat-expansion-header-expanded-state-height)}.mat-expansion-panel-header[aria-disabled=true]{color:var(--mat-expansion-header-disabled-state-text-color)}.mat-expansion-panel-header:not([aria-disabled=true]){cursor:pointer}.mat-expansion-panel:not(.mat-expanded) .mat-expansion-panel-header:not([aria-disabled=true]):hover{background:var(--mat-expansion-header-hover-state-layer-color)}@media(hover: none){.mat-expansion-panel:not(.mat-expanded) .mat-expansion-panel-header:not([aria-disabled=true]):hover{background:var(--mat-expansion-container-background-color, var(--mat-app-surface))}}.mat-expansion-panel .mat-expansion-panel-header:not([aria-disabled=true]).cdk-keyboard-focused,.mat-expansion-panel .mat-expansion-panel-header:not([aria-disabled=true]).cdk-program-focused{background:var(--mat-expansion-header-focus-state-layer-color)}.mat-expansion-panel-header._mat-animation-noopable{transition:none}.mat-expansion-panel-header:focus,.mat-expansion-panel-header:hover{outline:none}.mat-expansion-panel-header.mat-expanded:focus,.mat-expansion-panel-header.mat-expanded:hover{background:inherit}.mat-expansion-panel-header.mat-expansion-toggle-indicator-before{flex-direction:row-reverse}.mat-expansion-panel-header.mat-expansion-toggle-indicator-before .mat-expansion-indicator{margin:0 16px 0 0}[dir=rtl] .mat-expansion-panel-header.mat-expansion-toggle-indicator-before .mat-expansion-indicator{margin:0 0 0 16px}.mat-content{display:flex;flex:1;flex-direction:row;overflow:hidden}.mat-content.mat-content-hide-toggle{margin-right:8px}[dir=rtl] .mat-content.mat-content-hide-toggle{margin-right:0;margin-left:8px}.mat-expansion-toggle-indicator-before .mat-content.mat-content-hide-toggle{margin-left:24px;margin-right:0}[dir=rtl] .mat-expansion-toggle-indicator-before .mat-content.mat-content-hide-toggle{margin-right:24px;margin-left:0}.mat-expansion-panel-header-title{color:var(--mat-expansion-header-text-color, var(--mat-app-on-surface))}.mat-expansion-panel-header-title,.mat-expansion-panel-header-description{display:flex;flex-grow:1;flex-basis:0;margin-right:16px;align-items:center}[dir=rtl] .mat-expansion-panel-header-title,[dir=rtl] .mat-expansion-panel-header-description{margin-right:0;margin-left:16px}.mat-expansion-panel-header[aria-disabled=true] .mat-expansion-panel-header-title,.mat-expansion-panel-header[aria-disabled=true] .mat-expansion-panel-header-description{color:inherit}.mat-expansion-panel-header-description{flex-grow:2;color:var(--mat-expansion-header-description-color, var(--mat-app-on-surface-variant))}.mat-expansion-indicator::after{border-style:solid;border-width:0 2px 2px 0;content:"";display:inline-block;padding:3px;transform:rotate(45deg);vertical-align:middle;color:var(--mat-expansion-header-indicator-color, var(--mat-app-on-surface-variant));display:var(--mat-expansion-legacy-header-indicator-display, inline-block)}.mat-expansion-indicator svg{width:24px;height:24px;margin:0 -8px;vertical-align:middle;fill:var(--mat-expansion-header-indicator-color, var(--mat-app-on-surface-variant));display:var(--mat-expansion-header-indicator-display, none)}.cdk-high-contrast-active .mat-expansion-panel-content{border-top:1px solid;border-top-left-radius:0;border-top-right-radius:0}'],encapsulation:2,data:{animation:[Mg.indicatorRotate]},changeDetection:0})}}return i})();var j2=(()=>{class i{static{this.\u0275fac=function(t){return new(t||i)}}static{this.\u0275dir=D({type:i,selectors:[["mat-panel-title"]],hostAttrs:[1,"mat-expansion-panel-header-title"],standalone:!0})}}return i})();var Rg=(()=>{class i{static{this.\u0275fac=function(t){return new(t||i)}}static{this.\u0275mod=j({type:i})}static{this.\u0275inj=L({imports:[K,Eg,Pi]})}}return i})();var Fg=["*"];var LC=".mat-grid-list{display:block;position:relative}.mat-grid-tile{display:block;position:absolute;overflow:hidden}.mat-grid-tile .mat-grid-tile-header,.mat-grid-tile .mat-grid-tile-footer{display:flex;align-items:center;height:48px;color:#fff;background:rgba(0,0,0,.38);overflow:hidden;padding:0 16px;position:absolute;left:0;right:0}.mat-grid-tile .mat-grid-tile-header>*,.mat-grid-tile .mat-grid-tile-footer>*{margin:0;padding:0;font-weight:normal;font-size:inherit}.mat-grid-tile .mat-grid-tile-header.mat-2-line,.mat-grid-tile .mat-grid-tile-footer.mat-2-line{height:68px}.mat-grid-tile .mat-grid-list-text{display:flex;flex-direction:column;flex:auto;box-sizing:border-box;overflow:hidden}.mat-grid-tile .mat-grid-list-text>*{margin:0;padding:0;font-weight:normal;font-size:inherit}.mat-grid-tile .mat-grid-list-text:empty{display:none}.mat-grid-tile .mat-grid-tile-header{top:0}.mat-grid-tile .mat-grid-tile-footer{bottom:0}.mat-grid-tile .mat-grid-avatar{padding-right:16px}[dir=rtl] .mat-grid-tile .mat-grid-avatar{padding-right:0;padding-left:16px}.mat-grid-tile .mat-grid-avatar:empty{display:none}.mat-grid-tile-header{font-size:var(--mat-grid-list-tile-header-primary-text-size, var(--mat-app-body-large))}.mat-grid-tile-header .mat-line{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;box-sizing:border-box}.mat-grid-tile-header .mat-line:nth-child(n+2){font-size:var(--mat-grid-list-tile-header-secondary-text-size, var(--mat-app-body-medium))}.mat-grid-tile-footer{font-size:var(--mat-grid-list-tile-footer-primary-text-size, var(--mat-app-body-large))}.mat-grid-tile-footer .mat-line{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;box-sizing:border-box}.mat-grid-tile-footer .mat-line:nth-child(n+2){font-size:var(--mat-grid-list-tile-footer-secondary-text-size, var(--mat-app-body-medium))}.mat-grid-tile-content{top:0;left:0;right:0;bottom:0;position:absolute;display:flex;align-items:center;justify-content:center;height:100%;padding:0;margin:0}",Nd=class{constructor(){this.columnIndex=0,this.rowIndex=0}get rowCount(){return this.rowIndex+1}get rowspan(){let n=Math.max(...this.tracker);return n>1?this.rowCount+n-1:this.rowCount}update(n,e){this.columnIndex=0,this.rowIndex=0,this.tracker=new Array(n),this.tracker.fill(0,0,this.tracker.length),this.positions=e.map(t=>this._trackTile(t))}_trackTile(n){let e=this._findMatchingGap(n.colspan);return this._markTilePosition(e,n),this.columnIndex=e+n.colspan,new Ld(this.rowIndex,e)}_findMatchingGap(n){n>this.tracker.length;let e=-1,t=-1;do{if(this.columnIndex+n>this.tracker.length){this._nextRow(),e=this.tracker.indexOf(0,this.columnIndex),t=this._findGapEndIndex(e);continue}if(e=this.tracker.indexOf(0,this.columnIndex),e==-1){this._nextRow(),e=this.tracker.indexOf(0,this.columnIndex),t=this._findGapEndIndex(e);continue}t=this._findGapEndIndex(e),this.columnIndex=e+1}while(t-e{class i{constructor(e,t){this._element=e,this._gridList=t,this._rowspan=1,this._colspan=1}get rowspan(){return this._rowspan}set rowspan(e){this._rowspan=Math.round(Ct(e))}get colspan(){return this._colspan}set colspan(e){this._colspan=Math.round(Ct(e))}_setStyle(e,t){this._element.nativeElement.style[e]=t}static{this.\u0275fac=function(t){return new(t||i)(u(E),u(Pg,8))}}static{this.\u0275cmp=H({type:i,selectors:[["mat-grid-tile"]],hostAttrs:[1,"mat-grid-tile"],hostVars:2,hostBindings:function(t,r){t&2&&W("rowspan",r.rowspan)("colspan",r.colspan)},inputs:{rowspan:"rowspan",colspan:"colspan"},exportAs:["matGridTile"],standalone:!0,features:[Q],ngContentSelectors:Fg,decls:2,vars:0,consts:[[1,"mat-grid-tile-content"]],template:function(t,r){t&1&&(se(),w(0,"div",0),A(1),I())},styles:[".mat-grid-list{display:block;position:relative}.mat-grid-tile{display:block;position:absolute;overflow:hidden}.mat-grid-tile .mat-grid-tile-header,.mat-grid-tile .mat-grid-tile-footer{display:flex;align-items:center;height:48px;color:#fff;background:rgba(0,0,0,.38);overflow:hidden;padding:0 16px;position:absolute;left:0;right:0}.mat-grid-tile .mat-grid-tile-header>*,.mat-grid-tile .mat-grid-tile-footer>*{margin:0;padding:0;font-weight:normal;font-size:inherit}.mat-grid-tile .mat-grid-tile-header.mat-2-line,.mat-grid-tile .mat-grid-tile-footer.mat-2-line{height:68px}.mat-grid-tile .mat-grid-list-text{display:flex;flex-direction:column;flex:auto;box-sizing:border-box;overflow:hidden}.mat-grid-tile .mat-grid-list-text>*{margin:0;padding:0;font-weight:normal;font-size:inherit}.mat-grid-tile .mat-grid-list-text:empty{display:none}.mat-grid-tile .mat-grid-tile-header{top:0}.mat-grid-tile .mat-grid-tile-footer{bottom:0}.mat-grid-tile .mat-grid-avatar{padding-right:16px}[dir=rtl] .mat-grid-tile .mat-grid-avatar{padding-right:0;padding-left:16px}.mat-grid-tile .mat-grid-avatar:empty{display:none}.mat-grid-tile-header{font-size:var(--mat-grid-list-tile-header-primary-text-size, var(--mat-app-body-large))}.mat-grid-tile-header .mat-line{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;box-sizing:border-box}.mat-grid-tile-header .mat-line:nth-child(n+2){font-size:var(--mat-grid-list-tile-header-secondary-text-size, var(--mat-app-body-medium))}.mat-grid-tile-footer{font-size:var(--mat-grid-list-tile-footer-primary-text-size, var(--mat-app-body-large))}.mat-grid-tile-footer .mat-line{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;box-sizing:border-box}.mat-grid-tile-footer .mat-line:nth-child(n+2){font-size:var(--mat-grid-list-tile-footer-secondary-text-size, var(--mat-app-body-medium))}.mat-grid-tile-content{top:0;left:0;right:0;bottom:0;position:absolute;display:flex;align-items:center;justify-content:center;height:100%;padding:0;margin:0}"],encapsulation:2,changeDetection:0})}}return i})();var VC=/^-?\d+((\.\d+)?[A-Za-z%$]?)+$/,$o=class{constructor(){this._rows=0,this._rowspan=0}init(n,e,t,r){this._gutterSize=Ng(n),this._rows=e.rowCount,this._rowspan=e.rowspan,this._cols=t,this._direction=r}getBaseTileSize(n,e){return`(${n}% - (${this._gutterSize} * ${e}))`}getTilePosition(n,e){return e===0?"0":Un(`(${n} + ${this._gutterSize}) * ${e}`)}getTileSize(n,e){return`(${n} * ${e}) + (${e-1} * ${this._gutterSize})`}setStyle(n,e,t){let r=100/this._cols,o=(this._cols-1)/this._cols;this.setColStyles(n,t,r,o),this.setRowStyles(n,e,r,o)}setColStyles(n,e,t,r){let o=this.getBaseTileSize(t,r),a=this._direction==="rtl"?"right":"left";n._setStyle(a,this.getTilePosition(o,e)),n._setStyle("width",Un(this.getTileSize(o,n.colspan)))}getGutterSpan(){return`${this._gutterSize} * (${this._rowspan} - 1)`}getTileSpan(n){return`${this._rowspan} * ${this.getTileSize(n,1)}`}getComputedHeight(){return null}},jd=class extends $o{constructor(n){super(),this.fixedRowHeight=n}init(n,e,t,r){super.init(n,e,t,r),this.fixedRowHeight=Ng(this.fixedRowHeight),VC.test(this.fixedRowHeight)}setRowStyles(n,e){n._setStyle("top",this.getTilePosition(this.fixedRowHeight,e)),n._setStyle("height",Un(this.getTileSize(this.fixedRowHeight,n.rowspan)))}getComputedHeight(){return["height",Un(`${this.getTileSpan(this.fixedRowHeight)} + ${this.getGutterSpan()}`)]}reset(n){n._setListStyle(["height",null]),n._tiles&&n._tiles.forEach(e=>{e._setStyle("top",null),e._setStyle("height",null)})}},Vd=class extends $o{constructor(n){super(),this._parseRatio(n)}setRowStyles(n,e,t,r){let o=t/this.rowHeightRatio;this.baseTileHeight=this.getBaseTileSize(o,r),n._setStyle("marginTop",this.getTilePosition(this.baseTileHeight,e)),n._setStyle("paddingTop",Un(this.getTileSize(this.baseTileHeight,n.rowspan)))}getComputedHeight(){return["paddingBottom",Un(`${this.getTileSpan(this.baseTileHeight)} + ${this.getGutterSpan()}`)]}reset(n){n._setListStyle(["paddingBottom",null]),n._tiles.forEach(e=>{e._setStyle("marginTop",null),e._setStyle("paddingTop",null)})}_parseRatio(n){let e=n.split(":");e.length,this.rowHeightRatio=parseFloat(e[0])/parseFloat(e[1])}},Bd=class extends $o{setRowStyles(n,e){let t=100/this._rowspan,r=(this._rows-1)/this._rows,o=this.getBaseTileSize(t,r);n._setStyle("top",this.getTilePosition(o,e)),n._setStyle("height",Un(this.getTileSize(o,n.rowspan)))}reset(n){n._tiles&&n._tiles.forEach(e=>{e._setStyle("top",null),e._setStyle("height",null)})}};function Un(i){return`calc(${i})`}function Ng(i){return i.match(/([A-Za-z%]+)$/)?i:`${i}px`}var BC="fit",eB=(()=>{class i{constructor(e,t){this._element=e,this._dir=t,this._gutter="1px"}get cols(){return this._cols}set cols(e){this._cols=Math.max(1,Math.round(Ct(e)))}get gutterSize(){return this._gutter}set gutterSize(e){this._gutter=`${e??""}`}get rowHeight(){return this._rowHeight}set rowHeight(e){let t=`${e??""}`;t!==this._rowHeight&&(this._rowHeight=t,this._setTileStyler(this._rowHeight))}ngOnInit(){this._checkCols(),this._checkRowHeight()}ngAfterContentChecked(){this._layoutTiles()}_checkCols(){this.cols}_checkRowHeight(){this._rowHeight||this._setTileStyler("1:1")}_setTileStyler(e){this._tileStyler&&this._tileStyler.reset(this),e===BC?this._tileStyler=new Bd:e&&e.indexOf(":")>-1?this._tileStyler=new Vd(e):this._tileStyler=new jd(e)}_layoutTiles(){this._tileCoordinator||(this._tileCoordinator=new Nd);let e=this._tileCoordinator,t=this._tiles.filter(o=>!o._gridList||o._gridList===this),r=this._dir?this._dir.value:"ltr";this._tileCoordinator.update(this.cols,t),this._tileStyler.init(this.gutterSize,e,this.cols,r),t.forEach((o,a)=>{let s=e.positions[a];this._tileStyler.setStyle(o,s.row,s.col)}),this._setListStyle(this._tileStyler.getComputedHeight())}_setListStyle(e){e&&(this._element.nativeElement.style[e[0]]=e[1])}static{this.\u0275fac=function(t){return new(t||i)(u(E),u(Re,8))}}static{this.\u0275cmp=H({type:i,selectors:[["mat-grid-list"]],contentQueries:function(t,r,o){if(t&1&&he(o,jC,5),t&2){let a;S(a=T())&&(r._tiles=a)}},hostAttrs:[1,"mat-grid-list"],hostVars:1,hostBindings:function(t,r){t&2&&W("cols",r.cols)},inputs:{cols:"cols",gutterSize:"gutterSize",rowHeight:"rowHeight"},exportAs:["matGridList"],standalone:!0,features:[de([{provide:Pg,useExisting:i}]),Q],ngContentSelectors:Fg,decls:2,vars:0,template:function(t,r){t&1&&(se(),w(0,"div"),A(1),I())},styles:[LC],encapsulation:2,changeDetection:0})}}return i})(),Lg=(()=>{class i{static{this.\u0275fac=function(t){return new(t||i)}}static{this.\u0275mod=j({type:i})}static{this.\u0275inj=L({imports:[pd,K,pd,K]})}}return i})();var zC=["*"],Bs;function HC(){if(Bs===void 0&&(Bs=null,typeof window<"u")){let i=window;i.trustedTypes!==void 0&&(Bs=i.trustedTypes.createPolicy("angular#components",{createHTML:n=>n}))}return Bs}function Yo(i){return HC()?.createHTML(i)||i}function jg(i){return Error(`Unable to find icon with the name "${i}"`)}function QC(){return Error("Could not find HttpClient for use with Angular Material icons. Please add provideHttpClient() to your providers.")}function Vg(i){return Error(`The URL provided to MatIconRegistry was not trusted as a resource URL via Angular's DomSanitizer. Attempted URL was "${i}".`)}function Bg(i){return Error(`The literal provided to MatIconRegistry was not trusted as safe HTML by Angular's DomSanitizer. Attempted literal was "${i}".`)}var Li=class{constructor(n,e,t){this.url=n,this.svgText=e,this.options=t}},UC=(()=>{class i{constructor(e,t,r,o){this._httpClient=e,this._sanitizer=t,this._errorHandler=o,this._svgIconConfigs=new Map,this._iconSetConfigs=new Map,this._cachedIconsByUrl=new Map,this._inProgressUrlFetches=new Map,this._fontCssClassesByAlias=new Map,this._resolvers=[],this._defaultFontSetClass=["material-icons","mat-ligature-font"],this._document=r}addSvgIcon(e,t,r){return this.addSvgIconInNamespace("",e,t,r)}addSvgIconLiteral(e,t,r){return this.addSvgIconLiteralInNamespace("",e,t,r)}addSvgIconInNamespace(e,t,r,o){return this._addSvgIconConfig(e,t,new Li(r,null,o))}addSvgIconResolver(e){return this._resolvers.push(e),this}addSvgIconLiteralInNamespace(e,t,r,o){let a=this._sanitizer.sanitize(Kn.HTML,r);if(!a)throw Bg(r);let s=Yo(a);return this._addSvgIconConfig(e,t,new Li("",s,o))}addSvgIconSet(e,t){return this.addSvgIconSetInNamespace("",e,t)}addSvgIconSetLiteral(e,t){return this.addSvgIconSetLiteralInNamespace("",e,t)}addSvgIconSetInNamespace(e,t,r){return this._addSvgIconSetConfig(e,new Li(t,null,r))}addSvgIconSetLiteralInNamespace(e,t,r){let o=this._sanitizer.sanitize(Kn.HTML,t);if(!o)throw Bg(t);let a=Yo(o);return this._addSvgIconSetConfig(e,new Li("",a,r))}registerFontClassAlias(e,t=e){return this._fontCssClassesByAlias.set(e,t),this}classNameForFontAlias(e){return this._fontCssClassesByAlias.get(e)||e}setDefaultFontSetClass(...e){return this._defaultFontSetClass=e,this}getDefaultFontSetClass(){return this._defaultFontSetClass}getSvgIconFromUrl(e){let t=this._sanitizer.sanitize(Kn.RESOURCE_URL,e);if(!t)throw Vg(e);let r=this._cachedIconsByUrl.get(t);return r?He(zs(r)):this._loadSvgIconFromConfig(new Li(e,null)).pipe(gi(o=>this._cachedIconsByUrl.set(t,o)),ke(o=>zs(o)))}getNamedSvgIcon(e,t=""){let r=zg(t,e),o=this._svgIconConfigs.get(r);if(o)return this._getSvgFromConfig(o);if(o=this._getIconConfigFromResolvers(t,e),o)return this._svgIconConfigs.set(r,o),this._getSvgFromConfig(o);let a=this._iconSetConfigs.get(t);return a?this._getSvgFromIconSetConfigs(e,a):xu(jg(r))}ngOnDestroy(){this._resolvers=[],this._svgIconConfigs.clear(),this._iconSetConfigs.clear(),this._cachedIconsByUrl.clear()}_getSvgFromConfig(e){return e.svgText?He(zs(this._svgElementFromConfig(e))):this._loadSvgIconFromConfig(e).pipe(ke(t=>zs(t)))}_getSvgFromIconSetConfigs(e,t){let r=this._extractIconWithNameFromAnySet(e,t);if(r)return He(r);let o=t.filter(a=>!a.svgText).map(a=>this._loadSvgIconSetFromConfig(a).pipe(Jo(s=>{let l=`Loading icon set URL: ${this._sanitizer.sanitize(Kn.RESOURCE_URL,a.url)} failed: ${s.message}`;return this._errorHandler.handleError(new Error(l)),He(null)})));return mn(o).pipe(ke(()=>{let a=this._extractIconWithNameFromAnySet(e,t);if(!a)throw jg(e);return a}))}_extractIconWithNameFromAnySet(e,t){for(let r=t.length-1;r>=0;r--){let o=t[r];if(o.svgText&&o.svgText.toString().indexOf(e)>-1){let a=this._svgElementFromConfig(o),s=this._extractSvgIconFromSet(a,e,o.options);if(s)return s}}return null}_loadSvgIconFromConfig(e){return this._fetchIcon(e).pipe(gi(t=>e.svgText=t),ke(()=>this._svgElementFromConfig(e)))}_loadSvgIconSetFromConfig(e){return e.svgText?He(null):this._fetchIcon(e).pipe(gi(t=>e.svgText=t))}_extractSvgIconFromSet(e,t,r){let o=e.querySelector(`[id="${t}"]`);if(!o)return null;let a=o.cloneNode(!0);if(a.removeAttribute("id"),a.nodeName.toLowerCase()==="svg")return this._setSvgAttributes(a,r);if(a.nodeName.toLowerCase()==="symbol")return this._setSvgAttributes(this._toSvgElement(a),r);let s=this._svgElementFromString(Yo(""));return s.appendChild(a),this._setSvgAttributes(s,r)}_svgElementFromString(e){let t=this._document.createElement("DIV");t.innerHTML=e;let r=t.querySelector("svg");if(!r)throw Error(" tag not found");return r}_toSvgElement(e){let t=this._svgElementFromString(Yo("")),r=e.attributes;for(let o=0;oYo(l)),ku(()=>this._inProgressUrlFetches.delete(a)),Eu());return this._inProgressUrlFetches.set(a,c),c}_addSvgIconConfig(e,t,r){return this._svgIconConfigs.set(zg(e,t),r),this}_addSvgIconSetConfig(e,t){let r=this._iconSetConfigs.get(e);return r?r.push(t):this._iconSetConfigs.set(e,[t]),this}_svgElementFromConfig(e){if(!e.svgElement){let t=this._svgElementFromString(e.svgText);this._setSvgAttributes(t,e.options),e.svgElement=t}return e.svgElement}_getIconConfigFromResolvers(e,t){for(let r=0;rn?n.pathname+n.search:""}}var Hg=["clip-path","color-profile","src","cursor","fill","filter","marker","marker-start","marker-mid","marker-end","mask","stroke"],YC=Hg.map(i=>`[${i}]`).join(", "),KC=/^url\(['"]?#(.*?)['"]?\)$/,vB=(()=>{class i{get color(){return this._color||this._defaultColor}set color(e){this._color=e}get svgIcon(){return this._svgIcon}set svgIcon(e){e!==this._svgIcon&&(e?this._updateSvgIcon(e):this._svgIcon&&this._clearSvgElement(),this._svgIcon=e)}get fontSet(){return this._fontSet}set fontSet(e){let t=this._cleanupFontValue(e);t!==this._fontSet&&(this._fontSet=t,this._updateFontIconClasses())}get fontIcon(){return this._fontIcon}set fontIcon(e){let t=this._cleanupFontValue(e);t!==this._fontIcon&&(this._fontIcon=t,this._updateFontIconClasses())}constructor(e,t,r,o,a,s){this._elementRef=e,this._iconRegistry=t,this._location=o,this._errorHandler=a,this.inline=!1,this._previousFontSetClass=[],this._currentIconFetch=Te.EMPTY,s&&(s.color&&(this.color=this._defaultColor=s.color),s.fontSet&&(this.fontSet=s.fontSet)),r||e.nativeElement.setAttribute("aria-hidden","true")}_splitIconName(e){if(!e)return["",""];let t=e.split(":");switch(t.length){case 1:return["",t[0]];case 2:return t;default:throw Error(`Invalid icon name: "${e}"`)}}ngOnInit(){this._updateFontIconClasses()}ngAfterViewChecked(){let e=this._elementsWithExternalReferences;if(e&&e.size){let t=this._location.getPathname();t!==this._previousPath&&(this._previousPath=t,this._prependPathToReferences(t))}}ngOnDestroy(){this._currentIconFetch.unsubscribe(),this._elementsWithExternalReferences&&this._elementsWithExternalReferences.clear()}_usingFontIcon(){return!this.svgIcon}_setSvgElement(e){this._clearSvgElement();let t=this._location.getPathname();this._previousPath=t,this._cacheChildrenWithExternalReferences(e),this._prependPathToReferences(t),this._elementRef.nativeElement.appendChild(e)}_clearSvgElement(){let e=this._elementRef.nativeElement,t=e.childNodes.length;for(this._elementsWithExternalReferences&&this._elementsWithExternalReferences.clear();t--;){let r=e.childNodes[t];(r.nodeType!==1||r.nodeName.toLowerCase()==="svg")&&r.remove()}}_updateFontIconClasses(){if(!this._usingFontIcon())return;let e=this._elementRef.nativeElement,t=(this.fontSet?this._iconRegistry.classNameForFontAlias(this.fontSet).split(/ +/):this._iconRegistry.getDefaultFontSetClass()).filter(r=>r.length>0);this._previousFontSetClass.forEach(r=>e.classList.remove(r)),t.forEach(r=>e.classList.add(r)),this._previousFontSetClass=t,this.fontIcon!==this._previousFontIconClass&&!t.includes("mat-ligature-font")&&(this._previousFontIconClass&&e.classList.remove(this._previousFontIconClass),this.fontIcon&&e.classList.add(this.fontIcon),this._previousFontIconClass=this.fontIcon)}_cleanupFontValue(e){return typeof e=="string"?e.trim().split(" ")[0]:e}_prependPathToReferences(e){let t=this._elementsWithExternalReferences;t&&t.forEach((r,o)=>{r.forEach(a=>{o.setAttribute(a.name,`url('${e}#${a.value}')`)})})}_cacheChildrenWithExternalReferences(e){let t=e.querySelectorAll(YC),r=this._elementsWithExternalReferences=this._elementsWithExternalReferences||new Map;for(let o=0;o{let s=t[o],c=s.getAttribute(a),l=c?c.match(KC):null;if(l){let d=r.get(s);d||(d=[],r.set(s,d)),d.push({name:a,value:l[1]})}})}_updateSvgIcon(e){if(this._svgNamespace=null,this._svgName=null,this._currentIconFetch.unsubscribe(),e){let[t,r]=this._splitIconName(e);t&&(this._svgNamespace=t),r&&(this._svgName=r),this._currentIconFetch=this._iconRegistry.getNamedSvgIcon(r,t).pipe(Ye(1)).subscribe(o=>this._setSvgElement(o),o=>{let a=`Error retrieving icon ${t}:${r}! ${o.message}`;this._errorHandler.handleError(new Error(a))})}}static{this.\u0275fac=function(t){return new(t||i)(u(E),u(UC),It("aria-hidden"),u(GC),u(ia),u(WC,8))}}static{this.\u0275cmp=H({type:i,selectors:[["mat-icon"]],hostAttrs:["role","img",1,"mat-icon","notranslate"],hostVars:10,hostBindings:function(t,r){t&2&&(W("data-mat-icon-type",r._usingFontIcon()?"font":"svg")("data-mat-icon-name",r._svgName||r.fontIcon)("data-mat-icon-namespace",r._svgNamespace||r.fontSet)("fontIcon",r._usingFontIcon()?r.fontIcon:null),qe(r.color?"mat-"+r.color:""),P("mat-icon-inline",r.inline)("mat-icon-no-color",r.color!=="primary"&&r.color!=="accent"&&r.color!=="warn"))},inputs:{color:"color",inline:[2,"inline","inline",O],svgIcon:"svgIcon",fontSet:"fontSet",fontIcon:"fontIcon"},exportAs:["matIcon"],standalone:!0,features:[ae,Q],ngContentSelectors:zC,decls:1,vars:0,template:function(t,r){t&1&&(se(),A(0))},styles:["mat-icon,mat-icon.mat-primary,mat-icon.mat-accent,mat-icon.mat-warn{color:var(--mat-icon-color)}.mat-icon{-webkit-user-select:none;user-select:none;background-repeat:no-repeat;display:inline-block;fill:currentColor;height:24px;width:24px;overflow:hidden}.mat-icon.mat-icon-inline{font-size:inherit;height:inherit;line-height:inherit;width:inherit}.mat-icon.mat-ligature-font[fontIcon]::before{content:attr(fontIcon)}[dir=rtl] .mat-icon-rtl-mirror{transform:scale(-1, 1)}.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-prefix .mat-icon,.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mat-icon{display:block}.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-prefix .mat-icon-button .mat-icon,.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mat-icon-button .mat-icon{margin:auto}"],encapsulation:2,changeDetection:0})}}return i})(),Qg=(()=>{class i{static{this.\u0275fac=function(t){return new(t||i)}}static{this.\u0275mod=j({type:i})}static{this.\u0275inj=L({imports:[K,K]})}}return i})();var Ug=Bt({passive:!0}),qg=(()=>{class i{constructor(e,t){this._platform=e,this._ngZone=t,this._monitoredElements=new Map}monitor(e){if(!this._platform.isBrowser)return Bi;let t=zt(e),r=this._monitoredElements.get(t);if(r)return r.subject;let o=new R,a="cdk-text-field-autofilled",s=c=>{c.animationName==="cdk-text-field-autofill-start"&&!t.classList.contains(a)?(t.classList.add(a),this._ngZone.run(()=>o.next({target:c.target,isAutofilled:!0}))):c.animationName==="cdk-text-field-autofill-end"&&t.classList.contains(a)&&(t.classList.remove(a),this._ngZone.run(()=>o.next({target:c.target,isAutofilled:!1})))};return this._ngZone.runOutsideAngular(()=>{t.addEventListener("animationstart",s,Ug),t.classList.add("cdk-text-field-autofill-monitored")}),this._monitoredElements.set(t,{subject:o,unlisten:()=>{t.removeEventListener("animationstart",s,Ug)}}),o}stopMonitoring(e){let t=zt(e),r=this._monitoredElements.get(t);r&&(r.unlisten(),r.subject.complete(),t.classList.remove("cdk-text-field-autofill-monitored"),t.classList.remove("cdk-text-field-autofilled"),this._monitoredElements.delete(t))}ngOnDestroy(){this._monitoredElements.forEach((e,t)=>this.stopMonitoring(t))}static{this.\u0275fac=function(t){return new(t||i)(x(me),x(B))}}static{this.\u0275prov=Z({token:i,factory:i.\u0275fac,providedIn:"root"})}}return i})();var Wg=(()=>{class i{static{this.\u0275fac=function(t){return new(t||i)}}static{this.\u0275mod=j({type:i})}static{this.\u0275inj=L({})}}return i})();var ZC=new C("MAT_INPUT_VALUE_ACCESSOR"),JC=["button","checkbox","file","hidden","image","radio","range","reset","submit"],ek=0,LB=(()=>{class i{get disabled(){return this._disabled}set disabled(e){this._disabled=ut(e),this.focused&&(this.focused=!1,this.stateChanges.next())}get id(){return this._id}set id(e){this._id=e||this._uid}get required(){return this._required??this.ngControl?.control?.hasValidator(Ui.required)??!1}set required(e){this._required=ut(e)}get type(){return this._type}set type(e){this._type=e||"text",this._validateType(),!this._isTextarea&&ed().has(this._type)&&(this._elementRef.nativeElement.type=this._type),this._ensureWheelDefaultBehavior()}get errorStateMatcher(){return this._errorStateTracker.matcher}set errorStateMatcher(e){this._errorStateTracker.matcher=e}get value(){return this._inputValueAccessor.value}set value(e){e!==this.value&&(this._inputValueAccessor.value=e,this.stateChanges.next())}get readonly(){return this._readonly}set readonly(e){this._readonly=ut(e)}get errorState(){return this._errorStateTracker.errorState}set errorState(e){this._errorStateTracker.errorState=e}constructor(e,t,r,o,a,s,c,l,d,h){this._elementRef=e,this._platform=t,this.ngControl=r,this._autofillMonitor=l,this._ngZone=d,this._formField=h,this._uid=`mat-input-${ek++}`,this._webkitBlinkWheelListenerAttached=!1,this.focused=!1,this.stateChanges=new R,this.controlType="mat-input",this.autofilled=!1,this._disabled=!1,this._type="text",this._readonly=!1,this._neverEmptyInputTypes=["date","datetime","datetime-local","month","time","week"].filter(f=>ed().has(f)),this._iOSKeyupListener=f=>{let g=f.target;!g.value&&g.selectionStart===0&&g.selectionEnd===0&&(g.setSelectionRange(1,1),g.setSelectionRange(0,0))},this._webkitBlinkWheelListener=()=>{};let m=this._elementRef.nativeElement,p=m.nodeName.toLowerCase();this._inputValueAccessor=c||m,this._previousNativeValue=this.value,this.id=this.id,t.IOS&&d.runOutsideAngular(()=>{e.nativeElement.addEventListener("keyup",this._iOSKeyupListener)}),this._errorStateTracker=new ln(s,r,a,o,this.stateChanges),this._isServer=!this._platform.isBrowser,this._isNativeSelect=p==="select",this._isTextarea=p==="textarea",this._isInFormField=!!h,this._isNativeSelect&&(this.controlType=m.multiple?"mat-native-select-multiple":"mat-native-select")}ngAfterViewInit(){this._platform.isBrowser&&this._autofillMonitor.monitor(this._elementRef.nativeElement).subscribe(e=>{this.autofilled=e.isAutofilled,this.stateChanges.next()})}ngOnChanges(){this.stateChanges.next()}ngOnDestroy(){this.stateChanges.complete(),this._platform.isBrowser&&this._autofillMonitor.stopMonitoring(this._elementRef.nativeElement),this._platform.IOS&&this._elementRef.nativeElement.removeEventListener("keyup",this._iOSKeyupListener),this._webkitBlinkWheelListenerAttached&&this._elementRef.nativeElement.removeEventListener("wheel",this._webkitBlinkWheelListener)}ngDoCheck(){this.ngControl&&(this.updateErrorState(),this.ngControl.disabled!==null&&this.ngControl.disabled!==this.disabled&&(this.disabled=this.ngControl.disabled,this.stateChanges.next())),this._dirtyCheckNativeValue(),this._dirtyCheckPlaceholder()}focus(e){this._elementRef.nativeElement.focus(e)}updateErrorState(){this._errorStateTracker.updateErrorState()}_focusChanged(e){e!==this.focused&&(this.focused=e,this.stateChanges.next())}_onInput(){}_dirtyCheckNativeValue(){let e=this._elementRef.nativeElement.value;this._previousNativeValue!==e&&(this._previousNativeValue=e,this.stateChanges.next())}_dirtyCheckPlaceholder(){let e=this._getPlaceholder();if(e!==this._previousPlaceholder){let t=this._elementRef.nativeElement;this._previousPlaceholder=e,e?t.setAttribute("placeholder",e):t.removeAttribute("placeholder")}}_getPlaceholder(){return this.placeholder||null}_validateType(){JC.indexOf(this._type)>-1}_isNeverEmpty(){return this._neverEmptyInputTypes.indexOf(this._type)>-1}_isBadInput(){let e=this._elementRef.nativeElement.validity;return e&&e.badInput}get empty(){return!this._isNeverEmpty()&&!this._elementRef.nativeElement.value&&!this._isBadInput()&&!this.autofilled}get shouldLabelFloat(){if(this._isNativeSelect){let e=this._elementRef.nativeElement,t=e.options[0];return this.focused||e.multiple||!this.empty||!!(e.selectedIndex>-1&&t&&t.label)}else return this.focused||!this.empty}setDescribedByIds(e){e.length?this._elementRef.nativeElement.setAttribute("aria-describedby",e.join(" ")):this._elementRef.nativeElement.removeAttribute("aria-describedby")}onContainerClick(){this.focused||this.focus()}_isInlineSelect(){let e=this._elementRef.nativeElement;return this._isNativeSelect&&(e.multiple||e.size>1)}_ensureWheelDefaultBehavior(){!this._webkitBlinkWheelListenerAttached&&this._type==="number"&&(this._platform.BLINK||this._platform.WEBKIT)&&(this._ngZone.runOutsideAngular(()=>{this._elementRef.nativeElement.addEventListener("wheel",this._webkitBlinkWheelListener)}),this._webkitBlinkWheelListenerAttached=!0),this._webkitBlinkWheelListenerAttached&&this._type!=="number"&&(this._elementRef.nativeElement.removeEventListener("wheel",this._webkitBlinkWheelListener),this._webkitBlinkWheelListenerAttached=!0)}static{this.\u0275fac=function(t){return new(t||i)(u(E),u(me),u(ai,10),u(_n,8),u(yn,8),u(dn),u(ZC,10),u(qg),u(B),u(Ri,8))}}static{this.\u0275dir=D({type:i,selectors:[["input","matInput",""],["textarea","matInput",""],["select","matNativeControl",""],["input","matNativeControl",""],["textarea","matNativeControl",""]],hostAttrs:[1,"mat-mdc-input-element"],hostVars:18,hostBindings:function(t,r){t&1&&ee("focus",function(){return r._focusChanged(!0)})("blur",function(){return r._focusChanged(!1)})("input",function(){return r._onInput()}),t&2&&(St("id",r.id)("disabled",r.disabled)("required",r.required),W("name",r.name||null)("readonly",r.readonly&&!r._isNativeSelect||null)("aria-invalid",r.empty&&r.required?null:r.errorState)("aria-required",r.required)("id",r.id),P("mat-input-server",r._isServer)("mat-mdc-form-field-textarea-control",r._isInFormField&&r._isTextarea)("mat-mdc-form-field-input-control",r._isInFormField)("mdc-text-field__input",r._isInFormField)("mat-mdc-native-select-inline",r._isInlineSelect()))},inputs:{disabled:"disabled",id:"id",placeholder:"placeholder",name:"name",required:"required",type:"type",errorStateMatcher:"errorStateMatcher",userAriaDescribedBy:[0,"aria-describedby","userAriaDescribedBy"],value:"value",readonly:"readonly"},exportAs:["matInput"],standalone:!0,features:[de([{provide:Vn,useExisting:i}]),Pe]})}}return i})(),Gg=(()=>{class i{static{this.\u0275fac=function(t){return new(t||i)}}static{this.\u0275mod=j({type:i})}static{this.\u0275inj=L({imports:[K,Bn,Bn,Wg,K]})}}return i})();function tk(i,n){i&1&&ie(0,"div",2)}var ik=new C("MAT_PROGRESS_BAR_DEFAULT_OPTIONS");var YB=(()=>{class i{constructor(e,t,r,o,a){this._elementRef=e,this._ngZone=t,this._changeDetectorRef=r,this._animationMode=o,this._isNoopAnimation=!1,this._defaultColor="primary",this._value=0,this._bufferValue=0,this.animationEnd=new z,this._mode="determinate",this._transitionendHandler=s=>{this.animationEnd.observers.length===0||!s.target||!s.target.classList.contains("mdc-linear-progress__primary-bar")||(this.mode==="determinate"||this.mode==="buffer")&&this._ngZone.run(()=>this.animationEnd.next({value:this.value}))},this._isNoopAnimation=o==="NoopAnimations",a&&(a.color&&(this.color=this._defaultColor=a.color),this.mode=a.mode||this.mode)}get color(){return this._color||this._defaultColor}set color(e){this._color=e}get value(){return this._value}set value(e){this._value=$g(e||0),this._changeDetectorRef.markForCheck()}get bufferValue(){return this._bufferValue||0}set bufferValue(e){this._bufferValue=$g(e||0),this._changeDetectorRef.markForCheck()}get mode(){return this._mode}set mode(e){this._mode=e,this._changeDetectorRef.markForCheck()}ngAfterViewInit(){this._ngZone.runOutsideAngular(()=>{this._elementRef.nativeElement.addEventListener("transitionend",this._transitionendHandler)})}ngOnDestroy(){this._elementRef.nativeElement.removeEventListener("transitionend",this._transitionendHandler)}_getPrimaryBarTransform(){return`scaleX(${this._isIndeterminate()?1:this.value/100})`}_getBufferBarFlexBasis(){return`${this.mode==="buffer"?this.bufferValue:100}%`}_isIndeterminate(){return this.mode==="indeterminate"||this.mode==="query"}static{this.\u0275fac=function(t){return new(t||i)(u(E),u(B),u(pe),u(we,8),u(ik,8))}}static{this.\u0275cmp=H({type:i,selectors:[["mat-progress-bar"]],hostAttrs:["role","progressbar","aria-valuemin","0","aria-valuemax","100","tabindex","-1",1,"mat-mdc-progress-bar","mdc-linear-progress"],hostVars:10,hostBindings:function(t,r){t&2&&(W("aria-valuenow",r._isIndeterminate()?null:r.value)("mode",r.mode),qe("mat-"+r.color),P("_mat-animation-noopable",r._isNoopAnimation)("mdc-linear-progress--animation-ready",!r._isNoopAnimation)("mdc-linear-progress--indeterminate",r._isIndeterminate()))},inputs:{color:"color",value:[2,"value","value",$e],bufferValue:[2,"bufferValue","bufferValue",$e],mode:"mode"},outputs:{animationEnd:"animationEnd"},exportAs:["matProgressBar"],standalone:!0,features:[ae,Q],decls:7,vars:5,consts:[["aria-hidden","true",1,"mdc-linear-progress__buffer"],[1,"mdc-linear-progress__buffer-bar"],[1,"mdc-linear-progress__buffer-dots"],["aria-hidden","true",1,"mdc-linear-progress__bar","mdc-linear-progress__primary-bar"],[1,"mdc-linear-progress__bar-inner"],["aria-hidden","true",1,"mdc-linear-progress__bar","mdc-linear-progress__secondary-bar"]],template:function(t,r){t&1&&(w(0,"div",0),ie(1,"div",1),te(2,tk,1,0,"div",2),I(),w(3,"div",3),ie(4,"span",4),I(),w(5,"div",5),ie(6,"span",4),I()),t&2&&(V(),ft("flex-basis",r._getBufferBarFlexBasis()),V(),ge(r.mode==="buffer"?2:-1),V(),ft("transform",r._getPrimaryBarTransform()))},styles:[`.mat-mdc-progress-bar{display:block;text-align:start}.mat-mdc-progress-bar[mode=query]{transform:scaleX(-1)}.mat-mdc-progress-bar._mat-animation-noopable .mdc-linear-progress__buffer-dots,.mat-mdc-progress-bar._mat-animation-noopable .mdc-linear-progress__primary-bar,.mat-mdc-progress-bar._mat-animation-noopable .mdc-linear-progress__secondary-bar,.mat-mdc-progress-bar._mat-animation-noopable .mdc-linear-progress__bar-inner.mdc-linear-progress__bar-inner{animation:none}.mat-mdc-progress-bar._mat-animation-noopable .mdc-linear-progress__primary-bar,.mat-mdc-progress-bar._mat-animation-noopable .mdc-linear-progress__buffer-bar{transition:transform 1ms}.mdc-linear-progress{position:relative;width:100%;transform:translateZ(0);outline:1px solid rgba(0,0,0,0);overflow-x:hidden;transition:opacity 250ms 0ms cubic-bezier(0.4, 0, 0.6, 1);height:max(var(--mdc-linear-progress-track-height),var(--mdc-linear-progress-active-indicator-height))}.cdk-high-contrast-active .mdc-linear-progress{outline-color:CanvasText}.mdc-linear-progress__bar{position:absolute;top:0;bottom:0;margin:auto 0;width:100%;animation:none;transform-origin:top left;transition:transform 250ms 0ms cubic-bezier(0.4, 0, 0.6, 1);height:var(--mdc-linear-progress-active-indicator-height)}.mdc-linear-progress--indeterminate .mdc-linear-progress__bar{transition:none}[dir=rtl] .mdc-linear-progress__bar{right:0;transform-origin:center right}.mdc-linear-progress__bar-inner{display:inline-block;position:absolute;width:100%;animation:none;border-top-style:solid;border-color:var(--mdc-linear-progress-active-indicator-color, var(--mat-app-primary));border-top-width:var(--mdc-linear-progress-active-indicator-height)}.mdc-linear-progress__buffer{display:flex;position:absolute;top:0;bottom:0;margin:auto 0;width:100%;overflow:hidden;height:var(--mdc-linear-progress-track-height);border-radius:var(--mdc-linear-progress-track-shape, var(--mat-app-corner-none))}.mdc-linear-progress__buffer-dots{-webkit-mask-image:url("data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='xMinYMin slice'%3E%3Ccircle cx='1' cy='1' r='1'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='xMinYMin slice'%3E%3Ccircle cx='1' cy='1' r='1'/%3E%3C/svg%3E");background-repeat:repeat-x;flex:auto;transform:rotate(180deg);animation:mdc-linear-progress-buffering 250ms infinite linear;background-color:var(--mdc-linear-progress-track-color, var(--mat-app-surface-variant))}.cdk-high-contrast-active .mdc-linear-progress__buffer-dots{background-color:ButtonBorder}[dir=rtl] .mdc-linear-progress__buffer-dots{animation:mdc-linear-progress-buffering-reverse 250ms infinite linear;transform:rotate(0)}.mdc-linear-progress__buffer-bar{flex:0 1 100%;transition:flex-basis 250ms 0ms cubic-bezier(0.4, 0, 0.6, 1);background-color:var(--mdc-linear-progress-track-color, var(--mat-app-surface-variant))}.mdc-linear-progress__primary-bar{transform:scaleX(0)}.mdc-linear-progress--indeterminate .mdc-linear-progress__primary-bar{left:-145.166611%}.mdc-linear-progress--indeterminate.mdc-linear-progress--animation-ready .mdc-linear-progress__primary-bar{animation:mdc-linear-progress-primary-indeterminate-translate 2s infinite linear}.mdc-linear-progress--indeterminate.mdc-linear-progress--animation-ready .mdc-linear-progress__primary-bar>.mdc-linear-progress__bar-inner{animation:mdc-linear-progress-primary-indeterminate-scale 2s infinite linear}[dir=rtl] .mdc-linear-progress.mdc-linear-progress--animation-ready .mdc-linear-progress__primary-bar{animation-name:mdc-linear-progress-primary-indeterminate-translate-reverse}[dir=rtl] .mdc-linear-progress.mdc-linear-progress--indeterminate .mdc-linear-progress__primary-bar{right:-145.166611%;left:auto}.mdc-linear-progress__secondary-bar{display:none}.mdc-linear-progress--indeterminate .mdc-linear-progress__secondary-bar{left:-54.888891%;display:block}.mdc-linear-progress--indeterminate.mdc-linear-progress--animation-ready .mdc-linear-progress__secondary-bar{animation:mdc-linear-progress-secondary-indeterminate-translate 2s infinite linear}.mdc-linear-progress--indeterminate.mdc-linear-progress--animation-ready .mdc-linear-progress__secondary-bar>.mdc-linear-progress__bar-inner{animation:mdc-linear-progress-secondary-indeterminate-scale 2s infinite linear}[dir=rtl] .mdc-linear-progress.mdc-linear-progress--animation-ready .mdc-linear-progress__secondary-bar{animation-name:mdc-linear-progress-secondary-indeterminate-translate-reverse}[dir=rtl] .mdc-linear-progress.mdc-linear-progress--indeterminate .mdc-linear-progress__secondary-bar{right:-54.888891%;left:auto}@keyframes mdc-linear-progress-buffering{from{transform:rotate(180deg) translateX(calc(var(--mdc-linear-progress-track-height) * -2.5))}}@keyframes mdc-linear-progress-primary-indeterminate-translate{0%{transform:translateX(0)}20%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(0)}59.15%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(83.67142%)}100%{transform:translateX(200.611057%)}}@keyframes mdc-linear-progress-primary-indeterminate-scale{0%{transform:scaleX(0.08)}36.65%{animation-timing-function:cubic-bezier(0.334731, 0.12482, 0.785844, 1);transform:scaleX(0.08)}69.15%{animation-timing-function:cubic-bezier(0.06, 0.11, 0.6, 1);transform:scaleX(0.661479)}100%{transform:scaleX(0.08)}}@keyframes mdc-linear-progress-secondary-indeterminate-translate{0%{animation-timing-function:cubic-bezier(0.15, 0, 0.515058, 0.409685);transform:translateX(0)}25%{animation-timing-function:cubic-bezier(0.31033, 0.284058, 0.8, 0.733712);transform:translateX(37.651913%)}48.35%{animation-timing-function:cubic-bezier(0.4, 0.627035, 0.6, 0.902026);transform:translateX(84.386165%)}100%{transform:translateX(160.277782%)}}@keyframes mdc-linear-progress-secondary-indeterminate-scale{0%{animation-timing-function:cubic-bezier(0.205028, 0.057051, 0.57661, 0.453971);transform:scaleX(0.08)}19.15%{animation-timing-function:cubic-bezier(0.152313, 0.196432, 0.648374, 1.004315);transform:scaleX(0.457104)}44.15%{animation-timing-function:cubic-bezier(0.257759, -0.003163, 0.211762, 1.38179);transform:scaleX(0.72796)}100%{transform:scaleX(0.08)}}@keyframes mdc-linear-progress-primary-indeterminate-translate-reverse{0%{transform:translateX(0)}20%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(0)}59.15%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(-83.67142%)}100%{transform:translateX(-200.611057%)}}@keyframes mdc-linear-progress-secondary-indeterminate-translate-reverse{0%{animation-timing-function:cubic-bezier(0.15, 0, 0.515058, 0.409685);transform:translateX(0)}25%{animation-timing-function:cubic-bezier(0.31033, 0.284058, 0.8, 0.733712);transform:translateX(-37.651913%)}48.35%{animation-timing-function:cubic-bezier(0.4, 0.627035, 0.6, 0.902026);transform:translateX(-84.386165%)}100%{transform:translateX(-160.277782%)}}@keyframes mdc-linear-progress-buffering-reverse{from{transform:translateX(-10px)}}`],encapsulation:2,changeDetection:0})}}return i})();function $g(i,n=0,e=100){return Math.max(n,Math.min(e,i))}var Yg=(()=>{class i{static{this.\u0275fac=function(t){return new(t||i)}}static{this.\u0275mod=j({type:i})}static{this.\u0275inj=L({imports:[K]})}}return i})();var nk=["*",[["mat-toolbar-row"]]],rk=["*","mat-toolbar-row"],ok=(()=>{class i{static{this.\u0275fac=function(t){return new(t||i)}}static{this.\u0275dir=D({type:i,selectors:[["mat-toolbar-row"]],hostAttrs:[1,"mat-toolbar-row"],exportAs:["matToolbarRow"],standalone:!0})}}return i})(),JB=(()=>{class i{constructor(e,t,r){this._elementRef=e,this._platform=t,this._document=r}ngAfterViewInit(){this._platform.isBrowser&&(this._checkToolbarMixedModes(),this._toolbarRows.changes.subscribe(()=>this._checkToolbarMixedModes()))}_checkToolbarMixedModes(){this._toolbarRows.length}static{this.\u0275fac=function(t){return new(t||i)(u(E),u(me),u(oe))}}static{this.\u0275cmp=H({type:i,selectors:[["mat-toolbar"]],contentQueries:function(t,r,o){if(t&1&&he(o,ok,5),t&2){let a;S(a=T())&&(r._toolbarRows=a)}},hostAttrs:[1,"mat-toolbar"],hostVars:6,hostBindings:function(t,r){t&2&&(qe(r.color?"mat-"+r.color:""),P("mat-toolbar-multiple-rows",r._toolbarRows.length>0)("mat-toolbar-single-row",r._toolbarRows.length===0))},inputs:{color:"color"},exportAs:["matToolbar"],standalone:!0,features:[Q],ngContentSelectors:rk,decls:2,vars:0,template:function(t,r){t&1&&(se(nk),A(0),A(1,1))},styles:[".mat-toolbar{background:var(--mat-toolbar-container-background-color, var(--mat-app-surface));color:var(--mat-toolbar-container-text-color, var(--mat-app-on-surface))}.mat-toolbar,.mat-toolbar h1,.mat-toolbar h2,.mat-toolbar h3,.mat-toolbar h4,.mat-toolbar h5,.mat-toolbar h6{font-family:var(--mat-toolbar-title-text-font, var(--mat-app-title-large-font));font-size:var(--mat-toolbar-title-text-size, var(--mat-app-title-large-size));line-height:var(--mat-toolbar-title-text-line-height, var(--mat-app-title-large-line-height));font-weight:var(--mat-toolbar-title-text-weight, var(--mat-app-title-large-weight));letter-spacing:var(--mat-toolbar-title-text-tracking, var(--mat-app-title-large-tracking));margin:0}.cdk-high-contrast-active .mat-toolbar{outline:solid 1px}.mat-toolbar .mat-form-field-underline,.mat-toolbar .mat-form-field-ripple,.mat-toolbar .mat-focused .mat-form-field-ripple{background-color:currentColor}.mat-toolbar .mat-form-field-label,.mat-toolbar .mat-focused .mat-form-field-label,.mat-toolbar .mat-select-value,.mat-toolbar .mat-select-arrow,.mat-toolbar .mat-form-field.mat-focused .mat-select-arrow{color:inherit}.mat-toolbar .mat-input-element{caret-color:currentColor}.mat-toolbar .mat-mdc-button-base.mat-mdc-button-base.mat-unthemed{--mdc-text-button-label-text-color:var(--mat-toolbar-container-text-color, var(--mat-app-on-surface));--mdc-outlined-button-label-text-color:var(--mat-toolbar-container-text-color, var(--mat-app-on-surface))}.mat-toolbar-row,.mat-toolbar-single-row{display:flex;box-sizing:border-box;padding:0 16px;width:100%;flex-direction:row;align-items:center;white-space:nowrap;height:var(--mat-toolbar-standard-height)}@media(max-width: 599px){.mat-toolbar-row,.mat-toolbar-single-row{height:var(--mat-toolbar-mobile-height)}}.mat-toolbar-multiple-rows{display:flex;box-sizing:border-box;flex-direction:column;width:100%;min-height:var(--mat-toolbar-standard-height)}@media(max-width: 599px){.mat-toolbar-multiple-rows{min-height:var(--mat-toolbar-mobile-height)}}"],encapsulation:2,changeDetection:0})}}return i})();var Kg=(()=>{class i{static{this.\u0275fac=function(t){return new(t||i)}}static{this.\u0275mod=j({type:i})}static{this.\u0275inj=L({imports:[K,K]})}}return i})();var ak=["tooltip"],Jg=20;var eb=new C("mat-tooltip-scroll-strategy",{providedIn:"root",factory:()=>{let i=F(je);return()=>i.scrollStrategies.reposition({scrollThrottle:Jg})}});function sk(i){return()=>i.scrollStrategies.reposition({scrollThrottle:Jg})}var ck={provide:eb,deps:[je],useFactory:sk};function lk(){return{showDelay:0,hideDelay:0,touchendHideDelay:1500}}var dk=new C("mat-tooltip-default-options",{providedIn:"root",factory:lk});var Xg="tooltip-panel",Zg=Bt({passive:!0}),uk=8,hk=8,mk=24,pk=200,wz=(()=>{class i{get position(){return this._position}set position(e){e!==this._position&&(this._position=e,this._overlayRef&&(this._updatePosition(this._overlayRef),this._tooltipInstance?.show(0),this._overlayRef.updatePosition()))}get positionAtOrigin(){return this._positionAtOrigin}set positionAtOrigin(e){this._positionAtOrigin=ut(e),this._detach(),this._overlayRef=null}get disabled(){return this._disabled}set disabled(e){let t=ut(e);this._disabled!==t&&(this._disabled=t,t?this.hide(0):this._setupPointerEnterEventsIfNeeded(),this._syncAriaDescription(this.message))}get showDelay(){return this._showDelay}set showDelay(e){this._showDelay=Ct(e)}get hideDelay(){return this._hideDelay}set hideDelay(e){this._hideDelay=Ct(e),this._tooltipInstance&&(this._tooltipInstance._mouseLeaveHideDelay=this._hideDelay)}get message(){return this._message}set message(e){let t=this._message;this._message=e!=null?String(e).trim():"",!this._message&&this._isTooltipVisible()?this.hide(0):(this._setupPointerEnterEventsIfNeeded(),this._updateTooltipMessage()),this._syncAriaDescription(t)}get tooltipClass(){return this._tooltipClass}set tooltipClass(e){this._tooltipClass=e,this._tooltipInstance&&this._setTooltipClass(this._tooltipClass)}constructor(e,t,r,o,a,s,c,l,d,h,m,p){this._overlay=e,this._elementRef=t,this._scrollDispatcher=r,this._viewContainerRef=o,this._ngZone=a,this._platform=s,this._ariaDescriber=c,this._focusMonitor=l,this._dir=h,this._defaultOptions=m,this._position="below",this._positionAtOrigin=!1,this._disabled=!1,this._viewInitialized=!1,this._pointerExitEventsInitialized=!1,this._tooltipComponent=fk,this._viewportMargin=8,this._cssClassPrefix="mat-mdc",this.touchGestures="auto",this._message="",this._passiveListeners=[],this._touchstartTimeout=null,this._destroyed=new R,this._injector=F(Ee),this._scrollStrategy=d,this._document=p,m&&(this._showDelay=m.showDelay,this._hideDelay=m.hideDelay,m.position&&(this.position=m.position),m.positionAtOrigin&&(this.positionAtOrigin=m.positionAtOrigin),m.touchGestures&&(this.touchGestures=m.touchGestures),m.tooltipClass&&(this.tooltipClass=m.tooltipClass)),h.change.pipe($(this._destroyed)).subscribe(()=>{this._overlayRef&&this._updatePosition(this._overlayRef)}),this._viewportMargin=uk}ngAfterViewInit(){this._viewInitialized=!0,this._setupPointerEnterEventsIfNeeded(),this._focusMonitor.monitor(this._elementRef).pipe($(this._destroyed)).subscribe(e=>{e?e==="keyboard"&&this._ngZone.run(()=>this.show()):this._ngZone.run(()=>this.hide(0))})}ngOnDestroy(){let e=this._elementRef.nativeElement;this._touchstartTimeout&&clearTimeout(this._touchstartTimeout),this._overlayRef&&(this._overlayRef.dispose(),this._tooltipInstance=null),this._passiveListeners.forEach(([t,r])=>{e.removeEventListener(t,r,Zg)}),this._passiveListeners.length=0,this._destroyed.next(),this._destroyed.complete(),this._ariaDescriber.removeDescription(e,this.message,"tooltip"),this._focusMonitor.stopMonitoring(e)}show(e=this.showDelay,t){if(this.disabled||!this.message||this._isTooltipVisible()){this._tooltipInstance?._cancelPendingAnimations();return}let r=this._createOverlay(t);this._detach(),this._portal=this._portal||new hn(this._tooltipComponent,this._viewContainerRef);let o=this._tooltipInstance=r.attach(this._portal).instance;o._triggerElement=this._elementRef.nativeElement,o._mouseLeaveHideDelay=this._hideDelay,o.afterHidden().pipe($(this._destroyed)).subscribe(()=>this._detach()),this._setTooltipClass(this._tooltipClass),this._updateTooltipMessage(),o.show(e)}hide(e=this.hideDelay){let t=this._tooltipInstance;t&&(t.isVisible()?t.hide(e):(t._cancelPendingAnimations(),this._detach()))}toggle(e){this._isTooltipVisible()?this.hide():this.show(void 0,e)}_isTooltipVisible(){return!!this._tooltipInstance&&this._tooltipInstance.isVisible()}_createOverlay(e){if(this._overlayRef){let o=this._overlayRef.getConfig().positionStrategy;if((!this.positionAtOrigin||!e)&&o._origin instanceof E)return this._overlayRef;this._detach()}let t=this._scrollDispatcher.getAncestorScrollContainers(this._elementRef),r=this._overlay.position().flexibleConnectedTo(this.positionAtOrigin?e||this._elementRef:this._elementRef).withTransformOriginOn(`.${this._cssClassPrefix}-tooltip`).withFlexibleDimensions(!1).withViewportMargin(this._viewportMargin).withScrollableContainers(t);return r.positionChanges.pipe($(this._destroyed)).subscribe(o=>{this._updateCurrentPositionClass(o.connectionPair),this._tooltipInstance&&o.scrollableViewProperties.isOverlayClipped&&this._tooltipInstance.isVisible()&&this._ngZone.run(()=>this.hide(0))}),this._overlayRef=this._overlay.create({direction:this._dir,positionStrategy:r,panelClass:`${this._cssClassPrefix}-${Xg}`,scrollStrategy:this._scrollStrategy()}),this._updatePosition(this._overlayRef),this._overlayRef.detachments().pipe($(this._destroyed)).subscribe(()=>this._detach()),this._overlayRef.outsidePointerEvents().pipe($(this._destroyed)).subscribe(()=>this._tooltipInstance?._handleBodyInteraction()),this._overlayRef.keydownEvents().pipe($(this._destroyed)).subscribe(o=>{this._isTooltipVisible()&&o.keyCode===27&&!Le(o)&&(o.preventDefault(),o.stopPropagation(),this._ngZone.run(()=>this.hide(0)))}),this._defaultOptions?.disableTooltipInteractivity&&this._overlayRef.addPanelClass(`${this._cssClassPrefix}-tooltip-panel-non-interactive`),this._overlayRef}_detach(){this._overlayRef&&this._overlayRef.hasAttached()&&this._overlayRef.detach(),this._tooltipInstance=null}_updatePosition(e){let t=e.getConfig().positionStrategy,r=this._getOrigin(),o=this._getOverlayPosition();t.withPositions([this._addOffset(N(N({},r.main),o.main)),this._addOffset(N(N({},r.fallback),o.fallback))])}_addOffset(e){let t=hk,r=!this._dir||this._dir.value=="ltr";return e.originY==="top"?e.offsetY=-t:e.originY==="bottom"?e.offsetY=t:e.originX==="start"?e.offsetX=r?-t:t:e.originX==="end"&&(e.offsetX=r?t:-t),e}_getOrigin(){let e=!this._dir||this._dir.value=="ltr",t=this.position,r;t=="above"||t=="below"?r={originX:"center",originY:t=="above"?"top":"bottom"}:t=="before"||t=="left"&&e||t=="right"&&!e?r={originX:"start",originY:"center"}:(t=="after"||t=="right"&&e||t=="left"&&!e)&&(r={originX:"end",originY:"center"});let{x:o,y:a}=this._invertPosition(r.originX,r.originY);return{main:r,fallback:{originX:o,originY:a}}}_getOverlayPosition(){let e=!this._dir||this._dir.value=="ltr",t=this.position,r;t=="above"?r={overlayX:"center",overlayY:"bottom"}:t=="below"?r={overlayX:"center",overlayY:"top"}:t=="before"||t=="left"&&e||t=="right"&&!e?r={overlayX:"end",overlayY:"center"}:(t=="after"||t=="right"&&e||t=="left"&&!e)&&(r={overlayX:"start",overlayY:"center"});let{x:o,y:a}=this._invertPosition(r.overlayX,r.overlayY);return{main:r,fallback:{overlayX:o,overlayY:a}}}_updateTooltipMessage(){this._tooltipInstance&&(this._tooltipInstance.message=this.message,this._tooltipInstance._markForCheck(),tt(()=>{this._tooltipInstance&&this._overlayRef.updatePosition()},{injector:this._injector}))}_setTooltipClass(e){this._tooltipInstance&&(this._tooltipInstance.tooltipClass=e,this._tooltipInstance._markForCheck())}_invertPosition(e,t){return this.position==="above"||this.position==="below"?t==="top"?t="bottom":t==="bottom"&&(t="top"):e==="end"?e="start":e==="start"&&(e="end"),{x:e,y:t}}_updateCurrentPositionClass(e){let{overlayY:t,originX:r,originY:o}=e,a;if(t==="center"?this._dir&&this._dir.value==="rtl"?a=r==="end"?"left":"right":a=r==="start"?"left":"right":a=t==="bottom"&&o==="top"?"above":"below",a!==this._currentPosition){let s=this._overlayRef;if(s){let c=`${this._cssClassPrefix}-${Xg}-`;s.removePanelClass(c+this._currentPosition),s.addPanelClass(c+a)}this._currentPosition=a}}_setupPointerEnterEventsIfNeeded(){this._disabled||!this.message||!this._viewInitialized||this._passiveListeners.length||(this._platformSupportsMouseEvents()?this._passiveListeners.push(["mouseenter",e=>{this._setupPointerExitEventsIfNeeded();let t;e.x!==void 0&&e.y!==void 0&&(t=e),this.show(void 0,t)}]):this.touchGestures!=="off"&&(this._disableNativeGesturesIfNecessary(),this._passiveListeners.push(["touchstart",e=>{let t=e.targetTouches?.[0],r=t?{x:t.clientX,y:t.clientY}:void 0;this._setupPointerExitEventsIfNeeded(),this._touchstartTimeout&&clearTimeout(this._touchstartTimeout);let o=500;this._touchstartTimeout=setTimeout(()=>{this._touchstartTimeout=null,this.show(void 0,r)},this._defaultOptions.touchLongPressShowDelay??o)}])),this._addListeners(this._passiveListeners))}_setupPointerExitEventsIfNeeded(){if(this._pointerExitEventsInitialized)return;this._pointerExitEventsInitialized=!0;let e=[];if(this._platformSupportsMouseEvents())e.push(["mouseleave",t=>{let r=t.relatedTarget;(!r||!this._overlayRef?.overlayElement.contains(r))&&this.hide()}],["wheel",t=>this._wheelListener(t)]);else if(this.touchGestures!=="off"){this._disableNativeGesturesIfNecessary();let t=()=>{this._touchstartTimeout&&clearTimeout(this._touchstartTimeout),this.hide(this._defaultOptions.touchendHideDelay)};e.push(["touchend",t],["touchcancel",t])}this._addListeners(e),this._passiveListeners.push(...e)}_addListeners(e){e.forEach(([t,r])=>{this._elementRef.nativeElement.addEventListener(t,r,Zg)})}_platformSupportsMouseEvents(){return!this._platform.IOS&&!this._platform.ANDROID}_wheelListener(e){if(this._isTooltipVisible()){let t=this._document.elementFromPoint(e.clientX,e.clientY),r=this._elementRef.nativeElement;t!==r&&!r.contains(t)&&this.hide()}}_disableNativeGesturesIfNecessary(){let e=this.touchGestures;if(e!=="off"){let t=this._elementRef.nativeElement,r=t.style;(e==="on"||t.nodeName!=="INPUT"&&t.nodeName!=="TEXTAREA")&&(r.userSelect=r.msUserSelect=r.webkitUserSelect=r.MozUserSelect="none"),(e==="on"||!t.draggable)&&(r.webkitUserDrag="none"),r.touchAction="none",r.webkitTapHighlightColor="transparent"}}_syncAriaDescription(e){this._ariaDescriptionPending||(this._ariaDescriptionPending=!0,this._ariaDescriber.removeDescription(this._elementRef.nativeElement,e,"tooltip"),this._ngZone.runOutsideAngular(()=>{Promise.resolve().then(()=>{this._ariaDescriptionPending=!1,this.message&&!this.disabled&&this._ariaDescriber.describe(this._elementRef.nativeElement,this.message,"tooltip")})}))}static{this.\u0275fac=function(t){return new(t||i)(u(je),u(E),u(un),u(Ue),u(B),u(me),u(mf),u(ot),u(eb),u(Re),u(dk,8),u(oe))}}static{this.\u0275dir=D({type:i,selectors:[["","matTooltip",""]],hostAttrs:[1,"mat-mdc-tooltip-trigger"],hostVars:2,hostBindings:function(t,r){t&2&&P("mat-mdc-tooltip-disabled",r.disabled)},inputs:{position:[0,"matTooltipPosition","position"],positionAtOrigin:[0,"matTooltipPositionAtOrigin","positionAtOrigin"],disabled:[0,"matTooltipDisabled","disabled"],showDelay:[0,"matTooltipShowDelay","showDelay"],hideDelay:[0,"matTooltipHideDelay","hideDelay"],touchGestures:[0,"matTooltipTouchGestures","touchGestures"],message:[0,"matTooltip","message"],tooltipClass:[0,"matTooltipClass","tooltipClass"]},exportAs:["matTooltip"],standalone:!0})}}return i})(),fk=(()=>{class i{constructor(e,t,r){this._changeDetectorRef=e,this._elementRef=t,this._isMultiline=!1,this._closeOnInteraction=!1,this._isVisible=!1,this._onHide=new R,this._showAnimation="mat-mdc-tooltip-show",this._hideAnimation="mat-mdc-tooltip-hide",this._animationsDisabled=r==="NoopAnimations"}show(e){this._hideTimeoutId!=null&&clearTimeout(this._hideTimeoutId),this._showTimeoutId=setTimeout(()=>{this._toggleVisibility(!0),this._showTimeoutId=void 0},e)}hide(e){this._showTimeoutId!=null&&clearTimeout(this._showTimeoutId),this._hideTimeoutId=setTimeout(()=>{this._toggleVisibility(!1),this._hideTimeoutId=void 0},e)}afterHidden(){return this._onHide}isVisible(){return this._isVisible}ngOnDestroy(){this._cancelPendingAnimations(),this._onHide.complete(),this._triggerElement=null}_handleBodyInteraction(){this._closeOnInteraction&&this.hide(0)}_markForCheck(){this._changeDetectorRef.markForCheck()}_handleMouseLeave({relatedTarget:e}){(!e||!this._triggerElement.contains(e))&&(this.isVisible()?this.hide(this._mouseLeaveHideDelay):this._finalizeAnimation(!1))}_onShow(){this._isMultiline=this._isTooltipMultiline(),this._markForCheck()}_isTooltipMultiline(){let e=this._elementRef.nativeElement.getBoundingClientRect();return e.height>mk&&e.width>=pk}_handleAnimationEnd({animationName:e}){(e===this._showAnimation||e===this._hideAnimation)&&this._finalizeAnimation(e===this._showAnimation)}_cancelPendingAnimations(){this._showTimeoutId!=null&&clearTimeout(this._showTimeoutId),this._hideTimeoutId!=null&&clearTimeout(this._hideTimeoutId),this._showTimeoutId=this._hideTimeoutId=void 0}_finalizeAnimation(e){e?this._closeOnInteraction=!0:this.isVisible()||this._onHide.next()}_toggleVisibility(e){let t=this._tooltip.nativeElement,r=this._showAnimation,o=this._hideAnimation;if(t.classList.remove(e?o:r),t.classList.add(e?r:o),this._isVisible!==e&&(this._isVisible=e,this._changeDetectorRef.markForCheck()),e&&!this._animationsDisabled&&typeof getComputedStyle=="function"){let a=getComputedStyle(t);(a.getPropertyValue("animation-duration")==="0s"||a.getPropertyValue("animation-name")==="none")&&(this._animationsDisabled=!0)}e&&this._onShow(),this._animationsDisabled&&(t.classList.add("_mat-animation-noopable"),this._finalizeAnimation(e))}static{this.\u0275fac=function(t){return new(t||i)(u(pe),u(E),u(we,8))}}static{this.\u0275cmp=H({type:i,selectors:[["mat-tooltip-component"]],viewQuery:function(t,r){if(t&1&&re(ak,7),t&2){let o;S(o=T())&&(r._tooltip=o.first)}},hostAttrs:["aria-hidden","true"],hostBindings:function(t,r){t&1&&ee("mouseleave",function(a){return r._handleMouseLeave(a)})},standalone:!0,features:[Q],decls:4,vars:4,consts:[["tooltip",""],[1,"mdc-tooltip","mat-mdc-tooltip",3,"animationend","ngClass"],[1,"mat-mdc-tooltip-surface","mdc-tooltip__surface"]],template:function(t,r){if(t&1){let o=Ge();w(0,"div",1,0),ee("animationend",function(s){return ce(o),le(r._handleAnimationEnd(s))}),w(2,"div",2),Tt(3),I()()}t&2&&(P("mdc-tooltip--multiline",r._isMultiline),ue("ngClass",r.tooltipClass),V(3),oi(r.message))},dependencies:[sa],styles:['.mat-mdc-tooltip{position:relative;transform:scale(0);display:inline-flex}.mat-mdc-tooltip::before{content:"";top:0;right:0;bottom:0;left:0;z-index:-1;position:absolute}.mat-mdc-tooltip-panel-below .mat-mdc-tooltip::before{top:-8px}.mat-mdc-tooltip-panel-above .mat-mdc-tooltip::before{bottom:-8px}.mat-mdc-tooltip-panel-right .mat-mdc-tooltip::before{left:-8px}.mat-mdc-tooltip-panel-left .mat-mdc-tooltip::before{right:-8px}.mat-mdc-tooltip._mat-animation-noopable{animation:none;transform:scale(1)}.mat-mdc-tooltip-surface{word-break:normal;overflow-wrap:anywhere;padding:4px 8px;min-width:40px;max-width:200px;min-height:24px;max-height:40vh;box-sizing:border-box;overflow:hidden;text-align:center;will-change:transform,opacity;background-color:var(--mdc-plain-tooltip-container-color, var(--mat-app-inverse-surface));color:var(--mdc-plain-tooltip-supporting-text-color, var(--mat-app-inverse-on-surface));border-radius:var(--mdc-plain-tooltip-container-shape, var(--mat-app-corner-extra-small));font-family:var(--mdc-plain-tooltip-supporting-text-font, var(--mat-app-body-small-font));font-size:var(--mdc-plain-tooltip-supporting-text-size, var(--mat-app-body-small-size));font-weight:var(--mdc-plain-tooltip-supporting-text-weight, var(--mat-app-body-small-weight));line-height:var(--mdc-plain-tooltip-supporting-text-line-height, var(--mat-app-body-small-line-height));letter-spacing:var(--mdc-plain-tooltip-supporting-text-tracking, var(--mat-app-body-small-tracking))}.mat-mdc-tooltip-surface::before{position:absolute;box-sizing:border-box;width:100%;height:100%;top:0;left:0;border:1px solid rgba(0,0,0,0);border-radius:inherit;content:"";pointer-events:none}.mdc-tooltip--multiline .mat-mdc-tooltip-surface{text-align:left}[dir=rtl] .mdc-tooltip--multiline .mat-mdc-tooltip-surface{text-align:right}.mat-mdc-tooltip-panel.mat-mdc-tooltip-panel-non-interactive{pointer-events:none}@keyframes mat-mdc-tooltip-show{0%{opacity:0;transform:scale(0.8)}100%{opacity:1;transform:scale(1)}}@keyframes mat-mdc-tooltip-hide{0%{opacity:1;transform:scale(1)}100%{opacity:0;transform:scale(0.8)}}.mat-mdc-tooltip-show{animation:mat-mdc-tooltip-show 150ms cubic-bezier(0, 0, 0.2, 1) forwards}.mat-mdc-tooltip-hide{animation:mat-mdc-tooltip-hide 75ms cubic-bezier(0.4, 0, 1, 1) forwards}'],encapsulation:2,changeDetection:0})}}return i})();var tb=(()=>{class i{static{this.\u0275fac=function(t){return new(t||i)}}static{this.\u0275mod=j({type:i})}static{this.\u0275inj=L({providers:[ck],imports:[Ts,yt,ii,K,K,Ut]})}}return i})();var gk=["trigger"],bk=["panel"],vk=[[["mat-select-trigger"]],"*"],_k=["mat-select-trigger","*"];function yk(i,n){if(i&1&&(w(0,"span",4),Tt(1),I()),i&2){let e=fe();V(),oi(e.placeholder)}}function xk(i,n){i&1&&A(0)}function wk(i,n){if(i&1&&(w(0,"span",11),Tt(1),I()),i&2){let e=fe(2);V(),oi(e.triggerValue)}}function Ck(i,n){if(i&1&&(w(0,"span",5),te(1,xk,1,0)(2,wk,2,1,"span",11),I()),i&2){let e=fe();V(),ge(e.customTrigger?1:2)}}function kk(i,n){if(i&1){let e=Ge();w(0,"div",12,1),ee("@transformPanel.done",function(r){ce(e);let o=fe();return le(o._panelDoneAnimatingStream.next(r.toState))})("keydown",function(r){ce(e);let o=fe();return le(o._handleKeydown(r))}),A(2,1),I()}if(i&2){let e=fe();Lu("mat-mdc-select-panel mdc-menu-surface mdc-menu-surface--open ",e._getPanelTheme(),""),ue("ngClass",e.panelClass)("@transformPanel","showing"),W("id",e.id+"-panel")("aria-multiselectable",e.multiple)("aria-label",e.ariaLabel||null)("aria-labelledby",e._getPanelAriaLabelledby())}}var Dk={transformPanelWrap:gt("transformPanelWrap",[Ze("* => void",Ku("@transformPanel",[Yu()],{optional:!0}))]),transformPanel:gt("transformPanel",[nt("void",Oe({opacity:0,transform:"scale(1, 0.8)"})),Ze("void => showing",Xe("120ms cubic-bezier(0, 0, 0.2, 1)",Oe({opacity:1,transform:"scale(1, 1)"}))),Ze("* => void",Xe("100ms linear",Oe({opacity:0})))])};var ib=0,nb=new C("mat-select-scroll-strategy",{providedIn:"root",factory:()=>{let i=F(je);return()=>i.scrollStrategies.reposition()}});function Ek(i){return()=>i.scrollStrategies.reposition()}var Ik=new C("MAT_SELECT_CONFIG"),Sk={provide:nb,deps:[je],useFactory:Ek},Tk=new C("MatSelectTrigger"),zd=class{constructor(n,e){this.source=n,this.value=e}},Zz=(()=>{class i{_scrollOptionIntoView(e){let t=this.options.toArray()[e];if(t){let r=this.panel.nativeElement,o=Os(e,this.options,this.optionGroups),a=t._getHostElement();e===0&&o===1?r.scrollTop=0:r.scrollTop=Rs(a.offsetTop,a.offsetHeight,r.scrollTop,r.offsetHeight)}}_positioningSettled(){this._scrollOptionIntoView(this._keyManager.activeItemIndex||0)}_getChangeEvent(e){return new zd(this,e)}get focused(){return this._focused||this._panelOpen}get hideSingleSelectionIndicator(){return this._hideSingleSelectionIndicator}set hideSingleSelectionIndicator(e){this._hideSingleSelectionIndicator=e,this._syncParentProperties()}get placeholder(){return this._placeholder}set placeholder(e){this._placeholder=e,this.stateChanges.next()}get required(){return this._required??this.ngControl?.control?.hasValidator(Ui.required)??!1}set required(e){this._required=e,this.stateChanges.next()}get multiple(){return this._multiple}set multiple(e){this._selectionModel,this._multiple=e}get compareWith(){return this._compareWith}set compareWith(e){this._compareWith=e,this._selectionModel&&this._initializeSelection()}get value(){return this._value}set value(e){this._assignValue(e)&&this._onChange(e)}get errorStateMatcher(){return this._errorStateTracker.matcher}set errorStateMatcher(e){this._errorStateTracker.matcher=e}get id(){return this._id}set id(e){this._id=e||this._uid,this.stateChanges.next()}get errorState(){return this._errorStateTracker.errorState}set errorState(e){this._errorStateTracker.errorState=e}constructor(e,t,r,o,a,s,c,l,d,h,m,p,f,g){this._viewportRuler=e,this._changeDetectorRef=t,this._elementRef=a,this._dir=s,this._parentFormField=d,this.ngControl=h,this._liveAnnouncer=f,this._defaultOptions=g,this._positions=[{originX:"start",originY:"bottom",overlayX:"start",overlayY:"top"},{originX:"end",originY:"bottom",overlayX:"end",overlayY:"top"},{originX:"start",originY:"top",overlayX:"start",overlayY:"bottom",panelClass:"mat-mdc-select-panel-above"},{originX:"end",originY:"top",overlayX:"end",overlayY:"bottom",panelClass:"mat-mdc-select-panel-above"}],this._panelOpen=!1,this._compareWith=(_,v)=>_===v,this._uid=`mat-select-${ib++}`,this._triggerAriaLabelledBy=null,this._destroy=new R,this.stateChanges=new R,this.disableAutomaticLabeling=!0,this._onChange=()=>{},this._onTouched=()=>{},this._valueId=`mat-select-value-${ib++}`,this._panelDoneAnimatingStream=new R,this._overlayPanelClass=this._defaultOptions?.overlayPanelClass||"",this._focused=!1,this.controlType="mat-select",this.disabled=!1,this.disableRipple=!1,this.tabIndex=0,this._hideSingleSelectionIndicator=this._defaultOptions?.hideSingleSelectionIndicator??!1,this._multiple=!1,this.disableOptionCentering=this._defaultOptions?.disableOptionCentering??!1,this.ariaLabel="",this.panelWidth=this._defaultOptions&&typeof this._defaultOptions.panelWidth<"u"?this._defaultOptions.panelWidth:"auto",this._initialized=new R,this.optionSelectionChanges=zi(()=>{let _=this.options;return _?_.changes.pipe(Me(_),st(()=>Fe(..._.map(v=>v.onSelectionChange)))):this._initialized.pipe(st(()=>this.optionSelectionChanges))}),this.openedChange=new z,this._openedStream=this.openedChange.pipe(ye(_=>_),ke(()=>{})),this._closedStream=this.openedChange.pipe(ye(_=>!_),ke(()=>{})),this.selectionChange=new z,this.valueChange=new z,this._trackedModal=null,this._skipPredicate=_=>this.panelOpen?!1:_.disabled,this.ngControl&&(this.ngControl.valueAccessor=this),g?.typeaheadDebounceInterval!=null&&(this.typeaheadDebounceInterval=g.typeaheadDebounceInterval),this._errorStateTracker=new ln(o,h,l,c,this.stateChanges),this._scrollStrategyFactory=p,this._scrollStrategy=this._scrollStrategyFactory(),this.tabIndex=parseInt(m)||0,this.id=this.id}ngOnInit(){this._selectionModel=new Ca(this.multiple),this.stateChanges.next(),this._panelDoneAnimatingStream.pipe(Di(),$(this._destroy)).subscribe(()=>this._panelDoneAnimating(this.panelOpen)),this._viewportRuler.change().pipe($(this._destroy)).subscribe(()=>{this.panelOpen&&(this._overlayWidth=this._getOverlayWidth(this._preferredOverlayOrigin),this._changeDetectorRef.detectChanges())})}ngAfterContentInit(){this._initialized.next(),this._initialized.complete(),this._initKeyManager(),this._selectionModel.changed.pipe($(this._destroy)).subscribe(e=>{e.added.forEach(t=>t.select()),e.removed.forEach(t=>t.deselect())}),this.options.changes.pipe(Me(null),$(this._destroy)).subscribe(()=>{this._resetOptions(),this._initializeSelection()})}ngDoCheck(){let e=this._getTriggerAriaLabelledby(),t=this.ngControl;if(e!==this._triggerAriaLabelledBy){let r=this._elementRef.nativeElement;this._triggerAriaLabelledBy=e,e?r.setAttribute("aria-labelledby",e):r.removeAttribute("aria-labelledby")}t&&(this._previousControl!==t.control&&(this._previousControl!==void 0&&t.disabled!==null&&t.disabled!==this.disabled&&(this.disabled=t.disabled),this._previousControl=t.control),this.updateErrorState())}ngOnChanges(e){(e.disabled||e.userAriaDescribedBy)&&this.stateChanges.next(),e.typeaheadDebounceInterval&&this._keyManager&&this._keyManager.withTypeAhead(this.typeaheadDebounceInterval)}ngOnDestroy(){this._keyManager?.destroy(),this._destroy.next(),this._destroy.complete(),this.stateChanges.complete(),this._clearFromModal()}toggle(){this.panelOpen?this.close():this.open()}open(){this._canOpen()&&(this._parentFormField&&(this._preferredOverlayOrigin=this._parentFormField.getConnectedOverlayOrigin()),this._overlayWidth=this._getOverlayWidth(this._preferredOverlayOrigin),this._applyModalPanelOwnership(),this._panelOpen=!0,this._keyManager.withHorizontalOrientation(null),this._highlightCorrectOption(),this._changeDetectorRef.markForCheck(),this.stateChanges.next())}_applyModalPanelOwnership(){let e=this._elementRef.nativeElement.closest('body > .cdk-overlay-container [aria-modal="true"]');if(!e)return;let t=`${this.id}-panel`;this._trackedModal&&sn(this._trackedModal,"aria-owns",t),Pr(e,"aria-owns",t),this._trackedModal=e}_clearFromModal(){if(!this._trackedModal)return;let e=`${this.id}-panel`;sn(this._trackedModal,"aria-owns",e),this._trackedModal=null}close(){this._panelOpen&&(this._panelOpen=!1,this._keyManager.withHorizontalOrientation(this._isRtl()?"rtl":"ltr"),this._changeDetectorRef.markForCheck(),this._onTouched(),this.stateChanges.next())}writeValue(e){this._assignValue(e)}registerOnChange(e){this._onChange=e}registerOnTouched(e){this._onTouched=e}setDisabledState(e){this.disabled=e,this._changeDetectorRef.markForCheck(),this.stateChanges.next()}get panelOpen(){return this._panelOpen}get selected(){return this.multiple?this._selectionModel?.selected||[]:this._selectionModel?.selected[0]}get triggerValue(){if(this.empty)return"";if(this._multiple){let e=this._selectionModel.selected.map(t=>t.viewValue);return this._isRtl()&&e.reverse(),e.join(", ")}return this._selectionModel.selected[0].viewValue}updateErrorState(){this._errorStateTracker.updateErrorState()}_isRtl(){return this._dir?this._dir.value==="rtl":!1}_handleKeydown(e){this.disabled||(this.panelOpen?this._handleOpenKeydown(e):this._handleClosedKeydown(e))}_handleClosedKeydown(e){let t=e.keyCode,r=t===40||t===38||t===37||t===39,o=t===13||t===32,a=this._keyManager;if(!a.isTyping()&&o&&!Le(e)||(this.multiple||e.altKey)&&r)e.preventDefault(),this.open();else if(!this.multiple){let s=this.selected;a.onKeydown(e);let c=this.selected;c&&s!==c&&this._liveAnnouncer.announce(c.viewValue,1e4)}}_handleOpenKeydown(e){let t=this._keyManager,r=e.keyCode,o=r===40||r===38,a=t.isTyping();if(o&&e.altKey)e.preventDefault(),this.close();else if(!a&&(r===13||r===32)&&t.activeItem&&!Le(e))e.preventDefault(),t.activeItem._selectViaInteraction();else if(!a&&this._multiple&&r===65&&e.ctrlKey){e.preventDefault();let s=this.options.some(c=>!c.disabled&&!c.selected);this.options.forEach(c=>{c.disabled||(s?c.select():c.deselect())})}else{let s=t.activeItemIndex;t.onKeydown(e),this._multiple&&o&&e.shiftKey&&t.activeItem&&t.activeItemIndex!==s&&t.activeItem._selectViaInteraction()}}_onFocus(){this.disabled||(this._focused=!0,this.stateChanges.next())}_onBlur(){this._focused=!1,this._keyManager?.cancelTypeahead(),!this.disabled&&!this.panelOpen&&(this._onTouched(),this._changeDetectorRef.markForCheck(),this.stateChanges.next())}_onAttached(){this._overlayDir.positionChange.pipe(Ye(1)).subscribe(()=>{this._changeDetectorRef.detectChanges(),this._positioningSettled()})}_getPanelTheme(){return this._parentFormField?`mat-${this._parentFormField.color}`:""}get empty(){return!this._selectionModel||this._selectionModel.isEmpty()}_initializeSelection(){Promise.resolve().then(()=>{this.ngControl&&(this._value=this.ngControl.value),this._setSelectionByValue(this._value),this.stateChanges.next()})}_setSelectionByValue(e){if(this.options.forEach(t=>t.setInactiveStyles()),this._selectionModel.clear(),this.multiple&&e)Array.isArray(e),e.forEach(t=>this._selectOptionByValue(t)),this._sortValues();else{let t=this._selectOptionByValue(e);t?this._keyManager.updateActiveItem(t):this.panelOpen||this._keyManager.updateActiveItem(-1)}this._changeDetectorRef.markForCheck()}_selectOptionByValue(e){let t=this.options.find(r=>{if(this._selectionModel.isSelected(r))return!1;try{return r.value!=null&&this._compareWith(r.value,e)}catch{return!1}});return t&&this._selectionModel.select(t),t}_assignValue(e){return e!==this._value||this._multiple&&Array.isArray(e)?(this.options&&this._setSelectionByValue(e),this._value=e,!0):!1}_getOverlayWidth(e){return this.panelWidth==="auto"?(e instanceof Qo?e.elementRef:e||this._elementRef).nativeElement.getBoundingClientRect().width:this.panelWidth===null?"":this.panelWidth}_syncParentProperties(){if(this.options)for(let e of this.options)e._changeDetectorRef.markForCheck()}_initKeyManager(){this._keyManager=new Or(this.options).withTypeAhead(this.typeaheadDebounceInterval).withVerticalOrientation().withHorizontalOrientation(this._isRtl()?"rtl":"ltr").withHomeAndEnd().withPageUpDown().withAllowedModifierKeys(["shiftKey"]).skipPredicate(this._skipPredicate),this._keyManager.tabOut.subscribe(()=>{this.panelOpen&&(!this.multiple&&this._keyManager.activeItem&&this._keyManager.activeItem._selectViaInteraction(),this.focus(),this.close())}),this._keyManager.change.subscribe(()=>{this._panelOpen&&this.panel?this._scrollOptionIntoView(this._keyManager.activeItemIndex||0):!this._panelOpen&&!this.multiple&&this._keyManager.activeItem&&this._keyManager.activeItem._selectViaInteraction()})}_resetOptions(){let e=Fe(this.options.changes,this._destroy);this.optionSelectionChanges.pipe($(e)).subscribe(t=>{this._onSelect(t.source,t.isUserInput),t.isUserInput&&!this.multiple&&this._panelOpen&&(this.close(),this.focus())}),Fe(...this.options.map(t=>t._stateChanges)).pipe($(e)).subscribe(()=>{this._changeDetectorRef.detectChanges(),this.stateChanges.next()})}_onSelect(e,t){let r=this._selectionModel.isSelected(e);e.value==null&&!this._multiple?(e.deselect(),this._selectionModel.clear(),this.value!=null&&this._propagateChanges(e.value)):(r!==e.selected&&(e.selected?this._selectionModel.select(e):this._selectionModel.deselect(e)),t&&this._keyManager.setActiveItem(e),this.multiple&&(this._sortValues(),t&&this.focus())),r!==this._selectionModel.isSelected(e)&&this._propagateChanges(),this.stateChanges.next()}_sortValues(){if(this.multiple){let e=this.options.toArray();this._selectionModel.sort((t,r)=>this.sortComparator?this.sortComparator(t,r,e):e.indexOf(t)-e.indexOf(r)),this.stateChanges.next()}}_propagateChanges(e){let t;this.multiple?t=this.selected.map(r=>r.value):t=this.selected?this.selected.value:e,this._value=t,this.valueChange.emit(t),this._onChange(t),this.selectionChange.emit(this._getChangeEvent(t)),this._changeDetectorRef.markForCheck()}_highlightCorrectOption(){if(this._keyManager)if(this.empty){let e=-1;for(let t=0;t0}focus(e){this._elementRef.nativeElement.focus(e)}_getPanelAriaLabelledby(){if(this.ariaLabel)return null;let e=this._parentFormField?.getLabelId(),t=e?e+" ":"";return this.ariaLabelledby?t+this.ariaLabelledby:e}_getAriaActiveDescendant(){return this.panelOpen&&this._keyManager&&this._keyManager.activeItem?this._keyManager.activeItem.id:null}_getTriggerAriaLabelledby(){if(this.ariaLabel)return null;let e=this._parentFormField?.getLabelId(),t=(e?e+" ":"")+this._valueId;return this.ariaLabelledby&&(t+=" "+this.ariaLabelledby),t}_panelDoneAnimating(e){this.openedChange.emit(e)}setDescribedByIds(e){e.length?this._elementRef.nativeElement.setAttribute("aria-describedby",e.join(" ")):this._elementRef.nativeElement.removeAttribute("aria-describedby")}onContainerClick(){this.focus(),this.open()}get shouldLabelFloat(){return this.panelOpen||!this.empty||this.focused&&!!this.placeholder}static{this.\u0275fac=function(t){return new(t||i)(u(Dt),u(pe),u(B),u(dn),u(E),u(Re,8),u(_n,8),u(yn,8),u(Ri,8),u(ai,10),It("tabindex"),u(nb),u(gf),u(Ik,8))}}static{this.\u0275cmp=H({type:i,selectors:[["mat-select"]],contentQueries:function(t,r,o){if(t&1&&(he(o,Tk,5),he(o,As,5),he(o,jo,5)),t&2){let a;S(a=T())&&(r.customTrigger=a.first),S(a=T())&&(r.options=a),S(a=T())&&(r.optionGroups=a)}},viewQuery:function(t,r){if(t&1&&(re(gk,5),re(bk,5),re(Md,5)),t&2){let o;S(o=T())&&(r.trigger=o.first),S(o=T())&&(r.panel=o.first),S(o=T())&&(r._overlayDir=o.first)}},hostAttrs:["role","combobox","aria-haspopup","listbox",1,"mat-mdc-select"],hostVars:19,hostBindings:function(t,r){t&1&&ee("keydown",function(a){return r._handleKeydown(a)})("focus",function(){return r._onFocus()})("blur",function(){return r._onBlur()}),t&2&&(W("id",r.id)("tabindex",r.disabled?-1:r.tabIndex)("aria-controls",r.panelOpen?r.id+"-panel":null)("aria-expanded",r.panelOpen)("aria-label",r.ariaLabel||null)("aria-required",r.required.toString())("aria-disabled",r.disabled.toString())("aria-invalid",r.errorState)("aria-activedescendant",r._getAriaActiveDescendant()),P("mat-mdc-select-disabled",r.disabled)("mat-mdc-select-invalid",r.errorState)("mat-mdc-select-required",r.required)("mat-mdc-select-empty",r.empty)("mat-mdc-select-multiple",r.multiple))},inputs:{userAriaDescribedBy:[0,"aria-describedby","userAriaDescribedBy"],panelClass:"panelClass",disabled:[2,"disabled","disabled",O],disableRipple:[2,"disableRipple","disableRipple",O],tabIndex:[2,"tabIndex","tabIndex",e=>e==null?0:$e(e)],hideSingleSelectionIndicator:[2,"hideSingleSelectionIndicator","hideSingleSelectionIndicator",O],placeholder:"placeholder",required:[2,"required","required",O],multiple:[2,"multiple","multiple",O],disableOptionCentering:[2,"disableOptionCentering","disableOptionCentering",O],compareWith:"compareWith",value:"value",ariaLabel:[0,"aria-label","ariaLabel"],ariaLabelledby:[0,"aria-labelledby","ariaLabelledby"],errorStateMatcher:"errorStateMatcher",typeaheadDebounceInterval:[2,"typeaheadDebounceInterval","typeaheadDebounceInterval",$e],sortComparator:"sortComparator",id:"id",panelWidth:"panelWidth"},outputs:{openedChange:"openedChange",_openedStream:"opened",_closedStream:"closed",selectionChange:"selectionChange",valueChange:"valueChange"},exportAs:["matSelect"],standalone:!0,features:[de([{provide:Vn,useExisting:i},{provide:Lo,useExisting:i}]),ae,Pe,Q],ngContentSelectors:_k,decls:11,vars:8,consts:[["fallbackOverlayOrigin","cdkOverlayOrigin","trigger",""],["panel",""],["cdk-overlay-origin","",1,"mat-mdc-select-trigger",3,"click"],[1,"mat-mdc-select-value"],[1,"mat-mdc-select-placeholder","mat-mdc-select-min-line"],[1,"mat-mdc-select-value-text"],[1,"mat-mdc-select-arrow-wrapper"],[1,"mat-mdc-select-arrow"],["viewBox","0 0 24 24","width","24px","height","24px","focusable","false","aria-hidden","true"],["d","M7 10l5 5 5-5z"],["cdk-connected-overlay","","cdkConnectedOverlayLockPosition","","cdkConnectedOverlayHasBackdrop","","cdkConnectedOverlayBackdropClass","cdk-overlay-transparent-backdrop",3,"backdropClick","attach","detach","cdkConnectedOverlayPanelClass","cdkConnectedOverlayScrollStrategy","cdkConnectedOverlayOrigin","cdkConnectedOverlayOpen","cdkConnectedOverlayPositions","cdkConnectedOverlayWidth"],[1,"mat-mdc-select-min-line"],["role","listbox","tabindex","-1",3,"keydown","ngClass"]],template:function(t,r){if(t&1){let o=Ge();se(vk),w(0,"div",2,0),ee("click",function(){return ce(o),le(r.open())}),w(3,"div",3),te(4,yk,2,1,"span",4)(5,Ck,3,1,"span",5),I(),w(6,"div",6)(7,"div",7),Wt(),w(8,"svg",8),ie(9,"path",9),I()()()(),te(10,kk,3,9,"ng-template",10),ee("backdropClick",function(){return ce(o),le(r.close())})("attach",function(){return ce(o),le(r._onAttached())})("detach",function(){return ce(o),le(r.close())})}if(t&2){let o=$t(1);V(3),W("id",r._valueId),V(),ge(r.empty?4:5),V(6),ue("cdkConnectedOverlayPanelClass",r._overlayPanelClass)("cdkConnectedOverlayScrollStrategy",r._scrollStrategy)("cdkConnectedOverlayOrigin",r._preferredOverlayOrigin||o)("cdkConnectedOverlayOpen",r.panelOpen)("cdkConnectedOverlayPositions",r._positions)("cdkConnectedOverlayWidth",r._overlayWidth)}},dependencies:[Qo,Md,sa],styles:['.mat-mdc-select{display:inline-block;width:100%;outline:none;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;color:var(--mat-select-enabled-trigger-text-color, var(--mat-app-on-surface));font-family:var(--mat-select-trigger-text-font, var(--mat-app-body-large-font));line-height:var(--mat-select-trigger-text-line-height, var(--mat-app-body-large-line-height));font-size:var(--mat-select-trigger-text-size, var(--mat-app-body-large-size));font-weight:var(--mat-select-trigger-text-weight, var(--mat-app-body-large-weight));letter-spacing:var(--mat-select-trigger-text-tracking, var(--mat-app-body-large-tracking))}div.mat-mdc-select-panel{box-shadow:var(--mat-select-container-elevation-shadow)}.mat-mdc-select-disabled{color:var(--mat-select-disabled-trigger-text-color)}.mat-mdc-select-trigger{display:inline-flex;align-items:center;cursor:pointer;position:relative;box-sizing:border-box;width:100%}.mat-mdc-select-disabled .mat-mdc-select-trigger{-webkit-user-select:none;user-select:none;cursor:default}.mat-mdc-select-value{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mat-mdc-select-value-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mat-mdc-select-arrow-wrapper{height:24px;flex-shrink:0;display:inline-flex;align-items:center}.mat-form-field-appearance-fill .mdc-text-field--no-label .mat-mdc-select-arrow-wrapper{transform:none}.mat-mdc-form-field .mat-mdc-select.mat-mdc-select-invalid .mat-mdc-select-arrow,.mat-form-field-invalid:not(.mat-form-field-disabled) .mat-mdc-form-field-infix::after{color:var(--mat-select-invalid-arrow-color, var(--mat-app-error))}.mat-mdc-select-arrow{width:10px;height:5px;position:relative;color:var(--mat-select-enabled-arrow-color, var(--mat-app-on-surface-variant))}.mat-mdc-form-field.mat-focused .mat-mdc-select-arrow{color:var(--mat-select-focused-arrow-color, var(--mat-app-primary))}.mat-mdc-form-field .mat-mdc-select.mat-mdc-select-disabled .mat-mdc-select-arrow{color:var(--mat-select-disabled-arrow-color)}.mat-mdc-select-arrow svg{fill:currentColor;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%)}.cdk-high-contrast-active .mat-mdc-select-arrow svg{fill:CanvasText}.mat-mdc-select-disabled .cdk-high-contrast-active .mat-mdc-select-arrow svg{fill:GrayText}div.mat-mdc-select-panel{width:100%;max-height:275px;outline:0;overflow:auto;padding:8px 0;border-radius:4px;box-sizing:border-box;position:static;background-color:var(--mat-select-panel-background-color, var(--mat-app-surface-container))}.cdk-high-contrast-active div.mat-mdc-select-panel{outline:solid 1px}.cdk-overlay-pane:not(.mat-mdc-select-panel-above) div.mat-mdc-select-panel{border-top-left-radius:0;border-top-right-radius:0;transform-origin:top center}.mat-mdc-select-panel-above div.mat-mdc-select-panel{border-bottom-left-radius:0;border-bottom-right-radius:0;transform-origin:bottom center}div.mat-mdc-select-panel .mat-mdc-option{--mdc-list-list-item-container-color: var(--mat-select-panel-background-color)}.mat-mdc-select-placeholder{transition:color 400ms 133.3333333333ms cubic-bezier(0.25, 0.8, 0.25, 1);color:var(--mat-select-placeholder-text-color, var(--mat-app-on-surface-variant))}._mat-animation-noopable .mat-mdc-select-placeholder{transition:none}.mat-form-field-hide-placeholder .mat-mdc-select-placeholder{color:rgba(0,0,0,0);-webkit-text-fill-color:rgba(0,0,0,0);transition:none;display:block}.mat-mdc-form-field-type-mat-select:not(.mat-form-field-disabled) .mat-mdc-text-field-wrapper{cursor:pointer}.mat-mdc-form-field-type-mat-select.mat-form-field-appearance-fill .mat-mdc-floating-label{max-width:calc(100% - 18px)}.mat-mdc-form-field-type-mat-select.mat-form-field-appearance-fill .mdc-floating-label--float-above{max-width:calc(100%/0.75 - 24px)}.mat-mdc-form-field-type-mat-select.mat-form-field-appearance-outline .mdc-notched-outline__notch{max-width:calc(100% - 60px)}.mat-mdc-form-field-type-mat-select.mat-form-field-appearance-outline .mdc-text-field--label-floating .mdc-notched-outline__notch{max-width:calc(100% - 24px)}.mat-mdc-select-min-line:empty::before{content:" ";white-space:pre;width:1px;display:inline-block;visibility:hidden}.mat-form-field-appearance-fill .mat-mdc-select-arrow-wrapper{transform:var(--mat-select-arrow-transform)}'],encapsulation:2,data:{animation:[Dk.transformPanel]},changeDetection:0})}}return i})();var rb=(()=>{class i{static{this.\u0275fac=function(t){return new(t||i)}}static{this.\u0275mod=j({type:i})}static{this.\u0275inj=L({providers:[Sk],imports:[yt,ii,Lr,K,Ut,Bn,Lr,K]})}}return i})();var ob=["*"],Mk=["content"],Ak=[[["mat-drawer"]],[["mat-drawer-content"]],"*"],Ok=["mat-drawer","mat-drawer-content","*"];function Rk(i,n){if(i&1){let e=Ge();w(0,"div",1),ee("click",function(){ce(e);let r=fe();return le(r._onBackdropClicked())}),I()}if(i&2){let e=fe();P("mat-drawer-shown",e._isShowingBackdrop())}}function Fk(i,n){i&1&&(w(0,"mat-drawer-content"),A(1,2),I())}var Pk={transformDrawer:gt("transform",[nt("open, open-instant",Oe({transform:"none",visibility:"visible"})),nt("void",Oe({"box-shadow":"none",visibility:"hidden"})),Ze("void => open-instant",Xe("0ms")),Ze("void <=> open, open-instant => void",Xe("400ms cubic-bezier(0.25, 0.8, 0.25, 1)"))])};var Nk=new C("MAT_DRAWER_DEFAULT_AUTOSIZE",{providedIn:"root",factory:Lk}),ab=new C("MAT_DRAWER_CONTAINER");function Lk(){return!1}var Hd=(()=>{class i extends Fi{constructor(e,t,r,o,a){super(r,o,a),this._changeDetectorRef=e,this._container=t}ngAfterContentInit(){this._container._contentMarginChanges.subscribe(()=>{this._changeDetectorRef.markForCheck()})}static{this.\u0275fac=function(t){return new(t||i)(u(pe),u(Lt(()=>Vk)),u(E),u(un),u(B))}}static{this.\u0275cmp=H({type:i,selectors:[["mat-drawer-content"]],hostAttrs:[1,"mat-drawer-content"],hostVars:4,hostBindings:function(t,r){t&2&&ft("margin-left",r._container._contentMargins.left,"px")("margin-right",r._container._contentMargins.right,"px")},standalone:!0,features:[de([{provide:Fi,useExisting:i}]),ne,Q],ngContentSelectors:ob,decls:1,vars:0,template:function(t,r){t&1&&(se(),A(0))},encapsulation:2,changeDetection:0})}}return i})(),jk=(()=>{class i{get position(){return this._position}set position(e){e=e==="end"?"end":"start",e!==this._position&&(this._isAttached&&this._updatePositionInParent(e),this._position=e,this.onPositionChanged.emit())}get mode(){return this._mode}set mode(e){this._mode=e,this._updateFocusTrapState(),this._modeChanged.next()}get disableClose(){return this._disableClose}set disableClose(e){this._disableClose=ut(e)}get autoFocus(){let e=this._autoFocus;return e??(this.mode==="side"?"dialog":"first-tabbable")}set autoFocus(e){(e==="true"||e==="false"||e==null)&&(e=ut(e)),this._autoFocus=e}get opened(){return this._opened}set opened(e){this.toggle(ut(e))}constructor(e,t,r,o,a,s,c,l){this._elementRef=e,this._focusTrapFactory=t,this._focusMonitor=r,this._platform=o,this._ngZone=a,this._interactivityChecker=s,this._doc=c,this._container=l,this._focusTrap=null,this._elementFocusedBeforeDrawerWasOpened=null,this._enableAnimations=!1,this._position="start",this._mode="over",this._disableClose=!1,this._opened=!1,this._animationStarted=new R,this._animationEnd=new R,this._animationState="void",this.openedChange=new z(!0),this._openedStream=this.openedChange.pipe(ye(d=>d),ke(()=>{})),this.openedStart=this._animationStarted.pipe(ye(d=>d.fromState!==d.toState&&d.toState.indexOf("open")===0),nc(void 0)),this._closedStream=this.openedChange.pipe(ye(d=>!d),ke(()=>{})),this.closedStart=this._animationStarted.pipe(ye(d=>d.fromState!==d.toState&&d.toState==="void"),nc(void 0)),this._destroyed=new R,this.onPositionChanged=new z,this._modeChanged=new R,this._injector=F(Ee),this._changeDetectorRef=F(pe),this.openedChange.pipe($(this._destroyed)).subscribe(d=>{d?(this._doc&&(this._elementFocusedBeforeDrawerWasOpened=this._doc.activeElement),this._takeFocus()):this._isFocusWithinDrawer()&&this._restoreFocus(this._openedVia||"program")}),this._ngZone.runOutsideAngular(()=>{Nt(this._elementRef.nativeElement,"keydown").pipe(ye(d=>d.keyCode===27&&!this.disableClose&&!Le(d)),$(this._destroyed)).subscribe(d=>this._ngZone.run(()=>{this.close(),d.stopPropagation(),d.preventDefault()}))}),this._animationEnd.pipe(Di((d,h)=>d.fromState===h.fromState&&d.toState===h.toState)).subscribe(d=>{let{fromState:h,toState:m}=d;(m.indexOf("open")===0&&h==="void"||m==="void"&&h.indexOf("open")===0)&&this.openedChange.emit(this._opened)})}_forceFocus(e,t){this._interactivityChecker.isFocusable(e)||(e.tabIndex=-1,this._ngZone.runOutsideAngular(()=>{let r=()=>{e.removeEventListener("blur",r),e.removeEventListener("mousedown",r),e.removeAttribute("tabindex")};e.addEventListener("blur",r),e.addEventListener("mousedown",r)})),e.focus(t)}_focusByCssSelector(e,t){let r=this._elementRef.nativeElement.querySelector(e);r&&this._forceFocus(r,t)}_takeFocus(){if(!this._focusTrap)return;let e=this._elementRef.nativeElement;switch(this.autoFocus){case!1:case"dialog":return;case!0:case"first-tabbable":tt(()=>{!this._focusTrap.focusInitialElement()&&typeof e.focus=="function"&&e.focus()},{injector:this._injector});break;case"first-heading":this._focusByCssSelector('h1, h2, h3, h4, h5, h6, [role="heading"]');break;default:this._focusByCssSelector(this.autoFocus);break}}_restoreFocus(e){this.autoFocus!=="dialog"&&(this._elementFocusedBeforeDrawerWasOpened?this._focusMonitor.focusVia(this._elementFocusedBeforeDrawerWasOpened,e):this._elementRef.nativeElement.blur(),this._elementFocusedBeforeDrawerWasOpened=null)}_isFocusWithinDrawer(){let e=this._doc.activeElement;return!!e&&this._elementRef.nativeElement.contains(e)}ngAfterViewInit(){this._isAttached=!0,this._position==="end"&&this._updatePositionInParent("end"),this._platform.isBrowser&&(this._focusTrap=this._focusTrapFactory.create(this._elementRef.nativeElement),this._updateFocusTrapState())}ngAfterContentChecked(){this._platform.isBrowser&&(this._enableAnimations=!0)}ngOnDestroy(){this._focusTrap?.destroy(),this._anchor?.remove(),this._anchor=null,this._animationStarted.complete(),this._animationEnd.complete(),this._modeChanged.complete(),this._destroyed.next(),this._destroyed.complete()}open(e){return this.toggle(!0,e)}close(){return this.toggle(!1)}_closeViaBackdropClick(){return this._setOpen(!1,!0,"mouse")}toggle(e=!this.opened,t){e&&t&&(this._openedVia=t);let r=this._setOpen(e,!e&&this._isFocusWithinDrawer(),this._openedVia||"program");return e||(this._openedVia=null),r}_setOpen(e,t,r){return this._opened=e,e?this._animationState=this._enableAnimations?"open":"open-instant":(this._animationState="void",t&&this._restoreFocus(r)),this._changeDetectorRef.markForCheck(),this._updateFocusTrapState(),new Promise(o=>{this.openedChange.pipe(Ye(1)).subscribe(a=>o(a?"open":"close"))})}_getWidth(){return this._elementRef.nativeElement&&this._elementRef.nativeElement.offsetWidth||0}_updateFocusTrapState(){this._focusTrap&&(this._focusTrap.enabled=!!this._container?.hasBackdrop&&this.opened)}_updatePositionInParent(e){if(!this._platform.isBrowser)return;let t=this._elementRef.nativeElement,r=t.parentNode;e==="end"?(this._anchor||(this._anchor=this._doc.createComment("mat-drawer-anchor"),r.insertBefore(this._anchor,t)),r.appendChild(t)):this._anchor&&this._anchor.parentNode.insertBefore(t,this._anchor)}static{this.\u0275fac=function(t){return new(t||i)(u(E),u(Nr),u(ot),u(me),u(B),u(Nn),u(oe,8),u(ab,8))}}static{this.\u0275cmp=H({type:i,selectors:[["mat-drawer"]],viewQuery:function(t,r){if(t&1&&re(Mk,5),t&2){let o;S(o=T())&&(r._content=o.first)}},hostAttrs:["tabIndex","-1",1,"mat-drawer"],hostVars:12,hostBindings:function(t,r){t&1&&Vu("@transform.start",function(a){return r._animationStarted.next(a)})("@transform.done",function(a){return r._animationEnd.next(a)}),t&2&&(ju("@transform",r._animationState),W("align",null),P("mat-drawer-end",r.position==="end")("mat-drawer-over",r.mode==="over")("mat-drawer-push",r.mode==="push")("mat-drawer-side",r.mode==="side")("mat-drawer-opened",r.opened))},inputs:{position:"position",mode:"mode",disableClose:"disableClose",autoFocus:"autoFocus",opened:"opened"},outputs:{openedChange:"openedChange",_openedStream:"opened",openedStart:"openedStart",_closedStream:"closed",closedStart:"closedStart",onPositionChanged:"positionChanged"},exportAs:["matDrawer"],standalone:!0,features:[Q],ngContentSelectors:ob,decls:3,vars:0,consts:[["content",""],["cdkScrollable","",1,"mat-drawer-inner-container"]],template:function(t,r){t&1&&(se(),w(0,"div",1,0),A(2),I())},dependencies:[Fi],encapsulation:2,data:{animation:[Pk.transformDrawer]},changeDetection:0})}}return i})(),Vk=(()=>{class i{get start(){return this._start}get end(){return this._end}get autosize(){return this._autosize}set autosize(e){this._autosize=ut(e)}get hasBackdrop(){return this._drawerHasBackdrop(this._start)||this._drawerHasBackdrop(this._end)}set hasBackdrop(e){this._backdropOverride=e==null?null:ut(e)}get scrollable(){return this._userContent||this._content}constructor(e,t,r,o,a,s=!1,c){this._dir=e,this._element=t,this._ngZone=r,this._changeDetectorRef=o,this._animationMode=c,this._drawers=new Gt,this.backdropClick=new z,this._destroyed=new R,this._doCheckSubject=new R,this._contentMargins={left:null,right:null},this._contentMarginChanges=new R,this._injector=F(Ee),e&&e.change.pipe($(this._destroyed)).subscribe(()=>{this._validateDrawers(),this.updateContentMargins()}),a.change().pipe($(this._destroyed)).subscribe(()=>this.updateContentMargins()),this._autosize=s}ngAfterContentInit(){this._allDrawers.changes.pipe(Me(this._allDrawers),$(this._destroyed)).subscribe(e=>{this._drawers.reset(e.filter(t=>!t._container||t._container===this)),this._drawers.notifyOnChanges()}),this._drawers.changes.pipe(Me(null)).subscribe(()=>{this._validateDrawers(),this._drawers.forEach(e=>{this._watchDrawerToggle(e),this._watchDrawerPosition(e),this._watchDrawerMode(e)}),(!this._drawers.length||this._isDrawerOpen(this._start)||this._isDrawerOpen(this._end))&&this.updateContentMargins(),this._changeDetectorRef.markForCheck()}),this._ngZone.runOutsideAngular(()=>{this._doCheckSubject.pipe(fi(10),$(this._destroyed)).subscribe(()=>this.updateContentMargins())})}ngOnDestroy(){this._contentMarginChanges.complete(),this._doCheckSubject.complete(),this._drawers.destroy(),this._destroyed.next(),this._destroyed.complete()}open(){this._drawers.forEach(e=>e.open())}close(){this._drawers.forEach(e=>e.close())}updateContentMargins(){let e=0,t=0;if(this._left&&this._left.opened){if(this._left.mode=="side")e+=this._left._getWidth();else if(this._left.mode=="push"){let r=this._left._getWidth();e+=r,t-=r}}if(this._right&&this._right.opened){if(this._right.mode=="side")t+=this._right._getWidth();else if(this._right.mode=="push"){let r=this._right._getWidth();t+=r,e-=r}}e=e||null,t=t||null,(e!==this._contentMargins.left||t!==this._contentMargins.right)&&(this._contentMargins={left:e,right:t},this._ngZone.run(()=>this._contentMarginChanges.next(this._contentMargins)))}ngDoCheck(){this._autosize&&this._isPushed()&&this._ngZone.runOutsideAngular(()=>this._doCheckSubject.next())}_watchDrawerToggle(e){e._animationStarted.pipe(ye(t=>t.fromState!==t.toState),$(this._drawers.changes)).subscribe(t=>{t.toState!=="open-instant"&&this._animationMode!=="NoopAnimations"&&this._element.nativeElement.classList.add("mat-drawer-transition"),this.updateContentMargins(),this._changeDetectorRef.markForCheck()}),e.mode!=="side"&&e.openedChange.pipe($(this._drawers.changes)).subscribe(()=>this._setContainerClass(e.opened))}_watchDrawerPosition(e){e&&e.onPositionChanged.pipe($(this._drawers.changes)).subscribe(()=>{tt(()=>{this._validateDrawers()},{injector:this._injector,phase:Nu.Read})})}_watchDrawerMode(e){e&&e._modeChanged.pipe($(Fe(this._drawers.changes,this._destroyed))).subscribe(()=>{this.updateContentMargins(),this._changeDetectorRef.markForCheck()})}_setContainerClass(e){let t=this._element.nativeElement.classList,r="mat-drawer-container-has-open";e?t.add(r):t.remove(r)}_validateDrawers(){this._start=this._end=null,this._drawers.forEach(e=>{e.position=="end"?(this._end!=null,this._end=e):(this._start!=null,this._start=e)}),this._right=this._left=null,this._dir&&this._dir.value==="rtl"?(this._left=this._end,this._right=this._start):(this._left=this._start,this._right=this._end)}_isPushed(){return this._isDrawerOpen(this._start)&&this._start.mode!="over"||this._isDrawerOpen(this._end)&&this._end.mode!="over"}_onBackdropClicked(){this.backdropClick.emit(),this._closeModalDrawersViaBackdrop()}_closeModalDrawersViaBackdrop(){[this._start,this._end].filter(e=>e&&!e.disableClose&&this._drawerHasBackdrop(e)).forEach(e=>e._closeViaBackdropClick())}_isShowingBackdrop(){return this._isDrawerOpen(this._start)&&this._drawerHasBackdrop(this._start)||this._isDrawerOpen(this._end)&&this._drawerHasBackdrop(this._end)}_isDrawerOpen(e){return e!=null&&e.opened}_drawerHasBackdrop(e){return this._backdropOverride==null?!!e&&e.mode!=="side":this._backdropOverride}static{this.\u0275fac=function(t){return new(t||i)(u(Re,8),u(E),u(B),u(pe),u(Dt),u(Nk),u(we,8))}}static{this.\u0275cmp=H({type:i,selectors:[["mat-drawer-container"]],contentQueries:function(t,r,o){if(t&1&&(he(o,Hd,5),he(o,jk,5)),t&2){let a;S(a=T())&&(r._content=a.first),S(a=T())&&(r._allDrawers=a)}},viewQuery:function(t,r){if(t&1&&re(Hd,5),t&2){let o;S(o=T())&&(r._userContent=o.first)}},hostAttrs:[1,"mat-drawer-container"],hostVars:2,hostBindings:function(t,r){t&2&&P("mat-drawer-container-explicit-backdrop",r._backdropOverride)},inputs:{autosize:"autosize",hasBackdrop:"hasBackdrop"},outputs:{backdropClick:"backdropClick"},exportAs:["matDrawerContainer"],standalone:!0,features:[de([{provide:ab,useExisting:i}]),Q],ngContentSelectors:Ok,decls:4,vars:2,consts:[[1,"mat-drawer-backdrop",3,"mat-drawer-shown"],[1,"mat-drawer-backdrop",3,"click"]],template:function(t,r){t&1&&(se(Ak),te(0,Rk,1,2,"div",0),A(1),A(2,1),te(3,Fk,2,0,"mat-drawer-content")),t&2&&(ge(r.hasBackdrop?0:-1),V(3),ge(r._content?-1:3))},dependencies:[Hd],styles:['.mat-drawer-container{position:relative;z-index:1;color:var(--mat-sidenav-content-text-color, var(--mat-app-on-background));background-color:var(--mat-sidenav-content-background-color, var(--mat-app-background));box-sizing:border-box;-webkit-overflow-scrolling:touch;display:block;overflow:hidden}.mat-drawer-container[fullscreen]{top:0;left:0;right:0;bottom:0;position:absolute}.mat-drawer-container[fullscreen].mat-drawer-container-has-open{overflow:hidden}.mat-drawer-container.mat-drawer-container-explicit-backdrop .mat-drawer-side{z-index:3}.mat-drawer-container.ng-animate-disabled .mat-drawer-backdrop,.mat-drawer-container.ng-animate-disabled .mat-drawer-content,.ng-animate-disabled .mat-drawer-container .mat-drawer-backdrop,.ng-animate-disabled .mat-drawer-container .mat-drawer-content{transition:none}.mat-drawer-backdrop{top:0;left:0;right:0;bottom:0;position:absolute;display:block;z-index:3;visibility:hidden}.mat-drawer-backdrop.mat-drawer-shown{visibility:visible;background-color:var(--mat-sidenav-scrim-color)}.mat-drawer-transition .mat-drawer-backdrop{transition-duration:400ms;transition-timing-function:cubic-bezier(0.25, 0.8, 0.25, 1);transition-property:background-color,visibility}.cdk-high-contrast-active .mat-drawer-backdrop{opacity:.5}.mat-drawer-content{position:relative;z-index:1;display:block;height:100%;overflow:auto}.mat-drawer-transition .mat-drawer-content{transition-duration:400ms;transition-timing-function:cubic-bezier(0.25, 0.8, 0.25, 1);transition-property:transform,margin-left,margin-right}.mat-drawer{position:relative;z-index:4;color:var(--mat-sidenav-container-text-color, var(--mat-app-on-surface-variant));box-shadow:var(--mat-sidenav-container-elevation-shadow);background-color:var(--mat-sidenav-container-background-color, var(--mat-app-surface));border-top-right-radius:var(--mat-sidenav-container-shape, var(--mat-app-corner-large));border-bottom-right-radius:var(--mat-sidenav-container-shape, var(--mat-app-corner-large));width:var(--mat-sidenav-container-width);display:block;position:absolute;top:0;bottom:0;z-index:3;outline:0;box-sizing:border-box;overflow-y:auto;transform:translate3d(-100%, 0, 0)}.cdk-high-contrast-active .mat-drawer,.cdk-high-contrast-active [dir=rtl] .mat-drawer.mat-drawer-end{border-right:solid 1px currentColor}.cdk-high-contrast-active [dir=rtl] .mat-drawer,.cdk-high-contrast-active .mat-drawer.mat-drawer-end{border-left:solid 1px currentColor;border-right:none}.mat-drawer.mat-drawer-side{z-index:2}.mat-drawer.mat-drawer-end{right:0;transform:translate3d(100%, 0, 0);border-top-left-radius:var(--mat-sidenav-container-shape, var(--mat-app-corner-large));border-bottom-left-radius:var(--mat-sidenav-container-shape, var(--mat-app-corner-large));border-top-right-radius:0;border-bottom-right-radius:0}[dir=rtl] .mat-drawer{border-top-left-radius:var(--mat-sidenav-container-shape, var(--mat-app-corner-large));border-bottom-left-radius:var(--mat-sidenav-container-shape, var(--mat-app-corner-large));border-top-right-radius:0;border-bottom-right-radius:0;transform:translate3d(100%, 0, 0)}[dir=rtl] .mat-drawer.mat-drawer-end{border-top-right-radius:var(--mat-sidenav-container-shape, var(--mat-app-corner-large));border-bottom-right-radius:var(--mat-sidenav-container-shape, var(--mat-app-corner-large));border-top-left-radius:0;border-bottom-left-radius:0;left:0;right:auto;transform:translate3d(-100%, 0, 0)}.mat-drawer[style*="visibility: hidden"]{display:none}.mat-drawer-side{box-shadow:none;border-right-color:var(--mat-sidenav-container-divider-color);border-right-width:1px;border-right-style:solid}.mat-drawer-side.mat-drawer-end{border-left-color:var(--mat-sidenav-container-divider-color);border-left-width:1px;border-left-style:solid;border-right:none}[dir=rtl] .mat-drawer-side{border-left-color:var(--mat-sidenav-container-divider-color);border-left-width:1px;border-left-style:solid;border-right:none}[dir=rtl] .mat-drawer-side.mat-drawer-end{border-right-color:var(--mat-sidenav-container-divider-color);border-right-width:1px;border-right-style:solid;border-left:none}.mat-drawer-inner-container{width:100%;height:100%;overflow:auto;-webkit-overflow-scrolling:touch}.mat-sidenav-fixed{position:fixed}'],encapsulation:2,changeDetection:0})}}return i})();var sb=(()=>{class i{static{this.\u0275fac=function(t){return new(t||i)}}static{this.\u0275mod=j({type:i})}static{this.\u0275inj=L({imports:[K,Ut,Ut,K]})}}return i})();var zr=["*"];function Bk(i,n){i&1&&A(0)}var db=["tabListContainer"],ub=["tabList"],hb=["tabListInner"],mb=["nextPaginator"],pb=["previousPaginator"],zk=i=>({animationDuration:i}),Hk=(i,n)=>({value:i,params:n});function Qk(i,n){}var Uk=["tabBodyWrapper"],qk=["tabHeader"];function Wk(i,n){}function Gk(i,n){if(i&1&&te(0,Wk,0,0,"ng-template",12),i&2){let e=fe().$implicit;ue("cdkPortalOutlet",e.templateLabel)}}function $k(i,n){if(i&1&&Tt(0),i&2){let e=fe().$implicit;oi(e.textLabel)}}function Yk(i,n){if(i&1){let e=Ge();w(0,"div",7,2),ee("click",function(){let r=ce(e),o=r.$implicit,a=r.$index,s=fe(),c=$t(1);return le(s._handleClick(o,c,a))})("cdkFocusChange",function(r){let o=ce(e).$index,a=fe();return le(a._tabFocusChanged(r,o))}),ie(2,"span",8)(3,"div",9),w(4,"span",10)(5,"span",11),te(6,Gk,1,1,null,12)(7,$k,1,1),I()()()}if(i&2){let e=n.$implicit,t=n.$index,r=$t(1),o=fe();qe(e.labelClass),P("mdc-tab--active",o.selectedIndex===t),ue("id",o._getTabLabelId(t))("disabled",e.disabled)("fitInkBarToContent",o.fitInkBarToContent),W("tabIndex",o._getTabIndex(t))("aria-posinset",t+1)("aria-setsize",o._tabs.length)("aria-controls",o._getTabContentId(t))("aria-selected",o.selectedIndex===t)("aria-label",e.ariaLabel||null)("aria-labelledby",!e.ariaLabel&&e.ariaLabelledby?e.ariaLabelledby:null),V(3),ue("matRippleTrigger",r)("matRippleDisabled",e.disabled||o.disableRipple),V(3),ge(e.templateLabel?6:7)}}function Kk(i,n){i&1&&A(0)}function Xk(i,n){if(i&1){let e=Ge();w(0,"mat-tab-body",13),ee("_onCentered",function(){ce(e);let r=fe();return le(r._removeTabBodyWrapperHeight())})("_onCentering",function(r){ce(e);let o=fe();return le(o._setTabBodyWrapperHeight(r))}),I()}if(i&2){let e=n.$implicit,t=n.$index,r=fe();qe(e.bodyClass),P("mat-mdc-tab-body-active",r.selectedIndex===t),ue("id",r._getTabContentId(t))("content",e.content)("position",e.position)("origin",e.origin)("animationDuration",r.animationDuration)("preserveContent",r.preserveContent),W("tabindex",r.contentTabIndex!=null&&r.selectedIndex===t?r.contentTabIndex:null)("aria-labelledby",r._getTabLabelId(t))("aria-hidden",r.selectedIndex!==t)}}var Zk=["mat-tab-nav-bar",""],Jk=["mat-tab-link",""],eD=new C("MatTabContent"),tD=(()=>{class i{constructor(e){this.template=e}static{this.\u0275fac=function(t){return new(t||i)(u(Ae))}}static{this.\u0275dir=D({type:i,selectors:[["","matTabContent",""]],standalone:!0,features:[de([{provide:eD,useExisting:i}])]})}}return i})(),iD=new C("MatTabLabel"),fb=new C("MAT_TAB"),nD=(()=>{class i extends rg{constructor(e,t,r){super(e,t),this._closestTab=r}static{this.\u0275fac=function(t){return new(t||i)(u(Ae),u(Ue),u(fb,8))}}static{this.\u0275dir=D({type:i,selectors:[["","mat-tab-label",""],["","matTabLabel",""]],standalone:!0,features:[de([{provide:iD,useExisting:i}]),ne]})}}return i})(),gb=new C("MAT_TAB_GROUP"),rD=(()=>{class i{get templateLabel(){return this._templateLabel}set templateLabel(e){this._setTemplateLabelInput(e)}get content(){return this._contentPortal}constructor(e,t){this._viewContainerRef=e,this._closestTabGroup=t,this.disabled=!1,this._explicitContent=void 0,this.textLabel="",this._contentPortal=null,this._stateChanges=new R,this.position=null,this.origin=null,this.isActive=!1}ngOnChanges(e){(e.hasOwnProperty("textLabel")||e.hasOwnProperty("disabled"))&&this._stateChanges.next()}ngOnDestroy(){this._stateChanges.complete()}ngOnInit(){this._contentPortal=new Et(this._explicitContent||this._implicitContent,this._viewContainerRef)}_setTemplateLabelInput(e){e&&e._closestTab===this&&(this._templateLabel=e)}static{this.\u0275fac=function(t){return new(t||i)(u(Ue),u(gb,8))}}static{this.\u0275cmp=H({type:i,selectors:[["mat-tab"]],contentQueries:function(t,r,o){if(t&1&&(he(o,nD,5),he(o,tD,7,Ae)),t&2){let a;S(a=T())&&(r.templateLabel=a.first),S(a=T())&&(r._explicitContent=a.first)}},viewQuery:function(t,r){if(t&1&&re(Ae,7),t&2){let o;S(o=T())&&(r._implicitContent=o.first)}},hostAttrs:["hidden",""],inputs:{disabled:[2,"disabled","disabled",O],textLabel:[0,"label","textLabel"],ariaLabel:[0,"aria-label","ariaLabel"],ariaLabelledby:[0,"aria-labelledby","ariaLabelledby"],labelClass:"labelClass",bodyClass:"bodyClass"},exportAs:["matTab"],standalone:!0,features:[de([{provide:fb,useExisting:i}]),ae,Pe,Q],ngContentSelectors:zr,decls:1,vars:0,template:function(t,r){t&1&&(se(),te(0,Bk,1,0,"ng-template"))},encapsulation:2})}}return i})(),Qd="mdc-tab-indicator--active",cb="mdc-tab-indicator--no-transition",Hs=class{constructor(n){this._items=n}hide(){this._items.forEach(n=>n.deactivateInkBar())}alignToElement(n){let e=this._items.find(r=>r.elementRef.nativeElement===n),t=this._currentItem;if(e!==t&&(t?.deactivateInkBar(),e)){let r=t?.elementRef.nativeElement.getBoundingClientRect?.();e.activateInkBar(r),this._currentItem=e}}},bb=(()=>{class i{constructor(){this._elementRef=F(E),this._fitToContent=!1}get fitInkBarToContent(){return this._fitToContent}set fitInkBarToContent(e){this._fitToContent!==e&&(this._fitToContent=e,this._inkBarElement&&this._appendInkBarElement())}activateInkBar(e){let t=this._elementRef.nativeElement;if(!e||!t.getBoundingClientRect||!this._inkBarContentElement){t.classList.add(Qd);return}let r=t.getBoundingClientRect(),o=e.width/r.width,a=e.left-r.left;t.classList.add(cb),this._inkBarContentElement.style.setProperty("transform",`translateX(${a}px) scaleX(${o})`),t.getBoundingClientRect(),t.classList.remove(cb),t.classList.add(Qd),this._inkBarContentElement.style.setProperty("transform","")}deactivateInkBar(){this._elementRef.nativeElement.classList.remove(Qd)}ngOnInit(){this._createInkBarElement()}ngOnDestroy(){this._inkBarElement?.remove(),this._inkBarElement=this._inkBarContentElement=null}_createInkBarElement(){let e=this._elementRef.nativeElement.ownerDocument||document,t=this._inkBarElement=e.createElement("span"),r=this._inkBarContentElement=e.createElement("span");t.className="mdc-tab-indicator",r.className="mdc-tab-indicator__content mdc-tab-indicator__content--underline",t.appendChild(this._inkBarContentElement),this._appendInkBarElement()}_appendInkBarElement(){this._inkBarElement;let e=this._fitToContent?this._elementRef.nativeElement.querySelector(".mdc-tab__content"):this._elementRef.nativeElement;e.appendChild(this._inkBarElement)}static{this.\u0275fac=function(t){return new(t||i)}}static{this.\u0275dir=D({type:i,inputs:{fitInkBarToContent:[2,"fitInkBarToContent","fitInkBarToContent",O]},features:[ae]})}}return i})();var vb=(()=>{class i extends bb{constructor(e){super(),this.elementRef=e,this.disabled=!1}focus(){this.elementRef.nativeElement.focus()}getOffsetLeft(){return this.elementRef.nativeElement.offsetLeft}getOffsetWidth(){return this.elementRef.nativeElement.offsetWidth}static{this.\u0275fac=function(t){return new(t||i)(u(E))}}static{this.\u0275dir=D({type:i,selectors:[["","matTabLabelWrapper",""]],hostVars:3,hostBindings:function(t,r){t&2&&(W("aria-disabled",!!r.disabled),P("mat-mdc-tab-disabled",r.disabled))},inputs:{disabled:[2,"disabled","disabled",O]},standalone:!0,features:[ae,ne]})}}return i})(),lb=Bt({passive:!0}),oD=650,aD=100,_b=(()=>{class i{get selectedIndex(){return this._selectedIndex}set selectedIndex(e){let t=isNaN(e)?0:e;this._selectedIndex!=t&&(this._selectedIndexChanged=!0,this._selectedIndex=t,this._keyManager&&this._keyManager.updateActiveItem(t))}constructor(e,t,r,o,a,s,c){this._elementRef=e,this._changeDetectorRef=t,this._viewportRuler=r,this._dir=o,this._ngZone=a,this._platform=s,this._animationMode=c,this._scrollDistance=0,this._selectedIndexChanged=!1,this._destroyed=new R,this._showPaginationControls=!1,this._disableScrollAfter=!0,this._disableScrollBefore=!0,this._stopScrolling=new R,this.disablePagination=!1,this._selectedIndex=0,this.selectFocusedIndex=new z,this.indexFocused=new z,this._sharedResizeObserver=F(Ns),this._injector=F(Ee),a.runOutsideAngular(()=>{Nt(e.nativeElement,"mouseleave").pipe($(this._destroyed)).subscribe(()=>{this._stopInterval()})})}ngAfterViewInit(){Nt(this._previousPaginator.nativeElement,"touchstart",lb).pipe($(this._destroyed)).subscribe(()=>{this._handlePaginatorPress("before")}),Nt(this._nextPaginator.nativeElement,"touchstart",lb).pipe($(this._destroyed)).subscribe(()=>{this._handlePaginatorPress("after")})}ngAfterContentInit(){let e=this._dir?this._dir.change:He("ltr"),t=this._sharedResizeObserver.observe(this._elementRef.nativeElement).pipe(fi(32),$(this._destroyed)),r=this._viewportRuler.change(150).pipe($(this._destroyed)),o=()=>{this.updatePagination(),this._alignInkBarToSelectedTab()};this._keyManager=new an(this._items).withHorizontalOrientation(this._getLayoutDirection()).withHomeAndEnd().withWrap().skipPredicate(()=>!1),this._keyManager.updateActiveItem(this._selectedIndex),tt(o,{injector:this._injector}),Fe(e,r,t,this._items.changes,this._itemsResized()).pipe($(this._destroyed)).subscribe(()=>{this._ngZone.run(()=>{Promise.resolve().then(()=>{this._scrollDistance=Math.max(0,Math.min(this._getMaxScrollDistance(),this._scrollDistance)),o()})}),this._keyManager.withHorizontalOrientation(this._getLayoutDirection())}),this._keyManager.change.subscribe(a=>{this.indexFocused.emit(a),this._setTabFocus(a)})}_itemsResized(){return typeof ResizeObserver!="function"?Bi:this._items.changes.pipe(Me(this._items),st(e=>new We(t=>this._ngZone.runOutsideAngular(()=>{let r=new ResizeObserver(o=>t.next(o));return e.forEach(o=>r.observe(o.elementRef.nativeElement)),()=>{r.disconnect()}}))),Yn(1),ye(e=>e.some(t=>t.contentRect.width>0&&t.contentRect.height>0)))}ngAfterContentChecked(){this._tabLabelCount!=this._items.length&&(this.updatePagination(),this._tabLabelCount=this._items.length,this._changeDetectorRef.markForCheck()),this._selectedIndexChanged&&(this._scrollToLabel(this._selectedIndex),this._checkScrollingControls(),this._alignInkBarToSelectedTab(),this._selectedIndexChanged=!1,this._changeDetectorRef.markForCheck()),this._scrollDistanceChanged&&(this._updateTabScrollPosition(),this._scrollDistanceChanged=!1,this._changeDetectorRef.markForCheck())}ngOnDestroy(){this._keyManager?.destroy(),this._destroyed.next(),this._destroyed.complete(),this._stopScrolling.complete()}_handleKeydown(e){if(!Le(e))switch(e.keyCode){case 13:case 32:if(this.focusIndex!==this.selectedIndex){let t=this._items.get(this.focusIndex);t&&!t.disabled&&(this.selectFocusedIndex.emit(this.focusIndex),this._itemSelected(e))}break;default:this._keyManager.onKeydown(e)}}_onContentChanges(){let e=this._elementRef.nativeElement.textContent;e!==this._currentTextContent&&(this._currentTextContent=e||"",this._ngZone.run(()=>{this.updatePagination(),this._alignInkBarToSelectedTab(),this._changeDetectorRef.markForCheck()}))}updatePagination(){this._checkPaginationEnabled(),this._checkScrollingControls(),this._updateTabScrollPosition()}get focusIndex(){return this._keyManager?this._keyManager.activeItemIndex:0}set focusIndex(e){!this._isValidIndex(e)||this.focusIndex===e||!this._keyManager||this._keyManager.setActiveItem(e)}_isValidIndex(e){return this._items?!!this._items.toArray()[e]:!0}_setTabFocus(e){if(this._showPaginationControls&&this._scrollToLabel(e),this._items&&this._items.length){this._items.toArray()[e].focus();let t=this._tabListContainer.nativeElement;this._getLayoutDirection()=="ltr"?t.scrollLeft=0:t.scrollLeft=t.scrollWidth-t.offsetWidth}}_getLayoutDirection(){return this._dir&&this._dir.value==="rtl"?"rtl":"ltr"}_updateTabScrollPosition(){if(this.disablePagination)return;let e=this.scrollDistance,t=this._getLayoutDirection()==="ltr"?-e:e;this._tabList.nativeElement.style.transform=`translateX(${Math.round(t)}px)`,(this._platform.TRIDENT||this._platform.EDGE)&&(this._tabListContainer.nativeElement.scrollLeft=0)}get scrollDistance(){return this._scrollDistance}set scrollDistance(e){this._scrollTo(e)}_scrollHeader(e){let t=this._tabListContainer.nativeElement.offsetWidth,r=(e=="before"?-1:1)*t/3;return this._scrollTo(this._scrollDistance+r)}_handlePaginatorClick(e){this._stopInterval(),this._scrollHeader(e)}_scrollToLabel(e){if(this.disablePagination)return;let t=this._items?this._items.toArray()[e]:null;if(!t)return;let r=this._tabListContainer.nativeElement.offsetWidth,{offsetLeft:o,offsetWidth:a}=t.elementRef.nativeElement,s,c;this._getLayoutDirection()=="ltr"?(s=o,c=s+a):(c=this._tabListInner.nativeElement.offsetWidth-o,s=c-a);let l=this.scrollDistance,d=this.scrollDistance+r;sd&&(this.scrollDistance+=Math.min(c-d,s-l))}_checkPaginationEnabled(){if(this.disablePagination)this._showPaginationControls=!1;else{let e=this._tabListInner.nativeElement.scrollWidth,t=this._elementRef.nativeElement.offsetWidth,r=e-t>=5;r||(this.scrollDistance=0),r!==this._showPaginationControls&&(this._showPaginationControls=r,this._changeDetectorRef.markForCheck())}}_checkScrollingControls(){this.disablePagination?this._disableScrollAfter=this._disableScrollBefore=!0:(this._disableScrollBefore=this.scrollDistance==0,this._disableScrollAfter=this.scrollDistance==this._getMaxScrollDistance(),this._changeDetectorRef.markForCheck())}_getMaxScrollDistance(){let e=this._tabListInner.nativeElement.scrollWidth,t=this._tabListContainer.nativeElement.offsetWidth;return e-t||0}_alignInkBarToSelectedTab(){let e=this._items&&this._items.length?this._items.toArray()[this.selectedIndex]:null,t=e?e.elementRef.nativeElement:null;t?this._inkBar.alignToElement(t):this._inkBar.hide()}_stopInterval(){this._stopScrolling.next()}_handlePaginatorPress(e,t){t&&t.button!=null&&t.button!==0||(this._stopInterval(),Cu(oD,aD).pipe($(Fe(this._stopScrolling,this._destroyed))).subscribe(()=>{let{maxScrollDistance:r,distance:o}=this._scrollHeader(e);(o===0||o>=r)&&this._stopInterval()}))}_scrollTo(e){if(this.disablePagination)return{maxScrollDistance:0,distance:0};let t=this._getMaxScrollDistance();return this._scrollDistance=Math.max(0,Math.min(t,e)),this._scrollDistanceChanged=!0,this._checkScrollingControls(),{maxScrollDistance:t,distance:this._scrollDistance}}static{this.\u0275fac=function(t){return new(t||i)(u(E),u(pe),u(Dt),u(Re,8),u(B),u(me),u(we,8))}}static{this.\u0275dir=D({type:i,inputs:{disablePagination:[2,"disablePagination","disablePagination",O],selectedIndex:[2,"selectedIndex","selectedIndex",$e]},outputs:{selectFocusedIndex:"selectFocusedIndex",indexFocused:"indexFocused"},features:[ae]})}}return i})(),sD=(()=>{class i extends _b{constructor(e,t,r,o,a,s,c){super(e,t,r,o,a,s,c),this.disableRipple=!1}ngAfterContentInit(){this._inkBar=new Hs(this._items),super.ngAfterContentInit()}_itemSelected(e){e.preventDefault()}static{this.\u0275fac=function(t){return new(t||i)(u(E),u(pe),u(Dt),u(Re,8),u(B),u(me),u(we,8))}}static{this.\u0275cmp=H({type:i,selectors:[["mat-tab-header"]],contentQueries:function(t,r,o){if(t&1&&he(o,vb,4),t&2){let a;S(a=T())&&(r._items=a)}},viewQuery:function(t,r){if(t&1&&(re(db,7),re(ub,7),re(hb,7),re(mb,5),re(pb,5)),t&2){let o;S(o=T())&&(r._tabListContainer=o.first),S(o=T())&&(r._tabList=o.first),S(o=T())&&(r._tabListInner=o.first),S(o=T())&&(r._nextPaginator=o.first),S(o=T())&&(r._previousPaginator=o.first)}},hostAttrs:[1,"mat-mdc-tab-header"],hostVars:4,hostBindings:function(t,r){t&2&&P("mat-mdc-tab-header-pagination-controls-enabled",r._showPaginationControls)("mat-mdc-tab-header-rtl",r._getLayoutDirection()=="rtl")},inputs:{ariaLabel:[0,"aria-label","ariaLabel"],ariaLabelledby:[0,"aria-labelledby","ariaLabelledby"],disableRipple:[2,"disableRipple","disableRipple",O]},standalone:!0,features:[ae,ne,Q],ngContentSelectors:zr,decls:13,vars:10,consts:[["previousPaginator",""],["tabListContainer",""],["tabList",""],["tabListInner",""],["nextPaginator",""],["mat-ripple","",1,"mat-mdc-tab-header-pagination","mat-mdc-tab-header-pagination-before",3,"click","mousedown","touchend","matRippleDisabled"],[1,"mat-mdc-tab-header-pagination-chevron"],[1,"mat-mdc-tab-label-container",3,"keydown"],["role","tablist",1,"mat-mdc-tab-list",3,"cdkObserveContent"],[1,"mat-mdc-tab-labels"],["mat-ripple","",1,"mat-mdc-tab-header-pagination","mat-mdc-tab-header-pagination-after",3,"mousedown","click","touchend","matRippleDisabled"]],template:function(t,r){if(t&1){let o=Ge();se(),w(0,"div",5,0),ee("click",function(){return ce(o),le(r._handlePaginatorClick("before"))})("mousedown",function(s){return ce(o),le(r._handlePaginatorPress("before",s))})("touchend",function(){return ce(o),le(r._stopInterval())}),ie(2,"div",6),I(),w(3,"div",7,1),ee("keydown",function(s){return ce(o),le(r._handleKeydown(s))}),w(5,"div",8,2),ee("cdkObserveContent",function(){return ce(o),le(r._onContentChanges())}),w(7,"div",9,3),A(9),I()()(),w(10,"div",10,4),ee("mousedown",function(s){return ce(o),le(r._handlePaginatorPress("after",s))})("click",function(){return ce(o),le(r._handlePaginatorClick("after"))})("touchend",function(){return ce(o),le(r._stopInterval())}),ie(12,"div",6),I()}t&2&&(P("mat-mdc-tab-header-pagination-disabled",r._disableScrollBefore),ue("matRippleDisabled",r._disableScrollBefore||r.disableRipple),V(3),P("_mat-animation-noopable",r._animationMode==="NoopAnimations"),V(2),W("aria-label",r.ariaLabel||null)("aria-labelledby",r.ariaLabelledby||null),V(5),P("mat-mdc-tab-header-pagination-disabled",r._disableScrollAfter),ue("matRippleDisabled",r._disableScrollAfter||r.disableRipple))},dependencies:[ti,td],styles:[".mat-mdc-tab-header{display:flex;overflow:hidden;position:relative;flex-shrink:0}.mdc-tab-indicator .mdc-tab-indicator__content{transition-duration:var(--mat-tab-animation-duration, 250ms)}.mat-mdc-tab-header-pagination{-webkit-user-select:none;user-select:none;position:relative;display:none;justify-content:center;align-items:center;min-width:32px;cursor:pointer;z-index:2;-webkit-tap-highlight-color:rgba(0,0,0,0);touch-action:none;box-sizing:content-box;outline:0}.mat-mdc-tab-header-pagination::-moz-focus-inner{border:0}.mat-mdc-tab-header-pagination .mat-ripple-element{opacity:.12;background-color:var(--mat-tab-header-inactive-ripple-color, var(--mat-app-on-surface))}.mat-mdc-tab-header-pagination-controls-enabled .mat-mdc-tab-header-pagination{display:flex}.mat-mdc-tab-header-pagination-before,.mat-mdc-tab-header-rtl .mat-mdc-tab-header-pagination-after{padding-left:4px}.mat-mdc-tab-header-pagination-before .mat-mdc-tab-header-pagination-chevron,.mat-mdc-tab-header-rtl .mat-mdc-tab-header-pagination-after .mat-mdc-tab-header-pagination-chevron{transform:rotate(-135deg)}.mat-mdc-tab-header-rtl .mat-mdc-tab-header-pagination-before,.mat-mdc-tab-header-pagination-after{padding-right:4px}.mat-mdc-tab-header-rtl .mat-mdc-tab-header-pagination-before .mat-mdc-tab-header-pagination-chevron,.mat-mdc-tab-header-pagination-after .mat-mdc-tab-header-pagination-chevron{transform:rotate(45deg)}.mat-mdc-tab-header-pagination-chevron{border-style:solid;border-width:2px 2px 0 0;height:8px;width:8px;border-color:var(--mat-tab-header-pagination-icon-color, var(--mat-app-on-surface))}.mat-mdc-tab-header-pagination-disabled{box-shadow:none;cursor:default;pointer-events:none}.mat-mdc-tab-header-pagination-disabled .mat-mdc-tab-header-pagination-chevron{opacity:.4}.mat-mdc-tab-list{flex-grow:1;position:relative;transition:transform 500ms cubic-bezier(0.35, 0, 0.25, 1)}._mat-animation-noopable .mat-mdc-tab-list{transition:none}.mat-mdc-tab-label-container{display:flex;flex-grow:1;overflow:hidden;z-index:1;border-bottom-style:solid;border-bottom-width:var(--mat-tab-header-divider-height);border-bottom-color:var(--mat-tab-header-divider-color, var(--mat-app-surface-variant))}.mat-mdc-tab-group-inverted-header .mat-mdc-tab-label-container{border-bottom:none;border-top-style:solid;border-top-width:var(--mat-tab-header-divider-height);border-top-color:var(--mat-tab-header-divider-color, var(--mat-app-surface-variant))}.mat-mdc-tab-labels{display:flex;flex:1 0 auto}[mat-align-tabs=center]>.mat-mdc-tab-header .mat-mdc-tab-labels{justify-content:center}[mat-align-tabs=end]>.mat-mdc-tab-header .mat-mdc-tab-labels{justify-content:flex-end}.cdk-drop-list .mat-mdc-tab-labels,.mat-mdc-tab-labels.cdk-drop-list{min-height:var(--mdc-secondary-navigation-tab-container-height)}.mat-mdc-tab::before{margin:5px}.cdk-high-contrast-active .mat-mdc-tab[aria-disabled=true]{color:GrayText}"],encapsulation:2})}}return i})(),yb=new C("MAT_TABS_CONFIG"),cD={translateTab:gt("translateTab",[nt("center, void, left-origin-center, right-origin-center",Oe({transform:"none",visibility:"visible"})),nt("left",Oe({transform:"translate3d(-100%, 0, 0)",minHeight:"1px",visibility:"hidden"})),nt("right",Oe({transform:"translate3d(100%, 0, 0)",minHeight:"1px",visibility:"hidden"})),Ze("* => left, * => right, left => center, right => center",Xe("{{animationDuration}} cubic-bezier(0.35, 0, 0.25, 1)")),Ze("void => left-origin-center",[Oe({transform:"translate3d(-100%, 0, 0)",visibility:"hidden"}),Xe("{{animationDuration}} cubic-bezier(0.35, 0, 0.25, 1)")]),Ze("void => right-origin-center",[Oe({transform:"translate3d(100%, 0, 0)",visibility:"hidden"}),Xe("{{animationDuration}} cubic-bezier(0.35, 0, 0.25, 1)")])])},lD=(()=>{class i extends mi{constructor(e,t,r,o){super(e,t,o),this._host=r,this._centeringSub=Te.EMPTY,this._leavingSub=Te.EMPTY}ngOnInit(){super.ngOnInit(),this._centeringSub=this._host._beforeCentering.pipe(Me(this._host._isCenterPosition(this._host._position))).subscribe(e=>{this._host._content&&e&&!this.hasAttached()&&this.attach(this._host._content)}),this._leavingSub=this._host._afterLeavingCenter.subscribe(()=>{this._host.preserveContent||this.detach()})}ngOnDestroy(){super.ngOnDestroy(),this._centeringSub.unsubscribe(),this._leavingSub.unsubscribe()}static{this.\u0275fac=function(t){return new(t||i)(u(fn),u(Ue),u(Lt(()=>xb)),u(oe))}}static{this.\u0275dir=D({type:i,selectors:[["","matTabBodyHost",""]],standalone:!0,features:[ne]})}}return i})(),xb=(()=>{class i{set position(e){this._positionIndex=e,this._computePositionAnimationState()}constructor(e,t,r){this._elementRef=e,this._dir=t,this._dirChangeSubscription=Te.EMPTY,this._translateTabComplete=new R,this._onCentering=new z,this._beforeCentering=new z,this._afterLeavingCenter=new z,this._onCentered=new z(!0),this.animationDuration="500ms",this.preserveContent=!1,t&&(this._dirChangeSubscription=t.change.subscribe(o=>{this._computePositionAnimationState(o),r.markForCheck()})),this._translateTabComplete.pipe(Di((o,a)=>o.fromState===a.fromState&&o.toState===a.toState)).subscribe(o=>{this._isCenterPosition(o.toState)&&this._isCenterPosition(this._position)&&this._onCentered.emit(),this._isCenterPosition(o.fromState)&&!this._isCenterPosition(this._position)&&this._afterLeavingCenter.emit()})}ngOnInit(){this._position=="center"&&this.origin!=null&&(this._position=this._computePositionFromOrigin(this.origin))}ngOnDestroy(){this._dirChangeSubscription.unsubscribe(),this._translateTabComplete.complete()}_onTranslateTabStarted(e){let t=this._isCenterPosition(e.toState);this._beforeCentering.emit(t),t&&this._onCentering.emit(this._elementRef.nativeElement.clientHeight)}_getLayoutDirection(){return this._dir&&this._dir.value==="rtl"?"rtl":"ltr"}_isCenterPosition(e){return e=="center"||e=="left-origin-center"||e=="right-origin-center"}_computePositionAnimationState(e=this._getLayoutDirection()){this._positionIndex<0?this._position=e=="ltr"?"left":"right":this._positionIndex>0?this._position=e=="ltr"?"right":"left":this._position="center"}_computePositionFromOrigin(e){let t=this._getLayoutDirection();return t=="ltr"&&e<=0||t=="rtl"&&e>0?"left-origin-center":"right-origin-center"}static{this.\u0275fac=function(t){return new(t||i)(u(E),u(Re,8),u(pe))}}static{this.\u0275cmp=H({type:i,selectors:[["mat-tab-body"]],viewQuery:function(t,r){if(t&1&&re(mi,5),t&2){let o;S(o=T())&&(r._portalHost=o.first)}},hostAttrs:[1,"mat-mdc-tab-body"],inputs:{_content:[0,"content","_content"],origin:"origin",animationDuration:"animationDuration",preserveContent:"preserveContent",position:"position"},outputs:{_onCentering:"_onCentering",_beforeCentering:"_beforeCentering",_afterLeavingCenter:"_afterLeavingCenter",_onCentered:"_onCentered"},standalone:!0,features:[Q],decls:3,vars:6,consts:[["content",""],["cdkScrollable","",1,"mat-mdc-tab-body-content"],["matTabBodyHost",""]],template:function(t,r){if(t&1){let o=Ge();w(0,"div",1,0),ee("@translateTab.start",function(s){return ce(o),le(r._onTranslateTabStarted(s))})("@translateTab.done",function(s){return ce(o),le(r._translateTabComplete.next(s))}),te(2,Qk,0,0,"ng-template",2),I()}t&2&&ue("@translateTab",Qu(3,Hk,r._position,Hu(1,zk,r.animationDuration)))},dependencies:[lD,Fi],styles:['.mat-mdc-tab-body{top:0;left:0;right:0;bottom:0;position:absolute;display:block;overflow:hidden;outline:0;flex-basis:100%}.mat-mdc-tab-body.mat-mdc-tab-body-active{position:relative;overflow-x:hidden;overflow-y:auto;z-index:1;flex-grow:1}.mat-mdc-tab-group.mat-mdc-tab-group-dynamic-height .mat-mdc-tab-body.mat-mdc-tab-body-active{overflow-y:hidden}.mat-mdc-tab-body-content{height:100%;overflow:auto}.mat-mdc-tab-group-dynamic-height .mat-mdc-tab-body-content{overflow:hidden}.mat-mdc-tab-body-content[style*="visibility: hidden"]{display:none}'],encapsulation:2,data:{animation:[cD.translateTab]}})}}return i})(),dD=0,uD=!0,GH=(()=>{class i{get fitInkBarToContent(){return this._fitInkBarToContent}set fitInkBarToContent(e){this._fitInkBarToContent=e,this._changeDetectorRef.markForCheck()}get selectedIndex(){return this._selectedIndex}set selectedIndex(e){this._indexToSelect=isNaN(e)?null:e}get animationDuration(){return this._animationDuration}set animationDuration(e){let t=e+"";this._animationDuration=/^\d+$/.test(t)?e+"ms":t}get contentTabIndex(){return this._contentTabIndex}set contentTabIndex(e){this._contentTabIndex=isNaN(e)?null:e}get backgroundColor(){return this._backgroundColor}set backgroundColor(e){if(!uD)throw new Error("mat-tab-group background color must be set through the Sass theming API");let t=this._elementRef.nativeElement.classList;t.remove("mat-tabs-with-background",`mat-background-${this.backgroundColor}`),e&&t.add("mat-tabs-with-background",`mat-background-${e}`),this._backgroundColor=e}constructor(e,t,r,o){this._elementRef=e,this._changeDetectorRef=t,this._animationMode=o,this._tabs=new Gt,this._indexToSelect=0,this._lastFocusedTabIndex=null,this._tabBodyWrapperHeight=0,this._tabsSubscription=Te.EMPTY,this._tabLabelSubscription=Te.EMPTY,this._fitInkBarToContent=!1,this.stretchTabs=!0,this.dynamicHeight=!1,this._selectedIndex=null,this.headerPosition="above",this.disablePagination=!1,this.disableRipple=!1,this.preserveContent=!1,this.selectedIndexChange=new z,this.focusChange=new z,this.animationDone=new z,this.selectedTabChange=new z(!0),this._isServer=!F(me).isBrowser,this._groupId=dD++,this.animationDuration=r&&r.animationDuration?r.animationDuration:"500ms",this.disablePagination=r&&r.disablePagination!=null?r.disablePagination:!1,this.dynamicHeight=r&&r.dynamicHeight!=null?r.dynamicHeight:!1,r?.contentTabIndex!=null&&(this.contentTabIndex=r.contentTabIndex),this.preserveContent=!!r?.preserveContent,this.fitInkBarToContent=r&&r.fitInkBarToContent!=null?r.fitInkBarToContent:!1,this.stretchTabs=r&&r.stretchTabs!=null?r.stretchTabs:!0}ngAfterContentChecked(){let e=this._indexToSelect=this._clampTabIndex(this._indexToSelect);if(this._selectedIndex!=e){let t=this._selectedIndex==null;if(!t){this.selectedTabChange.emit(this._createChangeEvent(e));let r=this._tabBodyWrapper.nativeElement;r.style.minHeight=r.clientHeight+"px"}Promise.resolve().then(()=>{this._tabs.forEach((r,o)=>r.isActive=o===e),t||(this.selectedIndexChange.emit(e),this._tabBodyWrapper.nativeElement.style.minHeight="")})}this._tabs.forEach((t,r)=>{t.position=r-e,this._selectedIndex!=null&&t.position==0&&!t.origin&&(t.origin=e-this._selectedIndex)}),this._selectedIndex!==e&&(this._selectedIndex=e,this._lastFocusedTabIndex=null,this._changeDetectorRef.markForCheck())}ngAfterContentInit(){this._subscribeToAllTabChanges(),this._subscribeToTabLabels(),this._tabsSubscription=this._tabs.changes.subscribe(()=>{let e=this._clampTabIndex(this._indexToSelect);if(e===this._selectedIndex){let t=this._tabs.toArray(),r;for(let o=0;o{t[e].isActive=!0,this.selectedTabChange.emit(this._createChangeEvent(e))})}this._changeDetectorRef.markForCheck()})}_subscribeToAllTabChanges(){this._allTabs.changes.pipe(Me(this._allTabs)).subscribe(e=>{this._tabs.reset(e.filter(t=>t._closestTabGroup===this||!t._closestTabGroup)),this._tabs.notifyOnChanges()})}ngOnDestroy(){this._tabs.destroy(),this._tabsSubscription.unsubscribe(),this._tabLabelSubscription.unsubscribe()}realignInkBar(){this._tabHeader&&this._tabHeader._alignInkBarToSelectedTab()}updatePagination(){this._tabHeader&&this._tabHeader.updatePagination()}focusTab(e){let t=this._tabHeader;t&&(t.focusIndex=e)}_focusChanged(e){this._lastFocusedTabIndex=e,this.focusChange.emit(this._createChangeEvent(e))}_createChangeEvent(e){let t=new Ud;return t.index=e,this._tabs&&this._tabs.length&&(t.tab=this._tabs.toArray()[e]),t}_subscribeToTabLabels(){this._tabLabelSubscription&&this._tabLabelSubscription.unsubscribe(),this._tabLabelSubscription=Fe(...this._tabs.map(e=>e._stateChanges)).subscribe(()=>this._changeDetectorRef.markForCheck())}_clampTabIndex(e){return Math.min(this._tabs.length-1,Math.max(e||0,0))}_getTabLabelId(e){return`mat-tab-label-${this._groupId}-${e}`}_getTabContentId(e){return`mat-tab-content-${this._groupId}-${e}`}_setTabBodyWrapperHeight(e){if(!this.dynamicHeight||!this._tabBodyWrapperHeight)return;let t=this._tabBodyWrapper.nativeElement;t.style.height=this._tabBodyWrapperHeight+"px",this._tabBodyWrapper.nativeElement.offsetHeight&&(t.style.height=e+"px")}_removeTabBodyWrapperHeight(){let e=this._tabBodyWrapper.nativeElement;this._tabBodyWrapperHeight=e.clientHeight,e.style.height="",this.animationDone.emit()}_handleClick(e,t,r){t.focusIndex=r,e.disabled||(this.selectedIndex=r)}_getTabIndex(e){let t=this._lastFocusedTabIndex??this.selectedIndex;return e===t?0:-1}_tabFocusChanged(e,t){e&&e!=="mouse"&&e!=="touch"&&(this._tabHeader.focusIndex=t)}static{this.\u0275fac=function(t){return new(t||i)(u(E),u(pe),u(yb,8),u(we,8))}}static{this.\u0275cmp=H({type:i,selectors:[["mat-tab-group"]],contentQueries:function(t,r,o){if(t&1&&he(o,rD,5),t&2){let a;S(a=T())&&(r._allTabs=a)}},viewQuery:function(t,r){if(t&1&&(re(Uk,5),re(qk,5)),t&2){let o;S(o=T())&&(r._tabBodyWrapper=o.first),S(o=T())&&(r._tabHeader=o.first)}},hostAttrs:[1,"mat-mdc-tab-group"],hostVars:10,hostBindings:function(t,r){t&2&&(qe("mat-"+(r.color||"primary")),ft("--mat-tab-animation-duration",r.animationDuration),P("mat-mdc-tab-group-dynamic-height",r.dynamicHeight)("mat-mdc-tab-group-inverted-header",r.headerPosition==="below")("mat-mdc-tab-group-stretch-tabs",r.stretchTabs))},inputs:{color:"color",fitInkBarToContent:[2,"fitInkBarToContent","fitInkBarToContent",O],stretchTabs:[2,"mat-stretch-tabs","stretchTabs",O],dynamicHeight:[2,"dynamicHeight","dynamicHeight",O],selectedIndex:[2,"selectedIndex","selectedIndex",$e],headerPosition:"headerPosition",animationDuration:"animationDuration",contentTabIndex:[2,"contentTabIndex","contentTabIndex",$e],disablePagination:[2,"disablePagination","disablePagination",O],disableRipple:[2,"disableRipple","disableRipple",O],preserveContent:[2,"preserveContent","preserveContent",O],backgroundColor:"backgroundColor",ariaLabel:[0,"aria-label","ariaLabel"],ariaLabelledby:[0,"aria-labelledby","ariaLabelledby"]},outputs:{selectedIndexChange:"selectedIndexChange",focusChange:"focusChange",animationDone:"animationDone",selectedTabChange:"selectedTabChange"},exportAs:["matTabGroup"],standalone:!0,features:[de([{provide:gb,useExisting:i}]),ae,Q],ngContentSelectors:zr,decls:9,vars:8,consts:[["tabHeader",""],["tabBodyWrapper",""],["tabNode",""],[3,"indexFocused","selectFocusedIndex","selectedIndex","disableRipple","disablePagination","aria-label","aria-labelledby"],["role","tab","matTabLabelWrapper","","cdkMonitorElementFocus","",1,"mdc-tab","mat-mdc-tab","mat-mdc-focus-indicator",3,"id","mdc-tab--active","class","disabled","fitInkBarToContent"],[1,"mat-mdc-tab-body-wrapper"],["role","tabpanel",3,"id","mat-mdc-tab-body-active","class","content","position","origin","animationDuration","preserveContent"],["role","tab","matTabLabelWrapper","","cdkMonitorElementFocus","",1,"mdc-tab","mat-mdc-tab","mat-mdc-focus-indicator",3,"click","cdkFocusChange","id","disabled","fitInkBarToContent"],[1,"mdc-tab__ripple"],["mat-ripple","",1,"mat-mdc-tab-ripple",3,"matRippleTrigger","matRippleDisabled"],[1,"mdc-tab__content"],[1,"mdc-tab__text-label"],[3,"cdkPortalOutlet"],["role","tabpanel",3,"_onCentered","_onCentering","id","content","position","origin","animationDuration","preserveContent"]],template:function(t,r){if(t&1){let o=Ge();se(),w(0,"mat-tab-header",3,0),ee("indexFocused",function(s){return ce(o),le(r._focusChanged(s))})("selectFocusedIndex",function(s){return ce(o),le(r.selectedIndex=s)}),sc(2,Yk,8,17,"div",4,ac),I(),te(4,Kk,1,0),w(5,"div",5,1),sc(7,Xk,1,13,"mat-tab-body",6,ac),I()}t&2&&(ue("selectedIndex",r.selectedIndex||0)("disableRipple",r.disableRipple)("disablePagination",r.disablePagination)("aria-label",r.ariaLabel)("aria-labelledby",r.ariaLabelledby),V(2),cc(r._tabs),V(2),ge(r._isServer?4:-1),V(),P("_mat-animation-noopable",r._animationMode==="NoopAnimations"),V(2),cc(r._tabs))},dependencies:[sD,vb,bf,ti,mi,xb],styles:['.mdc-tab{min-width:90px;padding:0 24px;display:flex;flex:1 0 auto;justify-content:center;box-sizing:border-box;border:none;outline:none;text-align:center;white-space:nowrap;cursor:pointer;z-index:1}.mdc-tab__content{display:flex;align-items:center;justify-content:center;height:inherit;pointer-events:none}.mdc-tab__text-label{transition:150ms color linear;display:inline-block;line-height:1;z-index:2}.mdc-tab--active .mdc-tab__text-label{transition-delay:100ms}._mat-animation-noopable .mdc-tab__text-label{transition:none}.mdc-tab-indicator{display:flex;position:absolute;top:0;left:0;justify-content:center;width:100%;height:100%;pointer-events:none;z-index:1}.mdc-tab-indicator__content{transition:var(--mat-tab-animation-duration, 250ms) transform cubic-bezier(0.4, 0, 0.2, 1);transform-origin:left;opacity:0}.mdc-tab-indicator__content--underline{align-self:flex-end;box-sizing:border-box;width:100%;border-top-style:solid}.mdc-tab-indicator--active .mdc-tab-indicator__content{opacity:1}._mat-animation-noopable .mdc-tab-indicator__content,.mdc-tab-indicator--no-transition .mdc-tab-indicator__content{transition:none}.mat-mdc-tab-ripple{position:absolute;top:0;left:0;bottom:0;right:0;pointer-events:none}.mat-mdc-tab{-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none;background:none;height:var(--mdc-secondary-navigation-tab-container-height);font-family:var(--mat-tab-header-label-text-font, var(--mat-app-title-small-font));font-size:var(--mat-tab-header-label-text-size, var(--mat-app-title-small-size));letter-spacing:var(--mat-tab-header-label-text-tracking, var(--mat-app-title-small-tracking));line-height:var(--mat-tab-header-label-text-line-height, var(--mat-app-title-small-line-height));font-weight:var(--mat-tab-header-label-text-weight, var(--mat-app-title-small-weight))}.mat-mdc-tab.mdc-tab{flex-grow:0}.mat-mdc-tab .mdc-tab-indicator__content--underline{border-color:var(--mdc-tab-indicator-active-indicator-color, var(--mat-app-primary));border-top-width:var(--mdc-tab-indicator-active-indicator-height);border-radius:var(--mdc-tab-indicator-active-indicator-shape)}.mat-mdc-tab:hover .mdc-tab__text-label{color:var(--mat-tab-header-inactive-hover-label-text-color, var(--mat-app-on-surface))}.mat-mdc-tab:focus .mdc-tab__text-label{color:var(--mat-tab-header-inactive-focus-label-text-color, var(--mat-app-on-surface))}.mat-mdc-tab.mdc-tab--active .mdc-tab__text-label{color:var(--mat-tab-header-active-label-text-color, var(--mat-app-on-surface))}.mat-mdc-tab.mdc-tab--active .mdc-tab__ripple::before,.mat-mdc-tab.mdc-tab--active .mat-ripple-element{background-color:var(--mat-tab-header-active-ripple-color, var(--mat-app-on-surface))}.mat-mdc-tab.mdc-tab--active:hover .mdc-tab__text-label{color:var(--mat-tab-header-active-hover-label-text-color, var(--mat-app-on-surface))}.mat-mdc-tab.mdc-tab--active:hover .mdc-tab-indicator__content--underline{border-color:var(--mat-tab-header-active-hover-indicator-color, var(--mat-app-primary))}.mat-mdc-tab.mdc-tab--active:focus .mdc-tab__text-label{color:var(--mat-tab-header-active-focus-label-text-color, var(--mat-app-on-surface))}.mat-mdc-tab.mdc-tab--active:focus .mdc-tab-indicator__content--underline{border-color:var(--mat-tab-header-active-focus-indicator-color, var(--mat-app-primary))}.mat-mdc-tab.mat-mdc-tab-disabled{opacity:.4;pointer-events:none}.mat-mdc-tab.mat-mdc-tab-disabled .mdc-tab__content{pointer-events:none}.mat-mdc-tab.mat-mdc-tab-disabled .mdc-tab__ripple::before,.mat-mdc-tab.mat-mdc-tab-disabled .mat-ripple-element{background-color:var(--mat-tab-header-disabled-ripple-color)}.mat-mdc-tab .mdc-tab__ripple::before{content:"";display:block;position:absolute;top:0;left:0;right:0;bottom:0;opacity:0;pointer-events:none;background-color:var(--mat-tab-header-inactive-ripple-color, var(--mat-app-on-surface))}.mat-mdc-tab .mdc-tab__text-label{color:var(--mat-tab-header-inactive-label-text-color, var(--mat-app-on-surface));display:inline-flex;align-items:center}.mat-mdc-tab .mdc-tab__content{position:relative;pointer-events:auto}.mat-mdc-tab:hover .mdc-tab__ripple::before{opacity:.04}.mat-mdc-tab.cdk-program-focused .mdc-tab__ripple::before,.mat-mdc-tab.cdk-keyboard-focused .mdc-tab__ripple::before{opacity:.12}.mat-mdc-tab .mat-ripple-element{opacity:.12;background-color:var(--mat-tab-header-inactive-ripple-color, var(--mat-app-on-surface))}.mat-mdc-tab-group.mat-mdc-tab-group-stretch-tabs>.mat-mdc-tab-header .mat-mdc-tab{flex-grow:1}.mat-mdc-tab-group{display:flex;flex-direction:column;max-width:100%}.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header-pagination{background-color:var(--mat-tab-header-with-background-background-color)}.mat-mdc-tab-group.mat-tabs-with-background.mat-primary>.mat-mdc-tab-header .mat-mdc-tab .mdc-tab__text-label{color:var(--mat-tab-header-with-background-foreground-color)}.mat-mdc-tab-group.mat-tabs-with-background.mat-primary>.mat-mdc-tab-header .mdc-tab-indicator__content--underline{border-color:var(--mat-tab-header-with-background-foreground-color)}.mat-mdc-tab-group.mat-tabs-with-background:not(.mat-primary)>.mat-mdc-tab-header .mat-mdc-tab:not(.mdc-tab--active) .mdc-tab__text-label{color:var(--mat-tab-header-with-background-foreground-color)}.mat-mdc-tab-group.mat-tabs-with-background:not(.mat-primary)>.mat-mdc-tab-header .mat-mdc-tab:not(.mdc-tab--active) .mdc-tab-indicator__content--underline{border-color:var(--mat-tab-header-with-background-foreground-color)}.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header .mat-mdc-tab-header-pagination-chevron,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header .mat-mdc-focus-indicator::before,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header-pagination .mat-mdc-tab-header-pagination-chevron,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header-pagination .mat-mdc-focus-indicator::before{border-color:var(--mat-tab-header-with-background-foreground-color)}.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header .mat-ripple-element,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header .mdc-tab__ripple::before,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header-pagination .mat-ripple-element,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header-pagination .mdc-tab__ripple::before{background-color:var(--mat-tab-header-with-background-foreground-color)}.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header .mat-mdc-tab-header-pagination-chevron,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header-pagination .mat-mdc-tab-header-pagination-chevron{color:var(--mat-tab-header-with-background-foreground-color)}.mat-mdc-tab-group.mat-mdc-tab-group-inverted-header{flex-direction:column-reverse}.mat-mdc-tab-group.mat-mdc-tab-group-inverted-header .mdc-tab-indicator__content--underline{align-self:flex-start}.mat-mdc-tab-body-wrapper{position:relative;overflow:hidden;display:flex;transition:height 500ms cubic-bezier(0.35, 0, 0.25, 1)}.mat-mdc-tab-body-wrapper._mat-animation-noopable{transition:none !important;animation:none !important}'],encapsulation:2})}}return i})(),Ud=class{},wb=0,hD=(()=>{class i extends _b{get fitInkBarToContent(){return this._fitInkBarToContent.value}set fitInkBarToContent(e){this._fitInkBarToContent.next(e),this._changeDetectorRef.markForCheck()}get animationDuration(){return this._animationDuration}set animationDuration(e){let t=e+"";this._animationDuration=/^\d+$/.test(t)?e+"ms":t}get backgroundColor(){return this._backgroundColor}set backgroundColor(e){let t=this._elementRef.nativeElement.classList;t.remove("mat-tabs-with-background",`mat-background-${this.backgroundColor}`),e&&t.add("mat-tabs-with-background",`mat-background-${e}`),this._backgroundColor=e}constructor(e,t,r,o,a,s,c,l){super(e,o,a,t,r,s,c),this._fitInkBarToContent=new Vi(!1),this.stretchTabs=!0,this.disableRipple=!1,this.color="primary",this.disablePagination=l&&l.disablePagination!=null?l.disablePagination:!1,this.fitInkBarToContent=l&&l.fitInkBarToContent!=null?l.fitInkBarToContent:!1,this.stretchTabs=l&&l.stretchTabs!=null?l.stretchTabs:!0}_itemSelected(){}ngAfterContentInit(){this._inkBar=new Hs(this._items),this._items.changes.pipe(Me(null),$(this._destroyed)).subscribe(()=>{this.updateActiveLink()}),super.ngAfterContentInit()}ngAfterViewInit(){this.tabPanel,super.ngAfterViewInit()}updateActiveLink(){if(!this._items)return;let e=this._items.toArray();for(let t=0;t.mat-mdc-tab-link-container .mat-mdc-tab-links{justify-content:center}[mat-align-tabs=end]>.mat-mdc-tab-link-container .mat-mdc-tab-links{justify-content:flex-end}.cdk-drop-list .mat-mdc-tab-links,.mat-mdc-tab-links.cdk-drop-list{min-height:var(--mdc-secondary-navigation-tab-container-height)}.mat-mdc-tab-link-container{display:flex;flex-grow:1;overflow:hidden;z-index:1;border-bottom-style:solid;border-bottom-width:var(--mat-tab-header-divider-height);border-bottom-color:var(--mat-tab-header-divider-color, var(--mat-app-surface-variant))}.mat-mdc-tab-nav-bar.mat-tabs-with-background>.mat-mdc-tab-link-container,.mat-mdc-tab-nav-bar.mat-tabs-with-background>.mat-mdc-tab-header-pagination{background-color:var(--mat-tab-header-with-background-background-color)}.mat-mdc-tab-nav-bar.mat-tabs-with-background.mat-primary>.mat-mdc-tab-link-container .mat-mdc-tab-link .mdc-tab__text-label{color:var(--mat-tab-header-with-background-foreground-color)}.mat-mdc-tab-nav-bar.mat-tabs-with-background.mat-primary>.mat-mdc-tab-link-container .mdc-tab-indicator__content--underline{border-color:var(--mat-tab-header-with-background-foreground-color)}.mat-mdc-tab-nav-bar.mat-tabs-with-background:not(.mat-primary)>.mat-mdc-tab-link-container .mat-mdc-tab-link:not(.mdc-tab--active) .mdc-tab__text-label{color:var(--mat-tab-header-with-background-foreground-color)}.mat-mdc-tab-nav-bar.mat-tabs-with-background:not(.mat-primary)>.mat-mdc-tab-link-container .mat-mdc-tab-link:not(.mdc-tab--active) .mdc-tab-indicator__content--underline{border-color:var(--mat-tab-header-with-background-foreground-color)}.mat-mdc-tab-nav-bar.mat-tabs-with-background>.mat-mdc-tab-link-container .mat-mdc-tab-header-pagination-chevron,.mat-mdc-tab-nav-bar.mat-tabs-with-background>.mat-mdc-tab-link-container .mat-mdc-focus-indicator::before,.mat-mdc-tab-nav-bar.mat-tabs-with-background>.mat-mdc-tab-header-pagination .mat-mdc-tab-header-pagination-chevron,.mat-mdc-tab-nav-bar.mat-tabs-with-background>.mat-mdc-tab-header-pagination .mat-mdc-focus-indicator::before{border-color:var(--mat-tab-header-with-background-foreground-color)}.mat-mdc-tab-nav-bar.mat-tabs-with-background>.mat-mdc-tab-link-container .mat-ripple-element,.mat-mdc-tab-nav-bar.mat-tabs-with-background>.mat-mdc-tab-link-container .mdc-tab__ripple::before,.mat-mdc-tab-nav-bar.mat-tabs-with-background>.mat-mdc-tab-header-pagination .mat-ripple-element,.mat-mdc-tab-nav-bar.mat-tabs-with-background>.mat-mdc-tab-header-pagination .mdc-tab__ripple::before{background-color:var(--mat-tab-header-with-background-foreground-color)}.mat-mdc-tab-nav-bar.mat-tabs-with-background>.mat-mdc-tab-link-container .mat-mdc-tab-header-pagination-chevron,.mat-mdc-tab-nav-bar.mat-tabs-with-background>.mat-mdc-tab-header-pagination .mat-mdc-tab-header-pagination-chevron{color:var(--mat-tab-header-with-background-foreground-color)}"],encapsulation:2})}}return i})(),mD=(()=>{class i extends bb{get active(){return this._isActive}set active(e){e!==this._isActive&&(this._isActive=e,this._tabNavBar.updateActiveLink())}get rippleDisabled(){return this.disabled||this.disableRipple||this._tabNavBar.disableRipple||!!this.rippleConfig.disabled}constructor(e,t,r,o,a,s){super(),this._tabNavBar=e,this.elementRef=t,this._focusMonitor=a,this._destroyed=new R,this._isActive=!1,this.disabled=!1,this.disableRipple=!1,this.tabIndex=0,this.id=`mat-tab-link-${wb++}`,this.rippleConfig=r||{},this.tabIndex=parseInt(o)||0,s==="NoopAnimations"&&(this.rippleConfig.animation={enterDuration:0,exitDuration:0}),e._fitInkBarToContent.pipe($(this._destroyed)).subscribe(c=>{this.fitInkBarToContent=c})}focus(){this.elementRef.nativeElement.focus()}ngAfterViewInit(){this._focusMonitor.monitor(this.elementRef)}ngOnDestroy(){this._destroyed.next(),this._destroyed.complete(),super.ngOnDestroy(),this._focusMonitor.stopMonitoring(this.elementRef)}_handleFocus(){this._tabNavBar.focusIndex=this._tabNavBar._items.toArray().indexOf(this)}_handleKeydown(e){(e.keyCode===32||e.keyCode===13)&&(this.disabled?e.preventDefault():this._tabNavBar.tabPanel&&(e.keyCode===32&&e.preventDefault(),this.elementRef.nativeElement.click()))}_getAriaControls(){return this._tabNavBar.tabPanel?this._tabNavBar.tabPanel?.id:this.elementRef.nativeElement.getAttribute("aria-controls")}_getAriaSelected(){return this._tabNavBar.tabPanel?this.active?"true":"false":this.elementRef.nativeElement.getAttribute("aria-selected")}_getAriaCurrent(){return this.active&&!this._tabNavBar.tabPanel?"page":null}_getRole(){return this._tabNavBar.tabPanel?"tab":this.elementRef.nativeElement.getAttribute("role")}_getTabIndex(){return this._tabNavBar.tabPanel?this._isActive&&!this.disabled?0:-1:this.disabled?-1:this.tabIndex}static{this.\u0275fac=function(t){return new(t||i)(u(hD),u(E),u(Ln,8),It("tabindex"),u(ot),u(we,8))}}static{this.\u0275cmp=H({type:i,selectors:[["","mat-tab-link",""],["","matTabLink",""]],hostAttrs:[1,"mdc-tab","mat-mdc-tab-link","mat-mdc-focus-indicator"],hostVars:11,hostBindings:function(t,r){t&1&&ee("focus",function(){return r._handleFocus()})("keydown",function(a){return r._handleKeydown(a)}),t&2&&(W("aria-controls",r._getAriaControls())("aria-current",r._getAriaCurrent())("aria-disabled",r.disabled)("aria-selected",r._getAriaSelected())("id",r.id)("tabIndex",r._getTabIndex())("role",r._getRole()),P("mat-mdc-tab-disabled",r.disabled)("mdc-tab--active",r.active))},inputs:{active:[2,"active","active",O],disabled:[2,"disabled","disabled",O],disableRipple:[2,"disableRipple","disableRipple",O],tabIndex:[2,"tabIndex","tabIndex",e=>e==null?0:$e(e)],id:"id"},exportAs:["matTabLink"],standalone:!0,features:[ae,ne,Q],attrs:Jk,ngContentSelectors:zr,decls:5,vars:2,consts:[[1,"mdc-tab__ripple"],["mat-ripple","",1,"mat-mdc-tab-ripple",3,"matRippleTrigger","matRippleDisabled"],[1,"mdc-tab__content"],[1,"mdc-tab__text-label"]],template:function(t,r){t&1&&(se(),ie(0,"span",0)(1,"div",1),w(2,"span",2)(3,"span",3),A(4),I()()),t&2&&(V(),ue("matRippleTrigger",r.elementRef.nativeElement)("matRippleDisabled",r.rippleDisabled))},dependencies:[ti],styles:['.mat-mdc-tab-link{-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none;background:none;height:var(--mdc-secondary-navigation-tab-container-height);font-family:var(--mat-tab-header-label-text-font, var(--mat-app-title-small-font));font-size:var(--mat-tab-header-label-text-size, var(--mat-app-title-small-size));letter-spacing:var(--mat-tab-header-label-text-tracking, var(--mat-app-title-small-tracking));line-height:var(--mat-tab-header-label-text-line-height, var(--mat-app-title-small-line-height));font-weight:var(--mat-tab-header-label-text-weight, var(--mat-app-title-small-weight))}.mat-mdc-tab-link.mdc-tab{flex-grow:0}.mat-mdc-tab-link .mdc-tab-indicator__content--underline{border-color:var(--mdc-tab-indicator-active-indicator-color, var(--mat-app-primary));border-top-width:var(--mdc-tab-indicator-active-indicator-height);border-radius:var(--mdc-tab-indicator-active-indicator-shape)}.mat-mdc-tab-link:hover .mdc-tab__text-label{color:var(--mat-tab-header-inactive-hover-label-text-color, var(--mat-app-on-surface))}.mat-mdc-tab-link:focus .mdc-tab__text-label{color:var(--mat-tab-header-inactive-focus-label-text-color, var(--mat-app-on-surface))}.mat-mdc-tab-link.mdc-tab--active .mdc-tab__text-label{color:var(--mat-tab-header-active-label-text-color, var(--mat-app-on-surface))}.mat-mdc-tab-link.mdc-tab--active .mdc-tab__ripple::before,.mat-mdc-tab-link.mdc-tab--active .mat-ripple-element{background-color:var(--mat-tab-header-active-ripple-color, var(--mat-app-on-surface))}.mat-mdc-tab-link.mdc-tab--active:hover .mdc-tab__text-label{color:var(--mat-tab-header-active-hover-label-text-color, var(--mat-app-on-surface))}.mat-mdc-tab-link.mdc-tab--active:hover .mdc-tab-indicator__content--underline{border-color:var(--mat-tab-header-active-hover-indicator-color, var(--mat-app-primary))}.mat-mdc-tab-link.mdc-tab--active:focus .mdc-tab__text-label{color:var(--mat-tab-header-active-focus-label-text-color, var(--mat-app-on-surface))}.mat-mdc-tab-link.mdc-tab--active:focus .mdc-tab-indicator__content--underline{border-color:var(--mat-tab-header-active-focus-indicator-color, var(--mat-app-primary))}.mat-mdc-tab-link.mat-mdc-tab-disabled{opacity:.4;pointer-events:none}.mat-mdc-tab-link.mat-mdc-tab-disabled .mdc-tab__content{pointer-events:none}.mat-mdc-tab-link.mat-mdc-tab-disabled .mdc-tab__ripple::before,.mat-mdc-tab-link.mat-mdc-tab-disabled .mat-ripple-element{background-color:var(--mat-tab-header-disabled-ripple-color)}.mat-mdc-tab-link .mdc-tab__ripple::before{content:"";display:block;position:absolute;top:0;left:0;right:0;bottom:0;opacity:0;pointer-events:none;background-color:var(--mat-tab-header-inactive-ripple-color, var(--mat-app-on-surface))}.mat-mdc-tab-link .mdc-tab__text-label{color:var(--mat-tab-header-inactive-label-text-color, var(--mat-app-on-surface));display:inline-flex;align-items:center}.mat-mdc-tab-link .mdc-tab__content{position:relative;pointer-events:auto}.mat-mdc-tab-link:hover .mdc-tab__ripple::before{opacity:.04}.mat-mdc-tab-link.cdk-program-focused .mdc-tab__ripple::before,.mat-mdc-tab-link.cdk-keyboard-focused .mdc-tab__ripple::before{opacity:.12}.mat-mdc-tab-link .mat-ripple-element{opacity:.12;background-color:var(--mat-tab-header-inactive-ripple-color, var(--mat-app-on-surface))}.mat-mdc-tab-header.mat-mdc-tab-nav-bar-stretch-tabs .mat-mdc-tab-link{flex-grow:1}.mat-mdc-tab-link::before{margin:5px}@media(max-width: 599px){.mat-mdc-tab-link{min-width:72px}}'],encapsulation:2,changeDetection:0})}}return i})(),$H=(()=>{class i{constructor(){this.id=`mat-tab-nav-panel-${wb++}`}static{this.\u0275fac=function(t){return new(t||i)}}static{this.\u0275cmp=H({type:i,selectors:[["mat-tab-nav-panel"]],hostAttrs:["role","tabpanel",1,"mat-mdc-tab-nav-panel"],hostVars:2,hostBindings:function(t,r){t&2&&W("aria-labelledby",r._activeTabId)("id",r.id)},inputs:{id:"id"},exportAs:["matTabNavPanel"],standalone:!0,features:[Q],ngContentSelectors:zr,decls:1,vars:0,template:function(t,r){t&1&&(se(),A(0))},encapsulation:2,changeDetection:0})}}return i})(),Cb=(()=>{class i{static{this.\u0275fac=function(t){return new(t||i)}}static{this.\u0275mod=j({type:i})}static{this.\u0275inj=L({imports:[K,K]})}}return i})();var qd=class{constructor(n,e){this._document=e;let t=this._textarea=this._document.createElement("textarea"),r=t.style;r.position="fixed",r.top=r.opacity="0",r.left="-999em",t.setAttribute("aria-hidden","true"),t.value=n,t.readOnly=!0,(this._document.fullscreenElement||this._document.body).appendChild(t)}copy(){let n=this._textarea,e=!1;try{if(n){let t=this._document.activeElement;n.select(),n.setSelectionRange(0,n.value.length),e=this._document.execCommand("copy"),t&&t.focus()}}catch{}return e}destroy(){let n=this._textarea;n&&(n.remove(),this._textarea=void 0)}},pD=(()=>{class i{constructor(e){this._document=e}copy(e){let t=this.beginCopy(e),r=t.copy();return t.destroy(),r}beginCopy(e){return new qd(e,this._document)}static{this.\u0275fac=function(t){return new(t||i)(x(oe))}}static{this.\u0275prov=Z({token:i,factory:i.\u0275fac,providedIn:"root"})}}return i})(),fD=new C("CDK_COPY_TO_CLIPBOARD_CONFIG"),oQ=(()=>{class i{constructor(e,t,r){this._clipboard=e,this._ngZone=t,this.text="",this.attempts=1,this.copied=new z,this._pending=new Set,r&&r.attempts!=null&&(this.attempts=r.attempts)}copy(e=this.attempts){if(e>1){let t=e,r=this._clipboard.beginCopy(this.text);this._pending.add(r);let o=()=>{let a=r.copy();!a&&--t&&!this._destroyed?this._currentTimeout=this._ngZone.runOutsideAngular(()=>setTimeout(o,1)):(this._currentTimeout=null,this._pending.delete(r),r.destroy(),this.copied.emit(a))};o()}else this.copied.emit(this._clipboard.copy(this.text))}ngOnDestroy(){this._currentTimeout&&clearTimeout(this._currentTimeout),this._pending.forEach(e=>e.destroy()),this._pending.clear(),this._destroyed=!0}static{this.\u0275fac=function(t){return new(t||i)(u(pD),u(B),u(fD,8))}}static{this.\u0275dir=D({type:i,selectors:[["","cdkCopyToClipboard",""]],hostBindings:function(t,r){t&1&&ee("click",function(){return r.copy()})},inputs:{text:[0,"cdkCopyToClipboard","text"],attempts:[0,"cdkCopyToClipboardAttempts","attempts"]},outputs:{copied:"cdkCopyToClipboardCopied"},standalone:!0})}}return i})(),kb=(()=>{class i{static{this.\u0275fac=function(t){return new(t||i)}}static{this.\u0275mod=j({type:i})}static{this.\u0275inj=L({})}}return i})();var gD=["panel"],bD=["*"];function vD(i,n){if(i&1){let e=Ge();w(0,"div",1,0),ee("@panelAnimation.done",function(r){ce(e);let o=fe();return le(o._animationDone.next(r))}),A(2),I()}if(i&2){let e=n.id,t=fe();qe(t._classList),P("mat-mdc-autocomplete-visible",t.showPanel)("mat-mdc-autocomplete-hidden",!t.showPanel)("mat-primary",t._color==="primary")("mat-accent",t._color==="accent")("mat-warn",t._color==="warn"),ue("id",t.id)("@panelAnimation",t.isOpen?"visible":"hidden"),W("aria-label",t.ariaLabel||null)("aria-labelledby",t._getPanelAriaLabelledby(e))}}var _D=gt("panelAnimation",[nt("void, hidden",Oe({opacity:0,transform:"scaleY(0.8)"})),Ze(":enter, hidden => visible",[$u([Xe("0.03s linear",Oe({opacity:1})),Xe("0.12s cubic-bezier(0, 0, 0.2, 1)",Oe({transform:"scaleY(1)"}))])]),Ze(":leave, visible => hidden",[Xe("0.075s linear",Oe({opacity:0}))])]),yD=0,Wd=class{constructor(n,e){this.source=n,this.option=e}},Db=new C("mat-autocomplete-default-options",{providedIn:"root",factory:xD});function xD(){return{autoActiveFirstOption:!1,autoSelectActiveOption:!1,hideSingleSelectionIndicator:!1,requireSelection:!1}}var FQ=(()=>{class i{get isOpen(){return this._isOpen&&this.showPanel}_setColor(e){this._color=e,this._changeDetectorRef.markForCheck()}set classList(e){this._classList=e,this._elementRef.nativeElement.className=""}get hideSingleSelectionIndicator(){return this._hideSingleSelectionIndicator}set hideSingleSelectionIndicator(e){this._hideSingleSelectionIndicator=e,this._syncParentProperties()}_syncParentProperties(){if(this.options)for(let e of this.options)e._changeDetectorRef.markForCheck()}constructor(e,t,r,o){this._changeDetectorRef=e,this._elementRef=t,this._defaults=r,this._activeOptionChanges=Te.EMPTY,this._animationDone=new z,this.showPanel=!1,this._isOpen=!1,this.displayWith=null,this.optionSelected=new z,this.opened=new z,this.closed=new z,this.optionActivated=new z,this.id=`mat-autocomplete-${yD++}`,this.inertGroups=o?.SAFARI||!1,this.autoActiveFirstOption=!!r.autoActiveFirstOption,this.autoSelectActiveOption=!!r.autoSelectActiveOption,this.requireSelection=!!r.requireSelection,this._hideSingleSelectionIndicator=this._defaults.hideSingleSelectionIndicator??!1}ngAfterContentInit(){this._keyManager=new Or(this.options).withWrap().skipPredicate(this._skipPredicate),this._activeOptionChanges=this._keyManager.change.subscribe(e=>{this.isOpen&&this.optionActivated.emit({source:this,option:this.options.toArray()[e]||null})}),this._setVisibility()}ngOnDestroy(){this._keyManager?.destroy(),this._activeOptionChanges.unsubscribe(),this._animationDone.complete()}_setScrollTop(e){this.panel&&(this.panel.nativeElement.scrollTop=e)}_getScrollTop(){return this.panel?this.panel.nativeElement.scrollTop:0}_setVisibility(){this.showPanel=!!this.options.length,this._changeDetectorRef.markForCheck()}_emitSelectEvent(e){let t=new Wd(this,e);this.optionSelected.emit(t)}_getPanelAriaLabelledby(e){if(this.ariaLabel)return null;let t=e?e+" ":"";return this.ariaLabelledby?t+this.ariaLabelledby:e}_skipPredicate(){return!1}static{this.\u0275fac=function(t){return new(t||i)(u(pe),u(E),u(Db),u(me))}}static{this.\u0275cmp=H({type:i,selectors:[["mat-autocomplete"]],contentQueries:function(t,r,o){if(t&1&&(he(o,As,5),he(o,jo,5)),t&2){let a;S(a=T())&&(r.options=a),S(a=T())&&(r.optionGroups=a)}},viewQuery:function(t,r){if(t&1&&(re(Ae,7),re(gD,5)),t&2){let o;S(o=T())&&(r.template=o.first),S(o=T())&&(r.panel=o.first)}},hostAttrs:[1,"mat-mdc-autocomplete"],inputs:{ariaLabel:[0,"aria-label","ariaLabel"],ariaLabelledby:[0,"aria-labelledby","ariaLabelledby"],displayWith:"displayWith",autoActiveFirstOption:[2,"autoActiveFirstOption","autoActiveFirstOption",O],autoSelectActiveOption:[2,"autoSelectActiveOption","autoSelectActiveOption",O],requireSelection:[2,"requireSelection","requireSelection",O],panelWidth:"panelWidth",disableRipple:[2,"disableRipple","disableRipple",O],classList:[0,"class","classList"],hideSingleSelectionIndicator:[2,"hideSingleSelectionIndicator","hideSingleSelectionIndicator",O]},outputs:{optionSelected:"optionSelected",opened:"opened",closed:"closed",optionActivated:"optionActivated"},exportAs:["matAutocomplete"],standalone:!0,features:[de([{provide:Lo,useExisting:i}]),ae,Q],ngContentSelectors:bD,decls:1,vars:0,consts:[["panel",""],["role","listbox",1,"mat-mdc-autocomplete-panel","mdc-menu-surface","mdc-menu-surface--open",3,"id"]],template:function(t,r){t&1&&(se(),te(0,vD,3,16,"ng-template"))},styles:["div.mat-mdc-autocomplete-panel{width:100%;max-height:256px;visibility:hidden;transform-origin:center top;overflow:auto;padding:8px 0;box-sizing:border-box;position:static;border-radius:var(--mat-autocomplete-container-shape, var(--mat-app-corner-extra-small));box-shadow:var(--mat-autocomplete-container-elevation-shadow);background-color:var(--mat-autocomplete-background-color, var(--mat-app-surface-container))}.cdk-high-contrast-active div.mat-mdc-autocomplete-panel{outline:solid 1px}.cdk-overlay-pane:not(.mat-mdc-autocomplete-panel-above) div.mat-mdc-autocomplete-panel{border-top-left-radius:0;border-top-right-radius:0}.mat-mdc-autocomplete-panel-above div.mat-mdc-autocomplete-panel{border-bottom-left-radius:0;border-bottom-right-radius:0;transform-origin:center bottom}div.mat-mdc-autocomplete-panel.mat-mdc-autocomplete-visible{visibility:visible}div.mat-mdc-autocomplete-panel.mat-mdc-autocomplete-hidden{visibility:hidden;pointer-events:none}mat-autocomplete{display:none}"],encapsulation:2,data:{animation:[_D]},changeDetection:0})}}return i})();var wD={provide:vn,useExisting:Lt(()=>DD),multi:!0};var Eb=new C("mat-autocomplete-scroll-strategy",{providedIn:"root",factory:()=>{let i=F(je);return()=>i.scrollStrategies.reposition()}});function CD(i){return()=>i.scrollStrategies.reposition()}var kD={provide:Eb,deps:[je],useFactory:CD},DD=(()=>{class i{constructor(e,t,r,o,a,s,c,l,d,h,m){this._element=e,this._overlay=t,this._viewContainerRef=r,this._zone=o,this._changeDetectorRef=a,this._dir=c,this._formField=l,this._document=d,this._viewportRuler=h,this._defaults=m,this._componentDestroyed=!1,this._manuallyFloatingLabel=!1,this._viewportSubscription=Te.EMPTY,this._breakpointObserver=F(Cs),this._handsetLandscapeSubscription=Te.EMPTY,this._canOpenOnNextFocus=!0,this._closeKeyEventStream=new R,this._windowBlurHandler=()=>{this._canOpenOnNextFocus=this._document.activeElement!==this._element.nativeElement||this.panelOpen},this._onChange=()=>{},this._onTouched=()=>{},this.position="auto",this.autocompleteAttribute="off",this._initialized=new R,this._injector=F(Ee),this._aboveClass="mat-mdc-autocomplete-panel-above",this._overlayAttached=!1,this.optionSelections=zi(()=>{let p=this.autocomplete?this.autocomplete.options:null;return p?p.changes.pipe(Me(p),st(()=>Fe(...p.map(f=>f.onSelectionChange)))):this._initialized.pipe(st(()=>this.optionSelections))}),this._handlePanelKeydown=p=>{(p.keyCode===27&&!Le(p)||p.keyCode===38&&Le(p,"altKey"))&&(this._pendingAutoselectedOption&&(this._updateNativeInputValue(this._valueBeforeAutoSelection??""),this._pendingAutoselectedOption=null),this._closeKeyEventStream.next(),this._resetActiveItem(),p.stopPropagation(),p.preventDefault())},this._trackedModal=null,this._scrollStrategy=s}ngAfterViewInit(){this._initialized.next(),this._initialized.complete();let e=this._getWindow();typeof e<"u"&&this._zone.runOutsideAngular(()=>e.addEventListener("blur",this._windowBlurHandler))}ngOnChanges(e){e.position&&this._positionStrategy&&(this._setStrategyPositions(this._positionStrategy),this.panelOpen&&this._overlayRef.updatePosition())}ngOnDestroy(){let e=this._getWindow();typeof e<"u"&&e.removeEventListener("blur",this._windowBlurHandler),this._handsetLandscapeSubscription.unsubscribe(),this._viewportSubscription.unsubscribe(),this._componentDestroyed=!0,this._destroyPanel(),this._closeKeyEventStream.complete(),this._clearFromModal()}get panelOpen(){return this._overlayAttached&&this.autocomplete.showPanel}openPanel(){this._openPanelInternal()}closePanel(){this._resetLabel(),this._overlayAttached&&(this.panelOpen&&this._zone.run(()=>{this.autocomplete.closed.emit()}),this.autocomplete._latestOpeningTrigger===this&&(this.autocomplete._isOpen=!1,this.autocomplete._latestOpeningTrigger=null),this._overlayAttached=!1,this._pendingAutoselectedOption=null,this._overlayRef&&this._overlayRef.hasAttached()&&(this._overlayRef.detach(),this._closingActionsSubscription.unsubscribe()),this._updatePanelState(),this._componentDestroyed||this._changeDetectorRef.detectChanges(),this._trackedModal&&sn(this._trackedModal,"aria-owns",this.autocomplete.id))}updatePosition(){this._overlayAttached&&this._overlayRef.updatePosition()}get panelClosingActions(){return Fe(this.optionSelections,this.autocomplete._keyManager.tabOut.pipe(ye(()=>this._overlayAttached)),this._closeKeyEventStream,this._getOutsideClickStream(),this._overlayRef?this._overlayRef.detachments().pipe(ye(()=>this._overlayAttached)):He()).pipe(ke(e=>e instanceof No?e:null))}get activeOption(){return this.autocomplete&&this.autocomplete._keyManager?this.autocomplete._keyManager.activeItem:null}_getOutsideClickStream(){return Fe(Nt(this._document,"click"),Nt(this._document,"auxclick"),Nt(this._document,"touchend")).pipe(ye(e=>{let t=Ot(e),r=this._formField?this._formField.getConnectedOverlayOrigin().nativeElement:null,o=this.connectedTo?this.connectedTo.elementRef.nativeElement:null;return this._overlayAttached&&t!==this._element.nativeElement&&this._document.activeElement!==this._element.nativeElement&&(!r||!r.contains(t))&&(!o||!o.contains(t))&&!!this._overlayRef&&!this._overlayRef.overlayElement.contains(t)}))}writeValue(e){Promise.resolve(null).then(()=>this._assignOptionValue(e))}registerOnChange(e){this._onChange=e}registerOnTouched(e){this._onTouched=e}setDisabledState(e){this._element.nativeElement.disabled=e}_handleKeydown(e){let t=e.keyCode,r=Le(e);if(t===27&&!r&&e.preventDefault(),this._valueOnLastKeydown=this._element.nativeElement.value,this.activeOption&&t===13&&this.panelOpen&&!r)this.activeOption._selectViaInteraction(),this._resetActiveItem(),e.preventDefault();else if(this.autocomplete){let o=this.autocomplete._keyManager.activeItem,a=t===38||t===40;t===9||a&&!r&&this.panelOpen?this.autocomplete._keyManager.onKeydown(e):a&&this._canOpen()&&this._openPanelInternal(this._valueOnLastKeydown),(a||this.autocomplete._keyManager.activeItem!==o)&&(this._scrollToOption(this.autocomplete._keyManager.activeItemIndex||0),this.autocomplete.autoSelectActiveOption&&this.activeOption&&(this._pendingAutoselectedOption||(this._valueBeforeAutoSelection=this._valueOnLastKeydown),this._pendingAutoselectedOption=this.activeOption,this._assignOptionValue(this.activeOption.value)))}}_handleInput(e){let t=e.target,r=t.value;if(t.type==="number"&&(r=r==""?null:parseFloat(r)),this._previousValue!==r){if(this._previousValue=r,this._pendingAutoselectedOption=null,(!this.autocomplete||!this.autocomplete.requireSelection)&&this._onChange(r),!r)this._clearPreviousSelectedOption(null,!1);else if(this.panelOpen&&!this.autocomplete.requireSelection){let o=this.autocomplete.options?.find(a=>a.selected);if(o){let a=this._getDisplayValue(o.value);r!==a&&o.deselect(!1)}}if(this._canOpen()&&this._document.activeElement===e.target){let o=this._valueOnLastKeydown??this._element.nativeElement.value;this._valueOnLastKeydown=null,this._openPanelInternal(o)}}}_handleFocus(){this._canOpenOnNextFocus?this._canOpen()&&(this._previousValue=this._element.nativeElement.value,this._attachOverlay(this._previousValue),this._floatLabel(!0)):this._canOpenOnNextFocus=!0}_handleClick(){this._canOpen()&&!this.panelOpen&&this._openPanelInternal()}_floatLabel(e=!1){this._formField&&this._formField.floatLabel==="auto"&&(e?this._formField._animateAndLockLabel():this._formField.floatLabel="always",this._manuallyFloatingLabel=!0)}_resetLabel(){this._manuallyFloatingLabel&&(this._formField&&(this._formField.floatLabel="auto"),this._manuallyFloatingLabel=!1)}_subscribeToClosingActions(){let e=new We(r=>{tt(()=>{r.next()},{injector:this._injector})}),t=this.autocomplete.options.changes.pipe(gi(()=>this._positionStrategy.reapplyLastPosition()),Ur(0));return Fe(e,t).pipe(st(()=>this._zone.run(()=>{let r=this.panelOpen;return this._resetActiveItem(),this._updatePanelState(),this._changeDetectorRef.detectChanges(),this.panelOpen&&this._overlayRef.updatePosition(),r!==this.panelOpen&&(this.panelOpen?this._emitOpened():this.autocomplete.closed.emit()),this.panelClosingActions})),Ye(1)).subscribe(r=>this._setValueAndClose(r))}_emitOpened(){this.autocomplete.opened.emit()}_destroyPanel(){this._overlayRef&&(this.closePanel(),this._overlayRef.dispose(),this._overlayRef=null)}_getDisplayValue(e){let t=this.autocomplete;return t&&t.displayWith?t.displayWith(e):e}_assignOptionValue(e){let t=this._getDisplayValue(e);e==null&&this._clearPreviousSelectedOption(null,!1),this._updateNativeInputValue(t??"")}_updateNativeInputValue(e){this._formField?this._formField._control.value=e:this._element.nativeElement.value=e,this._previousValue=e}_setValueAndClose(e){let t=this.autocomplete,r=e?e.source:this._pendingAutoselectedOption;r?(this._clearPreviousSelectedOption(r),this._assignOptionValue(r.value),this._onChange(r.value),t._emitSelectEvent(r),this._element.nativeElement.focus()):t.requireSelection&&this._element.nativeElement.value!==this._valueOnAttach&&(this._clearPreviousSelectedOption(null),this._assignOptionValue(null),t._animationDone?t._animationDone.pipe(Ye(1)).subscribe(()=>this._onChange(null)):this._onChange(null)),this.closePanel()}_clearPreviousSelectedOption(e,t){this.autocomplete?.options?.forEach(r=>{r!==e&&r.selected&&r.deselect(t)})}_openPanelInternal(e=this._element.nativeElement.value){if(this._attachOverlay(e),this._floatLabel(),this._trackedModal){let t=this.autocomplete.id;Pr(this._trackedModal,"aria-owns",t)}}_attachOverlay(e){this.autocomplete;let t=this._overlayRef;t?(this._positionStrategy.setOrigin(this._getConnectedElement()),t.updateSize({width:this._getPanelWidth()})):(this._portal=new Et(this.autocomplete.template,this._viewContainerRef,{id:this._formField?.getLabelId()}),t=this._overlay.create(this._getOverlayConfig()),this._overlayRef=t,this._viewportSubscription=this._viewportRuler.change().subscribe(()=>{this.panelOpen&&t&&t.updateSize({width:this._getPanelWidth()})}),this._handsetLandscapeSubscription=this._breakpointObserver.observe(af.HandsetLandscape).subscribe(o=>{o.matches?this._positionStrategy.withFlexibleDimensions(!0).withGrowAfterOpen(!0).withViewportMargin(8):this._positionStrategy.withFlexibleDimensions(!1).withGrowAfterOpen(!1).withViewportMargin(0)})),t&&!t.hasAttached()&&(t.attach(this._portal),this._valueOnAttach=e,this._valueOnLastKeydown=null,this._closingActionsSubscription=this._subscribeToClosingActions());let r=this.panelOpen;this.autocomplete._isOpen=this._overlayAttached=!0,this.autocomplete._latestOpeningTrigger=this,this.autocomplete._setColor(this._formField?.color),this._updatePanelState(),this._applyModalPanelOwnership(),this.panelOpen&&r!==this.panelOpen&&this._emitOpened()}_updatePanelState(){if(this.autocomplete._setVisibility(),this.panelOpen){let e=this._overlayRef;this._keydownSubscription||(this._keydownSubscription=e.keydownEvents().subscribe(this._handlePanelKeydown)),this._outsideClickSubscription||(this._outsideClickSubscription=e.outsidePointerEvents().subscribe())}else this._keydownSubscription?.unsubscribe(),this._outsideClickSubscription?.unsubscribe(),this._keydownSubscription=this._outsideClickSubscription=null}_getOverlayConfig(){return new Ci({positionStrategy:this._getOverlayPosition(),scrollStrategy:this._scrollStrategy(),width:this._getPanelWidth(),direction:this._dir??void 0,panelClass:this._defaults?.overlayPanelClass})}_getOverlayPosition(){let e=this._overlay.position().flexibleConnectedTo(this._getConnectedElement()).withFlexibleDimensions(!1).withPush(!1);return this._setStrategyPositions(e),this._positionStrategy=e,e}_setStrategyPositions(e){let t=[{originX:"start",originY:"bottom",overlayX:"start",overlayY:"top"},{originX:"end",originY:"bottom",overlayX:"end",overlayY:"top"}],r=this._aboveClass,o=[{originX:"start",originY:"top",overlayX:"start",overlayY:"bottom",panelClass:r},{originX:"end",originY:"top",overlayX:"end",overlayY:"bottom",panelClass:r}],a;this.position==="above"?a=o:this.position==="below"?a=t:a=[...t,...o],e.withPositions(a)}_getConnectedElement(){return this.connectedTo?this.connectedTo.elementRef:this._formField?this._formField.getConnectedOverlayOrigin():this._element}_getPanelWidth(){return this.autocomplete.panelWidth||this._getHostWidth()}_getHostWidth(){return this._getConnectedElement().nativeElement.getBoundingClientRect().width}_resetActiveItem(){let e=this.autocomplete;if(e.autoActiveFirstOption){let t=-1;for(let r=0;r .cdk-overlay-container [aria-modal="true"]');if(!e)return;let t=this.autocomplete.id;this._trackedModal&&sn(this._trackedModal,"aria-owns",t),Pr(e,"aria-owns",t),this._trackedModal=e}_clearFromModal(){if(this._trackedModal){let e=this.autocomplete.id;sn(this._trackedModal,"aria-owns",e),this._trackedModal=null}}static{this.\u0275fac=function(t){return new(t||i)(u(E),u(je),u(Ue),u(B),u(pe),u(Eb),u(Re,8),u(Ri,9),u(oe,8),u(Dt),u(Db,8))}}static{this.\u0275dir=D({type:i,selectors:[["input","matAutocomplete",""],["textarea","matAutocomplete",""]],hostAttrs:[1,"mat-mdc-autocomplete-trigger"],hostVars:7,hostBindings:function(t,r){t&1&&ee("focusin",function(){return r._handleFocus()})("blur",function(){return r._onTouched()})("input",function(a){return r._handleInput(a)})("keydown",function(a){return r._handleKeydown(a)})("click",function(){return r._handleClick()}),t&2&&W("autocomplete",r.autocompleteAttribute)("role",r.autocompleteDisabled?null:"combobox")("aria-autocomplete",r.autocompleteDisabled?null:"list")("aria-activedescendant",r.panelOpen&&r.activeOption?r.activeOption.id:null)("aria-expanded",r.autocompleteDisabled?null:r.panelOpen.toString())("aria-controls",r.autocompleteDisabled||!r.panelOpen||r.autocomplete==null?null:r.autocomplete.id)("aria-haspopup",r.autocompleteDisabled?null:"listbox")},inputs:{autocomplete:[0,"matAutocomplete","autocomplete"],position:[0,"matAutocompletePosition","position"],connectedTo:[0,"matAutocompleteConnectedTo","connectedTo"],autocompleteAttribute:[0,"autocomplete","autocompleteAttribute"],autocompleteDisabled:[2,"matAutocompleteDisabled","autocompleteDisabled",O]},exportAs:["matAutocompleteTrigger"],standalone:!0,features:[de([wD]),ae,Pe]})}}return i})(),Ib=(()=>{class i{static{this.\u0275fac=function(t){return new(t||i)}}static{this.\u0275mod=j({type:i})}static{this.\u0275inj=L({providers:[kD],imports:[ii,Lr,K,yt,Ut,Lr,K]})}}return i})();var ID=["*",[["mat-chip-avatar"],["","matChipAvatar",""]],[["mat-chip-trailing-icon"],["","matChipRemove",""],["","matChipTrailingIcon",""]]],SD=["*","mat-chip-avatar, [matChipAvatar]","mat-chip-trailing-icon,[matChipRemove],[matChipTrailingIcon]"];function TD(i,n){i&1&&(w(0,"span",3),A(1,1),I())}function MD(i,n){i&1&&(w(0,"span",6),A(1,2),I())}var AD='.mdc-evolution-chip,.mdc-evolution-chip__cell,.mdc-evolution-chip__action{display:inline-flex;align-items:center}.mdc-evolution-chip{position:relative;max-width:100%}.mdc-evolution-chip__cell,.mdc-evolution-chip__action{height:100%}.mdc-evolution-chip__cell--primary{flex-basis:100%;overflow-x:hidden}.mdc-evolution-chip__cell--trailing{flex:1 0 auto}.mdc-evolution-chip__action{align-items:center;background:none;border:none;box-sizing:content-box;cursor:pointer;display:inline-flex;justify-content:center;outline:none;padding:0;text-decoration:none;color:inherit}.mdc-evolution-chip__action--presentational{cursor:auto}.mdc-evolution-chip--disabled,.mdc-evolution-chip__action:disabled{pointer-events:none}.mdc-evolution-chip__action--primary{font:inherit;letter-spacing:inherit;white-space:inherit;overflow-x:hidden}.mat-mdc-standard-chip .mdc-evolution-chip__action--primary::before{border-width:var(--mdc-chip-outline-width);border-radius:var(--mdc-chip-container-shape-radius);box-sizing:border-box;content:"";height:100%;left:0;position:absolute;pointer-events:none;top:0;width:100%;z-index:1;border-style:solid}.mat-mdc-standard-chip .mdc-evolution-chip__action--primary{padding-left:12px;padding-right:12px}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__action--primary{padding-left:0;padding-right:12px}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__action--primary{padding-left:12px;padding-right:0}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__action--primary::before{border-color:var(--mdc-chip-outline-color, var(--mat-app-outline))}.mdc-evolution-chip__action--primary:not(.mdc-evolution-chip__action--presentational):not(.mdc-ripple-upgraded):focus::before{border-color:var(--mdc-chip-focus-outline-color, var(--mat-app-on-surface-variant))}.mat-mdc-standard-chip.mdc-evolution-chip--disabled .mdc-evolution-chip__action--primary::before{border-color:var(--mdc-chip-disabled-outline-color)}.mat-mdc-standard-chip.mdc-evolution-chip--selected .mdc-evolution-chip__action--primary::before{border-width:var(--mdc-chip-flat-selected-outline-width)}.mat-mdc-basic-chip .mdc-evolution-chip__action--primary{font:inherit}.mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:12px;padding-right:0}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:0;padding-right:12px}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:0;padding-right:0}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:0;padding-right:0}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__action--primary{padding-left:0;padding-right:12px}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__action--primary{padding-left:12px;padding-right:0}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:0;padding-right:0}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:0;padding-right:0}.mdc-evolution-chip__action--trailing{position:relative;overflow:visible}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__action--trailing{color:var(--mdc-chip-with-trailing-icon-trailing-icon-color, var(--mat-app-on-surface-variant))}.mat-mdc-standard-chip.mdc-evolution-chip--disabled .mdc-evolution-chip__action--trailing{color:var(--mdc-chip-with-trailing-icon-disabled-trailing-icon-color, var(--mat-app-on-surface))}.mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--trailing{padding-left:8px;padding-right:8px}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--trailing{padding-left:8px;padding-right:8px}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--trailing{padding-left:8px;padding-right:8px}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--trailing{padding-left:8px;padding-right:8px}.mdc-evolution-chip__text-label{-webkit-user-select:none;user-select:none;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.mat-mdc-standard-chip .mdc-evolution-chip__text-label{font-family:var(--mdc-chip-label-text-font, var(--mat-app-label-large-font));line-height:var(--mdc-chip-label-text-line-height, var(--mat-app-label-large-line-height));font-size:var(--mdc-chip-label-text-size, var(--mat-app-label-large-size));font-weight:var(--mdc-chip-label-text-weight, var(--mat-app-label-large-weight));letter-spacing:var(--mdc-chip-label-text-tracking, var(--mat-app-label-large-tracking))}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__text-label{color:var(--mdc-chip-label-text-color, var(--mat-app-on-surface-variant))}.mat-mdc-standard-chip.mdc-evolution-chip--selected:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__text-label{color:var(--mdc-chip-selected-label-text-color, var(--mat-app-on-secondary-container))}.mat-mdc-standard-chip.mdc-evolution-chip--disabled .mdc-evolution-chip__text-label,.mat-mdc-standard-chip.mdc-evolution-chip--selected.mdc-evolution-chip--disabled .mdc-evolution-chip__text-label{color:var(--mdc-chip-disabled-label-text-color)}.mdc-evolution-chip__graphic{align-items:center;display:inline-flex;justify-content:center;overflow:hidden;pointer-events:none;position:relative;flex:1 0 auto}.mat-mdc-standard-chip .mdc-evolution-chip__graphic{width:var(--mdc-chip-with-avatar-avatar-size);height:var(--mdc-chip-with-avatar-avatar-size);font-size:var(--mdc-chip-with-avatar-avatar-size)}.mdc-evolution-chip--selecting .mdc-evolution-chip__graphic{transition:width 150ms 0ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-evolution-chip--selectable:not(.mdc-evolution-chip--selected):not(.mdc-evolution-chip--with-primary-icon) .mdc-evolution-chip__graphic{width:0}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__graphic{padding-left:6px;padding-right:6px}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__graphic{padding-left:4px;padding-right:8px}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__graphic{padding-left:8px;padding-right:4px}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__graphic{padding-left:6px;padding-right:6px}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__graphic{padding-left:4px;padding-right:8px}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__graphic{padding-left:8px;padding-right:4px}.mdc-evolution-chip__checkmark{position:absolute;opacity:0;top:50%;left:50%;height:20px;width:20px}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__checkmark{color:var(--mdc-chip-with-icon-selected-icon-color, var(--mat-app-on-secondary-container))}.mat-mdc-standard-chip.mdc-evolution-chip--disabled .mdc-evolution-chip__checkmark{color:var(--mdc-chip-with-icon-disabled-icon-color, var(--mat-app-on-surface))}.mdc-evolution-chip--selecting .mdc-evolution-chip__checkmark{transition:transform 150ms 0ms cubic-bezier(0.4, 0, 0.2, 1);transform:translate(-75%, -50%)}.mdc-evolution-chip--selected .mdc-evolution-chip__checkmark{transform:translate(-50%, -50%);opacity:1}.mdc-evolution-chip__checkmark-svg{display:block}.mdc-evolution-chip__checkmark-path{stroke-width:2px;stroke-dasharray:29.7833385;stroke-dashoffset:29.7833385;stroke:currentColor}.mdc-evolution-chip--selecting .mdc-evolution-chip__checkmark-path{transition:stroke-dashoffset 150ms 45ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-evolution-chip--selected .mdc-evolution-chip__checkmark-path{stroke-dashoffset:0}.cdk-high-contrast-active .mdc-evolution-chip__checkmark-path{stroke:CanvasText !important}.mat-mdc-standard-chip .mdc-evolution-chip__icon--trailing{height:18px;width:18px;font-size:18px}.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--trailing.mat-mdc-chip-remove{opacity:calc(var(--mat-chip-trailing-action-opacity)*var(--mdc-chip-with-trailing-icon-disabled-trailing-icon-opacity))}.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--trailing.mat-mdc-chip-remove:focus{opacity:calc(var(--mat-chip-trailing-action-focus-opacity)*var(--mdc-chip-with-trailing-icon-disabled-trailing-icon-opacity))}.mat-mdc-standard-chip{border-radius:var(--mdc-chip-container-shape-radius);height:var(--mdc-chip-container-height)}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled){background-color:var(--mdc-chip-elevated-container-color)}.mat-mdc-standard-chip.mdc-evolution-chip--disabled{background-color:var(--mdc-chip-elevated-disabled-container-color)}.mat-mdc-standard-chip.mdc-evolution-chip--selected:not(.mdc-evolution-chip--disabled){background-color:var(--mdc-chip-elevated-selected-container-color, var(--mat-app-secondary-container))}.mat-mdc-standard-chip.mdc-evolution-chip--selected.mdc-evolution-chip--disabled{background-color:var(--mdc-chip-flat-disabled-selected-container-color)}.cdk-high-contrast-active .mat-mdc-standard-chip{outline:solid 1px}.mat-mdc-standard-chip .mdc-evolution-chip__icon--primary{border-radius:var(--mdc-chip-with-avatar-avatar-shape-radius);width:var(--mdc-chip-with-icon-icon-size);height:var(--mdc-chip-with-icon-icon-size);font-size:var(--mdc-chip-with-icon-icon-size)}.mdc-evolution-chip--selected .mdc-evolution-chip__icon--primary{opacity:0}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__icon--primary{color:var(--mdc-chip-with-icon-icon-color, var(--mat-app-on-surface-variant))}.mat-mdc-standard-chip.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--primary{color:var(--mdc-chip-with-icon-disabled-icon-color, var(--mat-app-on-surface))}.mat-mdc-chip-highlighted{--mdc-chip-with-icon-icon-color:var(--mdc-chip-with-icon-selected-icon-color, var(--mat-app-on-secondary-container));--mdc-chip-elevated-container-color:var(--mdc-chip-elevated-selected-container-color, var(--mat-app-secondary-container));--mdc-chip-label-text-color:var(--mdc-chip-selected-label-text-color, var(--mat-app-on-secondary-container));--mdc-chip-outline-width:var(--mdc-chip-flat-selected-outline-width)}.mat-mdc-chip-focus-overlay{background:var(--mdc-chip-focus-state-layer-color, var(--mat-app-on-surface-variant))}.mat-mdc-chip-selected .mat-mdc-chip-focus-overlay,.mat-mdc-chip-highlighted .mat-mdc-chip-focus-overlay{background:var(--mdc-chip-selected-focus-state-layer-color, var(--mat-app-on-secondary-container))}.mat-mdc-chip:hover .mat-mdc-chip-focus-overlay{background:var(--mdc-chip-hover-state-layer-color, var(--mat-app-on-surface-variant));opacity:var(--mdc-chip-hover-state-layer-opacity, var(--mat-app-hover-state-layer-opacity))}.mat-mdc-chip-focus-overlay .mat-mdc-chip-selected:hover,.mat-mdc-chip-highlighted:hover .mat-mdc-chip-focus-overlay{background:var(--mdc-chip-selected-hover-state-layer-color, var(--mat-app-on-secondary-container));opacity:var(--mdc-chip-selected-hover-state-layer-opacity, var(--mat-app-hover-state-layer-opacity))}.mat-mdc-chip.cdk-focused .mat-mdc-chip-focus-overlay{background:var(--mdc-chip-focus-state-layer-color, var(--mat-app-on-surface-variant));opacity:var(--mdc-chip-focus-state-layer-opacity, var(--mat-app-focus-state-layer-opacity))}.mat-mdc-chip-selected.cdk-focused .mat-mdc-chip-focus-overlay,.mat-mdc-chip-highlighted.cdk-focused .mat-mdc-chip-focus-overlay{background:var(--mdc-chip-selected-focus-state-layer-color, var(--mat-app-on-secondary-container));opacity:var(--mdc-chip-selected-focus-state-layer-opacity, var(--mat-app-focus-state-layer-opacity))}.mdc-evolution-chip--disabled:not(.mdc-evolution-chip--selected) .mat-mdc-chip-avatar{opacity:var(--mdc-chip-with-avatar-disabled-avatar-opacity)}.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--trailing{opacity:var(--mdc-chip-with-trailing-icon-disabled-trailing-icon-opacity)}.mdc-evolution-chip--disabled.mdc-evolution-chip--selected .mdc-evolution-chip__checkmark{opacity:var(--mdc-chip-with-icon-disabled-icon-opacity)}.mat-mdc-standard-chip.mdc-evolution-chip--disabled{opacity:var(--mat-chip-disabled-container-opacity)}.mat-mdc-standard-chip.mdc-evolution-chip--selected .mdc-evolution-chip__icon--trailing,.mat-mdc-standard-chip.mat-mdc-chip-highlighted .mdc-evolution-chip__icon--trailing{color:var(--mat-chip-selected-trailing-icon-color, var(--mat-app-on-secondary-container))}.mat-mdc-standard-chip.mdc-evolution-chip--selected.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--trailing,.mat-mdc-standard-chip.mat-mdc-chip-highlighted.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--trailing{color:var(--mat-chip-selected-disabled-trailing-icon-color, var(--mat-app-on-surface))}.mat-mdc-chip-remove{opacity:var(--mat-chip-trailing-action-opacity)}.mat-mdc-chip-remove:focus{opacity:var(--mat-chip-trailing-action-focus-opacity)}.mat-mdc-chip-remove::after{background-color:var(--mat-chip-trailing-action-state-layer-color, var(--mat-app-on-surface-variant))}.mat-mdc-chip-remove:hover::after{opacity:var(--mat-chip-trailing-action-hover-state-layer-opacity, var(--mat-app-hover-state-layer-opacity))}.mat-mdc-chip-remove:focus::after{opacity:var(--mat-chip-trailing-action-focus-state-layer-opacity, var(--mat-app-focus-state-layer-opacity))}.mat-mdc-chip-selected .mat-mdc-chip-remove::after,.mat-mdc-chip-highlighted .mat-mdc-chip-remove::after{background-color:var(--mat-chip-selected-trailing-action-state-layer-color, var(--mat-app-on-secondary-container))}.mat-mdc-standard-chip{-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-standard-chip .mdc-evolution-chip__cell--primary,.mat-mdc-standard-chip .mdc-evolution-chip__action--primary,.mat-mdc-standard-chip .mat-mdc-chip-action-label{overflow:visible}.mat-mdc-standard-chip .mat-mdc-chip-graphic,.mat-mdc-standard-chip .mat-mdc-chip-trailing-icon{box-sizing:content-box}.mat-mdc-standard-chip._mat-animation-noopable,.mat-mdc-standard-chip._mat-animation-noopable .mdc-evolution-chip__graphic,.mat-mdc-standard-chip._mat-animation-noopable .mdc-evolution-chip__checkmark,.mat-mdc-standard-chip._mat-animation-noopable .mdc-evolution-chip__checkmark-path{transition-duration:1ms;animation-duration:1ms}.mat-mdc-chip-focus-overlay{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;opacity:0;border-radius:inherit;transition:opacity 150ms linear}._mat-animation-noopable .mat-mdc-chip-focus-overlay{transition:none}.mat-mdc-basic-chip .mat-mdc-chip-focus-overlay{display:none}.mat-mdc-chip .mat-ripple.mat-mdc-chip-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-mdc-chip-avatar{text-align:center;line-height:1;color:var(--mdc-chip-with-icon-icon-color, currentColor)}.mat-mdc-chip{position:relative;z-index:0}.mat-mdc-chip-action-label{text-align:left;z-index:1}[dir=rtl] .mat-mdc-chip-action-label{text-align:right}.mat-mdc-chip.mdc-evolution-chip--with-trailing-action .mat-mdc-chip-action-label{position:relative}.mat-mdc-chip-action-label .mat-mdc-chip-primary-focus-indicator{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.mat-mdc-chip-action-label .mat-mdc-focus-indicator::before{margin:calc(calc(var(--mat-mdc-focus-indicator-border-width, 3px) + 2px)*-1)}.mat-mdc-chip-remove::before{margin:calc(var(--mat-mdc-focus-indicator-border-width, 3px)*-1);left:8px;right:8px}.mat-mdc-chip-remove::after{content:"";display:block;opacity:0;position:absolute;top:-3px;bottom:-3px;left:5px;right:5px;border-radius:50%;box-sizing:border-box;padding:12px;margin:-12px;background-clip:content-box}.mat-mdc-chip-remove .mat-icon{width:18px;height:18px;font-size:18px;box-sizing:content-box}.mat-chip-edit-input{cursor:text;display:inline-block;color:inherit;outline:0}.cdk-high-contrast-active .mat-mdc-chip-selected:not(.mat-mdc-chip-multiple){outline-width:3px}.mat-mdc-chip-action:focus .mat-mdc-focus-indicator::before{content:""}',OD=[[["mat-chip-avatar"],["","matChipAvatar",""]],[["","matChipEditInput",""]],"*",[["mat-chip-trailing-icon"],["","matChipRemove",""],["","matChipTrailingIcon",""]]],RD=["mat-chip-avatar, [matChipAvatar]","[matChipEditInput]","*","mat-chip-trailing-icon,[matChipRemove],[matChipTrailingIcon]"];function FD(i,n){i&1&&ie(0,"span",0)}function PD(i,n){i&1&&(w(0,"span",2),A(1),I())}function ND(i,n){i&1&&A(0,1)}function LD(i,n){i&1&&ie(0,"span",7)}function jD(i,n){if(i&1&&te(0,ND,1,0)(1,LD,1,0,"span",7),i&2){let e=fe();ge(e.contentEditInput?0:1)}}function VD(i,n){i&1&&A(0,2)}function BD(i,n){i&1&&(w(0,"span",5),A(1,3),I())}var Mb=["*"],zD=".mat-mdc-chip-set{display:flex}.mat-mdc-chip-set:focus{outline:none}.mat-mdc-chip-set .mdc-evolution-chip-set__chips{min-width:100%;margin-left:-8px;margin-right:0}.mat-mdc-chip-set .mdc-evolution-chip{margin:4px 0 4px 8px}[dir=rtl] .mat-mdc-chip-set .mdc-evolution-chip-set__chips{margin-left:0;margin-right:-8px}[dir=rtl] .mat-mdc-chip-set .mdc-evolution-chip{margin-left:0;margin-right:8px}.mdc-evolution-chip-set__chips{display:flex;flex-flow:wrap;min-width:0}.mat-mdc-chip-set-stacked{flex-direction:column;align-items:flex-start}.mat-mdc-chip-set-stacked .mat-mdc-chip{width:100%}.mat-mdc-chip-set-stacked .mdc-evolution-chip__graphic{flex-grow:0}.mat-mdc-chip-set-stacked .mdc-evolution-chip__action--primary{flex-basis:100%;justify-content:start}input.mat-mdc-chip-input{flex:1 0 150px;margin-left:8px}[dir=rtl] input.mat-mdc-chip-input{margin-left:0;margin-right:8px}",Ab=new C("mat-chips-default-options",{providedIn:"root",factory:()=>({separatorKeyCodes:[13]})}),$d=new C("MatChipAvatar"),Sb=new C("MatChipTrailingIcon"),Yd=new C("MatChipRemove"),Zd=new C("MatChip"),Qs=(()=>{class i{get disabled(){return this._disabled||this._parentChip.disabled}set disabled(e){this._disabled=e}_getDisabledAttribute(){return this.disabled&&!this._allowFocusWhenDisabled?"":null}_getTabindex(){return this.disabled&&!this._allowFocusWhenDisabled||!this.isInteractive?null:this.tabIndex.toString()}constructor(e,t){this._elementRef=e,this._parentChip=t,this.isInteractive=!0,this._isPrimary=!0,this._disabled=!1,this.tabIndex=-1,this._allowFocusWhenDisabled=!1,e.nativeElement.nodeName==="BUTTON"&&e.nativeElement.setAttribute("type","button")}focus(){this._elementRef.nativeElement.focus()}_handleClick(e){!this.disabled&&this.isInteractive&&this._isPrimary&&(e.preventDefault(),this._parentChip._handlePrimaryActionInteraction())}_handleKeydown(e){(e.keyCode===13||e.keyCode===32)&&!this.disabled&&this.isInteractive&&this._isPrimary&&!this._parentChip._isEditing&&(e.preventDefault(),this._parentChip._handlePrimaryActionInteraction())}static{this.\u0275fac=function(t){return new(t||i)(u(E),u(Zd))}}static{this.\u0275dir=D({type:i,selectors:[["","matChipAction",""]],hostAttrs:[1,"mdc-evolution-chip__action","mat-mdc-chip-action"],hostVars:9,hostBindings:function(t,r){t&1&&ee("click",function(a){return r._handleClick(a)})("keydown",function(a){return r._handleKeydown(a)}),t&2&&(W("tabindex",r._getTabindex())("disabled",r._getDisabledAttribute())("aria-disabled",r.disabled),P("mdc-evolution-chip__action--primary",r._isPrimary)("mdc-evolution-chip__action--presentational",!r.isInteractive)("mdc-evolution-chip__action--trailing",!r._isPrimary))},inputs:{isInteractive:"isInteractive",disabled:[2,"disabled","disabled",O],tabIndex:[2,"tabIndex","tabIndex",e=>e==null?-1:$e(e)],_allowFocusWhenDisabled:"_allowFocusWhenDisabled"},standalone:!0,features:[ae]})}}return i})(),oU=(()=>{class i{static{this.\u0275fac=function(t){return new(t||i)}}static{this.\u0275dir=D({type:i,selectors:[["mat-chip-avatar"],["","matChipAvatar",""]],hostAttrs:["role","img",1,"mat-mdc-chip-avatar","mdc-evolution-chip__icon","mdc-evolution-chip__icon--primary"],standalone:!0,features:[de([{provide:$d,useExisting:i}])]})}}return i})();var aU=(()=>{class i extends Qs{constructor(){super(...arguments),this._isPrimary=!1}_handleClick(e){this.disabled||(e.stopPropagation(),e.preventDefault(),this._parentChip.remove())}_handleKeydown(e){(e.keyCode===13||e.keyCode===32)&&!this.disabled&&(e.stopPropagation(),e.preventDefault(),this._parentChip.remove())}static{this.\u0275fac=(()=>{let e;return function(r){return(e||(e=Ke(i)))(r||i)}})()}static{this.\u0275dir=D({type:i,selectors:[["","matChipRemove",""]],hostAttrs:["role","button",1,"mat-mdc-chip-remove","mat-mdc-chip-trailing-icon","mat-mdc-focus-indicator","mdc-evolution-chip__icon","mdc-evolution-chip__icon--trailing"],hostVars:1,hostBindings:function(t,r){t&2&&W("aria-hidden",null)},standalone:!0,features:[de([{provide:Yd,useExisting:i}]),ne]})}}return i})(),HD=0,Kd=(()=>{class i{_hasFocus(){return this._hasFocusInternal}get value(){return this._value!==void 0?this._value:this._textElement.textContent.trim()}set value(e){this._value=e}get disabled(){return this._disabled||this._chipListDisabled}set disabled(e){this._disabled=e}get ripple(){return this._rippleLoader?.getRipple(this._elementRef.nativeElement)}set ripple(e){this._rippleLoader?.attachRipple(this._elementRef.nativeElement,e)}constructor(e,t,r,o,a,s,c){this._changeDetectorRef=e,this._elementRef=t,this._ngZone=r,this._focusMonitor=o,this._globalRippleOptions=c,this._onFocus=new R,this._onBlur=new R,this.role=null,this._hasFocusInternal=!1,this.id=`mat-mdc-chip-${HD++}`,this.ariaLabel=null,this.ariaDescription=null,this._ariaDescriptionId=`${this.id}-aria-description`,this._chipListDisabled=!1,this.removable=!0,this.highlighted=!1,this.disableRipple=!1,this._disabled=!1,this.removed=new z,this.destroyed=new z,this.basicChipAttrName="mat-basic-chip",this._rippleLoader=F(Fs),this._injector=F(Ee),this._document=a,this._animationsDisabled=s==="NoopAnimations",this._monitorFocus(),this._rippleLoader?.configureRipple(this._elementRef.nativeElement,{className:"mat-mdc-chip-ripple",disabled:this._isRippleDisabled()})}ngOnInit(){let e=this._elementRef.nativeElement;this._isBasicChip=e.hasAttribute(this.basicChipAttrName)||e.tagName.toLowerCase()===this.basicChipAttrName}ngAfterViewInit(){this._textElement=this._elementRef.nativeElement.querySelector(".mat-mdc-chip-action-label"),this._pendingFocus&&(this._pendingFocus=!1,this.focus())}ngAfterContentInit(){this._actionChanges=Fe(this._allLeadingIcons.changes,this._allTrailingIcons.changes,this._allRemoveIcons.changes).subscribe(()=>this._changeDetectorRef.markForCheck())}ngDoCheck(){this._rippleLoader.setDisabled(this._elementRef.nativeElement,this._isRippleDisabled())}ngOnDestroy(){this._focusMonitor.stopMonitoring(this._elementRef),this._rippleLoader?.destroyRipple(this._elementRef.nativeElement),this._actionChanges?.unsubscribe(),this.destroyed.emit({chip:this}),this.destroyed.complete()}remove(){this.removable&&this.removed.emit({chip:this})}_isRippleDisabled(){return this.disabled||this.disableRipple||this._animationsDisabled||this._isBasicChip||!!this._globalRippleOptions?.disabled}_hasTrailingIcon(){return!!(this.trailingIcon||this.removeIcon)}_handleKeydown(e){(e.keyCode===8&&!e.repeat||e.keyCode===46)&&(e.preventDefault(),this.remove())}focus(){this.disabled||(this.primaryAction?this.primaryAction.focus():this._pendingFocus=!0)}_getSourceAction(e){return this._getActions().find(t=>{let r=t._elementRef.nativeElement;return r===e||r.contains(e)})}_getActions(){let e=[];return this.primaryAction&&e.push(this.primaryAction),this.removeIcon&&e.push(this.removeIcon),this.trailingIcon&&e.push(this.trailingIcon),e}_handlePrimaryActionInteraction(){}_monitorFocus(){this._focusMonitor.monitor(this._elementRef,!0).subscribe(e=>{let t=e!==null;t!==this._hasFocusInternal&&(this._hasFocusInternal=t,t?this._onFocus.next({chip:this}):tt(()=>this._ngZone.run(()=>this._onBlur.next({chip:this})),{injector:this._injector}))})}static{this.\u0275fac=function(t){return new(t||i)(u(pe),u(E),u(B),u(ot),u(oe),u(we,8),u(Ln,8))}}static{this.\u0275cmp=H({type:i,selectors:[["mat-basic-chip"],["","mat-basic-chip",""],["mat-chip"],["","mat-chip",""]],contentQueries:function(t,r,o){if(t&1&&(he(o,$d,5),he(o,Sb,5),he(o,Yd,5),he(o,$d,5),he(o,Sb,5),he(o,Yd,5)),t&2){let a;S(a=T())&&(r.leadingIcon=a.first),S(a=T())&&(r.trailingIcon=a.first),S(a=T())&&(r.removeIcon=a.first),S(a=T())&&(r._allLeadingIcons=a),S(a=T())&&(r._allTrailingIcons=a),S(a=T())&&(r._allRemoveIcons=a)}},viewQuery:function(t,r){if(t&1&&re(Qs,5),t&2){let o;S(o=T())&&(r.primaryAction=o.first)}},hostAttrs:[1,"mat-mdc-chip"],hostVars:31,hostBindings:function(t,r){t&1&&ee("keydown",function(a){return r._handleKeydown(a)}),t&2&&(St("id",r.id),W("role",r.role)("aria-label",r.ariaLabel),qe("mat-"+(r.color||"primary")),P("mdc-evolution-chip",!r._isBasicChip)("mdc-evolution-chip--disabled",r.disabled)("mdc-evolution-chip--with-trailing-action",r._hasTrailingIcon())("mdc-evolution-chip--with-primary-graphic",r.leadingIcon)("mdc-evolution-chip--with-primary-icon",r.leadingIcon)("mdc-evolution-chip--with-avatar",r.leadingIcon)("mat-mdc-chip-with-avatar",r.leadingIcon)("mat-mdc-chip-highlighted",r.highlighted)("mat-mdc-chip-disabled",r.disabled)("mat-mdc-basic-chip",r._isBasicChip)("mat-mdc-standard-chip",!r._isBasicChip)("mat-mdc-chip-with-trailing-icon",r._hasTrailingIcon())("_mat-animation-noopable",r._animationsDisabled))},inputs:{role:"role",id:"id",ariaLabel:[0,"aria-label","ariaLabel"],ariaDescription:[0,"aria-description","ariaDescription"],value:"value",color:"color",removable:[2,"removable","removable",O],highlighted:[2,"highlighted","highlighted",O],disableRipple:[2,"disableRipple","disableRipple",O],disabled:[2,"disabled","disabled",O]},outputs:{removed:"removed",destroyed:"destroyed"},exportAs:["matChip"],standalone:!0,features:[de([{provide:Zd,useExisting:i}]),ae,Q],ngContentSelectors:SD,decls:8,vars:3,consts:[[1,"mat-mdc-chip-focus-overlay"],[1,"mdc-evolution-chip__cell","mdc-evolution-chip__cell--primary"],["matChipAction","",3,"isInteractive"],[1,"mdc-evolution-chip__graphic","mat-mdc-chip-graphic"],[1,"mdc-evolution-chip__text-label","mat-mdc-chip-action-label"],[1,"mat-mdc-chip-primary-focus-indicator","mat-mdc-focus-indicator"],[1,"mdc-evolution-chip__cell","mdc-evolution-chip__cell--trailing"]],template:function(t,r){t&1&&(se(ID),ie(0,"span",0),w(1,"span",1)(2,"span",2),te(3,TD,2,0,"span",3),w(4,"span",4),A(5),ie(6,"span",5),I()()(),te(7,MD,2,0,"span",6)),t&2&&(V(2),ue("isInteractive",!1),V(),ge(r.leadingIcon?3:-1),V(4),ge(r._hasTrailingIcon()?7:-1))},dependencies:[Qs],styles:['.mdc-evolution-chip,.mdc-evolution-chip__cell,.mdc-evolution-chip__action{display:inline-flex;align-items:center}.mdc-evolution-chip{position:relative;max-width:100%}.mdc-evolution-chip__cell,.mdc-evolution-chip__action{height:100%}.mdc-evolution-chip__cell--primary{flex-basis:100%;overflow-x:hidden}.mdc-evolution-chip__cell--trailing{flex:1 0 auto}.mdc-evolution-chip__action{align-items:center;background:none;border:none;box-sizing:content-box;cursor:pointer;display:inline-flex;justify-content:center;outline:none;padding:0;text-decoration:none;color:inherit}.mdc-evolution-chip__action--presentational{cursor:auto}.mdc-evolution-chip--disabled,.mdc-evolution-chip__action:disabled{pointer-events:none}.mdc-evolution-chip__action--primary{font:inherit;letter-spacing:inherit;white-space:inherit;overflow-x:hidden}.mat-mdc-standard-chip .mdc-evolution-chip__action--primary::before{border-width:var(--mdc-chip-outline-width);border-radius:var(--mdc-chip-container-shape-radius);box-sizing:border-box;content:"";height:100%;left:0;position:absolute;pointer-events:none;top:0;width:100%;z-index:1;border-style:solid}.mat-mdc-standard-chip .mdc-evolution-chip__action--primary{padding-left:12px;padding-right:12px}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__action--primary{padding-left:0;padding-right:12px}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__action--primary{padding-left:12px;padding-right:0}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__action--primary::before{border-color:var(--mdc-chip-outline-color, var(--mat-app-outline))}.mdc-evolution-chip__action--primary:not(.mdc-evolution-chip__action--presentational):not(.mdc-ripple-upgraded):focus::before{border-color:var(--mdc-chip-focus-outline-color, var(--mat-app-on-surface-variant))}.mat-mdc-standard-chip.mdc-evolution-chip--disabled .mdc-evolution-chip__action--primary::before{border-color:var(--mdc-chip-disabled-outline-color)}.mat-mdc-standard-chip.mdc-evolution-chip--selected .mdc-evolution-chip__action--primary::before{border-width:var(--mdc-chip-flat-selected-outline-width)}.mat-mdc-basic-chip .mdc-evolution-chip__action--primary{font:inherit}.mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:12px;padding-right:0}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:0;padding-right:12px}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:0;padding-right:0}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:0;padding-right:0}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__action--primary{padding-left:0;padding-right:12px}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__action--primary{padding-left:12px;padding-right:0}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:0;padding-right:0}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:0;padding-right:0}.mdc-evolution-chip__action--trailing{position:relative;overflow:visible}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__action--trailing{color:var(--mdc-chip-with-trailing-icon-trailing-icon-color, var(--mat-app-on-surface-variant))}.mat-mdc-standard-chip.mdc-evolution-chip--disabled .mdc-evolution-chip__action--trailing{color:var(--mdc-chip-with-trailing-icon-disabled-trailing-icon-color, var(--mat-app-on-surface))}.mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--trailing{padding-left:8px;padding-right:8px}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--trailing{padding-left:8px;padding-right:8px}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--trailing{padding-left:8px;padding-right:8px}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--trailing{padding-left:8px;padding-right:8px}.mdc-evolution-chip__text-label{-webkit-user-select:none;user-select:none;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.mat-mdc-standard-chip .mdc-evolution-chip__text-label{font-family:var(--mdc-chip-label-text-font, var(--mat-app-label-large-font));line-height:var(--mdc-chip-label-text-line-height, var(--mat-app-label-large-line-height));font-size:var(--mdc-chip-label-text-size, var(--mat-app-label-large-size));font-weight:var(--mdc-chip-label-text-weight, var(--mat-app-label-large-weight));letter-spacing:var(--mdc-chip-label-text-tracking, var(--mat-app-label-large-tracking))}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__text-label{color:var(--mdc-chip-label-text-color, var(--mat-app-on-surface-variant))}.mat-mdc-standard-chip.mdc-evolution-chip--selected:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__text-label{color:var(--mdc-chip-selected-label-text-color, var(--mat-app-on-secondary-container))}.mat-mdc-standard-chip.mdc-evolution-chip--disabled .mdc-evolution-chip__text-label,.mat-mdc-standard-chip.mdc-evolution-chip--selected.mdc-evolution-chip--disabled .mdc-evolution-chip__text-label{color:var(--mdc-chip-disabled-label-text-color)}.mdc-evolution-chip__graphic{align-items:center;display:inline-flex;justify-content:center;overflow:hidden;pointer-events:none;position:relative;flex:1 0 auto}.mat-mdc-standard-chip .mdc-evolution-chip__graphic{width:var(--mdc-chip-with-avatar-avatar-size);height:var(--mdc-chip-with-avatar-avatar-size);font-size:var(--mdc-chip-with-avatar-avatar-size)}.mdc-evolution-chip--selecting .mdc-evolution-chip__graphic{transition:width 150ms 0ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-evolution-chip--selectable:not(.mdc-evolution-chip--selected):not(.mdc-evolution-chip--with-primary-icon) .mdc-evolution-chip__graphic{width:0}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__graphic{padding-left:6px;padding-right:6px}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__graphic{padding-left:4px;padding-right:8px}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__graphic{padding-left:8px;padding-right:4px}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__graphic{padding-left:6px;padding-right:6px}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__graphic{padding-left:4px;padding-right:8px}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__graphic{padding-left:8px;padding-right:4px}.mdc-evolution-chip__checkmark{position:absolute;opacity:0;top:50%;left:50%;height:20px;width:20px}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__checkmark{color:var(--mdc-chip-with-icon-selected-icon-color, var(--mat-app-on-secondary-container))}.mat-mdc-standard-chip.mdc-evolution-chip--disabled .mdc-evolution-chip__checkmark{color:var(--mdc-chip-with-icon-disabled-icon-color, var(--mat-app-on-surface))}.mdc-evolution-chip--selecting .mdc-evolution-chip__checkmark{transition:transform 150ms 0ms cubic-bezier(0.4, 0, 0.2, 1);transform:translate(-75%, -50%)}.mdc-evolution-chip--selected .mdc-evolution-chip__checkmark{transform:translate(-50%, -50%);opacity:1}.mdc-evolution-chip__checkmark-svg{display:block}.mdc-evolution-chip__checkmark-path{stroke-width:2px;stroke-dasharray:29.7833385;stroke-dashoffset:29.7833385;stroke:currentColor}.mdc-evolution-chip--selecting .mdc-evolution-chip__checkmark-path{transition:stroke-dashoffset 150ms 45ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-evolution-chip--selected .mdc-evolution-chip__checkmark-path{stroke-dashoffset:0}.cdk-high-contrast-active .mdc-evolution-chip__checkmark-path{stroke:CanvasText !important}.mat-mdc-standard-chip .mdc-evolution-chip__icon--trailing{height:18px;width:18px;font-size:18px}.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--trailing.mat-mdc-chip-remove{opacity:calc(var(--mat-chip-trailing-action-opacity)*var(--mdc-chip-with-trailing-icon-disabled-trailing-icon-opacity))}.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--trailing.mat-mdc-chip-remove:focus{opacity:calc(var(--mat-chip-trailing-action-focus-opacity)*var(--mdc-chip-with-trailing-icon-disabled-trailing-icon-opacity))}.mat-mdc-standard-chip{border-radius:var(--mdc-chip-container-shape-radius);height:var(--mdc-chip-container-height)}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled){background-color:var(--mdc-chip-elevated-container-color)}.mat-mdc-standard-chip.mdc-evolution-chip--disabled{background-color:var(--mdc-chip-elevated-disabled-container-color)}.mat-mdc-standard-chip.mdc-evolution-chip--selected:not(.mdc-evolution-chip--disabled){background-color:var(--mdc-chip-elevated-selected-container-color, var(--mat-app-secondary-container))}.mat-mdc-standard-chip.mdc-evolution-chip--selected.mdc-evolution-chip--disabled{background-color:var(--mdc-chip-flat-disabled-selected-container-color)}.cdk-high-contrast-active .mat-mdc-standard-chip{outline:solid 1px}.mat-mdc-standard-chip .mdc-evolution-chip__icon--primary{border-radius:var(--mdc-chip-with-avatar-avatar-shape-radius);width:var(--mdc-chip-with-icon-icon-size);height:var(--mdc-chip-with-icon-icon-size);font-size:var(--mdc-chip-with-icon-icon-size)}.mdc-evolution-chip--selected .mdc-evolution-chip__icon--primary{opacity:0}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__icon--primary{color:var(--mdc-chip-with-icon-icon-color, var(--mat-app-on-surface-variant))}.mat-mdc-standard-chip.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--primary{color:var(--mdc-chip-with-icon-disabled-icon-color, var(--mat-app-on-surface))}.mat-mdc-chip-highlighted{--mdc-chip-with-icon-icon-color:var(--mdc-chip-with-icon-selected-icon-color, var(--mat-app-on-secondary-container));--mdc-chip-elevated-container-color:var(--mdc-chip-elevated-selected-container-color, var(--mat-app-secondary-container));--mdc-chip-label-text-color:var(--mdc-chip-selected-label-text-color, var(--mat-app-on-secondary-container));--mdc-chip-outline-width:var(--mdc-chip-flat-selected-outline-width)}.mat-mdc-chip-focus-overlay{background:var(--mdc-chip-focus-state-layer-color, var(--mat-app-on-surface-variant))}.mat-mdc-chip-selected .mat-mdc-chip-focus-overlay,.mat-mdc-chip-highlighted .mat-mdc-chip-focus-overlay{background:var(--mdc-chip-selected-focus-state-layer-color, var(--mat-app-on-secondary-container))}.mat-mdc-chip:hover .mat-mdc-chip-focus-overlay{background:var(--mdc-chip-hover-state-layer-color, var(--mat-app-on-surface-variant));opacity:var(--mdc-chip-hover-state-layer-opacity, var(--mat-app-hover-state-layer-opacity))}.mat-mdc-chip-focus-overlay .mat-mdc-chip-selected:hover,.mat-mdc-chip-highlighted:hover .mat-mdc-chip-focus-overlay{background:var(--mdc-chip-selected-hover-state-layer-color, var(--mat-app-on-secondary-container));opacity:var(--mdc-chip-selected-hover-state-layer-opacity, var(--mat-app-hover-state-layer-opacity))}.mat-mdc-chip.cdk-focused .mat-mdc-chip-focus-overlay{background:var(--mdc-chip-focus-state-layer-color, var(--mat-app-on-surface-variant));opacity:var(--mdc-chip-focus-state-layer-opacity, var(--mat-app-focus-state-layer-opacity))}.mat-mdc-chip-selected.cdk-focused .mat-mdc-chip-focus-overlay,.mat-mdc-chip-highlighted.cdk-focused .mat-mdc-chip-focus-overlay{background:var(--mdc-chip-selected-focus-state-layer-color, var(--mat-app-on-secondary-container));opacity:var(--mdc-chip-selected-focus-state-layer-opacity, var(--mat-app-focus-state-layer-opacity))}.mdc-evolution-chip--disabled:not(.mdc-evolution-chip--selected) .mat-mdc-chip-avatar{opacity:var(--mdc-chip-with-avatar-disabled-avatar-opacity)}.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--trailing{opacity:var(--mdc-chip-with-trailing-icon-disabled-trailing-icon-opacity)}.mdc-evolution-chip--disabled.mdc-evolution-chip--selected .mdc-evolution-chip__checkmark{opacity:var(--mdc-chip-with-icon-disabled-icon-opacity)}.mat-mdc-standard-chip.mdc-evolution-chip--disabled{opacity:var(--mat-chip-disabled-container-opacity)}.mat-mdc-standard-chip.mdc-evolution-chip--selected .mdc-evolution-chip__icon--trailing,.mat-mdc-standard-chip.mat-mdc-chip-highlighted .mdc-evolution-chip__icon--trailing{color:var(--mat-chip-selected-trailing-icon-color, var(--mat-app-on-secondary-container))}.mat-mdc-standard-chip.mdc-evolution-chip--selected.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--trailing,.mat-mdc-standard-chip.mat-mdc-chip-highlighted.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--trailing{color:var(--mat-chip-selected-disabled-trailing-icon-color, var(--mat-app-on-surface))}.mat-mdc-chip-remove{opacity:var(--mat-chip-trailing-action-opacity)}.mat-mdc-chip-remove:focus{opacity:var(--mat-chip-trailing-action-focus-opacity)}.mat-mdc-chip-remove::after{background-color:var(--mat-chip-trailing-action-state-layer-color, var(--mat-app-on-surface-variant))}.mat-mdc-chip-remove:hover::after{opacity:var(--mat-chip-trailing-action-hover-state-layer-opacity, var(--mat-app-hover-state-layer-opacity))}.mat-mdc-chip-remove:focus::after{opacity:var(--mat-chip-trailing-action-focus-state-layer-opacity, var(--mat-app-focus-state-layer-opacity))}.mat-mdc-chip-selected .mat-mdc-chip-remove::after,.mat-mdc-chip-highlighted .mat-mdc-chip-remove::after{background-color:var(--mat-chip-selected-trailing-action-state-layer-color, var(--mat-app-on-secondary-container))}.mat-mdc-standard-chip{-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-standard-chip .mdc-evolution-chip__cell--primary,.mat-mdc-standard-chip .mdc-evolution-chip__action--primary,.mat-mdc-standard-chip .mat-mdc-chip-action-label{overflow:visible}.mat-mdc-standard-chip .mat-mdc-chip-graphic,.mat-mdc-standard-chip .mat-mdc-chip-trailing-icon{box-sizing:content-box}.mat-mdc-standard-chip._mat-animation-noopable,.mat-mdc-standard-chip._mat-animation-noopable .mdc-evolution-chip__graphic,.mat-mdc-standard-chip._mat-animation-noopable .mdc-evolution-chip__checkmark,.mat-mdc-standard-chip._mat-animation-noopable .mdc-evolution-chip__checkmark-path{transition-duration:1ms;animation-duration:1ms}.mat-mdc-chip-focus-overlay{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;opacity:0;border-radius:inherit;transition:opacity 150ms linear}._mat-animation-noopable .mat-mdc-chip-focus-overlay{transition:none}.mat-mdc-basic-chip .mat-mdc-chip-focus-overlay{display:none}.mat-mdc-chip .mat-ripple.mat-mdc-chip-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-mdc-chip-avatar{text-align:center;line-height:1;color:var(--mdc-chip-with-icon-icon-color, currentColor)}.mat-mdc-chip{position:relative;z-index:0}.mat-mdc-chip-action-label{text-align:left;z-index:1}[dir=rtl] .mat-mdc-chip-action-label{text-align:right}.mat-mdc-chip.mdc-evolution-chip--with-trailing-action .mat-mdc-chip-action-label{position:relative}.mat-mdc-chip-action-label .mat-mdc-chip-primary-focus-indicator{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.mat-mdc-chip-action-label .mat-mdc-focus-indicator::before{margin:calc(calc(var(--mat-mdc-focus-indicator-border-width, 3px) + 2px)*-1)}.mat-mdc-chip-remove::before{margin:calc(var(--mat-mdc-focus-indicator-border-width, 3px)*-1);left:8px;right:8px}.mat-mdc-chip-remove::after{content:"";display:block;opacity:0;position:absolute;top:-3px;bottom:-3px;left:5px;right:5px;border-radius:50%;box-sizing:border-box;padding:12px;margin:-12px;background-clip:content-box}.mat-mdc-chip-remove .mat-icon{width:18px;height:18px;font-size:18px;box-sizing:content-box}.mat-chip-edit-input{cursor:text;display:inline-block;color:inherit;outline:0}.cdk-high-contrast-active .mat-mdc-chip-selected:not(.mat-mdc-chip-multiple){outline-width:3px}.mat-mdc-chip-action:focus .mat-mdc-focus-indicator::before{content:""}'],encapsulation:2,changeDetection:0})}}return i})();var Gd=(()=>{class i{constructor(e,t){this._elementRef=e,this._document=t}initialize(e){this.getNativeElement().focus(),this.setValue(e)}getNativeElement(){return this._elementRef.nativeElement}setValue(e){this.getNativeElement().textContent=e,this._moveCursorToEndOfInput()}getValue(){return this.getNativeElement().textContent||""}_moveCursorToEndOfInput(){let e=this._document.createRange();e.selectNodeContents(this.getNativeElement()),e.collapse(!1);let t=window.getSelection();t.removeAllRanges(),t.addRange(e)}static{this.\u0275fac=function(t){return new(t||i)(u(E),u(oe))}}static{this.\u0275dir=D({type:i,selectors:[["span","matChipEditInput",""]],hostAttrs:["role","textbox","tabindex","-1","contenteditable","true",1,"mat-chip-edit-input"],standalone:!0})}}return i})(),QD=(()=>{class i extends Kd{constructor(e,t,r,o,a,s,c,l){super(e,t,r,o,a,s,c),this.basicChipAttrName="mat-basic-chip-row",this._editStartPending=!1,this.editable=!1,this.edited=new z,this._isEditing=!1,this.role="row",this._onBlur.pipe($(this.destroyed)).subscribe(()=>{this._isEditing&&!this._editStartPending&&this._onEditFinish()})}_hasTrailingIcon(){return!this._isEditing&&super._hasTrailingIcon()}_handleFocus(){!this._isEditing&&!this.disabled&&this.focus()}_handleKeydown(e){e.keyCode===13&&!this.disabled?this._isEditing?(e.preventDefault(),this._onEditFinish()):this.editable&&this._startEditing(e):this._isEditing?e.stopPropagation():super._handleKeydown(e)}_handleDoubleclick(e){!this.disabled&&this.editable&&this._startEditing(e)}_startEditing(e){if(!this.primaryAction||this.removeIcon&&this._getSourceAction(e.target)===this.removeIcon)return;let t=this.value;this._isEditing=this._editStartPending=!0,tt(()=>{this._getEditInput().initialize(t),this._editStartPending=!1},{injector:this._injector})}_onEditFinish(){this._isEditing=this._editStartPending=!1,this.edited.emit({chip:this,value:this._getEditInput().getValue()}),(this._document.activeElement===this._getEditInput().getNativeElement()||this._document.activeElement===this._document.body)&&this.primaryAction.focus()}_isRippleDisabled(){return super._isRippleDisabled()||this._isEditing}_getEditInput(){return this.contentEditInput||this.defaultEditInput}static{this.\u0275fac=function(t){return new(t||i)(u(pe),u(E),u(B),u(ot),u(oe),u(we,8),u(Ln,8),It("tabindex"))}}static{this.\u0275cmp=H({type:i,selectors:[["mat-chip-row"],["","mat-chip-row",""],["mat-basic-chip-row"],["","mat-basic-chip-row",""]],contentQueries:function(t,r,o){if(t&1&&he(o,Gd,5),t&2){let a;S(a=T())&&(r.contentEditInput=a.first)}},viewQuery:function(t,r){if(t&1&&re(Gd,5),t&2){let o;S(o=T())&&(r.defaultEditInput=o.first)}},hostAttrs:[1,"mat-mdc-chip","mat-mdc-chip-row","mdc-evolution-chip"],hostVars:27,hostBindings:function(t,r){t&1&&ee("focus",function(a){return r._handleFocus(a)})("dblclick",function(a){return r._handleDoubleclick(a)}),t&2&&(St("id",r.id),W("tabindex",r.disabled?null:-1)("aria-label",null)("aria-description",null)("role",r.role),P("mat-mdc-chip-with-avatar",r.leadingIcon)("mat-mdc-chip-disabled",r.disabled)("mat-mdc-chip-editing",r._isEditing)("mat-mdc-chip-editable",r.editable)("mdc-evolution-chip--disabled",r.disabled)("mdc-evolution-chip--with-trailing-action",r._hasTrailingIcon())("mdc-evolution-chip--with-primary-graphic",r.leadingIcon)("mdc-evolution-chip--with-primary-icon",r.leadingIcon)("mdc-evolution-chip--with-avatar",r.leadingIcon)("mat-mdc-chip-highlighted",r.highlighted)("mat-mdc-chip-with-trailing-icon",r._hasTrailingIcon()))},inputs:{editable:"editable"},outputs:{edited:"edited"},standalone:!0,features:[de([{provide:Kd,useExisting:i},{provide:Zd,useExisting:i}]),ne,Q],ngContentSelectors:RD,decls:10,vars:9,consts:[[1,"mat-mdc-chip-focus-overlay"],["role","gridcell","matChipAction","",1,"mdc-evolution-chip__cell","mdc-evolution-chip__cell--primary",3,"disabled"],[1,"mdc-evolution-chip__graphic","mat-mdc-chip-graphic"],[1,"mdc-evolution-chip__text-label","mat-mdc-chip-action-label"],["aria-hidden","true",1,"mat-mdc-chip-primary-focus-indicator","mat-mdc-focus-indicator"],["role","gridcell",1,"mdc-evolution-chip__cell","mdc-evolution-chip__cell--trailing"],[1,"cdk-visually-hidden",3,"id"],["matChipEditInput",""]],template:function(t,r){t&1&&(se(OD),te(0,FD,1,0,"span",0),w(1,"span",1),te(2,PD,2,0,"span",2),w(3,"span",3),te(4,jD,2,1)(5,VD,1,0),ie(6,"span",4),I()(),te(7,BD,2,0,"span",5),w(8,"span",6),Tt(9),I()),t&2&&(ge(r._isEditing?-1:0),V(),ue("disabled",r.disabled),W("aria-label",r.ariaLabel)("aria-describedby",r._ariaDescriptionId),V(),ge(r.leadingIcon?2:-1),V(2),ge(r._isEditing?4:5),V(3),ge(r._hasTrailingIcon()?7:-1),V(),ue("id",r._ariaDescriptionId),V(),oi(r.ariaDescription))},dependencies:[Qs,Gd],styles:[AD],encapsulation:2,changeDetection:0})}}return i})(),UD=(()=>{class i{get chipFocusChanges(){return this._getChipStream(e=>e._onFocus)}get chipDestroyedChanges(){return this._getChipStream(e=>e.destroyed)}get chipRemovedChanges(){return this._getChipStream(e=>e.removed)}get disabled(){return this._disabled}set disabled(e){this._disabled=e,this._syncChipsState()}get empty(){return!this._chips||this._chips.length===0}get role(){return this._explicitRole?this._explicitRole:this.empty?null:this._defaultRole}set role(e){this._explicitRole=e}get focused(){return this._hasFocusedChip()}constructor(e,t,r){this._elementRef=e,this._changeDetectorRef=t,this._dir=r,this._lastDestroyedFocusedChipIndex=null,this._destroyed=new R,this._defaultRole="presentation",this._disabled=!1,this.tabIndex=0,this._explicitRole=null,this._chipActions=new Gt}ngAfterViewInit(){this._setUpFocusManagement(),this._trackChipSetChanges(),this._trackDestroyedFocusedChip()}ngOnDestroy(){this._keyManager?.destroy(),this._chipActions.destroy(),this._destroyed.next(),this._destroyed.complete()}_hasFocusedChip(){return this._chips&&this._chips.some(e=>e._hasFocus())}_syncChipsState(){this._chips?.forEach(e=>{e._chipListDisabled=this._disabled,e._changeDetectorRef.markForCheck()})}focus(){}_handleKeydown(e){this._originatesFromChip(e)&&this._keyManager.onKeydown(e)}_isValidIndex(e){return e>=0&&ethis._elementRef.nativeElement.tabIndex=e))}_getChipStream(e){return this._chips.changes.pipe(Me(null),st(()=>Fe(...this._chips.map(e))))}_originatesFromChip(e){let t=e.target;for(;t&&t!==this._elementRef.nativeElement;){if(t.classList.contains("mat-mdc-chip"))return!0;t=t.parentElement}return!1}_setUpFocusManagement(){this._chips.changes.pipe(Me(this._chips)).subscribe(e=>{let t=[];e.forEach(r=>r._getActions().forEach(o=>t.push(o))),this._chipActions.reset(t),this._chipActions.notifyOnChanges()}),this._keyManager=new an(this._chipActions).withVerticalOrientation().withHorizontalOrientation(this._dir?this._dir.value:"ltr").withHomeAndEnd().skipPredicate(e=>this._skipPredicate(e)),this.chipFocusChanges.pipe($(this._destroyed)).subscribe(({chip:e})=>{let t=e._getSourceAction(document.activeElement);t&&this._keyManager.updateActiveItem(t)}),this._dir?.change.pipe($(this._destroyed)).subscribe(e=>this._keyManager.withHorizontalOrientation(e))}_skipPredicate(e){return!e.isInteractive||e.disabled}_trackChipSetChanges(){this._chips.changes.pipe(Me(null),$(this._destroyed)).subscribe(()=>{this.disabled&&Promise.resolve().then(()=>this._syncChipsState()),this._redirectDestroyedChipFocus()})}_trackDestroyedFocusedChip(){this.chipDestroyedChanges.pipe($(this._destroyed)).subscribe(e=>{let r=this._chips.toArray().indexOf(e.chip);this._isValidIndex(r)&&e.chip._hasFocus()&&(this._lastDestroyedFocusedChipIndex=r)})}_redirectDestroyedChipFocus(){if(this._lastDestroyedFocusedChipIndex!=null){if(this._chips.length){let e=Math.min(this._lastDestroyedFocusedChipIndex,this._chips.length-1),t=this._chips.toArray()[e];t.disabled?this._chips.length===1?this.focus():this._keyManager.setPreviousItemActive():t.focus()}else this.focus();this._lastDestroyedFocusedChipIndex=null}}static{this.\u0275fac=function(t){return new(t||i)(u(E),u(pe),u(Re,8))}}static{this.\u0275cmp=H({type:i,selectors:[["mat-chip-set"]],contentQueries:function(t,r,o){if(t&1&&he(o,Kd,5),t&2){let a;S(a=T())&&(r._chips=a)}},hostAttrs:[1,"mat-mdc-chip-set","mdc-evolution-chip-set"],hostVars:1,hostBindings:function(t,r){t&1&&ee("keydown",function(a){return r._handleKeydown(a)}),t&2&&W("role",r.role)},inputs:{disabled:[2,"disabled","disabled",O],role:"role",tabIndex:[2,"tabIndex","tabIndex",e=>e==null?0:$e(e)]},standalone:!0,features:[ae,Q],ngContentSelectors:Mb,decls:2,vars:0,consts:[["role","presentation",1,"mdc-evolution-chip-set__chips"]],template:function(t,r){t&1&&(se(),w(0,"div",0),A(1),I())},styles:[".mat-mdc-chip-set{display:flex}.mat-mdc-chip-set:focus{outline:none}.mat-mdc-chip-set .mdc-evolution-chip-set__chips{min-width:100%;margin-left:-8px;margin-right:0}.mat-mdc-chip-set .mdc-evolution-chip{margin:4px 0 4px 8px}[dir=rtl] .mat-mdc-chip-set .mdc-evolution-chip-set__chips{margin-left:0;margin-right:-8px}[dir=rtl] .mat-mdc-chip-set .mdc-evolution-chip{margin-left:0;margin-right:8px}.mdc-evolution-chip-set__chips{display:flex;flex-flow:wrap;min-width:0}.mat-mdc-chip-set-stacked{flex-direction:column;align-items:flex-start}.mat-mdc-chip-set-stacked .mat-mdc-chip{width:100%}.mat-mdc-chip-set-stacked .mdc-evolution-chip__graphic{flex-grow:0}.mat-mdc-chip-set-stacked .mdc-evolution-chip__action--primary{flex-basis:100%;justify-content:start}input.mat-mdc-chip-input{flex:1 0 150px;margin-left:8px}[dir=rtl] input.mat-mdc-chip-input{margin-left:0;margin-right:8px}"],encapsulation:2,changeDetection:0})}}return i})();var Xd=class{constructor(n,e){this.source=n,this.value=e}},sU=(()=>{class i extends UD{get disabled(){return this.ngControl?!!this.ngControl.disabled:this._disabled}set disabled(e){this._disabled=e,this._syncChipsState()}get id(){return this._chipInput.id}get empty(){return(!this._chipInput||this._chipInput.empty)&&(!this._chips||this._chips.length===0)}get placeholder(){return this._chipInput?this._chipInput.placeholder:this._placeholder}set placeholder(e){this._placeholder=e,this.stateChanges.next()}get focused(){return this._chipInput.focused||this._hasFocusedChip()}get required(){return this._required??this.ngControl?.control?.hasValidator(Ui.required)??!1}set required(e){this._required=e,this.stateChanges.next()}get shouldLabelFloat(){return!this.empty||this.focused}get value(){return this._value}set value(e){this._value=e}get errorStateMatcher(){return this._errorStateTracker.matcher}set errorStateMatcher(e){this._errorStateTracker.matcher=e}get chipBlurChanges(){return this._getChipStream(e=>e._onBlur)}get errorState(){return this._errorStateTracker.errorState}set errorState(e){this._errorStateTracker.errorState=e}constructor(e,t,r,o,a,s,c){super(e,t,r),this.ngControl=c,this.controlType="mat-chip-grid",this._defaultRole="grid",this._ariaDescribedbyIds=[],this._onTouched=()=>{},this._onChange=()=>{},this._value=[],this.change=new z,this.valueChange=new z,this._chips=void 0,this.stateChanges=new R,this.ngControl&&(this.ngControl.valueAccessor=this),this._errorStateTracker=new ln(s,c,a,o,this.stateChanges)}ngAfterContentInit(){this.chipBlurChanges.pipe($(this._destroyed)).subscribe(()=>{this._blur(),this.stateChanges.next()}),Fe(this.chipFocusChanges,this._chips.changes).pipe($(this._destroyed)).subscribe(()=>this.stateChanges.next())}ngAfterViewInit(){super.ngAfterViewInit(),this._chipInput}ngDoCheck(){this.ngControl&&this.updateErrorState()}ngOnDestroy(){super.ngOnDestroy(),this.stateChanges.complete()}registerInput(e){this._chipInput=e,this._chipInput.setDescribedByIds(this._ariaDescribedbyIds)}onContainerClick(e){!this.disabled&&!this._originatesFromChip(e)&&this.focus()}focus(){if(!(this.disabled||this._chipInput.focused)){if(!this._chips.length||this._chips.first.disabled)Promise.resolve().then(()=>this._chipInput.focus());else{let e=this._keyManager.activeItem;e?e.focus():this._keyManager.setFirstItemActive()}this.stateChanges.next()}}setDescribedByIds(e){this._ariaDescribedbyIds=e,this._chipInput?.setDescribedByIds(e)}writeValue(e){this._value=e}registerOnChange(e){this._onChange=e}registerOnTouched(e){this._onTouched=e}setDisabledState(e){this.disabled=e,this.stateChanges.next()}updateErrorState(){this._errorStateTracker.updateErrorState()}_blur(){this.disabled||setTimeout(()=>{this.focused||(this._propagateChanges(),this._markAsTouched())})}_allowFocusEscape(){this._chipInput.focused||super._allowFocusEscape()}_handleKeydown(e){let t=e.keyCode,r=this._keyManager.activeItem;if(t===9)this._chipInput.focused&&Le(e,"shiftKey")&&this._chips.length&&!this._chips.last.disabled?(e.preventDefault(),r?this._keyManager.setActiveItem(r):this._focusLastChip()):super._allowFocusEscape();else if(!this._chipInput.focused)if((t===38||t===40)&&r){let o=this._chipActions.filter(c=>c._isPrimary===r._isPrimary&&!this._skipPredicate(c)),a=o.indexOf(r),s=e.keyCode===38?-1:1;e.preventDefault(),a>-1&&this._isValidIndex(a+s)&&this._keyManager.setActiveItem(o[a+s])}else super._handleKeydown(e);this.stateChanges.next()}_focusLastChip(){this._chips.length&&this._chips.last.focus()}_propagateChanges(){let e=this._chips.length?this._chips.toArray().map(t=>t.value):[];this._value=e,this.change.emit(new Xd(this,e)),this.valueChange.emit(e),this._onChange(e),this._changeDetectorRef.markForCheck()}_markAsTouched(){this._onTouched(),this._changeDetectorRef.markForCheck(),this.stateChanges.next()}static{this.\u0275fac=function(t){return new(t||i)(u(E),u(pe),u(Re,8),u(_n,8),u(yn,8),u(dn),u(ai,10))}}static{this.\u0275cmp=H({type:i,selectors:[["mat-chip-grid"]],contentQueries:function(t,r,o){if(t&1&&he(o,QD,5),t&2){let a;S(a=T())&&(r._chips=a)}},hostAttrs:[1,"mat-mdc-chip-set","mat-mdc-chip-grid","mdc-evolution-chip-set"],hostVars:10,hostBindings:function(t,r){t&1&&ee("focus",function(){return r.focus()})("blur",function(){return r._blur()}),t&2&&(W("role",r.role)("tabindex",r.disabled||r._chips&&r._chips.length===0?-1:r.tabIndex)("aria-disabled",r.disabled.toString())("aria-invalid",r.errorState),P("mat-mdc-chip-list-disabled",r.disabled)("mat-mdc-chip-list-invalid",r.errorState)("mat-mdc-chip-list-required",r.required))},inputs:{disabled:[2,"disabled","disabled",O],placeholder:"placeholder",required:[2,"required","required",O],value:"value",errorStateMatcher:"errorStateMatcher"},outputs:{change:"change",valueChange:"valueChange"},standalone:!0,features:[de([{provide:Vn,useExisting:i}]),ae,ne,Q],ngContentSelectors:Mb,decls:2,vars:0,consts:[["role","presentation",1,"mdc-evolution-chip-set__chips"]],template:function(t,r){t&1&&(se(),w(0,"div",0),A(1),I())},styles:[zD],encapsulation:2,changeDetection:0})}}return i})(),qD=0,cU=(()=>{class i{get chipGrid(){return this._chipGrid}set chipGrid(e){e&&(this._chipGrid=e,this._chipGrid.registerInput(this))}get disabled(){return this._disabled||this._chipGrid&&this._chipGrid.disabled}set disabled(e){this._disabled=e}get empty(){return!this.inputElement.value}constructor(e,t,r){this._elementRef=e,this.focused=!1,this.addOnBlur=!1,this.chipEnd=new z,this.placeholder="",this.id=`mat-mdc-chip-list-input-${qD++}`,this._disabled=!1,this.inputElement=this._elementRef.nativeElement,this.separatorKeyCodes=t.separatorKeyCodes,r&&this.inputElement.classList.add("mat-mdc-form-field-input-control")}ngOnChanges(){this._chipGrid.stateChanges.next()}ngOnDestroy(){this.chipEnd.complete()}_keydown(e){this.empty&&e.keyCode===8?(e.repeat||this._chipGrid._focusLastChip(),e.preventDefault()):this._emitChipEnd(e)}_blur(){this.addOnBlur&&this._emitChipEnd(),this.focused=!1,this._chipGrid.focused||this._chipGrid._blur(),this._chipGrid.stateChanges.next()}_focus(){this.focused=!0,this._chipGrid.stateChanges.next()}_emitChipEnd(e){(!e||this._isSeparatorKey(e))&&(this.chipEnd.emit({input:this.inputElement,value:this.inputElement.value,chipInput:this}),e?.preventDefault())}_onInput(){this._chipGrid.stateChanges.next()}focus(){this.inputElement.focus()}clear(){this.inputElement.value=""}setDescribedByIds(e){let t=this._elementRef.nativeElement;e.length?t.setAttribute("aria-describedby",e.join(" ")):t.removeAttribute("aria-describedby")}_isSeparatorKey(e){return!Le(e)&&new Set(this.separatorKeyCodes).has(e.keyCode)}static{this.\u0275fac=function(t){return new(t||i)(u(E),u(Ab),u(Ri,8))}}static{this.\u0275dir=D({type:i,selectors:[["input","matChipInputFor",""]],hostAttrs:[1,"mat-mdc-chip-input","mat-mdc-input-element","mdc-text-field__input","mat-input-element"],hostVars:6,hostBindings:function(t,r){t&1&&ee("keydown",function(a){return r._keydown(a)})("blur",function(){return r._blur()})("focus",function(){return r._focus()})("input",function(){return r._onInput()}),t&2&&(St("id",r.id),W("disabled",r.disabled||null)("placeholder",r.placeholder||null)("aria-invalid",r._chipGrid&&r._chipGrid.ngControl?r._chipGrid.ngControl.invalid:null)("aria-required",r._chipGrid&&r._chipGrid.required||null)("required",r._chipGrid&&r._chipGrid.required||null))},inputs:{chipGrid:[0,"matChipInputFor","chipGrid"],addOnBlur:[2,"matChipInputAddOnBlur","addOnBlur",O],separatorKeyCodes:[0,"matChipInputSeparatorKeyCodes","separatorKeyCodes"],placeholder:"placeholder",id:"id",disabled:[2,"disabled","disabled",O]},outputs:{chipEnd:"matChipInputTokenEnd"},exportAs:["matChipInput","matChipInputFor"],standalone:!0,features:[ae,Pe]})}}return i})();var Ob=(()=>{class i{static{this.\u0275fac=function(t){return new(t||i)}}static{this.\u0275mod=j({type:i})}static{this.\u0275inj=L({providers:[dn,{provide:Ab,useValue:{separatorKeyCodes:[13]}}],imports:[K,jn,K]})}}return i})();var WD=["mat-menu-item",""],GD=[[["mat-icon"],["","matMenuItemIcon",""]],"*"],$D=["mat-icon, [matMenuItemIcon]","*"];function YD(i,n){i&1&&(Wt(),w(0,"svg",2),ie(1,"polygon",3),I())}var KD=["*"];function XD(i,n){if(i&1){let e=Ge();w(0,"div",0),ee("keydown",function(r){ce(e);let o=fe();return le(o._handleKeydown(r))})("click",function(){ce(e);let r=fe();return le(r.closed.emit("click"))})("@transformMenu.start",function(r){ce(e);let o=fe();return le(o._onAnimationStart(r))})("@transformMenu.done",function(r){ce(e);let o=fe();return le(o._onAnimationDone(r))}),w(1,"div",1),A(2),I()()}if(i&2){let e=fe();qe(e._classList),ue("id",e.panelId)("@transformMenu",e._panelAnimationState),W("aria-label",e.ariaLabel||null)("aria-labelledby",e.ariaLabelledby||null)("aria-describedby",e.ariaDescribedby||null)}}var eu=new C("MAT_MENU_PANEL"),Jd=(()=>{class i{constructor(e,t,r,o,a){this._elementRef=e,this._document=t,this._focusMonitor=r,this._parentMenu=o,this._changeDetectorRef=a,this.role="menuitem",this.disabled=!1,this.disableRipple=!1,this._hovered=new R,this._focused=new R,this._highlighted=!1,this._triggersSubmenu=!1,o?.addItem?.(this)}focus(e,t){this._focusMonitor&&e?this._focusMonitor.focusVia(this._getHostElement(),e,t):this._getHostElement().focus(t),this._focused.next(this)}ngAfterViewInit(){this._focusMonitor&&this._focusMonitor.monitor(this._elementRef,!1)}ngOnDestroy(){this._focusMonitor&&this._focusMonitor.stopMonitoring(this._elementRef),this._parentMenu&&this._parentMenu.removeItem&&this._parentMenu.removeItem(this),this._hovered.complete(),this._focused.complete()}_getTabIndex(){return this.disabled?"-1":"0"}_getHostElement(){return this._elementRef.nativeElement}_checkDisabled(e){this.disabled&&(e.preventDefault(),e.stopPropagation())}_handleMouseEnter(){this._hovered.next(this)}getLabel(){let e=this._elementRef.nativeElement.cloneNode(!0),t=e.querySelectorAll("mat-icon, .material-icons");for(let r=0;r enter",Xe("120ms cubic-bezier(0, 0, 0.2, 1)",Oe({opacity:1,transform:"scale(1)"}))),Ze("* => void",Xe("100ms 25ms linear",Oe({opacity:0})))]),fadeInItems:gt("fadeInItems",[nt("showing",Oe({opacity:1})),Ze("void => *",[Oe({opacity:0}),Xe("400ms 100ms cubic-bezier(0.55, 0, 0.55, 0.2)")])])},PU=qs.fadeInItems,NU=qs.transformMenu,JD=0,eE=new C("mat-menu-default-options",{providedIn:"root",factory:tE});function tE(){return{overlapTrigger:!1,xPosition:"after",yPosition:"below",backdropClass:"cdk-overlay-transparent-backdrop"}}var Us=(()=>{class i{get xPosition(){return this._xPosition}set xPosition(e){this._xPosition=e,this.setPositionClasses()}get yPosition(){return this._yPosition}set yPosition(e){this._yPosition=e,this.setPositionClasses()}set panelClass(e){let t=this._previousPanelClass,r=N({},this._classList);t&&t.length&&t.split(" ").forEach(o=>{r[o]=!1}),this._previousPanelClass=e,e&&e.length&&(e.split(" ").forEach(o=>{r[o]=!0}),this._elementRef.nativeElement.className=""),this._classList=r}get classList(){return this.panelClass}set classList(e){this.panelClass=e}constructor(e,t,r,o){this._elementRef=e,this._changeDetectorRef=o,this._elevationPrefix="mat-elevation-z",this._baseElevation=null,this._directDescendantItems=new Gt,this._classList={},this._panelAnimationState="void",this._animationDone=new R,this.closed=new z,this.close=this.closed,this.panelId=`mat-menu-panel-${JD++}`,this._injector=F(Ee),this.overlayPanelClass=r.overlayPanelClass||"",this._xPosition=r.xPosition,this._yPosition=r.yPosition,this.backdropClass=r.backdropClass,this.overlapTrigger=r.overlapTrigger,this.hasBackdrop=r.hasBackdrop}ngOnInit(){this.setPositionClasses()}ngAfterContentInit(){this._updateDirectDescendants(),this._keyManager=new an(this._directDescendantItems).withWrap().withTypeAhead().withHomeAndEnd(),this._keyManager.tabOut.subscribe(()=>this.closed.emit("tab")),this._directDescendantItems.changes.pipe(Me(this._directDescendantItems),st(e=>Fe(...e.map(t=>t._focused)))).subscribe(e=>this._keyManager.updateActiveItem(e)),this._directDescendantItems.changes.subscribe(e=>{let t=this._keyManager;if(this._panelAnimationState==="enter"&&t.activeItem?._hasFocus()){let r=e.toArray(),o=Math.max(0,Math.min(r.length-1,t.activeItemIndex||0));r[o]&&!r[o].disabled?t.setActiveItem(o):t.setNextItemActive()}})}ngOnDestroy(){this._keyManager?.destroy(),this._directDescendantItems.destroy(),this.closed.complete(),this._firstItemFocusRef?.destroy()}_hovered(){return this._directDescendantItems.changes.pipe(Me(this._directDescendantItems),st(t=>Fe(...t.map(r=>r._hovered))))}addItem(e){}removeItem(e){}_handleKeydown(e){let t=e.keyCode,r=this._keyManager;switch(t){case 27:Le(e)||(e.preventDefault(),this.closed.emit("keydown"));break;case 37:this.parentMenu&&this.direction==="ltr"&&this.closed.emit("keydown");break;case 39:this.parentMenu&&this.direction==="rtl"&&this.closed.emit("keydown");break;default:(t===38||t===40)&&r.setFocusOrigin("keyboard"),r.onKeydown(e);return}e.stopPropagation()}focusFirstItem(e="program"){this._firstItemFocusRef?.destroy(),this._firstItemFocusRef=tt(()=>{let t=null;if(this._directDescendantItems.length&&(t=this._directDescendantItems.first._getHostElement().closest('[role="menu"]')),!t||!t.contains(document.activeElement)){let r=this._keyManager;r.setFocusOrigin(e).setFirstItemActive(),!r.activeItem&&t&&t.focus()}},{injector:this._injector})}resetActiveItem(){this._keyManager.setActiveItem(-1)}setElevation(e){if(this._baseElevation===null){let s=(typeof getComputedStyle=="function"?getComputedStyle(this._elementRef.nativeElement):null)?.getPropertyValue("--mat-menu-base-elevation-level")||"8";this._baseElevation=parseInt(s)}let t=Math.min(this._baseElevation+e,24),r=`${this._elevationPrefix}${t}`,o=Object.keys(this._classList).find(a=>a.startsWith(this._elevationPrefix));if(!o||o===this._previousElevation){let a=N({},this._classList);this._previousElevation&&(a[this._previousElevation]=!1),a[r]=!0,this._previousElevation=r,this._classList=a}}setPositionClasses(e=this.xPosition,t=this.yPosition){this._classList=Qe(N({},this._classList),{"mat-menu-before":e==="before","mat-menu-after":e==="after","mat-menu-above":t==="above","mat-menu-below":t==="below"}),this._changeDetectorRef?.markForCheck()}_startAnimation(){this._panelAnimationState="enter"}_resetAnimation(){this._panelAnimationState="void"}_onAnimationDone(e){this._animationDone.next(e),this._isAnimating=!1}_onAnimationStart(e){this._isAnimating=!0,e.toState==="enter"&&this._keyManager.activeItemIndex===0&&(e.element.scrollTop=0)}_updateDirectDescendants(){this._allItems.changes.pipe(Me(this._allItems)).subscribe(e=>{this._directDescendantItems.reset(e.filter(t=>t._parentMenu===this)),this._directDescendantItems.notifyOnChanges()})}static{this.\u0275fac=function(t){return new(t||i)(u(E),u(B),u(eE),u(pe))}}static{this.\u0275cmp=H({type:i,selectors:[["mat-menu"]],contentQueries:function(t,r,o){if(t&1&&(he(o,ZD,5),he(o,Jd,5),he(o,Jd,4)),t&2){let a;S(a=T())&&(r.lazyContent=a.first),S(a=T())&&(r._allItems=a),S(a=T())&&(r.items=a)}},viewQuery:function(t,r){if(t&1&&re(Ae,5),t&2){let o;S(o=T())&&(r.templateRef=o.first)}},hostVars:3,hostBindings:function(t,r){t&2&&W("aria-label",null)("aria-labelledby",null)("aria-describedby",null)},inputs:{backdropClass:"backdropClass",ariaLabel:[0,"aria-label","ariaLabel"],ariaLabelledby:[0,"aria-labelledby","ariaLabelledby"],ariaDescribedby:[0,"aria-describedby","ariaDescribedby"],xPosition:"xPosition",yPosition:"yPosition",overlapTrigger:[2,"overlapTrigger","overlapTrigger",O],hasBackdrop:[2,"hasBackdrop","hasBackdrop",e=>e==null?null:O(e)],panelClass:[0,"class","panelClass"],classList:"classList"},outputs:{closed:"closed",close:"close"},exportAs:["matMenu"],standalone:!0,features:[de([{provide:eu,useExisting:i}]),ae,Q],ngContentSelectors:KD,decls:1,vars:0,consts:[["tabindex","-1","role","menu",1,"mat-mdc-menu-panel","mat-mdc-elevation-specific",3,"keydown","click","id"],[1,"mat-mdc-menu-content"]],template:function(t,r){t&1&&(se(),te(0,XD,3,7,"ng-template"))},styles:['mat-menu{display:none}.mat-mdc-menu-content{margin:0;padding:8px 0;outline:0}.mat-mdc-menu-content,.mat-mdc-menu-content .mat-mdc-menu-item .mat-mdc-menu-item-text{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;flex:1;white-space:normal;font-family:var(--mat-menu-item-label-text-font, var(--mat-app-label-large-font));line-height:var(--mat-menu-item-label-text-line-height, var(--mat-app-label-large-line-height));font-size:var(--mat-menu-item-label-text-size, var(--mat-app-label-large-size));letter-spacing:var(--mat-menu-item-label-text-tracking, var(--mat-app-label-large-tracking));font-weight:var(--mat-menu-item-label-text-weight, var(--mat-app-label-large-weight))}.mat-mdc-menu-panel{min-width:112px;max-width:280px;overflow:auto;-webkit-overflow-scrolling:touch;box-sizing:border-box;outline:0;border-radius:var(--mat-menu-container-shape, var(--mat-app-corner-extra-small));background-color:var(--mat-menu-container-color, var(--mat-app-surface-container));will-change:transform,opacity}.mat-mdc-menu-panel.ng-animating{pointer-events:none}.mat-mdc-menu-panel.ng-animating:has(.mat-mdc-menu-content:empty){display:none}.cdk-high-contrast-active .mat-mdc-menu-panel{outline:solid 1px}.mat-mdc-menu-panel .mat-divider{color:var(--mat-menu-divider-color, var(--mat-app-surface-variant));margin-bottom:var(--mat-menu-divider-bottom-spacing);margin-top:var(--mat-menu-divider-top-spacing)}.mat-mdc-menu-item{display:flex;position:relative;align-items:center;justify-content:flex-start;overflow:hidden;padding:0;padding-left:var(--mat-menu-item-leading-spacing);padding-right:var(--mat-menu-item-trailing-spacing);-webkit-user-select:none;user-select:none;cursor:pointer;outline:none;border:none;-webkit-tap-highlight-color:rgba(0,0,0,0);cursor:pointer;width:100%;text-align:left;box-sizing:border-box;color:inherit;font-size:inherit;background:none;text-decoration:none;margin:0;min-height:48px}[dir=rtl] .mat-mdc-menu-item{padding-right:var(--mat-menu-item-leading-spacing);padding-left:var(--mat-menu-item-trailing-spacing)}.mat-mdc-menu-item:has(.material-icons,mat-icon,[matButtonIcon]){padding-left:var(--mat-menu-item-with-icon-leading-spacing);padding-right:var(--mat-menu-item-with-icon-trailing-spacing)}[dir=rtl] .mat-mdc-menu-item:has(.material-icons,mat-icon,[matButtonIcon]){padding-right:var(--mat-menu-item-with-icon-leading-spacing);padding-left:var(--mat-menu-item-with-icon-trailing-spacing)}.mat-mdc-menu-item::-moz-focus-inner{border:0}.mat-mdc-menu-item,.mat-mdc-menu-item:visited,.mat-mdc-menu-item:link{color:var(--mat-menu-item-label-text-color, var(--mat-app-on-surface))}.mat-mdc-menu-item .mat-icon-no-color,.mat-mdc-menu-item .mat-mdc-menu-submenu-icon{color:var(--mat-menu-item-icon-color, var(--mat-app-on-surface-variant))}.mat-mdc-menu-item[disabled]{cursor:default;opacity:.38}.mat-mdc-menu-item[disabled]::after{display:block;position:absolute;content:"";top:0;left:0;bottom:0;right:0}.mat-mdc-menu-item:focus{outline:0}.mat-mdc-menu-item .mat-icon{flex-shrink:0;margin-right:var(--mat-menu-item-spacing);height:var(--mat-menu-item-icon-size);width:var(--mat-menu-item-icon-size)}[dir=rtl] .mat-mdc-menu-item{text-align:right}[dir=rtl] .mat-mdc-menu-item .mat-icon{margin-right:0;margin-left:var(--mat-menu-item-spacing)}.mat-mdc-menu-item:not([disabled]):hover{background-color:var(--mat-menu-item-hover-state-layer-color)}.mat-mdc-menu-item:not([disabled]).cdk-program-focused,.mat-mdc-menu-item:not([disabled]).cdk-keyboard-focused,.mat-mdc-menu-item:not([disabled]).mat-mdc-menu-item-highlighted{background-color:var(--mat-menu-item-focus-state-layer-color)}.cdk-high-contrast-active .mat-mdc-menu-item{margin-top:1px}.mat-mdc-menu-submenu-icon{width:var(--mat-menu-item-icon-size);height:10px;fill:currentColor;padding-left:var(--mat-menu-item-spacing)}[dir=rtl] .mat-mdc-menu-submenu-icon{padding-right:var(--mat-menu-item-spacing);padding-left:0}[dir=rtl] .mat-mdc-menu-submenu-icon polygon{transform:scaleX(-1);transform-origin:center}.cdk-high-contrast-active .mat-mdc-menu-submenu-icon{fill:CanvasText}.mat-mdc-menu-item .mat-mdc-menu-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}'],encapsulation:2,data:{animation:[qs.transformMenu,qs.fadeInItems]},changeDetection:0})}}return i})(),Fb=new C("mat-menu-scroll-strategy",{providedIn:"root",factory:()=>{let i=F(je);return()=>i.scrollStrategies.reposition()}});function iE(i){return()=>i.scrollStrategies.reposition()}var nE={provide:Fb,deps:[je],useFactory:iE},Rb=Bt({passive:!0});var LU=(()=>{class i{get _deprecatedMatMenuTriggerFor(){return this.menu}set _deprecatedMatMenuTriggerFor(e){this.menu=e}get menu(){return this._menu}set menu(e){e!==this._menu&&(this._menu=e,this._menuCloseSubscription.unsubscribe(),e&&(this._parentMaterialMenu,this._menuCloseSubscription=e.close.subscribe(t=>{this._destroyMenu(t),(t==="click"||t==="tab")&&this._parentMaterialMenu&&this._parentMaterialMenu.closed.emit(t)})),this._menuItemInstance?._setTriggersSubmenu(this.triggersSubmenu()))}constructor(e,t,r,o,a,s,c,l,d){this._overlay=e,this._element=t,this._viewContainerRef=r,this._menuItemInstance=s,this._dir=c,this._focusMonitor=l,this._ngZone=d,this._overlayRef=null,this._menuOpen=!1,this._closingActionsSubscription=Te.EMPTY,this._hoverSubscription=Te.EMPTY,this._menuCloseSubscription=Te.EMPTY,this._changeDetectorRef=F(pe),this._handleTouchStart=h=>{Po(h)||(this._openedBy="touch")},this._openedBy=void 0,this.restoreFocus=!0,this.menuOpened=new z,this.onMenuOpen=this.menuOpened,this.menuClosed=new z,this.onMenuClose=this.menuClosed,this._scrollStrategy=o,this._parentMaterialMenu=a instanceof Us?a:void 0,t.nativeElement.addEventListener("touchstart",this._handleTouchStart,Rb)}ngAfterContentInit(){this._handleHover()}ngOnDestroy(){this._overlayRef&&(this._overlayRef.dispose(),this._overlayRef=null),this._element.nativeElement.removeEventListener("touchstart",this._handleTouchStart,Rb),this._menuCloseSubscription.unsubscribe(),this._closingActionsSubscription.unsubscribe(),this._hoverSubscription.unsubscribe()}get menuOpen(){return this._menuOpen}get dir(){return this._dir&&this._dir.value==="rtl"?"rtl":"ltr"}triggersSubmenu(){return!!(this._menuItemInstance&&this._parentMaterialMenu&&this.menu)}toggleMenu(){return this._menuOpen?this.closeMenu():this.openMenu()}openMenu(){let e=this.menu;if(this._menuOpen||!e)return;let t=this._createOverlay(e),r=t.getConfig(),o=r.positionStrategy;this._setPosition(e,o),r.hasBackdrop=e.hasBackdrop==null?!this.triggersSubmenu():e.hasBackdrop,t.attach(this._getPortal(e)),e.lazyContent&&e.lazyContent.attach(this.menuData),this._closingActionsSubscription=this._menuClosingActions().subscribe(()=>this.closeMenu()),this._initMenu(e),e instanceof Us&&(e._startAnimation(),e._directDescendantItems.changes.pipe($(e.close)).subscribe(()=>{o.withLockedPosition(!1).reapplyLastPosition(),o.withLockedPosition(!0)}))}closeMenu(){this.menu?.close.emit()}focus(e,t){this._focusMonitor&&e?this._focusMonitor.focusVia(this._element,e,t):this._element.nativeElement.focus(t)}updatePosition(){this._overlayRef?.updatePosition()}_destroyMenu(e){if(!this._overlayRef||!this.menuOpen)return;let t=this.menu;this._closingActionsSubscription.unsubscribe(),this._overlayRef.detach(),this.restoreFocus&&(e==="keydown"||!this._openedBy||!this.triggersSubmenu())&&this.focus(this._openedBy),this._openedBy=void 0,t instanceof Us?(t._resetAnimation(),t.lazyContent?t._animationDone.pipe(ye(r=>r.toState==="void"),Ye(1),$(t.lazyContent._attached)).subscribe({next:()=>t.lazyContent.detach(),complete:()=>this._setIsMenuOpen(!1)}):this._setIsMenuOpen(!1)):(this._setIsMenuOpen(!1),t?.lazyContent?.detach())}_initMenu(e){e.parentMenu=this.triggersSubmenu()?this._parentMaterialMenu:void 0,e.direction=this.dir,this._setMenuElevation(e),e.focusFirstItem(this._openedBy||"program"),this._setIsMenuOpen(!0)}_setMenuElevation(e){if(e.setElevation){let t=0,r=e.parentMenu;for(;r;)t++,r=r.parentMenu;e.setElevation(t)}}_setIsMenuOpen(e){e!==this._menuOpen&&(this._menuOpen=e,this._menuOpen?this.menuOpened.emit():this.menuClosed.emit(),this.triggersSubmenu()&&this._menuItemInstance._setHighlighted(e),this._changeDetectorRef.markForCheck())}_createOverlay(e){if(!this._overlayRef){let t=this._getOverlayConfig(e);this._subscribeToPositions(e,t.positionStrategy),this._overlayRef=this._overlay.create(t),this._overlayRef.keydownEvents().subscribe()}return this._overlayRef}_getOverlayConfig(e){return new Ci({positionStrategy:this._overlay.position().flexibleConnectedTo(this._element).withLockedPosition().withGrowAfterOpen().withTransformOriginOn(".mat-menu-panel, .mat-mdc-menu-panel"),backdropClass:e.backdropClass||"cdk-overlay-transparent-backdrop",panelClass:e.overlayPanelClass,scrollStrategy:this._scrollStrategy(),direction:this._dir})}_subscribeToPositions(e,t){e.setPositionClasses&&t.positionChanges.subscribe(r=>{let o=r.connectionPair.overlayX==="start"?"after":"before",a=r.connectionPair.overlayY==="top"?"below":"above";this._ngZone?this._ngZone.run(()=>e.setPositionClasses(o,a)):e.setPositionClasses(o,a)})}_setPosition(e,t){let[r,o]=e.xPosition==="before"?["end","start"]:["start","end"],[a,s]=e.yPosition==="above"?["bottom","top"]:["top","bottom"],[c,l]=[a,s],[d,h]=[r,o],m=0;if(this.triggersSubmenu()){if(h=r=e.xPosition==="before"?"start":"end",o=d=r==="end"?"start":"end",this._parentMaterialMenu){if(this._parentInnerPadding==null){let p=this._parentMaterialMenu.items.first;this._parentInnerPadding=p?p._getHostElement().offsetTop:0}m=a==="bottom"?this._parentInnerPadding:-this._parentInnerPadding}}else e.overlapTrigger||(c=a==="top"?"bottom":"top",l=s==="top"?"bottom":"top");t.withPositions([{originX:r,originY:c,overlayX:d,overlayY:a,offsetY:m},{originX:o,originY:c,overlayX:h,overlayY:a,offsetY:m},{originX:r,originY:l,overlayX:d,overlayY:s,offsetY:-m},{originX:o,originY:l,overlayX:h,overlayY:s,offsetY:-m}])}_menuClosingActions(){let e=this._overlayRef.backdropClick(),t=this._overlayRef.detachments(),r=this._parentMaterialMenu?this._parentMaterialMenu.closed:He(),o=this._parentMaterialMenu?this._parentMaterialMenu._hovered().pipe(ye(a=>a!==this._menuItemInstance),ye(()=>this._menuOpen)):He();return Fe(e,r,o,t)}_handleMousedown(e){Fo(e)||(this._openedBy=e.button===0?"mouse":void 0,this.triggersSubmenu()&&e.preventDefault())}_handleKeydown(e){let t=e.keyCode;(t===13||t===32)&&(this._openedBy="keyboard"),this.triggersSubmenu()&&(t===39&&this.dir==="ltr"||t===37&&this.dir==="rtl")&&(this._openedBy="keyboard",this.openMenu())}_handleClick(e){this.triggersSubmenu()?(e.stopPropagation(),this.openMenu()):this.toggleMenu()}_handleHover(){!this.triggersSubmenu()||!this._parentMaterialMenu||(this._hoverSubscription=this._parentMaterialMenu._hovered().pipe(ye(e=>e===this._menuItemInstance&&!e.disabled),Ur(0,Xo)).subscribe(()=>{this._openedBy="mouse",this.menu instanceof Us&&this.menu._isAnimating?this.menu._animationDone.pipe(Ye(1),Ur(0,Xo),$(this._parentMaterialMenu._hovered())).subscribe(()=>this.openMenu()):this.openMenu()}))}_getPortal(e){return(!this._portal||this._portal.templateRef!==e.templateRef)&&(this._portal=new Et(e.templateRef,this._viewContainerRef)),this._portal}static{this.\u0275fac=function(t){return new(t||i)(u(je),u(E),u(Ue),u(Fb),u(eu,8),u(Jd,10),u(Re,8),u(ot),u(B))}}static{this.\u0275dir=D({type:i,selectors:[["","mat-menu-trigger-for",""],["","matMenuTriggerFor",""]],hostAttrs:[1,"mat-mdc-menu-trigger"],hostVars:3,hostBindings:function(t,r){t&1&&ee("click",function(a){return r._handleClick(a)})("mousedown",function(a){return r._handleMousedown(a)})("keydown",function(a){return r._handleKeydown(a)}),t&2&&W("aria-haspopup",r.menu?"menu":null)("aria-expanded",r.menuOpen)("aria-controls",r.menuOpen?r.menu.panelId:null)},inputs:{_deprecatedMatMenuTriggerFor:[0,"mat-menu-trigger-for","_deprecatedMatMenuTriggerFor"],menu:[0,"matMenuTriggerFor","menu"],menuData:[0,"matMenuTriggerData","menuData"],restoreFocus:[0,"matMenuTriggerRestoreFocus","restoreFocus"]},outputs:{menuOpened:"menuOpened",onMenuOpen:"onMenuOpen",menuClosed:"menuClosed",onMenuClose:"onMenuClose"},exportAs:["matMenuTrigger"],standalone:!0})}}return i})(),Pb=(()=>{class i{static{this.\u0275fac=function(t){return new(t||i)}}static{this.\u0275mod=j({type:i})}static{this.\u0275inj=L({providers:[nE],imports:[yt,jn,K,ii,Ut,K]})}}return i})();var rE=["determinateSpinner"];function oE(i,n){if(i&1&&(Wt(),w(0,"svg",11),ie(1,"circle",12),I()),i&2){let e=fe();W("viewBox",e._viewBox()),V(),ft("stroke-dasharray",e._strokeCircumference(),"px")("stroke-dashoffset",e._strokeCircumference()/2,"px")("stroke-width",e._circleStrokeWidth(),"%"),W("r",e._circleRadius())}}var aE=new C("mat-progress-spinner-default-options",{providedIn:"root",factory:sE});function sE(){return{diameter:Nb}}var Nb=100,cE=10,XU=(()=>{class i{get color(){return this._color||this._defaultColor}set color(e){this._color=e}constructor(e,t,r){this._elementRef=e,this._defaultColor="primary",this._value=0,this._diameter=Nb,this._noopAnimations=t==="NoopAnimations"&&!!r&&!r._forceAnimations,this.mode=e.nativeElement.nodeName.toLowerCase()==="mat-spinner"?"indeterminate":"determinate",r&&(r.color&&(this.color=this._defaultColor=r.color),r.diameter&&(this.diameter=r.diameter),r.strokeWidth&&(this.strokeWidth=r.strokeWidth))}get value(){return this.mode==="determinate"?this._value:0}set value(e){this._value=Math.max(0,Math.min(100,e||0))}get diameter(){return this._diameter}set diameter(e){this._diameter=e||0}get strokeWidth(){return this._strokeWidth??this.diameter/10}set strokeWidth(e){this._strokeWidth=e||0}_circleRadius(){return(this.diameter-cE)/2}_viewBox(){let e=this._circleRadius()*2+this.strokeWidth;return`0 0 ${e} ${e}`}_strokeCircumference(){return 2*Math.PI*this._circleRadius()}_strokeDashOffset(){return this.mode==="determinate"?this._strokeCircumference()*(100-this._value)/100:null}_circleStrokeWidth(){return this.strokeWidth/this.diameter*100}static{this.\u0275fac=function(t){return new(t||i)(u(E),u(we,8),u(aE))}}static{this.\u0275cmp=H({type:i,selectors:[["mat-progress-spinner"],["mat-spinner"]],viewQuery:function(t,r){if(t&1&&re(rE,5),t&2){let o;S(o=T())&&(r._determinateCircle=o.first)}},hostAttrs:["role","progressbar","tabindex","-1",1,"mat-mdc-progress-spinner","mdc-circular-progress"],hostVars:18,hostBindings:function(t,r){t&2&&(W("aria-valuemin",0)("aria-valuemax",100)("aria-valuenow",r.mode==="determinate"?r.value:null)("mode",r.mode),qe("mat-"+r.color),ft("width",r.diameter,"px")("height",r.diameter,"px")("--mdc-circular-progress-size",r.diameter+"px")("--mdc-circular-progress-active-indicator-width",r.diameter+"px"),P("_mat-animation-noopable",r._noopAnimations)("mdc-circular-progress--indeterminate",r.mode==="indeterminate"))},inputs:{color:"color",mode:"mode",value:[2,"value","value",$e],diameter:[2,"diameter","diameter",$e],strokeWidth:[2,"strokeWidth","strokeWidth",$e]},exportAs:["matProgressSpinner"],standalone:!0,features:[ae,Q],decls:14,vars:11,consts:[["circle",""],["determinateSpinner",""],["aria-hidden","true",1,"mdc-circular-progress__determinate-container"],["xmlns","http://www.w3.org/2000/svg","focusable","false",1,"mdc-circular-progress__determinate-circle-graphic"],["cx","50%","cy","50%",1,"mdc-circular-progress__determinate-circle"],["aria-hidden","true",1,"mdc-circular-progress__indeterminate-container"],[1,"mdc-circular-progress__spinner-layer"],[1,"mdc-circular-progress__circle-clipper","mdc-circular-progress__circle-left"],[3,"ngTemplateOutlet"],[1,"mdc-circular-progress__gap-patch"],[1,"mdc-circular-progress__circle-clipper","mdc-circular-progress__circle-right"],["xmlns","http://www.w3.org/2000/svg","focusable","false",1,"mdc-circular-progress__indeterminate-circle-graphic"],["cx","50%","cy","50%"]],template:function(t,r){if(t&1&&(te(0,oE,2,8,"ng-template",null,0,oa),w(2,"div",2,1),Wt(),w(4,"svg",3),ie(5,"circle",4),I()(),ea(),w(6,"div",5)(7,"div",6)(8,"div",7),pt(9,8),I(),w(10,"div",9),pt(11,8),I(),w(12,"div",10),pt(13,8),I()()()),t&2){let o=$t(1);V(4),W("viewBox",r._viewBox()),V(),ft("stroke-dasharray",r._strokeCircumference(),"px")("stroke-dashoffset",r._strokeDashOffset(),"px")("stroke-width",r._circleStrokeWidth(),"%"),W("r",r._circleRadius()),V(4),ue("ngTemplateOutlet",o),V(2),ue("ngTemplateOutlet",o),V(2),ue("ngTemplateOutlet",o)}},dependencies:[ca],styles:[".mat-mdc-progress-spinner{display:block;overflow:hidden;line-height:0;position:relative;direction:ltr;transition:opacity 250ms cubic-bezier(0.4, 0, 0.6, 1)}.mat-mdc-progress-spinner circle{stroke-width:var(--mdc-circular-progress-active-indicator-width)}.mat-mdc-progress-spinner._mat-animation-noopable,.mat-mdc-progress-spinner._mat-animation-noopable .mdc-circular-progress__determinate-circle{transition:none !important}.mat-mdc-progress-spinner._mat-animation-noopable .mdc-circular-progress__indeterminate-circle-graphic,.mat-mdc-progress-spinner._mat-animation-noopable .mdc-circular-progress__spinner-layer,.mat-mdc-progress-spinner._mat-animation-noopable .mdc-circular-progress__indeterminate-container{animation:none !important}.mat-mdc-progress-spinner._mat-animation-noopable .mdc-circular-progress__indeterminate-container circle{stroke-dasharray:0 !important}.cdk-high-contrast-active .mat-mdc-progress-spinner .mdc-circular-progress__indeterminate-circle-graphic,.cdk-high-contrast-active .mat-mdc-progress-spinner .mdc-circular-progress__determinate-circle{stroke:currentColor;stroke:CanvasText}.mdc-circular-progress__determinate-container,.mdc-circular-progress__indeterminate-circle-graphic,.mdc-circular-progress__indeterminate-container,.mdc-circular-progress__spinner-layer{position:absolute;width:100%;height:100%}.mdc-circular-progress__determinate-container{transform:rotate(-90deg)}.mdc-circular-progress--indeterminate .mdc-circular-progress__determinate-container{opacity:0}.mdc-circular-progress__indeterminate-container{font-size:0;letter-spacing:0;white-space:nowrap;opacity:0}.mdc-circular-progress--indeterminate .mdc-circular-progress__indeterminate-container{opacity:1;animation:mdc-circular-progress-container-rotate 1568.2352941176ms linear infinite}.mdc-circular-progress__determinate-circle-graphic,.mdc-circular-progress__indeterminate-circle-graphic{fill:rgba(0,0,0,0)}.mat-mdc-progress-spinner .mdc-circular-progress__determinate-circle,.mat-mdc-progress-spinner .mdc-circular-progress__indeterminate-circle-graphic{stroke:var(--mdc-circular-progress-active-indicator-color, var(--mat-app-primary))}.cdk-high-contrast-active .mat-mdc-progress-spinner .mdc-circular-progress__determinate-circle,.cdk-high-contrast-active .mat-mdc-progress-spinner .mdc-circular-progress__indeterminate-circle-graphic{stroke:CanvasText}.mdc-circular-progress__determinate-circle{transition:stroke-dashoffset 500ms cubic-bezier(0, 0, 0.2, 1)}.mdc-circular-progress__gap-patch{position:absolute;top:0;left:47.5%;box-sizing:border-box;width:5%;height:100%;overflow:hidden}.mdc-circular-progress__gap-patch .mdc-circular-progress__indeterminate-circle-graphic{left:-900%;width:2000%;transform:rotate(180deg)}.mdc-circular-progress__circle-clipper .mdc-circular-progress__indeterminate-circle-graphic{width:200%}.mdc-circular-progress__circle-right .mdc-circular-progress__indeterminate-circle-graphic{left:-100%}.mdc-circular-progress--indeterminate .mdc-circular-progress__circle-left .mdc-circular-progress__indeterminate-circle-graphic{animation:mdc-circular-progress-left-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}.mdc-circular-progress--indeterminate .mdc-circular-progress__circle-right .mdc-circular-progress__indeterminate-circle-graphic{animation:mdc-circular-progress-right-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}.mdc-circular-progress__circle-clipper{display:inline-flex;position:relative;width:50%;height:100%;overflow:hidden}.mdc-circular-progress--indeterminate .mdc-circular-progress__spinner-layer{animation:mdc-circular-progress-spinner-layer-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}@keyframes mdc-circular-progress-container-rotate{to{transform:rotate(360deg)}}@keyframes mdc-circular-progress-spinner-layer-rotate{12.5%{transform:rotate(135deg)}25%{transform:rotate(270deg)}37.5%{transform:rotate(405deg)}50%{transform:rotate(540deg)}62.5%{transform:rotate(675deg)}75%{transform:rotate(810deg)}87.5%{transform:rotate(945deg)}100%{transform:rotate(1080deg)}}@keyframes mdc-circular-progress-left-spin{from{transform:rotate(265deg)}50%{transform:rotate(130deg)}to{transform:rotate(265deg)}}@keyframes mdc-circular-progress-right-spin{from{transform:rotate(-265deg)}50%{transform:rotate(-130deg)}to{transform:rotate(-265deg)}}"],encapsulation:2,changeDetection:0})}}return i})();var Lb=(()=>{class i{static{this.\u0275fac=function(t){return new(t||i)}}static{this.\u0275mod=j({type:i})}static{this.\u0275inj=L({imports:[yt,K]})}}return i})();var hE=[[["caption"]],[["colgroup"],["col"]],"*"],mE=["caption","colgroup, col","*"];function pE(i,n){i&1&&A(0,2)}function fE(i,n){i&1&&(w(0,"thead",0),pt(1,1),I(),w(2,"tbody",0),pt(3,2)(4,3),I(),w(5,"tfoot",0),pt(6,4),I())}function gE(i,n){i&1&&pt(0,1)(1,2)(2,3)(3,4)}var pi=new C("CDK_TABLE");var Xs=(()=>{class i{constructor(e){this.template=e}static{this.\u0275fac=function(t){return new(t||i)(u(Ae))}}static{this.\u0275dir=D({type:i,selectors:[["","cdkCellDef",""]],standalone:!0})}}return i})(),Zs=(()=>{class i{constructor(e){this.template=e}static{this.\u0275fac=function(t){return new(t||i)(u(Ae))}}static{this.\u0275dir=D({type:i,selectors:[["","cdkHeaderCellDef",""]],standalone:!0})}}return i})(),Bb=(()=>{class i{constructor(e){this.template=e}static{this.\u0275fac=function(t){return new(t||i)(u(Ae))}}static{this.\u0275dir=D({type:i,selectors:[["","cdkFooterCellDef",""]],standalone:!0})}}return i})(),Hr=(()=>{class i{get name(){return this._name}set name(e){this._setNameInput(e)}get sticky(){return this._sticky}set sticky(e){e!==this._sticky&&(this._sticky=e,this._hasStickyChanged=!0)}get stickyEnd(){return this._stickyEnd}set stickyEnd(e){e!==this._stickyEnd&&(this._stickyEnd=e,this._hasStickyChanged=!0)}constructor(e){this._table=e,this._hasStickyChanged=!1,this._sticky=!1,this._stickyEnd=!1}hasStickyChanged(){let e=this._hasStickyChanged;return this.resetStickyChanged(),e}resetStickyChanged(){this._hasStickyChanged=!1}_updateColumnCssClassName(){this._columnCssClassName=[`cdk-column-${this.cssClassFriendlyName}`]}_setNameInput(e){e&&(this._name=e,this.cssClassFriendlyName=e.replace(/[^a-z0-9_-]/gi,"-"),this._updateColumnCssClassName())}static{this.\u0275fac=function(t){return new(t||i)(u(pi,8))}}static{this.\u0275dir=D({type:i,selectors:[["","cdkColumnDef",""]],contentQueries:function(t,r,o){if(t&1&&(he(o,Xs,5),he(o,Zs,5),he(o,Bb,5)),t&2){let a;S(a=T())&&(r.cell=a.first),S(a=T())&&(r.headerCell=a.first),S(a=T())&&(r.footerCell=a.first)}},inputs:{name:[0,"cdkColumnDef","name"],sticky:[2,"sticky","sticky",O],stickyEnd:[2,"stickyEnd","stickyEnd",O]},standalone:!0,features:[de([{provide:"MAT_SORT_HEADER_COLUMN_DEF",useExisting:i}]),ae]})}}return i})(),Gs=class{constructor(n,e){e.nativeElement.classList.add(...n._columnCssClassName)}},zb=(()=>{class i extends Gs{constructor(e,t){super(e,t)}static{this.\u0275fac=function(t){return new(t||i)(u(Hr),u(E))}}static{this.\u0275dir=D({type:i,selectors:[["cdk-header-cell"],["th","cdk-header-cell",""]],hostAttrs:["role","columnheader",1,"cdk-header-cell"],standalone:!0,features:[ne]})}}return i})();var Hb=(()=>{class i extends Gs{constructor(e,t){super(e,t);let r=e._table?._getCellRole();r&&t.nativeElement.setAttribute("role",r)}static{this.\u0275fac=function(t){return new(t||i)(u(Hr),u(E))}}static{this.\u0275dir=D({type:i,selectors:[["cdk-cell"],["td","cdk-cell",""]],hostAttrs:[1,"cdk-cell"],standalone:!0,features:[ne]})}}return i})(),$s=class{constructor(){this.tasks=[],this.endTasks=[]}},Ys=new C("_COALESCED_STYLE_SCHEDULER"),iu=(()=>{class i{constructor(e){this._currentSchedule=null,this._ngZone=F(B)}schedule(e){this._createScheduleIfNeeded(),this._currentSchedule.tasks.push(e)}scheduleEnd(e){this._createScheduleIfNeeded(),this._currentSchedule.endTasks.push(e)}_createScheduleIfNeeded(){this._currentSchedule||(this._currentSchedule=new $s,this._ngZone.runOutsideAngular(()=>queueMicrotask(()=>{for(;this._currentSchedule.tasks.length||this._currentSchedule.endTasks.length;){let e=this._currentSchedule;this._currentSchedule=new $s;for(let t of e.tasks)t();for(let t of e.endTasks)t()}this._currentSchedule=null})))}static{this.\u0275fac=function(t){return new(t||i)(x(B))}}static{this.\u0275prov=Z({token:i,factory:i.\u0275fac})}}return i})();var nu=(()=>{class i{constructor(e,t){this.template=e,this._differs=t}ngOnChanges(e){if(!this._columnsDiffer){let t=e.columns&&e.columns.currentValue||[];this._columnsDiffer=this._differs.find(t).create(),this._columnsDiffer.diff(t)}}getColumnsDiff(){return this._columnsDiffer.diff(this.columns)}extractCellTemplate(e){return this instanceof Ko?e.headerCell.template:this instanceof ru?e.footerCell.template:e.cell.template}static{this.\u0275fac=function(t){return new(t||i)(u(Ae),u(bn))}}static{this.\u0275dir=D({type:i,features:[Pe]})}}return i})(),Ko=(()=>{class i extends nu{get sticky(){return this._sticky}set sticky(e){e!==this._sticky&&(this._sticky=e,this._hasStickyChanged=!0)}constructor(e,t,r){super(e,t),this._table=r,this._hasStickyChanged=!1,this._sticky=!1}ngOnChanges(e){super.ngOnChanges(e)}hasStickyChanged(){let e=this._hasStickyChanged;return this.resetStickyChanged(),e}resetStickyChanged(){this._hasStickyChanged=!1}static{this.\u0275fac=function(t){return new(t||i)(u(Ae),u(bn),u(pi,8))}}static{this.\u0275dir=D({type:i,selectors:[["","cdkHeaderRowDef",""]],inputs:{columns:[0,"cdkHeaderRowDef","columns"],sticky:[2,"cdkHeaderRowDefSticky","sticky",O]},standalone:!0,features:[ae,ne,Pe]})}}return i})(),ru=(()=>{class i extends nu{get sticky(){return this._sticky}set sticky(e){e!==this._sticky&&(this._sticky=e,this._hasStickyChanged=!0)}constructor(e,t,r){super(e,t),this._table=r,this._hasStickyChanged=!1,this._sticky=!1}ngOnChanges(e){super.ngOnChanges(e)}hasStickyChanged(){let e=this._hasStickyChanged;return this.resetStickyChanged(),e}resetStickyChanged(){this._hasStickyChanged=!1}static{this.\u0275fac=function(t){return new(t||i)(u(Ae),u(bn),u(pi,8))}}static{this.\u0275dir=D({type:i,selectors:[["","cdkFooterRowDef",""]],inputs:{columns:[0,"cdkFooterRowDef","columns"],sticky:[2,"cdkFooterRowDefSticky","sticky",O]},standalone:!0,features:[ae,ne,Pe]})}}return i})(),Js=(()=>{class i extends nu{constructor(e,t,r){super(e,t),this._table=r}static{this.\u0275fac=function(t){return new(t||i)(u(Ae),u(bn),u(pi,8))}}static{this.\u0275dir=D({type:i,selectors:[["","cdkRowDef",""]],inputs:{columns:[0,"cdkRowDefColumns","columns"],when:[0,"cdkRowDefWhen","when"]},standalone:!0,features:[ne]})}}return i})(),qn=(()=>{class i{static{this.mostRecentCellOutlet=null}constructor(e){this._viewContainer=e,i.mostRecentCellOutlet=this}ngOnDestroy(){i.mostRecentCellOutlet===this&&(i.mostRecentCellOutlet=null)}static{this.\u0275fac=function(t){return new(t||i)(u(Ue))}}static{this.\u0275dir=D({type:i,selectors:[["","cdkCellOutlet",""]],standalone:!0})}}return i})(),ou=(()=>{class i{static{this.\u0275fac=function(t){return new(t||i)}}static{this.\u0275cmp=H({type:i,selectors:[["cdk-header-row"],["tr","cdk-header-row",""]],hostAttrs:["role","row",1,"cdk-header-row"],standalone:!0,features:[Q],decls:1,vars:0,consts:[["cdkCellOutlet",""]],template:function(t,r){t&1&&pt(0,0)},dependencies:[qn],encapsulation:2})}}return i})();var au=(()=>{class i{static{this.\u0275fac=function(t){return new(t||i)}}static{this.\u0275cmp=H({type:i,selectors:[["cdk-row"],["tr","cdk-row",""]],hostAttrs:["role","row",1,"cdk-row"],standalone:!0,features:[Q],decls:1,vars:0,consts:[["cdkCellOutlet",""]],template:function(t,r){t&1&&pt(0,0)},dependencies:[qn],encapsulation:2})}}return i})(),Qb=(()=>{class i{constructor(e){this.templateRef=e,this._contentClassName="cdk-no-data-row"}static{this.\u0275fac=function(t){return new(t||i)(u(Ae))}}static{this.\u0275dir=D({type:i,selectors:[["ng-template","cdkNoDataRow",""]],standalone:!0})}}return i})(),jb=["top","bottom","left","right"],tu=class{constructor(n,e,t,r,o=!0,a=!0,s){this._isNativeHtmlTable=n,this._stickCellCss=e,this.direction=t,this._coalescedStyleScheduler=r,this._isBrowser=o,this._needsPositionStickyOnElement=a,this._positionListener=s,this._cachedCellWidths=[],this._borderCellCss={top:`${e}-border-elem-top`,bottom:`${e}-border-elem-bottom`,left:`${e}-border-elem-left`,right:`${e}-border-elem-right`}}clearStickyPositioning(n,e){let t=[];for(let r of n)if(r.nodeType===r.ELEMENT_NODE){t.push(r);for(let o=0;o{for(let r of t)this._removeStickyStyle(r,e)})}updateStickyColumns(n,e,t,r=!0){if(!n.length||!this._isBrowser||!(e.some(o=>o)||t.some(o=>o))){this._positionListener&&(this._positionListener.stickyColumnsUpdated({sizes:[]}),this._positionListener.stickyEndColumnsUpdated({sizes:[]}));return}this._coalescedStyleScheduler.schedule(()=>{let o=n[0],a=o.children.length,s=this._getCellWidths(o,r),c=this._getStickyStartColumnPositions(s,e),l=this._getStickyEndColumnPositions(s,t),d=e.lastIndexOf(!0),h=t.indexOf(!0),m=this.direction==="rtl",p=m?"right":"left",f=m?"left":"right";for(let g of n)for(let _=0;_e[_]?g:null)}),this._positionListener.stickyEndColumnsUpdated({sizes:h===-1?[]:s.slice(h).map((g,_)=>t[_+h]?g:null).reverse()}))})}stickRows(n,e,t){this._isBrowser&&this._coalescedStyleScheduler.schedule(()=>{let r=t==="bottom"?n.slice().reverse():n,o=t==="bottom"?e.slice().reverse():e,a=[],s=[],c=[];for(let d=0,h=0;d{let t=n.querySelector("tfoot");t&&(e.some(r=>!r)?this._removeStickyStyle(t,["bottom"]):this._addStickyStyle(t,"bottom",0,!1))})}_removeStickyStyle(n,e){for(let r of e)n.style[r]="",n.classList.remove(this._borderCellCss[r]);jb.some(r=>e.indexOf(r)===-1&&n.style[r])?n.style.zIndex=this._getCalculatedZIndex(n):(n.style.zIndex="",this._needsPositionStickyOnElement&&(n.style.position=""),n.classList.remove(this._stickCellCss))}_addStickyStyle(n,e,t,r){n.classList.add(this._stickCellCss),r&&n.classList.add(this._borderCellCss[e]),n.style[e]=`${t}px`,n.style.zIndex=this._getCalculatedZIndex(n),this._needsPositionStickyOnElement&&(n.style.cssText+="position: -webkit-sticky; position: sticky; ")}_getCalculatedZIndex(n){let e={top:100,bottom:10,left:1,right:1},t=0;for(let r of jb)n.style[r]&&(t+=e[r]);return t?`${t}`:""}_getCellWidths(n,e=!0){if(!e&&this._cachedCellWidths.length)return this._cachedCellWidths;let t=[],r=n.children;for(let o=0;o0;o--)e[o]&&(t[o]=r,r+=n[o]);return t}};var Ks=new C("CDK_SPL");var su=(()=>{class i{constructor(e,t){this.viewContainer=e,this.elementRef=t;let r=F(pi);r._rowOutlet=this,r._outletAssigned()}static{this.\u0275fac=function(t){return new(t||i)(u(Ue),u(E))}}static{this.\u0275dir=D({type:i,selectors:[["","rowOutlet",""]],standalone:!0})}}return i})(),cu=(()=>{class i{constructor(e,t){this.viewContainer=e,this.elementRef=t;let r=F(pi);r._headerRowOutlet=this,r._outletAssigned()}static{this.\u0275fac=function(t){return new(t||i)(u(Ue),u(E))}}static{this.\u0275dir=D({type:i,selectors:[["","headerRowOutlet",""]],standalone:!0})}}return i})(),lu=(()=>{class i{constructor(e,t){this.viewContainer=e,this.elementRef=t;let r=F(pi);r._footerRowOutlet=this,r._outletAssigned()}static{this.\u0275fac=function(t){return new(t||i)(u(Ue),u(E))}}static{this.\u0275dir=D({type:i,selectors:[["","footerRowOutlet",""]],standalone:!0})}}return i})(),du=(()=>{class i{constructor(e,t){this.viewContainer=e,this.elementRef=t;let r=F(pi);r._noDataRowOutlet=this,r._outletAssigned()}static{this.\u0275fac=function(t){return new(t||i)(u(Ue),u(E))}}static{this.\u0275dir=D({type:i,selectors:[["","noDataRowOutlet",""]],standalone:!0})}}return i})();var uu=(()=>{class i{_getCellRole(){if(this._cellRoleInternal===void 0){let e=this._elementRef.nativeElement.getAttribute("role"),t=e==="grid"||e==="treegrid"?"gridcell":"cell";this._cellRoleInternal=this._isNativeHtmlTable&&t==="cell"?null:t}return this._cellRoleInternal}get trackBy(){return this._trackByFn}set trackBy(e){this._trackByFn=e}get dataSource(){return this._dataSource}set dataSource(e){this._dataSource!==e&&this._switchDataSource(e)}get multiTemplateDataRows(){return this._multiTemplateDataRows}set multiTemplateDataRows(e){this._multiTemplateDataRows=e,this._rowOutlet&&this._rowOutlet.viewContainer.length&&(this._forceRenderDataRows(),this.updateStickyColumnStyles())}get fixedLayout(){return this._fixedLayout}set fixedLayout(e){this._fixedLayout=e,this._forceRecalculateCellWidths=!0,this._stickyColumnStylesNeedReset=!0}constructor(e,t,r,o,a,s,c,l,d,h,m,p){this._differs=e,this._changeDetectorRef=t,this._elementRef=r,this._dir=a,this._platform=c,this._viewRepeater=l,this._coalescedStyleScheduler=d,this._viewportRuler=h,this._stickyPositioningListener=m,this._onDestroy=new R,this._columnDefsByName=new Map,this._customColumnDefs=new Set,this._customRowDefs=new Set,this._customHeaderRowDefs=new Set,this._customFooterRowDefs=new Set,this._headerRowDefChanged=!0,this._footerRowDefChanged=!0,this._stickyColumnStylesNeedReset=!0,this._forceRecalculateCellWidths=!0,this._cachedRenderRowsMap=new Map,this.stickyCssClass="cdk-table-sticky",this.needsPositionStickyOnElement=!0,this._isShowingNoDataRow=!1,this._hasAllOutlets=!1,this._hasInitialized=!1,this._cellRoleInternal=void 0,this._multiTemplateDataRows=!1,this._fixedLayout=!1,this.contentChanged=new z,this.viewChange=new Vi({start:0,end:Number.MAX_VALUE}),this._injector=F(Ee),o||r.nativeElement.setAttribute("role","table"),this._document=s,this._isServer=!c.isBrowser,this._isNativeHtmlTable=r.nativeElement.nodeName==="TABLE"}ngOnInit(){this._setupStickyStyler(),this._dataDiffer=this._differs.find([]).create((e,t)=>this.trackBy?this.trackBy(t.dataIndex,t.data):t),this._viewportRuler.change().pipe($(this._onDestroy)).subscribe(()=>{this._forceRecalculateCellWidths=!0})}ngAfterContentInit(){this._hasInitialized=!0}ngAfterContentChecked(){this._canRender()&&this._render()}ngOnDestroy(){[this._rowOutlet?.viewContainer,this._headerRowOutlet?.viewContainer,this._footerRowOutlet?.viewContainer,this._cachedRenderRowsMap,this._customColumnDefs,this._customRowDefs,this._customHeaderRowDefs,this._customFooterRowDefs,this._columnDefsByName].forEach(e=>{e?.clear()}),this._headerRowDefs=[],this._footerRowDefs=[],this._defaultRowDef=null,this._onDestroy.next(),this._onDestroy.complete(),ka(this.dataSource)&&this.dataSource.disconnect(this)}renderRows(){this._renderRows=this._getAllRenderRows();let e=this._dataDiffer.diff(this._renderRows);if(!e){this._updateNoDataRow(),this.contentChanged.next();return}let t=this._rowOutlet.viewContainer;this._viewRepeater.applyChanges(e,t,(r,o,a)=>this._getEmbeddedViewArgs(r.item,a),r=>r.item.data,r=>{r.operation===nr.INSERTED&&r.context&&this._renderCellTemplateForItem(r.record.item.rowDef,r.context)}),this._updateRowIndexContext(),e.forEachIdentityChange(r=>{let o=t.get(r.currentIndex);o.context.$implicit=r.item.data}),this._updateNoDataRow(),tt(()=>{this.updateStickyColumnStyles()},{injector:this._injector}),this.contentChanged.next()}addColumnDef(e){this._customColumnDefs.add(e)}removeColumnDef(e){this._customColumnDefs.delete(e)}addRowDef(e){this._customRowDefs.add(e)}removeRowDef(e){this._customRowDefs.delete(e)}addHeaderRowDef(e){this._customHeaderRowDefs.add(e),this._headerRowDefChanged=!0}removeHeaderRowDef(e){this._customHeaderRowDefs.delete(e),this._headerRowDefChanged=!0}addFooterRowDef(e){this._customFooterRowDefs.add(e),this._footerRowDefChanged=!0}removeFooterRowDef(e){this._customFooterRowDefs.delete(e),this._footerRowDefChanged=!0}setNoDataRow(e){this._customNoDataRow=e}updateStickyHeaderRowStyles(){let e=this._getRenderedRows(this._headerRowOutlet);if(this._isNativeHtmlTable){let r=Vb(this._headerRowOutlet,"thead");r&&(r.style.display=e.length?"":"none")}let t=this._headerRowDefs.map(r=>r.sticky);this._stickyStyler.clearStickyPositioning(e,["top"]),this._stickyStyler.stickRows(e,t,"top"),this._headerRowDefs.forEach(r=>r.resetStickyChanged())}updateStickyFooterRowStyles(){let e=this._getRenderedRows(this._footerRowOutlet);if(this._isNativeHtmlTable){let r=Vb(this._footerRowOutlet,"tfoot");r&&(r.style.display=e.length?"":"none")}let t=this._footerRowDefs.map(r=>r.sticky);this._stickyStyler.clearStickyPositioning(e,["bottom"]),this._stickyStyler.stickRows(e,t,"bottom"),this._stickyStyler.updateStickyFooterContainer(this._elementRef.nativeElement,t),this._footerRowDefs.forEach(r=>r.resetStickyChanged())}updateStickyColumnStyles(){let e=this._getRenderedRows(this._headerRowOutlet),t=this._getRenderedRows(this._rowOutlet),r=this._getRenderedRows(this._footerRowOutlet);(this._isNativeHtmlTable&&!this._fixedLayout||this._stickyColumnStylesNeedReset)&&(this._stickyStyler.clearStickyPositioning([...e,...t,...r],["left","right"]),this._stickyColumnStylesNeedReset=!1),e.forEach((o,a)=>{this._addStickyColumnStyles([o],this._headerRowDefs[a])}),this._rowDefs.forEach(o=>{let a=[];for(let s=0;s{this._addStickyColumnStyles([o],this._footerRowDefs[a])}),Array.from(this._columnDefsByName.values()).forEach(o=>o.resetStickyChanged())}_outletAssigned(){!this._hasAllOutlets&&this._rowOutlet&&this._headerRowOutlet&&this._footerRowOutlet&&this._noDataRowOutlet&&(this._hasAllOutlets=!0,this._canRender()&&this._render())}_canRender(){return this._hasAllOutlets&&this._hasInitialized}_render(){this._cacheRowDefs(),this._cacheColumnDefs(),!this._headerRowDefs.length&&!this._footerRowDefs.length&&this._rowDefs.length;let t=this._renderUpdatedColumns()||this._headerRowDefChanged||this._footerRowDefChanged;this._stickyColumnStylesNeedReset=this._stickyColumnStylesNeedReset||t,this._forceRecalculateCellWidths=t,this._headerRowDefChanged&&(this._forceRenderHeaderRows(),this._headerRowDefChanged=!1),this._footerRowDefChanged&&(this._forceRenderFooterRows(),this._footerRowDefChanged=!1),this.dataSource&&this._rowDefs.length>0&&!this._renderChangeSubscription?this._observeRenderChanges():this._stickyColumnStylesNeedReset&&this.updateStickyColumnStyles(),this._checkStickyStates()}_getAllRenderRows(){let e=[],t=this._cachedRenderRowsMap;this._cachedRenderRowsMap=new Map;for(let r=0;r{let s=r&&r.has(a)?r.get(a):[];if(s.length){let c=s.shift();return c.dataIndex=t,c}else return{data:e,rowDef:a,dataIndex:t}})}_cacheColumnDefs(){this._columnDefsByName.clear(),Ws(this._getOwnDefs(this._contentColumnDefs),this._customColumnDefs).forEach(t=>{this._columnDefsByName.has(t.name),this._columnDefsByName.set(t.name,t)})}_cacheRowDefs(){this._headerRowDefs=Ws(this._getOwnDefs(this._contentHeaderRowDefs),this._customHeaderRowDefs),this._footerRowDefs=Ws(this._getOwnDefs(this._contentFooterRowDefs),this._customFooterRowDefs),this._rowDefs=Ws(this._getOwnDefs(this._contentRowDefs),this._customRowDefs);let e=this._rowDefs.filter(t=>!t.when);!this.multiTemplateDataRows&&e.length>1,this._defaultRowDef=e[0]}_renderUpdatedColumns(){let e=(a,s)=>a||!!s.getColumnsDiff(),t=this._rowDefs.reduce(e,!1);t&&this._forceRenderDataRows();let r=this._headerRowDefs.reduce(e,!1);r&&this._forceRenderHeaderRows();let o=this._footerRowDefs.reduce(e,!1);return o&&this._forceRenderFooterRows(),t||r||o}_switchDataSource(e){this._data=[],ka(this.dataSource)&&this.dataSource.disconnect(this),this._renderChangeSubscription&&(this._renderChangeSubscription.unsubscribe(),this._renderChangeSubscription=null),e||(this._dataDiffer&&this._dataDiffer.diff([]),this._rowOutlet&&this._rowOutlet.viewContainer.clear()),this._dataSource=e}_observeRenderChanges(){if(!this.dataSource)return;let e;ka(this.dataSource)?e=this.dataSource.connect(this):Qr(this.dataSource)?e=this.dataSource:Array.isArray(this.dataSource)&&(e=He(this.dataSource)),this._renderChangeSubscription=e.pipe($(this._onDestroy)).subscribe(t=>{this._data=t||[],this.renderRows()})}_forceRenderHeaderRows(){this._headerRowOutlet.viewContainer.length>0&&this._headerRowOutlet.viewContainer.clear(),this._headerRowDefs.forEach((e,t)=>this._renderRow(this._headerRowOutlet,e,t)),this.updateStickyHeaderRowStyles()}_forceRenderFooterRows(){this._footerRowOutlet.viewContainer.length>0&&this._footerRowOutlet.viewContainer.clear(),this._footerRowDefs.forEach((e,t)=>this._renderRow(this._footerRowOutlet,e,t)),this.updateStickyFooterRowStyles()}_addStickyColumnStyles(e,t){let r=Array.from(t.columns||[]).map(s=>{let c=this._columnDefsByName.get(s);return c}),o=r.map(s=>s.sticky),a=r.map(s=>s.stickyEnd);this._stickyStyler.updateStickyColumns(e,o,a,!this._fixedLayout||this._forceRecalculateCellWidths)}_getRenderedRows(e){let t=[];for(let r=0;r!o.when||o.when(t,e));else{let o=this._rowDefs.find(a=>a.when&&a.when(t,e))||this._defaultRowDef;o&&r.push(o)}return r.length,r}_getEmbeddedViewArgs(e,t){let r=e.rowDef,o={$implicit:e.data};return{templateRef:r.template,context:o,index:t}}_renderRow(e,t,r,o={}){let a=e.viewContainer.createEmbeddedView(t.template,o,r);return this._renderCellTemplateForItem(t,o),a}_renderCellTemplateForItem(e,t){for(let r of this._getCellTemplates(e))qn.mostRecentCellOutlet&&qn.mostRecentCellOutlet._viewContainer.createEmbeddedView(r,t);this._changeDetectorRef.markForCheck()}_updateRowIndexContext(){let e=this._rowOutlet.viewContainer;for(let t=0,r=e.length;t{let r=this._columnDefsByName.get(t);return e.extractCellTemplate(r)})}_forceRenderDataRows(){this._dataDiffer.diff([]),this._rowOutlet.viewContainer.clear(),this.renderRows()}_checkStickyStates(){let e=(t,r)=>t||r.hasStickyChanged();this._headerRowDefs.reduce(e,!1)&&this.updateStickyHeaderRowStyles(),this._footerRowDefs.reduce(e,!1)&&this.updateStickyFooterRowStyles(),Array.from(this._columnDefsByName.values()).reduce(e,!1)&&(this._stickyColumnStylesNeedReset=!0,this.updateStickyColumnStyles())}_setupStickyStyler(){let e=this._dir?this._dir.value:"ltr";this._stickyStyler=new tu(this._isNativeHtmlTable,this.stickyCssClass,e,this._coalescedStyleScheduler,this._platform.isBrowser,this.needsPositionStickyOnElement,this._stickyPositioningListener),(this._dir?this._dir.change:He()).pipe($(this._onDestroy)).subscribe(t=>{this._stickyStyler.direction=t,this.updateStickyColumnStyles()})}_getOwnDefs(e){return e.filter(t=>!t._table||t._table===this)}_updateNoDataRow(){let e=this._customNoDataRow||this._noDataRow;if(!e)return;let t=this._rowOutlet.viewContainer.length===0;if(t===this._isShowingNoDataRow)return;let r=this._noDataRowOutlet.viewContainer;if(t){let o=r.createEmbeddedView(e.templateRef),a=o.rootNodes[0];o.rootNodes.length===1&&a?.nodeType===this._document.ELEMENT_NODE&&(a.setAttribute("role","row"),a.classList.add(e._contentClassName))}else r.clear();this._isShowingNoDataRow=t,this._changeDetectorRef.markForCheck()}static{this.\u0275fac=function(t){return new(t||i)(u(bn),u(pe),u(E),It("role"),u(Re,8),u(oe),u(me),u(to),u(Ys),u(Dt),u(Ks,12),u(B,8))}}static{this.\u0275cmp=H({type:i,selectors:[["cdk-table"],["table","cdk-table",""]],contentQueries:function(t,r,o){if(t&1&&(he(o,Qb,5),he(o,Hr,5),he(o,Js,5),he(o,Ko,5),he(o,ru,5)),t&2){let a;S(a=T())&&(r._noDataRow=a.first),S(a=T())&&(r._contentColumnDefs=a),S(a=T())&&(r._contentRowDefs=a),S(a=T())&&(r._contentHeaderRowDefs=a),S(a=T())&&(r._contentFooterRowDefs=a)}},hostAttrs:[1,"cdk-table"],hostVars:2,hostBindings:function(t,r){t&2&&P("cdk-table-fixed-layout",r.fixedLayout)},inputs:{trackBy:"trackBy",dataSource:"dataSource",multiTemplateDataRows:[2,"multiTemplateDataRows","multiTemplateDataRows",O],fixedLayout:[2,"fixedLayout","fixedLayout",O]},outputs:{contentChanged:"contentChanged"},exportAs:["cdkTable"],standalone:!0,features:[de([{provide:pi,useExisting:i},{provide:to,useClass:rr},{provide:Ys,useClass:iu},{provide:Ks,useValue:null}]),ae,Q],ngContentSelectors:mE,decls:5,vars:2,consts:[["role","rowgroup"],["headerRowOutlet",""],["rowOutlet",""],["noDataRowOutlet",""],["footerRowOutlet",""]],template:function(t,r){t&1&&(se(hE),A(0),A(1,1),te(2,pE,1,0)(3,fE,7,0)(4,gE,4,0)),t&2&&(V(2),ge(r._isServer?2:-1),V(),ge(r._isNativeHtmlTable?3:4))},dependencies:[cu,su,du,lu],styles:[".cdk-table-fixed-layout{table-layout:fixed}"],encapsulation:2})}}return i})();function Ws(i,n){return i.concat(Array.from(n))}function Vb(i,n){let e=n.toUpperCase(),t=i.viewContainer.element.nativeElement;for(;t;){let r=t.nodeType===1?t.nodeName:null;if(r===e)return t;if(r==="TABLE")break;t=t.parentNode}return null}var Ub=(()=>{class i{static{this.\u0275fac=function(t){return new(t||i)}}static{this.\u0275mod=j({type:i})}static{this.\u0275inj=L({imports:[Bo]})}}return i})();var bE=[[["caption"]],[["colgroup"],["col"]],"*"],vE=["caption","colgroup, col","*"];function _E(i,n){i&1&&A(0,2)}function yE(i,n){i&1&&(w(0,"thead",0),pt(1,1),I(),w(2,"tbody",2),pt(3,3)(4,4),I(),w(5,"tfoot",0),pt(6,5),I())}function xE(i,n){i&1&&pt(0,1)(1,3)(2,4)(3,5)}var N5=(()=>{class i extends uu{constructor(){super(...arguments),this.stickyCssClass="mat-mdc-table-sticky",this.needsPositionStickyOnElement=!1}static{this.\u0275fac=(()=>{let e;return function(r){return(e||(e=Ke(i)))(r||i)}})()}static{this.\u0275cmp=H({type:i,selectors:[["mat-table"],["table","mat-table",""]],hostAttrs:[1,"mat-mdc-table","mdc-data-table__table"],hostVars:2,hostBindings:function(t,r){t&2&&P("mdc-table-fixed-layout",r.fixedLayout)},exportAs:["matTable"],standalone:!0,features:[de([{provide:uu,useExisting:i},{provide:pi,useExisting:i},{provide:Ys,useClass:iu},{provide:to,useClass:rr},{provide:Ks,useValue:null}]),ne,Q],ngContentSelectors:vE,decls:5,vars:2,consts:[["role","rowgroup"],["headerRowOutlet",""],["role","rowgroup",1,"mdc-data-table__content"],["rowOutlet",""],["noDataRowOutlet",""],["footerRowOutlet",""]],template:function(t,r){t&1&&(se(bE),A(0),A(1,1),te(2,_E,1,0)(3,yE,7,0)(4,xE,4,0)),t&2&&(V(2),ge(r._isServer?2:-1),V(),ge(r._isNativeHtmlTable?3:4))},dependencies:[cu,su,du,lu],styles:[".mat-mdc-table-sticky{position:sticky !important}mat-table{display:block}mat-header-row{min-height:56px}mat-row,mat-footer-row{min-height:48px}mat-row,mat-header-row,mat-footer-row{display:flex;border-width:0;border-bottom-width:1px;border-style:solid;align-items:center;box-sizing:border-box}mat-cell:first-of-type,mat-header-cell:first-of-type,mat-footer-cell:first-of-type{padding-left:24px}[dir=rtl] mat-cell:first-of-type:not(:only-of-type),[dir=rtl] mat-header-cell:first-of-type:not(:only-of-type),[dir=rtl] mat-footer-cell:first-of-type:not(:only-of-type){padding-left:0;padding-right:24px}mat-cell:last-of-type,mat-header-cell:last-of-type,mat-footer-cell:last-of-type{padding-right:24px}[dir=rtl] mat-cell:last-of-type:not(:only-of-type),[dir=rtl] mat-header-cell:last-of-type:not(:only-of-type),[dir=rtl] mat-footer-cell:last-of-type:not(:only-of-type){padding-right:0;padding-left:24px}mat-cell,mat-header-cell,mat-footer-cell{flex:1;display:flex;align-items:center;overflow:hidden;word-wrap:break-word;min-height:inherit}.mat-mdc-table{min-width:100%;border:0;border-spacing:0;table-layout:auto;white-space:normal;background-color:var(--mat-table-background-color, var(--mat-app-surface))}.mdc-data-table__cell{box-sizing:border-box;overflow:hidden;text-align:left;text-overflow:ellipsis}[dir=rtl] .mdc-data-table__cell{text-align:right}.mdc-data-table__cell,.mdc-data-table__header-cell{padding:0 16px}.mat-mdc-header-row{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;height:var(--mat-table-header-container-height, 56px);color:var(--mat-table-header-headline-color, var(--mat-app-on-surface, rgba(0, 0, 0, 0.87)));font-family:var(--mat-table-header-headline-font, var(--mat-app-title-small-font, Roboto, sans-serif));line-height:var(--mat-table-header-headline-line-height, var(--mat-app-title-small-line-height));font-size:var(--mat-table-header-headline-size, var(--mat-app-title-small-size, 14px));font-weight:var(--mat-table-header-headline-weight, var(--mat-app-title-small-weight, 500))}.mat-mdc-row{height:var(--mat-table-row-item-container-height, 52px);color:var(--mat-table-row-item-label-text-color, var(--mat-app-on-surface, rgba(0, 0, 0, 0.87)))}.mat-mdc-row,.mdc-data-table__content{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mat-table-row-item-label-text-font, var(--mat-app-body-medium-font, Roboto, sans-serif));line-height:var(--mat-table-row-item-label-text-line-height, var(--mat-app-body-medium-line-height));font-size:var(--mat-table-row-item-label-text-size, var(--mat-app-body-medium-size, 14px));font-weight:var(--mat-table-row-item-label-text-weight, var(--mat-app-body-medium-weight))}.mat-mdc-footer-row{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;height:var(--mat-table-footer-container-height, 52px);color:var(--mat-table-row-item-label-text-color, var(--mat-app-on-surface, rgba(0, 0, 0, 0.87)));font-family:var(--mat-table-footer-supporting-text-font, var(--mat-app-body-medium-font, Roboto, sans-serif));line-height:var(--mat-table-footer-supporting-text-line-height, var(--mat-app-body-medium-line-height));font-size:var(--mat-table-footer-supporting-text-size, var(--mat-app-body-medium-size, 14px));font-weight:var(--mat-table-footer-supporting-text-weight, var(--mat-app-body-medium-weight));letter-spacing:var(--mat-table-footer-supporting-text-tracking, var(--mat-app-body-medium-tracking))}.mat-mdc-header-cell{border-bottom-color:var(--mat-table-row-item-outline-color, var(--mat-app-outline, rgba(0, 0, 0, 0.12)));border-bottom-width:var(--mat-table-row-item-outline-width, 1px);border-bottom-style:solid;letter-spacing:var(--mat-table-header-headline-tracking, var(--mat-app-title-small-tracking));font-weight:inherit;line-height:inherit;box-sizing:border-box;text-overflow:ellipsis;overflow:hidden;outline:none;text-align:left}[dir=rtl] .mat-mdc-header-cell{text-align:right}.mat-mdc-cell{border-bottom-color:var(--mat-table-row-item-outline-color, var(--mat-app-outline, rgba(0, 0, 0, 0.12)));border-bottom-width:var(--mat-table-row-item-outline-width, 1px);border-bottom-style:solid;letter-spacing:var(--mat-table-row-item-label-text-tracking, var(--mat-app-body-medium-tracking));line-height:inherit}.mdc-data-table__row:last-child .mat-mdc-cell{border-bottom:none}.mat-mdc-footer-cell{letter-spacing:var(--mat-table-row-item-label-text-tracking, var(--mat-app-body-medium-tracking))}mat-row.mat-mdc-row,mat-header-row.mat-mdc-header-row,mat-footer-row.mat-mdc-footer-row{border-bottom:none}.mat-mdc-table tbody,.mat-mdc-table tfoot,.mat-mdc-table thead,.mat-mdc-cell,.mat-mdc-footer-cell,.mat-mdc-header-row,.mat-mdc-row,.mat-mdc-footer-row,.mat-mdc-table .mat-mdc-header-cell{background:inherit}.mat-mdc-table mat-header-row.mat-mdc-header-row,.mat-mdc-table mat-row.mat-mdc-row,.mat-mdc-table mat-footer-row.mat-mdc-footer-cell{height:unset}mat-header-cell.mat-mdc-header-cell,mat-cell.mat-mdc-cell,mat-footer-cell.mat-mdc-footer-cell{align-self:stretch}"],encapsulation:2})}}return i})(),L5=(()=>{class i extends Xs{static{this.\u0275fac=(()=>{let e;return function(r){return(e||(e=Ke(i)))(r||i)}})()}static{this.\u0275dir=D({type:i,selectors:[["","matCellDef",""]],standalone:!0,features:[de([{provide:Xs,useExisting:i}]),ne]})}}return i})(),j5=(()=>{class i extends Zs{static{this.\u0275fac=(()=>{let e;return function(r){return(e||(e=Ke(i)))(r||i)}})()}static{this.\u0275dir=D({type:i,selectors:[["","matHeaderCellDef",""]],standalone:!0,features:[de([{provide:Zs,useExisting:i}]),ne]})}}return i})();var V5=(()=>{class i extends Hr{get name(){return this._name}set name(e){this._setNameInput(e)}_updateColumnCssClassName(){super._updateColumnCssClassName(),this._columnCssClassName.push(`mat-column-${this.cssClassFriendlyName}`)}static{this.\u0275fac=(()=>{let e;return function(r){return(e||(e=Ke(i)))(r||i)}})()}static{this.\u0275dir=D({type:i,selectors:[["","matColumnDef",""]],inputs:{name:[0,"matColumnDef","name"]},standalone:!0,features:[de([{provide:Hr,useExisting:i},{provide:"MAT_SORT_HEADER_COLUMN_DEF",useExisting:i}]),ne]})}}return i})(),B5=(()=>{class i extends zb{static{this.\u0275fac=(()=>{let e;return function(r){return(e||(e=Ke(i)))(r||i)}})()}static{this.\u0275dir=D({type:i,selectors:[["mat-header-cell"],["th","mat-header-cell",""]],hostAttrs:["role","columnheader",1,"mat-mdc-header-cell","mdc-data-table__header-cell"],standalone:!0,features:[ne]})}}return i})();var z5=(()=>{class i extends Hb{static{this.\u0275fac=(()=>{let e;return function(r){return(e||(e=Ke(i)))(r||i)}})()}static{this.\u0275dir=D({type:i,selectors:[["mat-cell"],["td","mat-cell",""]],hostAttrs:[1,"mat-mdc-cell","mdc-data-table__cell"],standalone:!0,features:[ne]})}}return i})();var H5=(()=>{class i extends Ko{static{this.\u0275fac=(()=>{let e;return function(r){return(e||(e=Ke(i)))(r||i)}})()}static{this.\u0275dir=D({type:i,selectors:[["","matHeaderRowDef",""]],inputs:{columns:[0,"matHeaderRowDef","columns"],sticky:[2,"matHeaderRowDefSticky","sticky",O]},standalone:!0,features:[de([{provide:Ko,useExisting:i}]),ae,ne]})}}return i})();var Q5=(()=>{class i extends Js{static{this.\u0275fac=(()=>{let e;return function(r){return(e||(e=Ke(i)))(r||i)}})()}static{this.\u0275dir=D({type:i,selectors:[["","matRowDef",""]],inputs:{columns:[0,"matRowDefColumns","columns"],when:[0,"matRowDefWhen","when"]},standalone:!0,features:[de([{provide:Js,useExisting:i}]),ne]})}}return i})(),U5=(()=>{class i extends ou{static{this.\u0275fac=(()=>{let e;return function(r){return(e||(e=Ke(i)))(r||i)}})()}static{this.\u0275cmp=H({type:i,selectors:[["mat-header-row"],["tr","mat-header-row",""]],hostAttrs:["role","row",1,"mat-mdc-header-row","mdc-data-table__header-row"],exportAs:["matHeaderRow"],standalone:!0,features:[de([{provide:ou,useExisting:i}]),ne,Q],decls:1,vars:0,consts:[["cdkCellOutlet",""]],template:function(t,r){t&1&&pt(0,0)},dependencies:[qn],encapsulation:2})}}return i})();var q5=(()=>{class i extends au{static{this.\u0275fac=(()=>{let e;return function(r){return(e||(e=Ke(i)))(r||i)}})()}static{this.\u0275cmp=H({type:i,selectors:[["mat-row"],["tr","mat-row",""]],hostAttrs:["role","row",1,"mat-mdc-row","mdc-data-table__row"],exportAs:["matRow"],standalone:!0,features:[de([{provide:au,useExisting:i}]),ne,Q],decls:1,vars:0,consts:[["cdkCellOutlet",""]],template:function(t,r){t&1&&pt(0,0)},dependencies:[qn],encapsulation:2})}}return i})();var qb=(()=>{class i{static{this.\u0275fac=function(t){return new(t||i)}}static{this.\u0275mod=j({type:i})}static{this.\u0275inj=L({imports:[K,Ub,K]})}}return i})();var yq=(()=>{class i{static{this.\u0275fac=function(t){return new(t||i)}}static{this.\u0275mod=j({type:i})}static{this.\u0275inj=L({imports:[kb,yt,Hf,Ib,Rf,Jf,ng,Ob,wg,Cg,Rg,Bn,Lg,Qg,Gg,Pb,Yg,Lb,rb,sb,qb,Cb,Kg,tb,Nh,Gu,uh]})}}return i})();export{dv as a,UE as b,qE as c,vh as d,hI as e,Xv as f,e_ as g,Ca as h,Xl as i,me as j,Cs as k,af as l,gf as m,As as n,LN as o,jN as p,VN as q,BN as r,zN as s,hn as t,Et as u,Vr as v,mi as w,Ci as x,je as y,UN as z,qN as A,WN as B,GN as C,$N as D,YN as E,KN as F,XN as G,ZN as H,zf as I,Hf as J,oQ as K,Qf as L,zL as M,FQ as N,DD as O,ej as P,tj as Q,ij as R,nj as S,rj as T,oj as U,aj as V,oU as W,aU as X,Kd as Y,QD as Z,UD as _,sU as $,cU as aa,ig as ba,Go as ca,Pd as da,WV as ea,GV as fa,$V as ga,YV as ha,wg as ia,e2 as ja,NC as ka,L2 as la,j2 as ma,jC as na,eB as oa,UC as pa,vB as qa,LB as ra,Jd as sa,Us as ta,LU as ua,YB as va,XU as wa,JB as xa,wz as ya,Zz as za,Hd as Aa,jk as Ba,Vk as Ca,N5 as Da,L5 as Ea,j5 as Fa,V5 as Ga,B5 as Ha,z5 as Ia,H5 as Ja,Q5 as Ka,U5 as La,q5 as Ma,tD as Na,nD as Oa,rD as Pa,GH as Qa,hD as Ra,mD as Sa,$H as Ta,yq as Ua}; diff --git a/webui/dist/bitmagnet/browser/chunk-5PLW2W3L.js b/webui/dist/bitmagnet/browser/chunk-5PLW2W3L.js new file mode 100644 index 0000000..fd2096a --- /dev/null +++ b/webui/dist/bitmagnet/browser/chunk-5PLW2W3L.js @@ -0,0 +1 @@ +import"./chunk-LACCEILM.js";import"./chunk-ZVYX4MB3.js";import"./chunk-DKVITRV6.js";import"./chunk-KUHKEGBL.js";import"./chunk-3PIWRAOL.js";import{a as R}from"./chunk-M3BEO55A.js";import{Aa as z,Ba as q,Ca as B,Ua as F,b as y,p as D,qa as I,r as S,ya as E}from"./chunk-4NEHCUZ2.js";import"./chunk-6XXA7HXI.js";import{k as L,m as h,n as T}from"./chunk-FKMTSCBK.js";import{$b as O,Cb as M,Ea as _,Fa as f,Gb as C,Hb as l,Kb as p,Qb as r,Rb as i,Sb as d,Tb as w,Ub as b,Wb as k,Zb as x,jc as a,kb as t,kc as c,lc as s,pc as A,qa as g,qc as P,ua as v}from"./chunk-3DR3CJRN.js";var Q=()=>({exact:!0});function $(n,V){if(n&1){let e=k();w(0),r(1,"mat-drawer-container",6)(2,"mat-drawer",7,0)(4,"nav")(5,"ul")(6,"li")(7,"a",8,1)(9,"mat-icon"),c(10,"dashboard"),i(),c(11),i()(),r(12,"li")(13,"a",9,2),d(15,"mat-icon",10),c(16),i()(),r(17,"li")(18,"a",11,3),d(20,"mat-icon",12),c(21),i()()()()(),r(22,"mat-drawer-content")(23,"div",13)(24,"button",14),x("click",function(){_(e);let m=a(3);return f(m.toggle())}),r(25,"mat-icon",15),c(26),i()()(),d(27,"router-outlet",null,4),i()(),b()}if(n&2){let e=V.$implicit,o=a(3),m=a(8),j=a(14),H=a(19),u=O();t(2),l("mode",u.breakpoints.sizeAtLeast("Medium")?"side":"over")("opened",u.breakpoints.sizeAtLeast("Medium")),C("role",u.breakpoints.sizeAtLeast("Medium")?"navigation":"dialog"),t(5),p(m.isActive?"active":""),l("routerLinkActiveOptions",P(15,Q)),t(4),s(e("routes.home")),t(2),p(j.isActive?"active":""),t(3),s(e("routes.queues")),t(2),p(H.isActive?"active":""),t(3),s(e("routes.torrents")),t(3),l("matTooltip",e("torrents.toggle_drawer")),t(2),s(o.opened?"arrow_circle_left":"arrow_circle_right")}}var st=(()=>{class n{constructor(){this.breakpoints=g(R)}static{this.\u0275fac=function(o){return new(o||n)}}static{this.\u0275cmp=v({type:n,selectors:[["app-dashboard"]],standalone:!0,features:[A],decls:1,vars:0,consts:[["drawer",""],["linkHome","routerLinkActive"],["linkQueues","routerLinkActive"],["linkTorrents","routerLinkActive"],["outlet",""],[4,"transloco"],[1,"drawer-container"],[1,"drawer",3,"mode","opened"],["mat-button","","routerLink","/dashboard","routerLinkActive","",3,"routerLinkActiveOptions"],["mat-button","","routerLink","queues","routerLinkActive",""],["svgIcon","queue"],["mat-button","","routerLink","torrents","routerLinkActive",""],["svgIcon","magnet"],[1,"form-field-container","button-container","button-container-toggle-drawer"],["type","button","mat-icon-button","",1,"button-toggle-drawer",3,"click","matTooltip"],["aria-label","Side nav toggle icon","fontSet","material-icons"]],template:function(o,m){o&1&&M(0,$,29,16,"ng-container",5)},dependencies:[F,D,S,I,q,B,z,E,L,h,T,y],styles:["mat-drawer[_ngcontent-%COMP%] nav[_ngcontent-%COMP%]{padding-top:12px;--mat-text-button-icon-spacing: 14px}mat-drawer[_ngcontent-%COMP%] nav[_ngcontent-%COMP%] ul[_ngcontent-%COMP%]{list-style-type:none;padding-left:0}mat-drawer[_ngcontent-%COMP%] nav[_ngcontent-%COMP%] ul[_ngcontent-%COMP%] a[_ngcontent-%COMP%]{width:100%;font-size:var(--mat-expansion-container-text-size);justify-content:flex-start;padding-left:20px}mat-drawer[_ngcontent-%COMP%] nav[_ngcontent-%COMP%] ul[_ngcontent-%COMP%] li[_ngcontent-%COMP%]{margin-bottom:6px}mat-drawer-content[_ngcontent-%COMP%] .button-container-toggle-drawer[_ngcontent-%COMP%]{position:absolute;left:20px;top:28px;z-index:100}.drawer[_ngcontent-%COMP%]{width:220px}"]})}}return n})();export{st as DashboardComponent}; diff --git a/webui/dist/bitmagnet/browser/chunk-6OKZFKY7.js b/webui/dist/bitmagnet/browser/chunk-6OKZFKY7.js new file mode 100644 index 0000000..4b47b28 --- /dev/null +++ b/webui/dist/bitmagnet/browser/chunk-6OKZFKY7.js @@ -0,0 +1 @@ +var t={pending:0,failed:0,retry:0,processed:0},e={duration:"hour",multiplier:1,timeframe:"all"},o=["day","hour","minute"],r={minute:60,hour:60*60,day:60*60*24},s={buckets:e,autoRefresh:"off"},n={params:s,queues:[]},a=["created","processed","failed"],u=["pending","processed","retry","failed"],m=["minutes_15","minutes_30","hours_1","hours_6","hours_12","days_1","weeks_1","all"],c={minutes_15:60*15,minutes_30:60*30,hours_1:60*60,hours_6:60*60*6,hours_12:60*60*12,days_1:60*60*24,weeks_1:60*60*24*7,all:1/0},i=["process_torrent","process_torrent_batch"],p=["off","seconds_10","seconds_30","minutes_1","minutes_5"],_={off:null,seconds_10:10,seconds_30:30,minutes_1:60,minutes_5:60*5};export{t as a,o as b,r as c,s as d,n as e,a as f,u as g,m as h,c as i,i as j,p as k,_ as l}; diff --git a/webui/dist/bitmagnet/browser/chunk-6XXA7HXI.js b/webui/dist/bitmagnet/browser/chunk-6XXA7HXI.js new file mode 100644 index 0000000..99c1373 --- /dev/null +++ b/webui/dist/bitmagnet/browser/chunk-6XXA7HXI.js @@ -0,0 +1 @@ +var i=function(s){return s[s.State=0]="State",s[s.Transition=1]="Transition",s[s.Sequence=2]="Sequence",s[s.Group=3]="Group",s[s.Animate=4]="Animate",s[s.Keyframes=5]="Keyframes",s[s.Style=6]="Style",s[s.Trigger=7]="Trigger",s[s.Reference=8]="Reference",s[s.AnimateChild=9]="AnimateChild",s[s.AnimateRef=10]="AnimateRef",s[s.Query=11]="Query",s[s.Stagger=12]="Stagger",s}(i||{}),c="*";function _(s,t){return{type:i.Trigger,name:s,definitions:t,options:{}}}function f(s,t=null){return{type:i.Animate,styles:t,timings:s}}function d(s,t=null){return{type:i.Group,steps:s,options:t}}function y(s,t=null){return{type:i.Sequence,steps:s,options:t}}function p(s){return{type:i.Style,styles:s,offset:null}}function m(s,t,e){return{type:i.State,name:s,styles:t,options:e}}function g(s,t,e=null){return{type:i.Transition,expr:s,animation:t,options:e}}function D(s=null){return{type:i.AnimateChild,options:s}}function F(s,t,e=null){return{type:i.Query,selector:s,animation:t,options:e}}var a=class{constructor(t=0,e=0){this._onDoneFns=[],this._onStartFns=[],this._onDestroyFns=[],this._originalOnDoneFns=[],this._originalOnStartFns=[],this._started=!1,this._destroyed=!1,this._finished=!1,this._position=0,this.parentPlayer=null,this.totalTime=t+e}_onFinish(){this._finished||(this._finished=!0,this._onDoneFns.forEach(t=>t()),this._onDoneFns=[])}onStart(t){this._originalOnStartFns.push(t),this._onStartFns.push(t)}onDone(t){this._originalOnDoneFns.push(t),this._onDoneFns.push(t)}onDestroy(t){this._onDestroyFns.push(t)}hasStarted(){return this._started}init(){}play(){this.hasStarted()||(this._onStart(),this.triggerMicrotask()),this._started=!0}triggerMicrotask(){queueMicrotask(()=>this._onFinish())}_onStart(){this._onStartFns.forEach(t=>t()),this._onStartFns=[]}pause(){}restart(){}finish(){this._onFinish()}destroy(){this._destroyed||(this._destroyed=!0,this.hasStarted()||this._onStart(),this.finish(),this._onDestroyFns.forEach(t=>t()),this._onDestroyFns=[])}reset(){this._started=!1,this._finished=!1,this._onStartFns=this._originalOnStartFns,this._onDoneFns=this._originalOnDoneFns}setPosition(t){this._position=this.totalTime?t*this.totalTime:1}getPosition(){return this.totalTime?this._position/this.totalTime:1}triggerCallback(t){let e=t=="start"?this._onStartFns:this._onDoneFns;e.forEach(n=>n()),e.length=0}},l=class{constructor(t){this._onDoneFns=[],this._onStartFns=[],this._finished=!1,this._started=!1,this._destroyed=!1,this._onDestroyFns=[],this.parentPlayer=null,this.totalTime=0,this.players=t;let e=0,n=0,o=0,h=this.players.length;h==0?queueMicrotask(()=>this._onFinish()):this.players.forEach(r=>{r.onDone(()=>{++e==h&&this._onFinish()}),r.onDestroy(()=>{++n==h&&this._onDestroy()}),r.onStart(()=>{++o==h&&this._onStart()})}),this.totalTime=this.players.reduce((r,u)=>Math.max(r,u.totalTime),0)}_onFinish(){this._finished||(this._finished=!0,this._onDoneFns.forEach(t=>t()),this._onDoneFns=[])}init(){this.players.forEach(t=>t.init())}onStart(t){this._onStartFns.push(t)}_onStart(){this.hasStarted()||(this._started=!0,this._onStartFns.forEach(t=>t()),this._onStartFns=[])}onDone(t){this._onDoneFns.push(t)}onDestroy(t){this._onDestroyFns.push(t)}hasStarted(){return this._started}play(){this.parentPlayer||this.init(),this._onStart(),this.players.forEach(t=>t.play())}pause(){this.players.forEach(t=>t.pause())}restart(){this.players.forEach(t=>t.restart())}finish(){this._onFinish(),this.players.forEach(t=>t.finish())}destroy(){this._onDestroy()}_onDestroy(){this._destroyed||(this._destroyed=!0,this._onFinish(),this.players.forEach(t=>t.destroy()),this._onDestroyFns.forEach(t=>t()),this._onDestroyFns=[])}reset(){this.players.forEach(t=>t.reset()),this._destroyed=!1,this._finished=!1,this._started=!1}setPosition(t){let e=t*this.totalTime;this.players.forEach(n=>{let o=n.totalTime?Math.min(1,e/n.totalTime):1;n.setPosition(o)})}getPosition(){let t=this.players.reduce((e,n)=>e===null||n.totalTime>e.totalTime?n:e,null);return t!=null?t.getPosition():0}beforeDestroy(){this.players.forEach(t=>{t.beforeDestroy&&t.beforeDestroy()})}triggerCallback(t){let e=t=="start"?this._onStartFns:this._onDoneFns;e.forEach(n=>n()),e.length=0}},S="!";export{i as a,c as b,_ as c,f as d,d as e,y as f,p as g,m as h,g as i,D as j,F as k,a as l,l as m,S as n}; diff --git a/webui/dist/bitmagnet/browser/chunk-7OATZ42U.js b/webui/dist/bitmagnet/browser/chunk-7OATZ42U.js new file mode 100644 index 0000000..e647c49 --- /dev/null +++ b/webui/dist/bitmagnet/browser/chunk-7OATZ42U.js @@ -0,0 +1 @@ +import{B as J,J as K,P as T,Q as U,R as X,U as k,b as M,da as Y,ea as Z,fa as tt,ga as et,ha as nt,i as z,ia as it,na as at,o as b,qa as u,r as H,sa as ot,ta as rt,ya as lt}from"./chunk-4NEHCUZ2.js";import{$b as l,B as F,Cb as s,Ea as Q,Fa as A,Hb as V,Kb as G,Mb as v,Ob as P,Pb as $,Qb as r,Rb as o,Sb as _,Tb as f,Ub as C,Wb as N,Zb as R,a as I,b as D,jc as q,kb as a,kc as c,l as j,la as W,lc as m,mc as g,nc as y,qa as p,rc as S,ua as x,va as B,xc as L}from"./chunk-3DR3CJRN.js";var w={error:"error",degraded:"warning",down:"warning",unknown:"pending",inactive:"circle",up:"check_circle",started:"play_circle"},ct={status:"unknown",checks:[],icon:w.unknown,workers:[],error:null},mt=1e4,h=class{constructor(){this.apollo=p(z),this.resultSubject=new j(ct),this.result$=this.resultSubject.asObservable(),this.result=ct,this.watchQuery(),this.result$.subscribe(i=>{this.result=i})}watchQuery(){this.apollo.watchQuery({query:J,fetchPolicy:"no-cache",pollInterval:mt}).valueChanges.pipe(F(i=>({status:i.data.health.status==="down"?"degraded":i.data.health.status,checks:i.data.health.checks.map(e=>D(I({},e),{icon:w[e.status]})),workers:i.data.workers.listAll.workers.map(e=>D(I({},e),{icon:w[e.started?"started":"inactive"]})),icon:w[i.data.health.status],error:null}))).subscribe({next:i=>this.resultSubject.next(i),error:i=>{this.resultSubject.next({status:"error",checks:[],workers:[],error:i,icon:w.error}),setTimeout(this.watchQuery.bind(this),mt)}})}};var st=(t,i)=>i.key;function xt(t,i){if(t&1&&(r(0,"p"),c(1),o()),t&2){let e=l().$implicit,n=l();a(),y("",e("health.check_failed_with_error"),": ",n.health.result.error,"")}}function ft(t,i){if(t&1&&(r(0,"th"),c(1),o()),t&2){let e=l(2).$implicit;a(),m(e("general.error"))}}function Ct(t,i){if(t&1&&(r(0,"td"),c(1),o()),t&2){let e=l().$implicit;a(),m(e.error)}}function gt(t,i){if(t&1&&(r(0,"tr")(1,"td",2)(2,"mat-icon"),c(3),o()(),r(4,"th",3),c(5),o(),r(6,"td"),c(7),o(),s(8,Ct,2,1,"td"),o()),t&2){let e=i.$implicit,n=l(2).$implicit,d=l();a(3),m(e.icon),a(2),m(n("health.components."+e.key)),a(2),m(n("health.statuses."+e.status)),a(),v(d.health.result.status==="down"?8:-1)}}function Mt(t,i){t&1&&_(0,"td")}function vt(t,i){if(t&1&&(r(0,"tr")(1,"td",2)(2,"mat-icon"),c(3),o()(),r(4,"th",3),c(5),o(),r(6,"td"),c(7),o(),s(8,Mt,1,0,"td"),o()),t&2){let e=i.$implicit,n=l(2).$implicit,d=l();a(3),m(e.icon),a(2),y(" ",n("health.worker"),": ",n("health.workers."+e.key)," "),a(2),g(" ",n("health.statuses."+(e.started?"started":"inactive"))," "),a(),v(d.health.result.status==="down"?8:-1)}}function yt(t,i){if(t&1&&(r(0,"table",1)(1,"thead")(2,"tr"),_(3,"th"),r(4,"th"),c(5),o(),r(6,"th"),c(7),o(),s(8,ft,2,1,"th"),o()(),r(9,"tbody"),P(10,gt,9,4,"tr",null,st),P(12,vt,9,5,"tr",null,st),o()()),t&2){let e=l().$implicit,n=l();a(5),m(e("health.component")),a(2),m(e("general.status")),a(),v(n.health.result.status==="down"?8:-1),a(2),$(n.health.result.checks),a(2),$(n.health.result.workers)}}function St(t,i){if(t&1&&(f(0),s(1,xt,2,2,"p")(2,yt,14,3,"table",1),C()),t&2){let e=l();a(),v(e.health.result.error?1:2)}}var E=(()=>{class t{constructor(){this.health=p(h)}static{this.\u0275fac=function(n){return new(n||t)}}static{this.\u0275cmp=x({type:t,selectors:[["app-health-summary"]],decls:1,vars:0,consts:[[4,"transloco"],[1,"table-health"],[1,"td-icon"],["scope","row"]],template:function(n,d){n&1&&s(0,St,3,1,"ng-container",0)},dependencies:[M,u],styles:[".table-health[_ngcontent-%COMP%] th[_ngcontent-%COMP%], .table-health[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{padding-right:20px}.table-health[_ngcontent-%COMP%] th[_ngcontent-%COMP%]{text-align:left}"]})}}return t})();var wt=t=>({status:t});function bt(t,i){if(t&1&&(f(0),r(1,"mat-card",1)(2,"mat-card-header")(3,"mat-card-title")(4,"h3")(5,"mat-icon"),c(6),o(),c(7),o()()(),r(8,"mat-card-content",2),_(9,"app-health-summary"),o()(),C()),t&2){let e=i.$implicit,n=l();a(6),m(n.health.result.icon),a(),g(" ",e("health.bitmagnet_is_status",S(2,wt,e("health.statuses."+(n.health.result.error?"down":n.health.result.status))))," ")}}var Vt=(()=>{class t{constructor(){this.health=p(h)}static{this.\u0275fac=function(n){return new(n||t)}}static{this.\u0275cmp=x({type:t,selectors:[["app-health-card"]],decls:1,vars:0,consts:[[4,"transloco"],[1,"dashboard-card","dashboard-card-health"],[1,"dashboard-card-content"]],template:function(n,d){n&1&&s(0,bt,10,4,"ng-container",0)},dependencies:[M,u,T,X,k,U,E],styles:[".dashboard-card-health[_ngcontent-%COMP%]{position:absolute;inset:15px}.dashboard-card-health[_ngcontent-%COMP%] h3[_ngcontent-%COMP%]{margin-top:0}.dashboard-card-health[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{position:relative;top:3px;margin-left:4px;margin-right:6px}"]})}}return t})();var ut=t=>({status:t});function Ht(t,i){if(t&1&&(r(0,"h2",3),c(1),o(),r(2,"mat-dialog-content"),_(3,"app-health-summary"),o(),r(4,"mat-dialog-actions")(5,"button",4),c(6),o()()),t&2){let e=l().$implicit,n=l();a(),y(" ",e("health.summary"),": ",e("health.bitmagnet_is_status",S(3,ut,e("health.statuses."+(n.health.result.error?"down":n.health.result.status))))," "),a(5),g(" ",e("general.dismiss")," ")}}function Tt(t,i){if(t&1){let e=N();f(0),r(1,"button",2),R("click",function(){Q(e);let d=q(5),_t=l();return A(_t.dialog.open(d))}),r(2,"mat-icon"),c(3),o()(),s(4,Ht,7,5,"ng-template",null,0,L),C()}if(t&2){let e=i.$implicit,n=l();a(),G("health-icon health-icon-"+n.health.result.status),V("matTooltip",e("health.bitmagnet_is_status",S(4,ut,e("health.statuses."+n.health.result.status)))),a(2),m(n.health.result.icon)}}var Ut=(()=>{class t{constructor(){this.health=p(h),this.dialog=p(Y)}static{this.\u0275fac=function(n){return new(n||t)}}static{this.\u0275cmp=x({type:t,selectors:[["app-health-widget"]],decls:1,vars:0,consts:[["healthDialog",""],[4,"transloco"],["mat-icon-button","",3,"click","matTooltip"],["matDialogTitle",""],["mat-button","","matDialogClose","","color","primary"]],template:function(n,d){n&1&&s(0,Tt,6,6,"ng-container",1)},dependencies:[M,u,lt,Z,tt,nt,et,b,H,E]})}}return t})();var _e=(()=>{class t{static{this.\u0275fac=function(n){return new(n||t)}}static{this.\u0275mod=B({type:t})}static{this.\u0275inj=W({providers:[h],imports:[K,u,it,b,H,T,k,at,rt,ot]})}}return t})();export{h as a,Vt as b,Ut as c,_e as d}; diff --git a/webui/dist/bitmagnet/browser/chunk-7Y5J4R45.js b/webui/dist/bitmagnet/browser/chunk-7Y5J4R45.js new file mode 100644 index 0000000..b501e51 --- /dev/null +++ b/webui/dist/bitmagnet/browser/chunk-7Y5J4R45.js @@ -0,0 +1 @@ +import{a as Ne,b as Ae,c as j}from"./chunk-OYPFZA36.js";import{e as je}from"./chunk-AV47NZN7.js";import{a as Me,m as De}from"./chunk-3PIWRAOL.js";import{a as Ie}from"./chunk-M3BEO55A.js";import{G as ve,J as ke,M as Te,P as J,Q as Se,R as K,U as Q,Ua as q,a as be,b as G,i as ge,n as Ce,na as ye,oa as we,qa as Y,r as xe,ra as Oe,va as Ee,xa as Pe,ya as Be,za as Ve}from"./chunk-4NEHCUZ2.js";import"./chunk-6XXA7HXI.js";import"./chunk-FKMTSCBK.js";import{$b as p,B as ue,Cb as F,Ea as _,Fa as f,Hb as l,Kb as N,N as pe,Nb as D,Ob as E,Pb as P,Q as te,Qb as i,Rb as c,Sb as B,Tb as z,Ub as H,Wb as re,Zb as h,_c as he,a as v,b as k,ka as de,kb as a,kc as u,l as I,lc as T,mc as _e,o as me,pc as U,qa as O,qc as fe,ua as L,uc as ne,vc as ie}from"./chunk-3DR3CJRN.js";var R=(n,s)=>{let{bucketParams:e,earliestBucket:r}=Ye(n,s),t=Object.entries(s.torrent.metrics.buckets.reduce((b,x)=>{if(x.source!==(n.source??x.source))return b;let C=y(x.bucket,e);if(r&&r.index>C.index&&(C=void 0),!C)return b;let d=b[x.source]??[];return k(v({},b),{[x.source]:{created:x.updated?d.created:k(v({},d.created),{[C.key]:{count:x.count+(d.created?.[C.key]?.count??0),startTime:C.start}}),updated:x.updated?k(v({},d.updated),{[C.key]:{count:x.count+(d.updated?.[C.key]?.count??0),startTime:C.start}}):d.updated}})},{})).map(([b,x])=>{let C;if(Object.keys(x).length){let d=Array(),M=Re(Array("created","updated").flatMap(S=>{let A=Re(Object.entries(x[S]??{}).filter(([,ee])=>ee?.count).sort(([ee],[Qe])=>parseInt(ee)b.events?[b.events.earliestBucket]:[]).sort()[0],o=t.flatMap(b=>b.events?[b.events.latestBucket]:[]).sort().reverse()[0];return g&&o&&(m={earliestBucket:g,latestBucket:o}),{params:k(v({},n),{buckets:e}),sourceSummaries:t,bucketSpan:m,availableSources:s.torrent.listSources.sources.map(b=>({key:b.key,name:b.name}))}},Re=n=>Object.fromEntries(n),Ye=(n,s)=>{let e=n.buckets.duration==="AUTO"?"hour":n.buckets.duration,r=n.buckets.multiplier==="AUTO"?1:n.buckets.multiplier,t=n.buckets.timeframe,m=new Date,g=y(m,{duration:e,multiplier:r}),o=y(m.getTime()-1e3*V[t],{duration:e,multiplier:r}),b=[o,...s.torrent.metrics.buckets.flatMap(d=>[y(d.bucket,{duration:e,multiplier:r})]),g].filter(d=>d.index>=o.index).sort((d,M)=>d.index-M.index),x=b[0],C=b[b.length-1];if(n.buckets.multiplier==="AUTO"){let M=C.index-x.index;r=Math.min(60,Math.max(Math.floor(M/(20*5))*5,1))}return{bucketParams:{duration:e,multiplier:r,timeframe:t},earliestBucket:y(m.getTime()-1e3*V[t],{duration:e,multiplier:r}),latestBucket:y(Math.max(m.getTime(),C.start.getTime()),{duration:e,multiplier:r})}},y=(n,s)=>{let e=new Date(n),r=1e3*W[s.duration]*s.multiplier,t=Math.floor(e.getTime()/r);return{key:`${t}`,index:t,start:new Date(t*r)}};var oe={duration:"minute",multiplier:1,timeframe:"hours_1"},$e=["day","hour","minute"],W={minute:60,hour:60*60,day:60*60*24},ae={buckets:oe,autoRefresh:"off"},se={torrent:{metrics:{buckets:[]},listSources:{sources:[{key:"dht",name:"DHT"}]}}},X=["created","updated"],Le=["minutes_15","minutes_30","hours_1","hours_6","hours_12","days_1","weeks_1"],V={minutes_15:60*15,minutes_30:60*30,hours_1:60*60,hours_6:60*60*6,hours_12:60*60*12,days_1:60*60*24,weeks_1:60*60*24*7},Fe=["off","seconds_10","seconds_30","minutes_1","minutes_5"],ze={off:null,seconds_10:10,seconds_30:30,minutes_1:60,minutes_5:60*5},He=R(ae,se);var Z=class{constructor(s,e=ae,r){this.apollo=s,this.errorsService=r,this.rawResultSubject=new I(se),this.resultSubject=new I(He),this.result$=this.resultSubject.asObservable(),this.loadingSubject=new I(!1),this.paramsSubject=new I(e),this.params$=this.paramsSubject.asObservable(),this.variablesSubject=new I(Ue(e)),this.paramsSubject.pipe(te(50)).subscribe(t=>{let m=this.variablesSubject.getValue(),g=Ue(t);JSON.stringify(m)!==JSON.stringify(g)?this.variablesSubject.next(g):this.resultSubject.next(R(t,this.rawResultSubject.getValue()))}),this.variablesSubject.pipe(te(50)).subscribe(t=>this.request(t)),this.rawResultSubject.subscribe(t=>{let m=this.paramsSubject.getValue();this.resultSubject.next(R(m,t)),this.setInterval(m.autoRefresh)})}setInterval(s){clearTimeout(this.refreshTimeout);let e=ze[s??this.params.autoRefresh];e&&(this.refreshTimeout=setTimeout(()=>{this.refresh()},e*1e3))}get params(){return this.paramsSubject.getValue()}get bucketDuration(){let s=this.params.buckets.duration;return s==="AUTO"?"hour":s}get bucketMultiplier(){return this.resultSubject.getValue().params.buckets.multiplier??this.params.buckets.multiplier}get loading(){return this.loadingSubject.getValue()}setTimeframe(s){this.updateParams(e=>k(v({},e),{buckets:k(v({},e.buckets),{timeframe:s})}))}setSource(s){this.updateParams(e=>k(v({},e),{source:s??void 0}))}setBucketDuration(s,e){this.updateParams(r=>k(v({},r),{buckets:k(v({},r.buckets),{duration:s,multiplier:e??"AUTO"})}))}setBucketMultiplier(s){this.updateParams(e=>k(v({},e),{buckets:k(v({},e.buckets),{multiplier:s})}))}setEvent(s){this.updateParams(e=>k(v({},e),{event:s??void 0}))}setAutoRefreshInterval(s){this.updateParams(e=>k(v({},e),{autoRefresh:s}))}updateParams(s){this.paramsSubject.next(s(this.params))}refresh(){this.variablesSubject.next(this.variablesSubject.getValue())}request(s){return clearTimeout(this.refreshTimeout),this.loadingSubject.next(!0),this.apollo.query({query:ve,variables:s,fetchPolicy:"no-cache"}).pipe(ue(e=>{e&&(this.loadingSubject.next(!1),this.rawResultSubject.next(e.data))})).pipe(pe(e=>(this.errorsService.addError(`Failed to load torrent metrics: ${e.message}`),this.loadingSubject.next(!1),this.setInterval(),me))).subscribe()}},Ue=n=>({input:{bucketDuration:n.buckets.duration==="AUTO"?"hour":n.buckets.duration,sources:n.source?[n.source]:void 0,startTime:new Date(new Date().getTime()-1e3*V[n.buckets.timeframe]).toISOString()}});var $={created:"primary",updated:"secondary"},Je=(()=>{class n{constructor(){this.themeInfo=O(je),this.transloco=O(be)}create(e){let{colors:r}=this.themeInfo.info,t=Array(),m=[];if(e){let g=e.sourceSummaries.filter(d=>!d.isEmpty),o=Array.from(new Set(g.flatMap(d=>d.events?[d.events.earliestBucket,d.events.latestBucket]:[]))).sort(),b=new Date,x=Math.min(o[0],y(b.getTime()-1e3*V[e.params.buckets.timeframe],e.params.buckets).index),C=Math.max(o[o.length-1],y(b,e.params.buckets).index);if(o.length){for(let M=x;M<=C;M++)t.push(this.formatBucketKey(e.params.buckets,M));let d=X.filter(M=>(e.params.event??M)===M);for(let M of g)for(let S of d){let A=Array();for(let w=x;w<=C;w++)A.push(M.events?.eventBuckets?.[S]?.entries?.[`${w}`]?.count??0);m.push({yAxisID:"yCount",label:[M.source,S].join("/"),data:A,borderColor:r[j($[S],50)],pointBackgroundColor:r[j($[S],20)],pointBorderColor:r[j($[S],80)],pointHoverBackgroundColor:r[j($[S],40)],pointHoverBorderColor:r[j($[S],60)]})}}}return{type:"line",options:{animation:!1,elements:{line:{tension:.5}},scales:{yCount:{position:"left",ticks:{callback:g=>parseInt(g).toLocaleString(this.transloco.getActiveLang())}}},plugins:{legend:{display:!0},decimation:{enabled:!0}}},data:{labels:t,datasets:m}}}formatBucketKey(e,r){let t;switch(e.duration){case"day":t="d LLL";break;case"hour":t="d LLL H:00";break;case"minute":t="H:mm";break}return Ne(1e3*W[e.duration]*e.multiplier*r,t,{locale:De(this.transloco.getActiveLang())})}static{this.\u0275fac=function(r){return new(r||n)}}static{this.\u0275prov=de({token:n,factory:n.\u0275fac,providedIn:"root"})}}return n})();var Ze=(n,s)=>s.key,et=()=>["dht"];function tt(n,s){if(n&1&&(i(0,"mat-option",6),u(1),c()),n&2){let e=s.$implicit,r=p().$implicit;l("value",e),a(),T(r("dashboard.interval."+e))}}function rt(n,s){if(n&1&&(i(0,"mat-option",6),u(1),c()),n&2){let e=s.$implicit,r=p().$implicit;l("value",e),a(),T(r("dashboard.interval."+e+"s"))}}function nt(n,s){if(n&1&&(i(0,"mat-option",6),u(1),c()),n&2){let e=s.$implicit;l("value",e.key),a(),T(e.name)}}function it(n,s){if(n&1){let e=re();i(0,"button",16),h("click",function(){let t=_(e).$implicit,m=p(2);return f(m.torrentMetricsController.params.source===t||m.torrentMetricsController.setSource(t))}),i(1,"mat-icon"),u(2),c()()}if(n&2){let e=s.$implicit,r=p(2);N(r.torrentMetricsController.params.source===e?"selected":"deselected"),l("matTooltip",e),a(2),T(r.torrentMetricsController.params.source===e?"radio_button_checked":"radio_button_unchecked")}}function ot(n,s){if(n&1&&(i(0,"mat-option",6),u(1),c()),n&2){let e=s.$implicit,r=p().$implicit;l("value",e),a(),T(r("dashboard.event."+e))}}function at(n,s){if(n&1&&(i(0,"mat-option",6),u(1),c()),n&2){let e=s.$implicit,r=p().$implicit;l("value",e),a(),T(r("dashboard.interval."+e))}}function st(n,s){if(n&1){let e=re();z(0),i(1,"mat-card")(2,"mat-card-content")(3,"mat-grid-list",1)(4,"mat-grid-tile",2)(5,"mat-card",3)(6,"mat-card-header")(7,"mat-card-title")(8,"h4"),u(9),c()()(),i(10,"mat-card-content")(11,"mat-form-field",4)(12,"mat-select",5),h("valueChange",function(t){_(e);let m=p();return f(m.torrentMetricsController.setTimeframe(t))}),E(13,tt,2,2,"mat-option",6,D),c()(),i(15,"div",7)(16,"button",8),h("click",function(){_(e);let t=p();return f(t.torrentMetricsController.setTimeframe(t.timeframeNames[0]))}),i(17,"mat-icon"),u(18,"first_page"),c()(),i(19,"button",8),h("click",function(){_(e);let t=p();return f(t.torrentMetricsController.setTimeframe(t.timeframeNames[t.timeframeNames.indexOf(t.torrentMetricsController.params.buckets.timeframe)-1]))}),i(20,"mat-icon"),u(21,"navigate_before"),c()(),i(22,"button",8),h("click",function(){_(e);let t=p();return f(t.torrentMetricsController.setTimeframe(t.timeframeNames[t.timeframeNames.indexOf(t.torrentMetricsController.params.buckets.timeframe)+1]))}),i(23,"mat-icon"),u(24,"navigate_next"),c()(),i(25,"button",8),h("click",function(){_(e);let t=p();return f(t.torrentMetricsController.setTimeframe(t.timeframeNames[t.timeframeNames.length-1]))}),i(26,"mat-icon"),u(27,"last_page"),c()()()()()(),i(28,"mat-grid-tile",2)(29,"mat-card",9)(30,"mat-card-header")(31,"mat-card-title")(32,"h4"),u(33),c()()(),i(34,"mat-card-content")(35,"mat-form-field",10)(36,"input",11),ne(37,"async"),h("change",function(t){_(e);let m=p();return f(m.handleMultiplierEvent(t))}),c()(),i(38,"mat-form-field",12)(39,"mat-select",5),h("valueChange",function(t){_(e);let m=p();return f(m.torrentMetricsController.setBucketDuration(t))}),E(40,rt,2,2,"mat-option",6,D),c()(),i(42,"div",7)(43,"button",8),h("click",function(){_(e);let t=p();return f(t.torrentMetricsController.setBucketMultiplier(t.torrentMetricsController.bucketMultiplier-1))}),i(44,"mat-icon"),u(45,"remove"),c()(),i(46,"button",13),h("click",function(){_(e);let t=p();return f(t.torrentMetricsController.setBucketMultiplier(t.torrentMetricsController.bucketMultiplier+1))}),i(47,"mat-icon"),u(48,"add"),c()(),i(49,"button",8),h("click",function(){_(e);let t=p();return f(t.torrentMetricsController.setBucketDuration(t.resolutionNames[0]))}),i(50,"mat-icon"),u(51,"first_page"),c()(),i(52,"button",8),h("click",function(){_(e);let t=p();return f(t.torrentMetricsController.setBucketDuration(t.resolutionNames[t.resolutionNames.indexOf(t.torrentMetricsController.bucketDuration)-1]))}),i(53,"mat-icon"),u(54,"navigate_before"),c()(),i(55,"button",8),h("click",function(){_(e);let t=p();return f(t.torrentMetricsController.setBucketDuration(t.resolutionNames[t.resolutionNames.indexOf(t.torrentMetricsController.bucketDuration)+1]))}),i(56,"mat-icon"),u(57,"navigate_next"),c()(),i(58,"button",8),h("click",function(){_(e);let t=p();return f(t.torrentMetricsController.setBucketDuration(t.resolutionNames[t.resolutionNames.length-1]))}),i(59,"mat-icon"),u(60,"last_page"),c()()()()()(),i(61,"mat-grid-tile",2)(62,"mat-card")(63,"mat-card-header")(64,"mat-card-title")(65,"h4"),u(66),c()()(),i(67,"mat-card-content")(68,"mat-form-field",4)(69,"mat-select",5),h("valueChange",function(t){_(e);let m=p();return f(m.torrentMetricsController.setSource(t==="_all"?null:t))}),i(70,"mat-option",14),u(71,"All"),c(),E(72,nt,2,2,"mat-option",6,Ze),ne(74,"async"),c()(),i(75,"div",15)(76,"button",16),h("click",function(){_(e);let t=p();return f(t.torrentMetricsController.setSource(null))}),i(77,"mat-icon",17),u(78,"workspaces"),c()(),E(79,it,3,4,"button",18,D),c()()()(),i(81,"mat-grid-tile",2)(82,"mat-card")(83,"mat-card-header")(84,"mat-card-title")(85,"h4"),u(86),c()()(),i(87,"mat-card-content")(88,"mat-form-field",4)(89,"mat-select",5),h("valueChange",function(t){_(e);let m=p();return f(m.torrentMetricsController.setEvent(t==="_all"?null:t))}),i(90,"mat-option",14),u(91,"All"),c(),E(92,ot,2,2,"mat-option",6,D),c()(),i(94,"div",15)(95,"button",16),h("click",function(){_(e);let t=p();return f(t.torrentMetricsController.setEvent(null))}),i(96,"mat-icon",17),u(97,"radio_button_checked"),c()(),i(98,"button",16),h("click",function(){_(e);let t=p();return f(t.torrentMetricsController.params.event==="created"||t.torrentMetricsController.setEvent("created"))}),i(99,"mat-icon"),u(100,"add_circle"),c()(),i(101,"button",16),h("click",function(){_(e);let t=p();return f(t.torrentMetricsController.params.event==="updated"||t.torrentMetricsController.setEvent("updated"))}),i(102,"mat-icon"),u(103,"check_circle"),c()()()()()(),i(104,"mat-grid-tile",2)(105,"mat-card",19)(106,"mat-card-header")(107,"mat-card-title")(108,"h4"),u(109),c()()(),i(110,"mat-card-content")(111,"mat-form-field",4)(112,"mat-select",5),h("valueChange",function(t){_(e);let m=p();return f(m.torrentMetricsController.setAutoRefreshInterval(t))}),E(113,at,2,2,"mat-option",6,D),c()(),i(115,"div",15)(116,"button",16),h("click",function(){_(e);let t=p();return f(t.torrentMetricsController.refresh())}),i(117,"mat-icon"),u(118,"sync"),c()()()()()()(),i(119,"div",20),B(120,"mat-progress-bar",21),c(),i(121,"mat-grid-list",1)(122,"mat-grid-tile",2)(123,"mat-card")(124,"mat-card-header")(125,"mat-card-title")(126,"h4"),u(127),c()()(),i(128,"mat-card-content"),B(129,"app-chart",22),c()()(),B(130,"mat-grid-tile",2),c()()(),H()}if(n&2){let e,r,t,m,g=s.$implicit,o=p();a(3),l("cols",o.breakpoints.sizeAtLeast("Large")?5:o.breakpoints.sizeAtLeast("Medium")?3:o.breakpoints.sizeAtLeast("Small")?2:1),a(),l("colspan",1)("rowspan",2),a(5),T(g("dashboard.metrics.timeframe")),a(3),l("value",o.torrentMetricsController.params.buckets.timeframe),a(),P(o.timeframeNames),a(3),l("disabled",o.timeframeNames.indexOf(o.torrentMetricsController.params.buckets.timeframe)<=0),a(3),l("disabled",o.timeframeNames.indexOf(o.torrentMetricsController.params.buckets.timeframe)<=0),a(3),l("disabled",o.timeframeNames.indexOf(o.torrentMetricsController.params.buckets.timeframe)>=o.timeframeNames.length-1),a(3),l("disabled",o.timeframeNames.indexOf(o.torrentMetricsController.params.buckets.timeframe)>=o.timeframeNames.length-1),a(3),l("colspan",1)("rowspan",2),a(5),_e(" ",g("dashboard.metrics.resolution")," "),a(3),l("placeholder",(e=(e=ie(37,57,o.torrentMetricsController.result$))==null||e.params==null||e.params.buckets==null||e.params.buckets.multiplier==null?null:e.params.buckets.multiplier.toString())!==null&&e!==void 0?e:"")("value",o.torrentMetricsController.params.buckets.multiplier),a(3),l("value",o.torrentMetricsController.bucketDuration),a(),P(o.resolutionNames),a(3),l("disabled",o.torrentMetricsController.bucketMultiplier===1),a(6),l("disabled",o.resolutionNames.indexOf(o.torrentMetricsController.bucketDuration)<=0),a(3),l("disabled",o.resolutionNames.indexOf(o.torrentMetricsController.bucketDuration)<=0),a(3),l("disabled",o.resolutionNames.indexOf(o.torrentMetricsController.bucketDuration)>=o.resolutionNames.length-1),a(3),l("disabled",o.resolutionNames.indexOf(o.torrentMetricsController.bucketDuration)>=o.resolutionNames.length-1),a(3),l("colspan",1)("rowspan",2),a(5),T(g("torrents.source")),a(3),l("value",(r=o.torrentMetricsController.params.source)!==null&&r!==void 0?r:"_all"),a(3),P((t=ie(74,59,o.torrentMetricsController.result$))==null?null:t.availableSources),a(4),N(o.torrentMetricsController.params.source?"deselected":"selected"),l("matTooltip","all"),a(3),P(fe(61,et)),a(2),l("colspan",1)("rowspan",2),a(5),T(g("dashboard.metrics.event")),a(3),l("value",(m=o.torrentMetricsController.params.event)!==null&&m!==void 0?m:"_all"),a(3),P(o.eventNames),a(3),N(o.torrentMetricsController.params.event?"deselected":"selected"),l("matTooltip","all"),a(3),N(o.torrentMetricsController.params.event==="created"?"selected":"deselected"),l("matTooltip","created"),a(3),N(o.torrentMetricsController.params.event==="updated"?"selected":"deselected"),l("matTooltip","updated"),a(3),l("colspan",1)("rowspan",2),a(5),T(g("general.refresh")),a(3),l("value",o.torrentMetricsController.params.autoRefresh),a(),P(o.autoRefreshIntervalNames),a(3),l("matTooltip","Refresh"),a(4),l("mode",o.torrentMetricsController.loading?"indeterminate":"determinate")("value",0),a(),l("cols",o.breakpoints.sizeAtLeast("Large")?2:1),a(),l("colspan",1)("rowspan",6),a(5),T(g("dashboard.metrics.throughput")),a(2),l("adapter",o.timeline)("$data",o.torrentMetricsController.result$)("height",400)("width",550),a(),l("colspan",1)("rowspan",5)}}var Ke=(()=>{class n{constructor(){this.breakpoints=O(Ie),this.apollo=O(ge),this.torrentMetricsController=new Z(this.apollo,{buckets:oe,autoRefresh:"seconds_30"},O(Me)),this.timeline=O(Je),this.resolutionNames=$e,this.timeframeNames=Le,this.autoRefreshIntervalNames=Fe,this.eventNames=X}ngOnDestroy(){this.torrentMetricsController.setAutoRefreshInterval("off")}handleMultiplierEvent(e){let r=e.currentTarget.value;this.torrentMetricsController.setBucketMultiplier(/^\d+$/.test(r)?parseInt(r):"AUTO")}static{this.\u0275fac=function(r){return new(r||n)}}static{this.\u0275cmp=L({type:n,selectors:[["app-torrent-metrics"]],standalone:!0,features:[U],decls:1,vars:0,consts:[[4,"transloco"],["rowHeight","100px",3,"cols"],[3,"colspan","rowspan"],[1,"form-timeframe"],["subscriptSizing","dynamic"],[3,"valueChange","value"],[3,"value"],[1,"paginator","actions"],["mat-icon-button","",3,"click","disabled"],[1,"form-resolution"],["subscriptSizing","dynamic",1,"form-input-multiplier"],["type","number","matInput","","min","1","step","1",3,"change","placeholder","value"],["subscriptSizing","dynamic",1,"form-select-duration"],["mat-icon-button","",3,"click"],["value","_all"],[1,"actions"],["mat-icon-button","",3,"click","matTooltip"],["fontSet","material-icons"],["mat-icon-button","",3,"class","matTooltip"],[1,"form-refresh"],[1,"progress-bar-container"],[3,"mode","value"],[3,"adapter","$data","height","width"]],template:function(r,t){r&1&&F(0,st,131,62,"ng-container",0)},dependencies:[q,Ce,xe,J,K,Q,Se,Te,we,ye,Y,Oe,Ee,Ve,Be,G,he,Ae,ke],styles:[".actions[_ngcontent-%COMP%]{width:210px;padding-top:12px;--mdc-icon-button-state-layer-size: 32px}.actions[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:22px}.actions[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{margin-right:0}.progress-bar-container[_ngcontent-%COMP%]{width:100%;height:10px}mat-grid-tile[_ngcontent-%COMP%] mat-card[_ngcontent-%COMP%]{width:100%}mat-grid-tile[_ngcontent-%COMP%] mat-card[_ngcontent-%COMP%] mat-card-content[_ngcontent-%COMP%]{min-width:190px}mat-grid-tile[_ngcontent-%COMP%] mat-card[_ngcontent-%COMP%] h4[_ngcontent-%COMP%]{margin-bottom:16px;font-size:18px}mat-form-field[_ngcontent-%COMP%]{width:186px}.form-resolution[_ngcontent-%COMP%] .actions[_ngcontent-%COMP%]{margin-left:-2px}.form-resolution[_ngcontent-%COMP%] .form-input-multiplier[_ngcontent-%COMP%]{width:60px;margin-right:10px}.form-resolution[_ngcontent-%COMP%] .form-input-multiplier[_ngcontent-%COMP%] input[_ngcontent-%COMP%]::-webkit-outer-spin-button, .form-resolution[_ngcontent-%COMP%] .form-input-multiplier[_ngcontent-%COMP%] input[_ngcontent-%COMP%]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.form-resolution[_ngcontent-%COMP%] .form-input-multiplier[_ngcontent-%COMP%] input[type=number][_ngcontent-%COMP%]{-moz-appearance:textfield}.form-resolution[_ngcontent-%COMP%] .form-select-duration[_ngcontent-%COMP%]{width:116px}"]})}}return n})();function ct(n,s){if(n&1&&(z(0),i(1,"mat-card",1)(2,"mat-card-header")(3,"mat-toolbar")(4,"h2"),B(5,"mat-icon",2),u(6),c()()(),i(7,"mat-card-content"),B(8,"app-torrent-metrics"),c()(),H()),n&2){let e=s.$implicit;a(6),T(e("routes.torrents"))}}var tr=(()=>{class n{static{this.\u0275fac=function(r){return new(r||n)}}static{this.\u0275cmp=L({type:n,selectors:[["app-torrents"]],standalone:!0,features:[U],decls:1,vars:0,consts:[[4,"transloco"],[1,"dashboard-card"],["svgIcon","magnet"]],template:function(r,t){r&1&&F(0,ct,9,1,"ng-container",0)},dependencies:[q,J,K,Q,Y,Pe,G,Ke],styles:["mat-card-header[_ngcontent-%COMP%]{flex-wrap:wrap}mat-card-header[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{font-size:18px;margin:0 60px 0 48px;height:48px;line-height:48px}mat-card-header[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{position:relative;top:6px;margin-right:14px;line-height:1.25rem}mat-card-header[_ngcontent-%COMP%] nav[_ngcontent-%COMP%]{flex:0 0 100%}mat-card-header[_ngcontent-%COMP%] nav[_ngcontent-%COMP%] a[_ngcontent-%COMP%]{margin-top:2px}mat-card-header[_ngcontent-%COMP%] nav[_ngcontent-%COMP%] a[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{margin-right:12px}"]})}}return n})();export{tr as TorrentsDashboardComponent}; diff --git a/webui/dist/bitmagnet/browser/chunk-AV47NZN7.js b/webui/dist/bitmagnet/browser/chunk-AV47NZN7.js new file mode 100644 index 0000000..8ef29fe --- /dev/null +++ b/webui/dist/bitmagnet/browser/chunk-AV47NZN7.js @@ -0,0 +1,3 @@ +import{Da as vn,Na as Ji,Oa as Mn,Qa as wn,V as bn,a as Ze,b as Je,ka as ti,l as Qe,lb as we,na as _n,wa as yn}from"./chunk-3DR3CJRN.js";function Ce(e){return e+.5|0}var St=(e,i,t)=>Math.max(Math.min(e,t),i);function Se(e){return St(Ce(e*2.55),0,255)}function kt(e){return St(Ce(e*255),0,255)}function mt(e){return St(Ce(e/2.55)/100,0,1)}function Sn(e){return St(Ce(e*100),0,100)}var st={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:10,B:11,C:12,D:13,E:14,F:15,a:10,b:11,c:12,d:13,e:14,f:15},ts=[..."0123456789ABCDEF"],dl=e=>ts[e&15],ul=e=>ts[(e&240)>>4]+ts[e&15],ei=e=>(e&240)>>4===(e&15),pl=e=>ei(e.r)&&ei(e.g)&&ei(e.b)&&ei(e.a);function gl(e){var i=e.length,t;return e[0]==="#"&&(i===4||i===5?t={r:255&st[e[1]]*17,g:255&st[e[2]]*17,b:255&st[e[3]]*17,a:i===5?st[e[4]]*17:255}:(i===7||i===9)&&(t={r:st[e[1]]<<4|st[e[2]],g:st[e[3]]<<4|st[e[4]],b:st[e[5]]<<4|st[e[6]],a:i===9?st[e[7]]<<4|st[e[8]]:255})),t}var ml=(e,i)=>e<255?i(e):"";function xl(e){var i=pl(e)?dl:ul;return e?"#"+i(e.r)+i(e.g)+i(e.b)+ml(e.a,i):void 0}var bl=/^(hsla?|hwb|hsv)\(\s*([-+.e\d]+)(?:deg)?[\s,]+([-+.e\d]+)%[\s,]+([-+.e\d]+)%(?:[\s,]+([-+.e\d]+)(%)?)?\s*\)$/;function On(e,i,t){let s=i*Math.min(t,1-t),n=(o,r=(o+e/30)%12)=>t-s*Math.max(Math.min(r-3,9-r,1),-1);return[n(0),n(8),n(4)]}function _l(e,i,t){let s=(n,o=(n+e/60)%6)=>t-t*i*Math.max(Math.min(o,4-o,1),0);return[s(5),s(3),s(1)]}function yl(e,i,t){let s=On(e,1,.5),n;for(i+t>1&&(n=1/(i+t),i*=n,t*=n),n=0;n<3;n++)s[n]*=1-i-t,s[n]+=i;return s}function vl(e,i,t,s,n){return e===n?(i-t)/s+(i.5?h/(2-o-r):h/(o+r),l=vl(t,s,n,h,o),l=l*60+.5),[l|0,c||0,a]}function is(e,i,t,s){return(Array.isArray(i)?e(i[0],i[1],i[2]):e(i,t,s)).map(kt)}function ss(e,i,t){return is(On,e,i,t)}function Ml(e,i,t){return is(yl,e,i,t)}function wl(e,i,t){return is(_l,e,i,t)}function An(e){return(e%360+360)%360}function Sl(e){let i=bl.exec(e),t=255,s;if(!i)return;i[5]!==s&&(t=i[6]?Se(+i[5]):kt(+i[5]));let n=An(+i[2]),o=+i[3]/100,r=+i[4]/100;return i[1]==="hwb"?s=Ml(n,o,r):i[1]==="hsv"?s=wl(n,o,r):s=ss(n,o,r),{r:s[0],g:s[1],b:s[2],a:t}}function kl(e,i){var t=es(e);t[0]=An(t[0]+i),t=ss(t),e.r=t[0],e.g=t[1],e.b=t[2]}function Cl(e){if(!e)return;let i=es(e),t=i[0],s=Sn(i[1]),n=Sn(i[2]);return e.a<255?`hsla(${t}, ${s}%, ${n}%, ${mt(e.a)})`:`hsl(${t}, ${s}%, ${n}%)`}var kn={x:"dark",Z:"light",Y:"re",X:"blu",W:"gr",V:"medium",U:"slate",A:"ee",T:"ol",S:"or",B:"ra",C:"lateg",D:"ights",R:"in",Q:"turquois",E:"hi",P:"ro",O:"al",N:"le",M:"de",L:"yello",F:"en",K:"ch",G:"arks",H:"ea",I:"ightg",J:"wh"},Cn={OiceXe:"f0f8ff",antiquewEte:"faebd7",aqua:"ffff",aquamarRe:"7fffd4",azuY:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"0",blanKedOmond:"ffebcd",Xe:"ff",XeviTet:"8a2be2",bPwn:"a52a2a",burlywood:"deb887",caMtXe:"5f9ea0",KartYuse:"7fff00",KocTate:"d2691e",cSO:"ff7f50",cSnflowerXe:"6495ed",cSnsilk:"fff8dc",crimson:"dc143c",cyan:"ffff",xXe:"8b",xcyan:"8b8b",xgTMnPd:"b8860b",xWay:"a9a9a9",xgYF:"6400",xgYy:"a9a9a9",xkhaki:"bdb76b",xmagFta:"8b008b",xTivegYF:"556b2f",xSange:"ff8c00",xScEd:"9932cc",xYd:"8b0000",xsOmon:"e9967a",xsHgYF:"8fbc8f",xUXe:"483d8b",xUWay:"2f4f4f",xUgYy:"2f4f4f",xQe:"ced1",xviTet:"9400d3",dAppRk:"ff1493",dApskyXe:"bfff",dimWay:"696969",dimgYy:"696969",dodgerXe:"1e90ff",fiYbrick:"b22222",flSOwEte:"fffaf0",foYstWAn:"228b22",fuKsia:"ff00ff",gaRsbSo:"dcdcdc",ghostwEte:"f8f8ff",gTd:"ffd700",gTMnPd:"daa520",Way:"808080",gYF:"8000",gYFLw:"adff2f",gYy:"808080",honeyMw:"f0fff0",hotpRk:"ff69b4",RdianYd:"cd5c5c",Rdigo:"4b0082",ivSy:"fffff0",khaki:"f0e68c",lavFMr:"e6e6fa",lavFMrXsh:"fff0f5",lawngYF:"7cfc00",NmoncEffon:"fffacd",ZXe:"add8e6",ZcSO:"f08080",Zcyan:"e0ffff",ZgTMnPdLw:"fafad2",ZWay:"d3d3d3",ZgYF:"90ee90",ZgYy:"d3d3d3",ZpRk:"ffb6c1",ZsOmon:"ffa07a",ZsHgYF:"20b2aa",ZskyXe:"87cefa",ZUWay:"778899",ZUgYy:"778899",ZstAlXe:"b0c4de",ZLw:"ffffe0",lime:"ff00",limegYF:"32cd32",lRF:"faf0e6",magFta:"ff00ff",maPon:"800000",VaquamarRe:"66cdaa",VXe:"cd",VScEd:"ba55d3",VpurpN:"9370db",VsHgYF:"3cb371",VUXe:"7b68ee",VsprRggYF:"fa9a",VQe:"48d1cc",VviTetYd:"c71585",midnightXe:"191970",mRtcYam:"f5fffa",mistyPse:"ffe4e1",moccasR:"ffe4b5",navajowEte:"ffdead",navy:"80",Tdlace:"fdf5e6",Tive:"808000",TivedBb:"6b8e23",Sange:"ffa500",SangeYd:"ff4500",ScEd:"da70d6",pOegTMnPd:"eee8aa",pOegYF:"98fb98",pOeQe:"afeeee",pOeviTetYd:"db7093",papayawEp:"ffefd5",pHKpuff:"ffdab9",peru:"cd853f",pRk:"ffc0cb",plum:"dda0dd",powMrXe:"b0e0e6",purpN:"800080",YbeccapurpN:"663399",Yd:"ff0000",Psybrown:"bc8f8f",PyOXe:"4169e1",saddNbPwn:"8b4513",sOmon:"fa8072",sandybPwn:"f4a460",sHgYF:"2e8b57",sHshell:"fff5ee",siFna:"a0522d",silver:"c0c0c0",skyXe:"87ceeb",UXe:"6a5acd",UWay:"708090",UgYy:"708090",snow:"fffafa",sprRggYF:"ff7f",stAlXe:"4682b4",tan:"d2b48c",teO:"8080",tEstN:"d8bfd8",tomato:"ff6347",Qe:"40e0d0",viTet:"ee82ee",JHt:"f5deb3",wEte:"ffffff",wEtesmoke:"f5f5f5",Lw:"ffff00",LwgYF:"9acd32"};function Pl(){let e={},i=Object.keys(Cn),t=Object.keys(kn),s,n,o,r,a;for(s=0;s>16&255,o>>8&255,o&255]}return e}var ii;function Ol(e){ii||(ii=Pl(),ii.transparent=[0,0,0,0]);let i=ii[e.toLowerCase()];return i&&{r:i[0],g:i[1],b:i[2],a:i.length===4?i[3]:255}}var Al=/^rgba?\(\s*([-+.\d]+)(%)?[\s,]+([-+.e\d]+)(%)?[\s,]+([-+.e\d]+)(%)?(?:[\s,/]+([-+.e\d]+)(%)?)?\s*\)$/;function Dl(e){let i=Al.exec(e),t=255,s,n,o;if(i){if(i[7]!==s){let r=+i[7];t=i[8]?Se(r):St(r*255,0,255)}return s=+i[1],n=+i[3],o=+i[5],s=255&(i[2]?Se(s):St(s,0,255)),n=255&(i[4]?Se(n):St(n,0,255)),o=255&(i[6]?Se(o):St(o,0,255)),{r:s,g:n,b:o,a:t}}}function Tl(e){return e&&(e.a<255?`rgba(${e.r}, ${e.g}, ${e.b}, ${mt(e.a)})`:`rgb(${e.r}, ${e.g}, ${e.b})`)}var Qi=e=>e<=.0031308?e*12.92:Math.pow(e,1/2.4)*1.055-.055,Zt=e=>e<=.04045?e/12.92:Math.pow((e+.055)/1.055,2.4);function Ll(e,i,t){let s=Zt(mt(e.r)),n=Zt(mt(e.g)),o=Zt(mt(e.b));return{r:kt(Qi(s+t*(Zt(mt(i.r))-s))),g:kt(Qi(n+t*(Zt(mt(i.g))-n))),b:kt(Qi(o+t*(Zt(mt(i.b))-o))),a:e.a+t*(i.a-e.a)}}function si(e,i,t){if(e){let s=es(e);s[i]=Math.max(0,Math.min(s[i]+s[i]*t,i===0?360:1)),s=ss(s),e.r=s[0],e.g=s[1],e.b=s[2]}}function Dn(e,i){return e&&Object.assign(i||{},e)}function Pn(e){var i={r:0,g:0,b:0,a:255};return Array.isArray(e)?e.length>=3&&(i={r:e[0],g:e[1],b:e[2],a:255},e.length>3&&(i.a=kt(e[3]))):(i=Dn(e,{r:0,g:0,b:0,a:1}),i.a=kt(i.a)),i}function Rl(e){return e.charAt(0)==="r"?Dl(e):Sl(e)}var ke=class e{constructor(i){if(i instanceof e)return i;let t=typeof i,s;t==="object"?s=Pn(i):t==="string"&&(s=gl(i)||Ol(i)||Rl(i)),this._rgb=s,this._valid=!!s}get valid(){return this._valid}get rgb(){var i=Dn(this._rgb);return i&&(i.a=mt(i.a)),i}set rgb(i){this._rgb=Pn(i)}rgbString(){return this._valid?Tl(this._rgb):void 0}hexString(){return this._valid?xl(this._rgb):void 0}hslString(){return this._valid?Cl(this._rgb):void 0}mix(i,t){if(i){let s=this.rgb,n=i.rgb,o,r=t===o?.5:t,a=2*r-1,l=s.a-n.a,c=((a*l===-1?a:(a+l)/(1+a*l))+1)/2;o=1-c,s.r=255&c*s.r+o*n.r+.5,s.g=255&c*s.g+o*n.g+.5,s.b=255&c*s.b+o*n.b+.5,s.a=r*s.a+(1-r)*n.a,this.rgb=s}return this}interpolate(i,t){return i&&(this._rgb=Ll(this._rgb,i._rgb,t)),this}clone(){return new e(this.rgb)}alpha(i){return this._rgb.a=kt(i),this}clearer(i){let t=this._rgb;return t.a*=1-i,this}greyscale(){let i=this._rgb,t=Ce(i.r*.3+i.g*.59+i.b*.11);return i.r=i.g=i.b=t,this}opaquer(i){let t=this._rgb;return t.a*=1+i,this}negate(){let i=this._rgb;return i.r=255-i.r,i.g=255-i.g,i.b=255-i.b,this}lighten(i){return si(this._rgb,2,i),this}darken(i){return si(this._rgb,2,-i),this}saturate(i){return si(this._rgb,1,i),this}desaturate(i){return si(this._rgb,1,-i),this}rotate(i){return kl(this._rgb,i),this}};function ft(){}var Wn=(()=>{let e=0;return()=>e++})();function T(e){return e===null||typeof e>"u"}function E(e){if(Array.isArray&&Array.isArray(e))return!0;let i=Object.prototype.toString.call(e);return i.slice(0,7)==="[object"&&i.slice(-6)==="Array]"}function A(e){return e!==null&&Object.prototype.toString.call(e)==="[object Object]"}function W(e){return(typeof e=="number"||e instanceof Number)&&isFinite(+e)}function J(e,i){return W(e)?e:i}function C(e,i){return typeof e>"u"?i:e}var Vn=(e,i)=>typeof e=="string"&&e.endsWith("%")?parseFloat(e)/100:+e/i,as=(e,i)=>typeof e=="string"&&e.endsWith("%")?parseFloat(e)/100*i:+e;function I(e,i,t){if(e&&typeof e.call=="function")return e.apply(t,i)}function L(e,i,t,s){let n,o,r;if(E(e))if(o=e.length,s)for(n=o-1;n>=0;n--)i.call(t,e[n],n);else for(n=0;ne,x:e=>e.x,y:e=>e.y};function Fl(e){let i=e.split("."),t=[],s="";for(let n of i)s+=n,s.endsWith("\\")?s=s.slice(0,-1)+".":(t.push(s),s="");return t}function zl(e){let i=Fl(e);return t=>{for(let s of i){if(s==="")break;t=t&&t[s]}return t}}function _t(e,i){return(Tn[i]||(Tn[i]=zl(i)))(e)}function fi(e){return e.charAt(0).toUpperCase()+e.slice(1)}var ie=e=>typeof e<"u",xt=e=>typeof e=="function",ls=(e,i)=>{if(e.size!==i.size)return!1;for(let t of e)if(!i.has(t))return!1;return!0};function $n(e){return e.type==="mouseup"||e.type==="click"||e.type==="contextmenu"}var F=Math.PI,z=2*F,Bl=z+F,li=Number.POSITIVE_INFINITY,jl=F/180,V=F/2,Wt=F/4,Ln=F*2/3,bt=Math.log10,at=Math.sign;function se(e,i,t){return Math.abs(e-i)n-o).pop(),i}function $t(e){return!isNaN(parseFloat(e))&&isFinite(e)}function Yn(e,i){let t=Math.round(e);return t-i<=e&&t+i>=e}function hs(e,i,t){let s,n,o;for(s=0,n=e.length;sl&&c=Math.min(i,t)-s&&e<=Math.max(i,t)+s}function ui(e,i,t){t=t||(r=>e[r]1;)o=n+s>>1,t(o)?n=o:s=o;return{lo:n,hi:s}}var ct=(e,i,t,s)=>ui(e,t,s?n=>{let o=e[n][i];return oe[n][i]ui(e,t,s=>e[s][i]>=t);function qn(e,i,t){let s=0,n=e.length;for(;ss&&e[n-1]>t;)n--;return s>0||n{let s="_onData"+fi(t),n=e[t];Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value(...o){let r=n.apply(this,o);return e._chartjs.listeners.forEach(a=>{typeof a[s]=="function"&&a[s](...o)}),r}})})}function us(e,i){let t=e._chartjs;if(!t)return;let s=t.listeners,n=s.indexOf(i);n!==-1&&s.splice(n,1),!(s.length>0)&&(Gn.forEach(o=>{delete e[o]}),delete e._chartjs)}function ps(e){let i=new Set(e);return i.size===e.length?e:Array.from(i)}var gs=function(){return typeof window>"u"?function(e){return e()}:window.requestAnimationFrame}();function ms(e,i){let t=[],s=!1;return function(...n){t=n,s||(s=!0,gs.call(window,()=>{s=!1,e.apply(i,t)}))}}function Jn(e,i){let t;return function(...s){return i?(clearTimeout(t),t=setTimeout(e,i,s)):e.apply(this,s),i}}var pi=e=>e==="start"?"left":e==="end"?"right":"center",X=(e,i,t)=>e==="start"?i:e==="end"?t:(i+t)/2,Qn=(e,i,t,s)=>e===(s?"left":"right")?t:e==="center"?(i+t)/2:i;function xs(e,i,t){let s=i.length,n=0,o=s;if(e._sorted){let{iScale:r,_parsed:a}=e,l=r.axis,{min:c,max:h,minDefined:f,maxDefined:d}=r.getUserBounds();f&&(n=U(Math.min(ct(a,l,c).lo,t?s:ct(i,l,r.getPixelForValue(c)).lo),0,s-1)),d?o=U(Math.max(ct(a,r.axis,h,!0).hi+1,t?0:ct(i,l,r.getPixelForValue(h),!0).hi+1),n,s)-n:o=s-n}return{start:n,count:o}}function bs(e){let{xScale:i,yScale:t,_scaleRanges:s}=e,n={xmin:i.min,xmax:i.max,ymin:t.min,ymax:t.max};if(!s)return e._scaleRanges=n,!0;let o=s.xmin!==i.min||s.xmax!==i.max||s.ymin!==t.min||s.ymax!==t.max;return Object.assign(s,n),o}var ni=e=>e===0||e===1,Rn=(e,i,t)=>-(Math.pow(2,10*(e-=1))*Math.sin((e-i)*z/t)),In=(e,i,t)=>Math.pow(2,-10*e)*Math.sin((e-i)*z/t)+1,Jt={linear:e=>e,easeInQuad:e=>e*e,easeOutQuad:e=>-e*(e-2),easeInOutQuad:e=>(e/=.5)<1?.5*e*e:-.5*(--e*(e-2)-1),easeInCubic:e=>e*e*e,easeOutCubic:e=>(e-=1)*e*e+1,easeInOutCubic:e=>(e/=.5)<1?.5*e*e*e:.5*((e-=2)*e*e+2),easeInQuart:e=>e*e*e*e,easeOutQuart:e=>-((e-=1)*e*e*e-1),easeInOutQuart:e=>(e/=.5)<1?.5*e*e*e*e:-.5*((e-=2)*e*e*e-2),easeInQuint:e=>e*e*e*e*e,easeOutQuint:e=>(e-=1)*e*e*e*e+1,easeInOutQuint:e=>(e/=.5)<1?.5*e*e*e*e*e:.5*((e-=2)*e*e*e*e+2),easeInSine:e=>-Math.cos(e*V)+1,easeOutSine:e=>Math.sin(e*V),easeInOutSine:e=>-.5*(Math.cos(F*e)-1),easeInExpo:e=>e===0?0:Math.pow(2,10*(e-1)),easeOutExpo:e=>e===1?1:-Math.pow(2,-10*e)+1,easeInOutExpo:e=>ni(e)?e:e<.5?.5*Math.pow(2,10*(e*2-1)):.5*(-Math.pow(2,-10*(e*2-1))+2),easeInCirc:e=>e>=1?e:-(Math.sqrt(1-e*e)-1),easeOutCirc:e=>Math.sqrt(1-(e-=1)*e),easeInOutCirc:e=>(e/=.5)<1?-.5*(Math.sqrt(1-e*e)-1):.5*(Math.sqrt(1-(e-=2)*e)+1),easeInElastic:e=>ni(e)?e:Rn(e,.075,.3),easeOutElastic:e=>ni(e)?e:In(e,.075,.3),easeInOutElastic(e){return ni(e)?e:e<.5?.5*Rn(e*2,.1125,.45):.5+.5*In(e*2-1,.1125,.45)},easeInBack(e){return e*e*((1.70158+1)*e-1.70158)},easeOutBack(e){return(e-=1)*e*((1.70158+1)*e+1.70158)+1},easeInOutBack(e){let i=1.70158;return(e/=.5)<1?.5*(e*e*(((i*=1.525)+1)*e-i)):.5*((e-=2)*e*(((i*=1.525)+1)*e+i)+2)},easeInBounce:e=>1-Jt.easeOutBounce(1-e),easeOutBounce(e){return e<1/2.75?7.5625*e*e:e<2/2.75?7.5625*(e-=1.5/2.75)*e+.75:e<2.5/2.75?7.5625*(e-=2.25/2.75)*e+.9375:7.5625*(e-=2.625/2.75)*e+.984375},easeInOutBounce:e=>e<.5?Jt.easeInBounce(e*2)*.5:Jt.easeOutBounce(e*2-1)*.5+.5};function _s(e){if(e&&typeof e=="object"){let i=e.toString();return i==="[object CanvasPattern]"||i==="[object CanvasGradient]"}return!1}function ys(e){return _s(e)?e:new ke(e)}function ns(e){return _s(e)?e:new ke(e).saturate(.5).darken(.1).hexString()}var Wl=["x","y","borderWidth","radius","tension"],Vl=["color","borderColor","backgroundColor"];function Hl(e){e.set("animation",{delay:void 0,duration:1e3,easing:"easeOutQuart",fn:void 0,from:void 0,loop:void 0,to:void 0,type:void 0}),e.describe("animation",{_fallback:!1,_indexable:!1,_scriptable:i=>i!=="onProgress"&&i!=="onComplete"&&i!=="fn"}),e.set("animations",{colors:{type:"color",properties:Vl},numbers:{type:"number",properties:Wl}}),e.describe("animations",{_fallback:"animation"}),e.set("transitions",{active:{animation:{duration:400}},resize:{animation:{duration:0}},show:{animations:{colors:{from:"transparent"},visible:{type:"boolean",duration:0}}},hide:{animations:{colors:{to:"transparent"},visible:{type:"boolean",easing:"linear",fn:i=>i|0}}}})}function $l(e){e.set("layout",{autoPadding:!0,padding:{top:0,right:0,bottom:0,left:0}})}var En=new Map;function Ul(e,i){i=i||{};let t=e+JSON.stringify(i),s=En.get(t);return s||(s=new Intl.NumberFormat(e,i),En.set(t,s)),s}function oe(e,i,t){return Ul(i,t).format(e)}var to={values(e){return E(e)?e:""+e},numeric(e,i,t){if(e===0)return"0";let s=this.chart.options.locale,n,o=e;if(t.length>1){let c=Math.max(Math.abs(t[0].value),Math.abs(t[t.length-1].value));(c<1e-4||c>1e15)&&(n="scientific"),o=Yl(e,t)}let r=bt(Math.abs(o)),a=isNaN(r)?1:Math.max(Math.min(-1*Math.floor(r),20),0),l={notation:n,minimumFractionDigits:a,maximumFractionDigits:a};return Object.assign(l,this.options.ticks.format),oe(e,s,l)},logarithmic(e,i,t){if(e===0)return"0";let s=t[i].significand||e/Math.pow(10,Math.floor(bt(e)));return[1,2,3,5,10,15].includes(s)||i>.8*t.length?to.numeric.call(this,e,i,t):""}};function Yl(e,i){let t=i.length>3?i[2].value-i[1].value:i[1].value-i[0].value;return Math.abs(t)>=1&&e!==Math.floor(e)&&(t=e-Math.floor(e)),t}var De={formatters:to};function Xl(e){e.set("scale",{display:!0,offset:!1,reverse:!1,beginAtZero:!1,bounds:"ticks",clip:!0,grace:0,grid:{display:!0,lineWidth:1,drawOnChartArea:!0,drawTicks:!0,tickLength:8,tickWidth:(i,t)=>t.lineWidth,tickColor:(i,t)=>t.color,offset:!1},border:{display:!0,dash:[],dashOffset:0,width:1},title:{display:!1,text:"",padding:{top:4,bottom:4}},ticks:{minRotation:0,maxRotation:50,mirror:!1,textStrokeWidth:0,textStrokeColor:"",padding:3,display:!0,autoSkip:!0,autoSkipPadding:3,labelOffset:0,callback:De.formatters.values,minor:{},major:{},align:"center",crossAlign:"near",showLabelBackdrop:!1,backdropColor:"rgba(255, 255, 255, 0.75)",backdropPadding:2}}),e.route("scale.ticks","color","","color"),e.route("scale.grid","color","","borderColor"),e.route("scale.border","color","","borderColor"),e.route("scale.title","color","","color"),e.describe("scale",{_fallback:!1,_scriptable:i=>!i.startsWith("before")&&!i.startsWith("after")&&i!=="callback"&&i!=="parser",_indexable:i=>i!=="borderDash"&&i!=="tickBorderDash"&&i!=="dash"}),e.describe("scales",{_fallback:"scale"}),e.describe("scale.ticks",{_scriptable:i=>i!=="backdropPadding"&&i!=="callback",_indexable:i=>i!=="backdropPadding"})}var Pt=Object.create(null),gi=Object.create(null);function Pe(e,i){if(!i)return e;let t=i.split(".");for(let s=0,n=t.length;ss.chart.platform.getDevicePixelRatio(),this.elements={},this.events=["mousemove","mouseout","click","touchstart","touchmove"],this.font={family:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",size:12,style:"normal",lineHeight:1.2,weight:null},this.hover={},this.hoverBackgroundColor=(s,n)=>ns(n.backgroundColor),this.hoverBorderColor=(s,n)=>ns(n.borderColor),this.hoverColor=(s,n)=>ns(n.color),this.indexAxis="x",this.interaction={mode:"nearest",intersect:!0,includeInvisible:!1},this.maintainAspectRatio=!0,this.onHover=null,this.onClick=null,this.parsing=!0,this.plugins={},this.responsive=!0,this.scale=void 0,this.scales={},this.showLine=!0,this.drawActiveElementsOnTop=!0,this.describe(i),this.apply(t)}set(i,t){return os(this,i,t)}get(i){return Pe(this,i)}describe(i,t){return os(gi,i,t)}override(i,t){return os(Pt,i,t)}route(i,t,s,n){let o=Pe(this,i),r=Pe(this,s),a="_"+t;Object.defineProperties(o,{[a]:{value:o[t],writable:!0},[t]:{enumerable:!0,get(){let l=this[a],c=r[n];return A(l)?Object.assign({},c,l):C(l,c)},set(l){this[a]=l}}})}apply(i){i.forEach(t=>t(this))}},B=new rs({_scriptable:e=>!e.startsWith("on"),_indexable:e=>e!=="events",hover:{_fallback:"interaction"},interaction:{_scriptable:!1,_indexable:!1}},[Hl,$l,Xl]);function Kl(e){return!e||T(e.size)||T(e.family)?null:(e.style?e.style+" ":"")+(e.weight?e.weight+" ":"")+e.size+"px "+e.family}function Oe(e,i,t,s,n){let o=i[n];return o||(o=i[n]=e.measureText(n).width,t.push(n)),o>s&&(s=o),s}function eo(e,i,t,s){s=s||{};let n=s.data=s.data||{},o=s.garbageCollect=s.garbageCollect||[];s.font!==i&&(n=s.data={},o=s.garbageCollect=[],s.font=i),e.save(),e.font=i;let r=0,a=t.length,l,c,h,f,d;for(l=0;lt.length){for(l=0;l0&&e.stroke()}}function ht(e,i,t){return t=t||.5,!i||e&&e.x>i.left-t&&e.xi.top-t&&e.y0&&o.strokeColor!=="",l,c;for(e.save(),e.font=n.string,ql(e,o),l=0;l+e||0;function xi(e,i){let t={},s=A(i),n=s?Object.keys(i):i,o=A(e)?s?r=>C(e[r],e[i[r]]):r=>e[r]:()=>e;for(let r of n)t[r]=ec(o(r));return t}function ws(e){return xi(e,{top:"y",right:"x",bottom:"y",left:"x"})}function Dt(e){return xi(e,["topLeft","topRight","bottomLeft","bottomRight"])}function K(e){let i=ws(e);return i.width=i.left+i.right,i.height=i.top+i.bottom,i}function $(e,i){e=e||{},i=i||B.font;let t=C(e.size,i.size);typeof t=="string"&&(t=parseInt(t,10));let s=C(e.style,i.style);s&&!(""+s).match(Ql)&&(console.warn('Invalid font style specified: "'+s+'"'),s=void 0);let n={family:C(e.family,i.family),lineHeight:tc(C(e.lineHeight,i.lineHeight),t),size:t,style:s,weight:C(e.weight,i.weight),string:""};return n.string=Kl(n),n}function ae(e,i,t,s){let n=!0,o,r,a;for(o=0,r=e.length;ot&&a===0?0:a+l;return{min:r(s,-Math.abs(o)),max:r(n,o)}}function yt(e,i){return Object.assign(Object.create(e),i)}function bi(e,i=[""],t,s,n=()=>e[0]){let o=t||e;typeof s>"u"&&(s=ao("_fallback",e));let r={[Symbol.toStringTag]:"Object",_cacheable:!0,_scopes:e,_rootScopes:o,_fallback:s,_getTarget:n,override:a=>bi([a,...e],i,o,s)};return new Proxy(r,{deleteProperty(a,l){return delete a[l],delete a._keys,delete e[0][l],!0},get(a,l){return oo(a,l,()=>cc(l,i,e,a))},getOwnPropertyDescriptor(a,l){return Reflect.getOwnPropertyDescriptor(a._scopes[0],l)},getPrototypeOf(){return Reflect.getPrototypeOf(e[0])},has(a,l){return zn(a).includes(l)},ownKeys(a){return zn(a)},set(a,l,c){let h=a._storage||(a._storage=n());return a[l]=h[l]=c,delete a._keys,!0}})}function Ht(e,i,t,s){let n={_cacheable:!1,_proxy:e,_context:i,_subProxy:t,_stack:new Set,_descriptors:Ss(e,s),setContext:o=>Ht(e,o,t,s),override:o=>Ht(e.override(o),i,t,s)};return new Proxy(n,{deleteProperty(o,r){return delete o[r],delete e[r],!0},get(o,r,a){return oo(o,r,()=>sc(o,r,a))},getOwnPropertyDescriptor(o,r){return o._descriptors.allKeys?Reflect.has(e,r)?{enumerable:!0,configurable:!0}:void 0:Reflect.getOwnPropertyDescriptor(e,r)},getPrototypeOf(){return Reflect.getPrototypeOf(e)},has(o,r){return Reflect.has(e,r)},ownKeys(){return Reflect.ownKeys(e)},set(o,r,a){return e[r]=a,delete o[r],!0}})}function Ss(e,i={scriptable:!0,indexable:!0}){let{_scriptable:t=i.scriptable,_indexable:s=i.indexable,_allKeys:n=i.allKeys}=e;return{allKeys:n,scriptable:t,indexable:s,isScriptable:xt(t)?t:()=>t,isIndexable:xt(s)?s:()=>s}}var ic=(e,i)=>e?e+fi(i):i,ks=(e,i)=>A(i)&&e!=="adapters"&&(Object.getPrototypeOf(i)===null||i.constructor===Object);function oo(e,i,t){if(Object.prototype.hasOwnProperty.call(e,i)||i==="constructor")return e[i];let s=t();return e[i]=s,s}function sc(e,i,t){let{_proxy:s,_context:n,_subProxy:o,_descriptors:r}=e,a=s[i];return xt(a)&&r.isScriptable(i)&&(a=nc(i,a,e,t)),E(a)&&a.length&&(a=oc(i,a,e,r.isIndexable)),ks(i,a)&&(a=Ht(a,n,o&&o[i],r)),a}function nc(e,i,t,s){let{_proxy:n,_context:o,_subProxy:r,_stack:a}=t;if(a.has(e))throw new Error("Recursion detected: "+Array.from(a).join("->")+"->"+e);a.add(e);let l=i(o,r||s);return a.delete(e),ks(e,l)&&(l=Cs(n._scopes,n,e,l)),l}function oc(e,i,t,s){let{_proxy:n,_context:o,_subProxy:r,_descriptors:a}=t;if(typeof o.index<"u"&&s(e))return i[o.index%i.length];if(A(i[0])){let l=i,c=n._scopes.filter(h=>h!==l);i=[];for(let h of l){let f=Cs(c,n,e,h);i.push(Ht(f,o,r&&r[e],a))}}return i}function ro(e,i,t){return xt(e)?e(i,t):e}var rc=(e,i)=>e===!0?i:typeof e=="string"?_t(i,e):void 0;function ac(e,i,t,s,n){for(let o of i){let r=rc(t,o);if(r){e.add(r);let a=ro(r._fallback,t,n);if(typeof a<"u"&&a!==t&&a!==s)return a}else if(r===!1&&typeof s<"u"&&t!==s)return null}return!1}function Cs(e,i,t,s){let n=i._rootScopes,o=ro(i._fallback,t,s),r=[...e,...n],a=new Set;a.add(s);let l=Fn(a,r,t,o||t,s);return l===null||typeof o<"u"&&o!==t&&(l=Fn(a,r,o,l,s),l===null)?!1:bi(Array.from(a),[""],n,o,()=>lc(i,t,s))}function Fn(e,i,t,s,n){for(;t;)t=ac(e,i,t,s,n);return t}function lc(e,i,t){let s=e._getTarget();i in s||(s[i]={});let n=s[i];return E(n)&&A(t)?t:n||{}}function cc(e,i,t,s){let n;for(let o of i)if(n=ao(ic(o,e),t),typeof n<"u")return ks(e,n)?Cs(t,s,e,n):n}function ao(e,i){for(let t of i){if(!t)continue;let s=t[e];if(typeof s<"u")return s}}function zn(e){let i=e._keys;return i||(i=e._keys=hc(e._scopes)),i}function hc(e){let i=new Set;for(let t of e)for(let s of Object.keys(t).filter(n=>!n.startsWith("_")))i.add(s);return Array.from(i)}function Ps(e,i,t,s){let{iScale:n}=e,{key:o="r"}=this._parsing,r=new Array(s),a,l,c,h;for(a=0,l=s;aie==="x"?"y":"x";function dc(e,i,t,s){let n=e.skip?i:e,o=i,r=t.skip?i:t,a=ci(o,n),l=ci(r,o),c=a/(a+l),h=l/(a+l);c=isNaN(c)?0:c,h=isNaN(h)?0:h;let f=s*c,d=s*h;return{previous:{x:o.x-f*(r.x-n.x),y:o.y-f*(r.y-n.y)},next:{x:o.x+d*(r.x-n.x),y:o.y+d*(r.y-n.y)}}}function uc(e,i,t){let s=e.length,n,o,r,a,l,c=te(e,0);for(let h=0;h!c.skip)),i.cubicInterpolationMode==="monotone")gc(e,n);else{let c=s?e[e.length-1]:e[0];for(o=0,r=e.length;oe.ownerDocument.defaultView.getComputedStyle(e,null);function xc(e,i){return vi(e).getPropertyValue(i)}var bc=["top","right","bottom","left"];function Vt(e,i,t){let s={};t=t?"-"+t:"";for(let n=0;n<4;n++){let o=bc[n];s[o]=parseFloat(e[i+"-"+o+t])||0}return s.width=s.left+s.right,s.height=s.top+s.bottom,s}var _c=(e,i,t)=>(e>0||i>0)&&(!t||!t.shadowRoot);function yc(e,i){let t=e.touches,s=t&&t.length?t[0]:e,{offsetX:n,offsetY:o}=s,r=!1,a,l;if(_c(n,o,e.target))a=n,l=o;else{let c=i.getBoundingClientRect();a=s.clientX-c.left,l=s.clientY-c.top,r=!0}return{x:a,y:l,box:r}}function Tt(e,i){if("native"in e)return e;let{canvas:t,currentDevicePixelRatio:s}=i,n=vi(t),o=n.boxSizing==="border-box",r=Vt(n,"padding"),a=Vt(n,"border","width"),{x:l,y:c,box:h}=yc(e,t),f=r.left+(h&&a.left),d=r.top+(h&&a.top),{width:u,height:p}=i;return o&&(u-=r.width+a.width,p-=r.height+a.height),{x:Math.round((l-f)/u*t.width/s),y:Math.round((c-d)/p*t.height/s)}}function vc(e,i,t){let s,n;if(i===void 0||t===void 0){let o=e&&yi(e);if(!o)i=e.clientWidth,t=e.clientHeight;else{let r=o.getBoundingClientRect(),a=vi(o),l=Vt(a,"border","width"),c=Vt(a,"padding");i=r.width-c.width-l.width,t=r.height-c.height-l.height,s=hi(a.maxWidth,o,"clientWidth"),n=hi(a.maxHeight,o,"clientHeight")}}return{width:i,height:t,maxWidth:s||li,maxHeight:n||li}}var ri=e=>Math.round(e*10)/10;function ho(e,i,t,s){let n=vi(e),o=Vt(n,"margin"),r=hi(n.maxWidth,e,"clientWidth")||li,a=hi(n.maxHeight,e,"clientHeight")||li,l=vc(e,i,t),{width:c,height:h}=l;if(n.boxSizing==="content-box"){let d=Vt(n,"border","width"),u=Vt(n,"padding");c-=u.width+d.width,h-=u.height+d.height}return c=Math.max(0,c-o.width),h=Math.max(0,s?c/s:h-o.height),c=ri(Math.min(c,r,l.maxWidth)),h=ri(Math.min(h,a,l.maxHeight)),c&&!h&&(h=ri(c/2)),(i!==void 0||t!==void 0)&&s&&l.height&&h>l.height&&(h=l.height,c=ri(Math.floor(h*s))),{width:c,height:h}}function Os(e,i,t){let s=i||1,n=Math.floor(e.height*s),o=Math.floor(e.width*s);e.height=Math.floor(e.height),e.width=Math.floor(e.width);let r=e.canvas;return r.style&&(t||!r.style.height&&!r.style.width)&&(r.style.height=`${e.height}px`,r.style.width=`${e.width}px`),e.currentDevicePixelRatio!==s||r.height!==n||r.width!==o?(e.currentDevicePixelRatio=s,r.height=n,r.width=o,e.ctx.setTransform(s,0,0,s,0,0),!0):!1}var fo=function(){let e=!1;try{let i={get passive(){return e=!0,!1}};_i()&&(window.addEventListener("test",null,i),window.removeEventListener("test",null,i))}catch{}return e}();function As(e,i){let t=xc(e,i),s=t&&t.match(/^(\d+)(\.\d+)?px$/);return s?+s[1]:void 0}function Ct(e,i,t,s){return{x:e.x+t*(i.x-e.x),y:e.y+t*(i.y-e.y)}}function uo(e,i,t,s){return{x:e.x+t*(i.x-e.x),y:s==="middle"?t<.5?e.y:i.y:s==="after"?t<1?e.y:i.y:t>0?i.y:e.y}}function po(e,i,t,s){let n={x:e.cp2x,y:e.cp2y},o={x:i.cp1x,y:i.cp1y},r=Ct(e,n,t),a=Ct(n,o,t),l=Ct(o,i,t),c=Ct(r,a,t),h=Ct(a,l,t);return Ct(c,h,t)}var Mc=function(e,i){return{x(t){return e+e+i-t},setWidth(t){i=t},textAlign(t){return t==="center"?t:t==="right"?"left":"right"},xPlus(t,s){return t-s},leftForLtr(t,s){return t-s}}},wc=function(){return{x(e){return e},setWidth(e){},textAlign(e){return e},xPlus(e,i){return e+i},leftForLtr(e,i){return e}}};function Ut(e,i,t){return e?Mc(i,t):wc()}function Ds(e,i){let t,s;(i==="ltr"||i==="rtl")&&(t=e.canvas.style,s=[t.getPropertyValue("direction"),t.getPropertyPriority("direction")],t.setProperty("direction",i,"important"),e.prevTextDirection=s)}function Ts(e,i){i!==void 0&&(delete e.prevTextDirection,e.canvas.style.setProperty("direction",i[0],i[1]))}function go(e){return e==="angle"?{between:ne,compare:Nl,normalize:Z}:{between:dt,compare:(i,t)=>i-t,normalize:i=>i}}function Bn({start:e,end:i,count:t,loop:s,style:n}){return{start:e%t,end:i%t,loop:s&&(i-e+1)%t===0,style:n}}function Sc(e,i,t){let{property:s,start:n,end:o}=t,{between:r,normalize:a}=go(s),l=i.length,{start:c,end:h,loop:f}=e,d,u;if(f){for(c+=l,h+=l,d=0,u=l;dl(n,y,b)&&a(n,y)!==0,_=()=>a(o,b)===0||l(o,y,b),v=()=>g||M(),S=()=>!g||_();for(let w=h,k=h;w<=f;++w)x=i[w%r],!x.skip&&(b=c(x[s]),b!==y&&(g=l(b,n,o),m===null&&v()&&(m=a(b,n)===0?w:k),m!==null&&S()&&(p.push(Bn({start:m,end:w,loop:d,count:r,style:u})),m=null),k=w,y=b));return m!==null&&p.push(Bn({start:m,end:f,loop:d,count:r,style:u})),p}function Rs(e,i){let t=[],s=e.segments;for(let n=0;nn&&e[o%i].skip;)o--;return o%=i,{start:n,end:o}}function Cc(e,i,t,s){let n=e.length,o=[],r=i,a=e[i],l;for(l=i+1;l<=t;++l){let c=e[l%n];c.skip||c.stop?a.skip||(s=!1,o.push({start:i%n,end:(l-1)%n,loop:s}),i=r=c.stop?l:null):(r=l,a.skip&&(i=l)),a=c}return r!==null&&o.push({start:i%n,end:r%n,loop:s}),o}function mo(e,i){let t=e.points,s=e.options.spanGaps,n=t.length;if(!n)return[];let o=!!e._loop,{start:r,end:a}=kc(t,n,o,s);if(s===!0)return jn(e,[{start:r,end:a,loop:o}],t,i);let l=aa({chart:i,initial:t.initial,numSteps:r,currentStep:Math.min(s-t.start,r)}))}_refresh(){this._request||(this._running=!0,this._request=gs.call(window,()=>{this._update(),this._request=null,this._running&&this._refresh()}))}_update(i=Date.now()){let t=0;this._charts.forEach((s,n)=>{if(!s.running||!s.items.length)return;let o=s.items,r=o.length-1,a=!1,l;for(;r>=0;--r)l=o[r],l._active?(l._total>s.duration&&(s.duration=l._total),l.tick(i),a=!0):(o[r]=o[o.length-1],o.pop());a&&(n.draw(),this._notify(n,s,i,"progress")),o.length||(s.running=!1,this._notify(n,s,i,"complete"),s.initial=!1),t+=o.length}),this._lastDate=i,t===0&&(this._running=!1)}_getAnims(i){let t=this._charts,s=t.get(i);return s||(s={running:!1,initial:!0,items:[],listeners:{complete:[],progress:[]}},t.set(i,s)),s}listen(i,t,s){this._getAnims(i).listeners[t].push(s)}add(i,t){!t||!t.length||this._getAnims(i).items.push(...t)}has(i){return this._getAnims(i).items.length>0}start(i){let t=this._charts.get(i);t&&(t.running=!0,t.start=Date.now(),t.duration=t.items.reduce((s,n)=>Math.max(s,n._duration),0),this._refresh())}running(i){if(!this._running)return!1;let t=this._charts.get(i);return!(!t||!t.running||!t.items.length)}stop(i){let t=this._charts.get(i);if(!t||!t.items.length)return;let s=t.items,n=s.length-1;for(;n>=0;--n)s[n].cancel();t.items=[],this._notify(i,t,Date.now(),"complete")}remove(i){return this._charts.delete(i)}},vt=new Hs,xo="transparent",Ac={boolean(e,i,t){return t>.5?i:e},color(e,i,t){let s=ys(e||xo),n=s.valid&&ys(i||xo);return n&&n.valid?n.mix(s,t).hexString():i},number(e,i,t){return e+(i-e)*t}},$s=class{constructor(i,t,s,n){let o=t[s];n=ae([i.to,n,o,i.from]);let r=ae([i.from,o,n]);this._active=!0,this._fn=i.fn||Ac[i.type||typeof r],this._easing=Jt[i.easing]||Jt.linear,this._start=Math.floor(Date.now()+(i.delay||0)),this._duration=this._total=Math.floor(i.duration),this._loop=!!i.loop,this._target=t,this._prop=s,this._from=r,this._to=n,this._promises=void 0}active(){return this._active}update(i,t,s){if(this._active){this._notify(!1);let n=this._target[this._prop],o=s-this._start,r=this._duration-o;this._start=s,this._duration=Math.floor(Math.max(r,i.duration)),this._total+=o,this._loop=!!i.loop,this._to=ae([i.to,t,n,i.from]),this._from=ae([i.from,n,t])}}cancel(){this._active&&(this.tick(Date.now()),this._active=!1,this._notify(!1))}tick(i){let t=i-this._start,s=this._duration,n=this._prop,o=this._from,r=this._loop,a=this._to,l;if(this._active=o!==a&&(r||t1?2-l:l,l=this._easing(Math.min(1,Math.max(0,l))),this._target[n]=this._fn(o,a,l)}wait(){let i=this._promises||(this._promises=[]);return new Promise((t,s)=>{i.push({res:t,rej:s})})}_notify(i){let t=i?"res":"rej",s=this._promises||[];for(let n=0;n{let o=i[n];if(!A(o))return;let r={};for(let a of t)r[a]=o[a];(E(o.properties)&&o.properties||[n]).forEach(a=>{(a===n||!s.has(a))&&s.set(a,r)})})}_animateOptions(i,t){let s=t.options,n=Tc(i,s);if(!n)return[];let o=this._createAnimations(n,s);return s.$shared&&Dc(i.options.$animations,s).then(()=>{i.options=s},()=>{}),o}_createAnimations(i,t){let s=this._properties,n=[],o=i.$animations||(i.$animations={}),r=Object.keys(t),a=Date.now(),l;for(l=r.length-1;l>=0;--l){let c=r[l];if(c.charAt(0)==="$")continue;if(c==="options"){n.push(...this._animateOptions(i,t));continue}let h=t[c],f=o[c],d=s.get(c);if(f)if(d&&f.active()){f.update(d,h,a);continue}else f.cancel();if(!d||!d.duration){i[c]=h;continue}o[c]=f=new $s(d,i,c,h),n.push(f)}return n}update(i,t){if(this._properties.size===0){Object.assign(i,t);return}let s=this._createAnimations(i,t);if(s.length)return vt.add(this._chart,s),!0}};function Dc(e,i){let t=[],s=Object.keys(i);for(let n=0;n0||!t&&o<0)return n.index}return null}function Mo(e,i){let{chart:t,_cachedMeta:s}=e,n=t._stacks||(t._stacks={}),{iScale:o,vScale:r,index:a}=s,l=o.axis,c=r.axis,h=Ec(o,r,s),f=i.length,d;for(let u=0;ut[s].axis===i).shift()}function Bc(e,i){return yt(e,{active:!1,dataset:void 0,datasetIndex:i,index:i,mode:"default",type:"dataset"})}function jc(e,i,t){return yt(e,{active:!1,dataIndex:i,parsed:void 0,raw:void 0,element:t,index:i,mode:"default",type:"data"})}function Re(e,i){let t=e.controller.index,s=e.vScale&&e.vScale.axis;if(s){i=i||e._parsed;for(let n of i){let o=n._stacks;if(!o||o[s]===void 0||o[s][t]===void 0)return;delete o[s][t],o[s]._visualValues!==void 0&&o[s]._visualValues[t]!==void 0&&delete o[s]._visualValues[t]}}}var Es=e=>e==="reset"||e==="none",wo=(e,i)=>i?e:Object.assign({},e),Nc=(e,i,t)=>e&&!i.hidden&&i._stacked&&{keys:br(t,!0),values:null},Rt=(()=>{class e{static defaults={};static datasetElementType=null;static dataElementType=null;constructor(t,s){this.chart=t,this._ctx=t.ctx,this.index=s,this._cachedDataOpts={},this._cachedMeta=this.getMeta(),this._type=this._cachedMeta.type,this.options=void 0,this._parsing=!1,this._data=void 0,this._objectData=void 0,this._sharedOptions=void 0,this._drawStart=void 0,this._drawCount=void 0,this.enableOptionSharing=!1,this.supportsDecimation=!1,this.$context=void 0,this._syncList=[],this.datasetElementType=new.target.datasetElementType,this.dataElementType=new.target.dataElementType,this.initialize()}initialize(){let t=this._cachedMeta;this.configure(),this.linkScales(),t._stacked=yo(t.vScale,t),this.addElements(),this.options.fill&&!this.chart.isPluginEnabled("filler")&&console.warn("Tried to use the 'fill' option without the 'Filler' plugin enabled. Please import and register the 'Filler' plugin and make sure it is not disabled in the options")}updateIndex(t){this.index!==t&&Re(this._cachedMeta),this.index=t}linkScales(){let t=this.chart,s=this._cachedMeta,n=this.getDataset(),o=(d,u,p,g)=>d==="x"?u:d==="r"?g:p,r=s.xAxisID=C(n.xAxisID,Is(t,"x")),a=s.yAxisID=C(n.yAxisID,Is(t,"y")),l=s.rAxisID=C(n.rAxisID,Is(t,"r")),c=s.indexAxis,h=s.iAxisID=o(c,r,a,l),f=s.vAxisID=o(c,a,r,l);s.xScale=this.getScaleForId(r),s.yScale=this.getScaleForId(a),s.rScale=this.getScaleForId(l),s.iScale=this.getScaleForId(h),s.vScale=this.getScaleForId(f)}getDataset(){return this.chart.data.datasets[this.index]}getMeta(){return this.chart.getDatasetMeta(this.index)}getScaleForId(t){return this.chart.scales[t]}_getOtherScale(t){let s=this._cachedMeta;return t===s.iScale?s.vScale:s.iScale}reset(){this._update("reset")}_destroy(){let t=this._cachedMeta;this._data&&us(this._data,this),t._stacked&&Re(t)}_dataCheck(){let t=this.getDataset(),s=t.data||(t.data=[]),n=this._data;if(A(s)){let o=this._cachedMeta;this._data=Ic(s,o)}else if(n!==s){if(n){us(n,this);let o=this._cachedMeta;Re(o),o._parsed=[]}s&&Object.isExtensible(s)&&Zn(s,this),this._syncList=[],this._data=s}}addElements(){let t=this._cachedMeta;this._dataCheck(),this.datasetElementType&&(t.dataset=new this.datasetElementType)}buildOrUpdateElements(t){let s=this._cachedMeta,n=this.getDataset(),o=!1;this._dataCheck();let r=s._stacked;s._stacked=yo(s.vScale,s),s.stack!==n.stack&&(o=!0,Re(s),s.stack=n.stack),this._resyncElements(t),(o||r!==s._stacked)&&Mo(this,s._parsed)}configure(){let t=this.chart.config,s=t.datasetScopeKeys(this._type),n=t.getOptionScopes(this.getDataset(),s,!0);this.options=t.createResolver(n,this.getContext()),this._parsing=this.options.parsing,this._cachedDataOpts={}}parse(t,s){let{_cachedMeta:n,_data:o}=this,{iScale:r,_stacked:a}=n,l=r.axis,c=t===0&&s===o.length?!0:n._sorted,h=t>0&&n._parsed[t-1],f,d,u;if(this._parsing===!1)n._parsed=o,n._sorted=!0,u=o;else{E(o[t])?u=this.parseArrayData(n,o,t,s):A(o[t])?u=this.parseObjectData(n,o,t,s):u=this.parsePrimitiveData(n,o,t,s);let p=()=>d[l]===null||h&&d[l]m||d=0;--u)if(!g()){this.updateRangeFromParsed(h,t,p,c);break}}return h}getAllParsedValues(t){let s=this._cachedMeta._parsed,n=[],o,r,a;for(o=0,r=s.length;o=0&&tthis.getContext(n,o,s),m=h.resolveNamedOptions(u,p,g,d);return m.$shared&&(m.$shared=c,r[a]=Object.freeze(wo(m,c))),m}_resolveAnimations(t,s,n){let o=this.chart,r=this._cachedDataOpts,a=`animation-${s}`,l=r[a];if(l)return l;let c;if(o.options.animation!==!1){let f=this.chart.config,d=f.datasetAnimationScopeKeys(this._type,s),u=f.getOptionScopes(this.getDataset(),d);c=f.createResolver(u,this.getContext(t,n,s))}let h=new Ti(o,c&&c.animations);return c&&c._cacheable&&(r[a]=Object.freeze(h)),h}getSharedOptions(t){if(t.$shared)return this._sharedOptions||(this._sharedOptions=Object.assign({},t))}includeOptions(t,s){return!s||Es(t)||this.chart._animationsDisabled}_getSharedOptions(t,s){let n=this.resolveDataElementOptions(t,s),o=this._sharedOptions,r=this.getSharedOptions(n),a=this.includeOptions(s,r)||r!==o;return this.updateSharedOptions(r,s,n),{sharedOptions:r,includeOptions:a}}updateElement(t,s,n,o){Es(o)?Object.assign(t,n):this._resolveAnimations(s,o).update(t,n)}updateSharedOptions(t,s,n){t&&!Es(s)&&this._resolveAnimations(void 0,s).update(t,n)}_setStyle(t,s,n,o){t.active=o;let r=this.getStyle(s,o);this._resolveAnimations(s,n,o).update(t,{options:!o&&this.getSharedOptions(r)||r})}removeHoverStyle(t,s,n){this._setStyle(t,n,"active",!1)}setHoverStyle(t,s,n){this._setStyle(t,n,"active",!0)}_removeDatasetHoverStyle(){let t=this._cachedMeta.dataset;t&&this._setStyle(t,void 0,"active",!1)}_setDatasetHoverStyle(){let t=this._cachedMeta.dataset;t&&this._setStyle(t,void 0,"active",!0)}_resyncElements(t){let s=this._data,n=this._cachedMeta.data;for(let[l,c,h]of this._syncList)this[l](c,h);this._syncList=[];let o=n.length,r=s.length,a=Math.min(r,o);a&&this.parse(0,a),r>o?this._insertElements(o,r-o,t):r{for(h.length+=s,l=h.length-1;l>=a;l--)h[l]=h[l-s]};for(c(r),l=t;ln-o))}return e._cache.$bar}function Vc(e){let i=e.iScale,t=Wc(i,e.type),s=i._length,n,o,r,a,l=()=>{r===32767||r===-32768||(ie(a)&&(s=Math.min(s,Math.abs(r-a)||s)),a=r)};for(n=0,o=t.length;n0?n[e-1]:null,a=eMath.abs(a)&&(l=a,c=r),i[t.axis]=c,i._custom={barStart:l,barEnd:c,start:n,end:o,min:r,max:a}}function _r(e,i,t,s){return E(e)?Uc(e,i,t,s):i[t.axis]=t.parse(e,s),i}function So(e,i,t,s){let n=e.iScale,o=e.vScale,r=n.getLabels(),a=n===o,l=[],c,h,f,d;for(c=t,h=t+s;c=t?1:-1)}function Xc(e){let i,t,s,n,o;return e.horizontal?(i=e.base>e.x,t="left",s="right"):(i=e.base{class e extends Rt{static id="bar";static defaults={datasetElementType:!1,dataElementType:"bar",categoryPercentage:.8,barPercentage:.9,grouped:!0,animations:{numbers:{type:"number",properties:["x","y","base","width","height"]}}};static overrides={scales:{_index_:{type:"category",offset:!0,grid:{offset:!0}},_value_:{type:"linear",beginAtZero:!0}}};parsePrimitiveData(t,s,n,o){return So(t,s,n,o)}parseArrayData(t,s,n,o){return So(t,s,n,o)}parseObjectData(t,s,n,o){let{iScale:r,vScale:a}=t,{xAxisKey:l="x",yAxisKey:c="y"}=this._parsing,h=r.axis==="x"?l:c,f=a.axis==="x"?l:c,d=[],u,p,g,m;for(u=n,p=n+o;uf.controller.options.grouped),r=n.options.stacked,a=[],l=this._cachedMeta.controller.getParsed(s),c=l&&l[n.axis],h=f=>{let d=f._parsed.find(p=>p[n.axis]===c),u=d&&d[f.vScale.axis];if(T(u)||isNaN(u))return!0};for(let f of o)if(!(s!==void 0&&h(f))&&((r===!1||a.indexOf(f.stack)===-1||r===void 0&&f.stack===void 0)&&a.push(f.stack),f.index===t))break;return a.length||a.push(void 0),a}_getStackCount(t){return this._getStacks(void 0,t).length}_getStackIndex(t,s,n){let o=this._getStacks(t,n),r=s!==void 0?o.indexOf(s):-1;return r===-1?o.length-1:r}_getRuler(){let t=this.options,s=this._cachedMeta,n=s.iScale,o=[],r,a;for(r=0,a=s.data.length;r{class e extends Rt{static id="bubble";static defaults={datasetElementType:!1,dataElementType:"point",animations:{numbers:{type:"number",properties:["x","y","borderWidth","radius"]}}};static overrides={scales:{x:{type:"linear"},y:{type:"linear"}}};initialize(){this.enableOptionSharing=!0,super.initialize()}parsePrimitiveData(t,s,n,o){let r=super.parsePrimitiveData(t,s,n,o);for(let a=0;a=0;--n)s=Math.max(s,t[n].size(this.resolveDataElementOptions(n))/2);return s>0&&s}getLabelAndValue(t){let s=this._cachedMeta,n=this.chart.data.labels||[],{xScale:o,yScale:r}=s,a=this.getParsed(t),l=o.getLabelForValue(a.x),c=r.getLabelForValue(a.y),h=a._custom;return{label:n[t]||"",value:"("+l+", "+c+(h?", "+h:"")+")"}}update(t){let s=this._cachedMeta.data;this.updateElements(s,0,s.length,t)}updateElements(t,s,n,o){let r=o==="reset",{iScale:a,vScale:l}=this._cachedMeta,{sharedOptions:c,includeOptions:h}=this._getSharedOptions(s,o),f=a.axis,d=l.axis;for(let u=s;une(y,a,l,!0)?1:Math.max(M,M*t,_,_*t),p=(y,M,_)=>ne(y,a,l,!0)?-1:Math.min(M,M*t,_,_*t),g=u(0,c,f),m=u(V,h,d),b=p(F,c,f),x=p(F+V,h,d);s=(g-b)/2,n=(m-x)/2,o=-(g+b)/2,r=-(m+x)/2}return{ratioX:s,ratioY:n,offsetX:o,offsetY:r}}var fn=(()=>{class e extends Rt{static id="doughnut";static defaults={datasetElementType:!1,dataElementType:"arc",animation:{animateRotate:!0,animateScale:!1},animations:{numbers:{type:"number",properties:["circumference","endAngle","innerRadius","outerRadius","startAngle","x","y","offset","borderWidth","spacing"]}},cutout:"50%",rotation:0,circumference:360,radius:"100%",spacing:0,indexAxis:"r"};static descriptors={_scriptable:t=>t!=="spacing",_indexable:t=>t!=="spacing"&&!t.startsWith("borderDash")&&!t.startsWith("hoverBorderDash")};static overrides={aspectRatio:1,plugins:{legend:{labels:{generateLabels(t){let s=t.data;if(s.labels.length&&s.datasets.length){let{labels:{pointStyle:n,color:o}}=t.legend.options;return s.labels.map((r,a)=>{let c=t.getDatasetMeta(0).controller.getStyle(a);return{text:r,fillStyle:c.backgroundColor,strokeStyle:c.borderColor,fontColor:o,lineWidth:c.borderWidth,pointStyle:n,hidden:!t.getDataVisibility(a),index:a}})}return[]}},onClick(t,s,n){n.chart.toggleDataVisibility(s.index),n.chart.update()}}}};constructor(t,s){super(t,s),this.enableOptionSharing=!0,this.innerRadius=void 0,this.outerRadius=void 0,this.offsetX=void 0,this.offsetY=void 0}linkScales(){}parse(t,s){let n=this.getDataset().data,o=this._cachedMeta;if(this._parsing===!1)o._parsed=n;else{let r=c=>+n[c];if(A(n[t])){let{key:c="value"}=this._parsing;r=h=>+_t(n[h],c)}let a,l;for(a=t,l=t+s;a0&&!isNaN(t)?z*(Math.abs(t)/s):0}getLabelAndValue(t){let s=this._cachedMeta,n=this.chart,o=n.data.labels||[],r=oe(s._parsed[t],n.options.locale);return{label:o[t]||"",value:r}}getMaxBorderWidth(t){let s=0,n=this.chart,o,r,a,l,c;if(!t){for(o=0,r=n.data.datasets.length;o{class e extends Rt{static id="line";static defaults={datasetElementType:"line",dataElementType:"point",showLine:!0,spanGaps:!1};static overrides={scales:{_index_:{type:"category"},_value_:{type:"linear"}}};initialize(){this.enableOptionSharing=!0,this.supportsDecimation=!0,super.initialize()}update(t){let s=this._cachedMeta,{dataset:n,data:o=[],_dataset:r}=s,a=this.chart._animationsDisabled,{start:l,count:c}=xs(s,o,a);this._drawStart=l,this._drawCount=c,bs(s)&&(l=0,c=o.length),n._chart=this.chart,n._datasetIndex=this.index,n._decimated=!!r._decimated,n.points=o;let h=this.resolveDatasetElementOptions(t);this.options.showLine||(h.borderWidth=0),h.segment=this.options.segment,this.updateElement(n,void 0,{animated:!a,options:h},t),this.updateElements(o,l,c,t)}updateElements(t,s,n,o){let r=o==="reset",{iScale:a,vScale:l,_stacked:c,_dataset:h}=this._cachedMeta,{sharedOptions:f,includeOptions:d}=this._getSharedOptions(s,o),u=a.axis,p=l.axis,{spanGaps:g,segment:m}=this.options,b=$t(g)?g:Number.POSITIVE_INFINITY,x=this.chart._animationsDisabled||r||o==="none",y=s+n,M=t.length,_=s>0&&this.getParsed(s-1);for(let v=0;v=y){w.skip=!0;continue}let k=this.getParsed(v),O=T(k[p]),P=w[u]=a.getPixelForValue(k[u],v),D=w[p]=r||O?l.getBasePixel():l.getPixelForValue(c?this.applyStack(l,k,c):k[p],v);w.skip=isNaN(P)||isNaN(D)||O,w.stop=v>0&&Math.abs(k[u]-_[u])>b,m&&(w.parsed=k,w.raw=h.data[v]),d&&(w.options=f||this.resolveDataElementOptions(v,S.active?"active":o)),x||this.updateElement(S,v,w,o),_=k}}getMaxOverflow(){let t=this._cachedMeta,s=t.dataset,n=s.options&&s.options.borderWidth||0,o=t.data||[];if(!o.length)return n;let r=o[0].size(this.resolveDataElementOptions(0)),a=o[o.length-1].size(this.resolveDataElementOptions(o.length-1));return Math.max(n,r,a)/2}draw(){let t=this._cachedMeta;t.dataset.updateControlPoints(this.chart.chartArea,t.iScale.axis),super.draw()}}return e})(),yr=(()=>{class e extends Rt{static id="polarArea";static defaults={dataElementType:"arc",animation:{animateRotate:!0,animateScale:!0},animations:{numbers:{type:"number",properties:["x","y","startAngle","endAngle","innerRadius","outerRadius"]}},indexAxis:"r",startAngle:0};static overrides={aspectRatio:1,plugins:{legend:{labels:{generateLabels(t){let s=t.data;if(s.labels.length&&s.datasets.length){let{labels:{pointStyle:n,color:o}}=t.legend.options;return s.labels.map((r,a)=>{let c=t.getDatasetMeta(0).controller.getStyle(a);return{text:r,fillStyle:c.backgroundColor,strokeStyle:c.borderColor,fontColor:o,lineWidth:c.borderWidth,pointStyle:n,hidden:!t.getDataVisibility(a),index:a}})}return[]}},onClick(t,s,n){n.chart.toggleDataVisibility(s.index),n.chart.update()}}},scales:{r:{type:"radialLinear",angleLines:{display:!1},beginAtZero:!0,grid:{circular:!0},pointLabels:{display:!1},startAngle:0}}};constructor(t,s){super(t,s),this.innerRadius=void 0,this.outerRadius=void 0}getLabelAndValue(t){let s=this._cachedMeta,n=this.chart,o=n.data.labels||[],r=oe(s._parsed[t].r,n.options.locale);return{label:o[t]||"",value:r}}parseObjectData(t,s,n,o){return Ps.bind(this)(t,s,n,o)}update(t){let s=this._cachedMeta.data;this._updateRadius(),this.updateElements(s,0,s.length,t)}getMinMax(){let t=this._cachedMeta,s={min:Number.POSITIVE_INFINITY,max:Number.NEGATIVE_INFINITY};return t.data.forEach((n,o)=>{let r=this.getParsed(o).r;!isNaN(r)&&this.chart.getDataVisibility(o)&&(rs.max&&(s.max=r))}),s}_updateRadius(){let t=this.chart,s=t.chartArea,n=t.options,o=Math.min(s.right-s.left,s.bottom-s.top),r=Math.max(o/2,0),a=Math.max(n.cutoutPercentage?r/100*n.cutoutPercentage:1,0),l=(r-a)/t.getVisibleDatasetCount();this.outerRadius=r-l*this.index,this.innerRadius=this.outerRadius-l}updateElements(t,s,n,o){let r=o==="reset",a=this.chart,c=a.options.animation,h=this._cachedMeta.rScale,f=h.xCenter,d=h.yCenter,u=h.getIndexAngle(0)-.5*F,p=u,g,m=360/this.countVisibleElements();for(g=0;g{!isNaN(this.getParsed(o).r)&&this.chart.getDataVisibility(o)&&s++}),s}_computeAngle(t,s,n){return this.chart.getDataVisibility(t)?nt(this.resolveDataElementOptions(t,s).angle||n):0}}return e})(),eh=(()=>{class e extends fn{static id="pie";static defaults={cutout:0,rotation:0,circumference:360,radius:"100%"}}return e})(),ih=(()=>{class e extends Rt{static id="radar";static defaults={datasetElementType:"line",dataElementType:"point",indexAxis:"r",showLine:!0,elements:{line:{fill:"start"}}};static overrides={aspectRatio:1,scales:{r:{type:"radialLinear"}}};getLabelAndValue(t){let s=this._cachedMeta.vScale,n=this.getParsed(t);return{label:s.getLabels()[t],value:""+s.getLabelForValue(n[s.axis])}}parseObjectData(t,s,n,o){return Ps.bind(this)(t,s,n,o)}update(t){let s=this._cachedMeta,n=s.dataset,o=s.data||[],r=s.iScale.getLabels();if(n.points=o,t!=="resize"){let a=this.resolveDatasetElementOptions(t);this.options.showLine||(a.borderWidth=0);let l={_loop:!0,_fullLoop:r.length===o.length,options:a};this.updateElement(n,void 0,l,t)}this.updateElements(o,0,o.length,t)}updateElements(t,s,n,o){let r=this._cachedMeta.rScale,a=o==="reset";for(let l=s;l{class e extends Rt{static id="scatter";static defaults={datasetElementType:!1,dataElementType:"point",showLine:!1,fill:!1};static overrides={interaction:{mode:"point"},scales:{x:{type:"linear"},y:{type:"linear"}}};getLabelAndValue(t){let s=this._cachedMeta,n=this.chart.data.labels||[],{xScale:o,yScale:r}=s,a=this.getParsed(t),l=o.getLabelForValue(a.x),c=r.getLabelForValue(a.y);return{label:n[t]||"",value:"("+l+", "+c+")"}}update(t){let s=this._cachedMeta,{data:n=[]}=s,o=this.chart._animationsDisabled,{start:r,count:a}=xs(s,n,o);if(this._drawStart=r,this._drawCount=a,bs(s)&&(r=0,a=n.length),this.options.showLine){this.datasetElementType||this.addElements();let{dataset:l,_dataset:c}=s;l._chart=this.chart,l._datasetIndex=this.index,l._decimated=!!c._decimated,l.points=n;let h=this.resolveDatasetElementOptions(t);h.segment=this.options.segment,this.updateElement(l,void 0,{animated:!o,options:h},t)}else this.datasetElementType&&(delete s.dataset,this.datasetElementType=!1);this.updateElements(n,r,a,t)}addElements(){let{showLine:t}=this.options;!this.datasetElementType&&t&&(this.datasetElementType=this.chart.registry.getElement("line")),super.addElements()}updateElements(t,s,n,o){let r=o==="reset",{iScale:a,vScale:l,_stacked:c,_dataset:h}=this._cachedMeta,f=this.resolveDataElementOptions(s,o),d=this.getSharedOptions(f),u=this.includeOptions(o,d),p=a.axis,g=l.axis,{spanGaps:m,segment:b}=this.options,x=$t(m)?m:Number.POSITIVE_INFINITY,y=this.chart._animationsDisabled||r||o==="none",M=s>0&&this.getParsed(s-1);for(let _=s;_0&&Math.abs(S[p]-M[p])>x,b&&(w.parsed=S,w.raw=h.data[_]),u&&(w.options=d||this.resolveDataElementOptions(_,v.active?"active":o)),y||this.updateElement(v,_,w,o),M=S}this.updateSharedOptions(d,o,f)}getMaxOverflow(){let t=this._cachedMeta,s=t.data||[];if(!this.options.showLine){let l=0;for(let c=s.length-1;c>=0;--c)l=Math.max(l,s[c].size(this.resolveDataElementOptions(c))/2);return l>0&&l}let n=t.dataset,o=n.options&&n.options.borderWidth||0;if(!s.length)return o;let r=s[0].size(this.resolveDataElementOptions(0)),a=s[s.length-1].size(this.resolveDataElementOptions(s.length-1));return Math.max(o,r,a)/2}}return e})(),nh=Object.freeze({__proto__:null,BarController:Zc,BubbleController:Jc,DoughnutController:fn,LineController:th,PieController:eh,PolarAreaController:yr,RadarController:ih,ScatterController:sh});function Yt(){throw new Error("This method is not implemented: Check that a complete date adapter is provided.")}var Us=class e{static override(i){Object.assign(e.prototype,i)}options;constructor(i){this.options=i||{}}init(){}formats(){return Yt()}parse(){return Yt()}format(){return Yt()}add(){return Yt()}diff(){return Yt()}startOf(){return Yt()}endOf(){return Yt()}},oh={_date:Us};function rh(e,i,t,s){let{controller:n,data:o,_sorted:r}=e,a=n._cachedMeta.iScale;if(a&&i===a.axis&&i!=="r"&&r&&o.length){let l=a._reversePixels?Kn:ct;if(s){if(n._sharedOptions){let c=o[0],h=typeof c.getRange=="function"&&c.getRange(i);if(h){let f=l(o,i,t-h),d=l(o,i,t+h);return{lo:f.lo,hi:d.hi}}}}else return l(o,i,t)}return{lo:0,hi:o.length-1}}function He(e,i,t,s,n){let o=e.getSortedVisibleDatasetMetas(),r=t[i];for(let a=0,l=o.length;a{l[r]&&l[r](i[t],n)&&(o.push({element:l,datasetIndex:c,index:h}),a=a||l.inRange(i.x,i.y,n))}),s&&!a?[]:o}var hh={evaluateInteractionItems:He,modes:{index(e,i,t,s){let n=Tt(i,e),o=t.axis||"x",r=t.includeInvisible||!1,a=t.intersect?zs(e,n,o,s,r):Bs(e,n,o,!1,s,r),l=[];return a.length?(e.getSortedVisibleDatasetMetas().forEach(c=>{let h=a[0].index,f=c.data[h];f&&!f.skip&&l.push({element:f,datasetIndex:c.index,index:h})}),l):[]},dataset(e,i,t,s){let n=Tt(i,e),o=t.axis||"xy",r=t.includeInvisible||!1,a=t.intersect?zs(e,n,o,s,r):Bs(e,n,o,!1,s,r);if(a.length>0){let l=a[0].datasetIndex,c=e.getDatasetMeta(l).data;a=[];for(let h=0;ht.pos===i)}function Oo(e,i){return e.filter(t=>vr.indexOf(t.pos)===-1&&t.box.axis===i)}function Ee(e,i){return e.sort((t,s)=>{let n=i?s:t,o=i?t:s;return n.weight===o.weight?n.index-o.index:n.weight-o.weight})}function fh(e){let i=[],t,s,n,o,r,a;for(t=0,s=(e||[]).length;tc.box.fullSize),!0),s=Ee(Ie(i,"left"),!0),n=Ee(Ie(i,"right")),o=Ee(Ie(i,"top"),!0),r=Ee(Ie(i,"bottom")),a=Oo(i,"x"),l=Oo(i,"y");return{fullSize:t,leftAndTop:s.concat(o),rightAndBottom:n.concat(l).concat(r).concat(a),chartArea:Ie(i,"chartArea"),vertical:s.concat(n).concat(l),horizontal:o.concat(r).concat(a)}}function Ao(e,i,t,s){return Math.max(e[t],i[t])+Math.max(e[s],i[s])}function Mr(e,i){e.top=Math.max(e.top,i.top),e.left=Math.max(e.left,i.left),e.bottom=Math.max(e.bottom,i.bottom),e.right=Math.max(e.right,i.right)}function gh(e,i,t,s){let{pos:n,box:o}=t,r=e.maxPadding;if(!A(n)){t.size&&(e[n]-=t.size);let f=s[t.stack]||{size:0,count:1};f.size=Math.max(f.size,t.horizontal?o.height:o.width),t.size=f.size/f.count,e[n]+=t.size}o.getPadding&&Mr(r,o.getPadding());let a=Math.max(0,i.outerWidth-Ao(r,e,"left","right")),l=Math.max(0,i.outerHeight-Ao(r,e,"top","bottom")),c=a!==e.w,h=l!==e.h;return e.w=a,e.h=l,t.horizontal?{same:c,other:h}:{same:h,other:c}}function mh(e){let i=e.maxPadding;function t(s){let n=Math.max(i[s]-e[s],0);return e[s]+=n,n}e.y+=t("top"),e.x+=t("left"),t("right"),t("bottom")}function xh(e,i){let t=i.maxPadding;function s(n){let o={left:0,top:0,right:0,bottom:0};return n.forEach(r=>{o[r]=Math.max(i[r],t[r])}),o}return s(e?["left","right"]:["top","bottom"])}function Be(e,i,t,s){let n=[],o,r,a,l,c,h;for(o=0,r=e.length,c=0;o{typeof g.beforeLayout=="function"&&g.beforeLayout()});let h=l.reduce((g,m)=>m.box.options&&m.box.options.display===!1?g:g+1,0)||1,f=Object.freeze({outerWidth:i,outerHeight:t,padding:n,availableWidth:o,availableHeight:r,vBoxMaxWidth:o/2/h,hBoxMaxHeight:r/2}),d=Object.assign({},n);Mr(d,K(s));let u=Object.assign({maxPadding:d,w:o,h:r,x:n.left,y:n.top},n),p=uh(l.concat(c),f);Be(a.fullSize,u,f,p),Be(l,u,f,p),Be(c,u,f,p)&&Be(l,u,f,p),mh(u),Do(a.leftAndTop,u,f,p),u.x+=u.w,u.y+=u.h,Do(a.rightAndBottom,u,f,p),e.chartArea={left:u.left,top:u.top,right:u.left+u.w,bottom:u.top+u.h,height:u.h,width:u.w},L(a.chartArea,g=>{let m=g.box;Object.assign(m,e.chartArea),m.update(u.w,u.h,{left:0,top:0,right:0,bottom:0})})}},Li=class{acquireContext(i,t){}releaseContext(i){return!1}addEventListener(i,t,s){}removeEventListener(i,t,s){}getDevicePixelRatio(){return 1}getMaximumSize(i,t,s,n){return t=Math.max(0,t||i.width),s=s||i.height,{width:t,height:Math.max(0,n?Math.floor(t/n):s)}}isAttached(i){return!0}updateConfig(i){}},Ys=class extends Li{acquireContext(i){return i&&i.getContext&&i.getContext("2d")||null}updateConfig(i){i.options.animation=!1}},Ai="$chartjs",bh={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup",pointerenter:"mouseenter",pointerdown:"mousedown",pointermove:"mousemove",pointerup:"mouseup",pointerleave:"mouseout",pointerout:"mouseout"},To=e=>e===null||e==="";function _h(e,i){let t=e.style,s=e.getAttribute("height"),n=e.getAttribute("width");if(e[Ai]={initial:{height:s,width:n,style:{display:t.display,height:t.height,width:t.width}}},t.display=t.display||"block",t.boxSizing=t.boxSizing||"border-box",To(n)){let o=As(e,"width");o!==void 0&&(e.width=o)}if(To(s))if(e.style.height==="")e.height=e.width/(i||2);else{let o=As(e,"height");o!==void 0&&(e.height=o)}return e}var wr=fo?{passive:!0}:!1;function yh(e,i,t){e&&e.addEventListener(i,t,wr)}function vh(e,i,t){e&&e.canvas&&e.canvas.removeEventListener(i,t,wr)}function Mh(e,i){let t=bh[e.type]||e.type,{x:s,y:n}=Tt(e,i);return{type:t,chart:i,native:e,x:s!==void 0?s:null,y:n!==void 0?n:null}}function Ri(e,i){for(let t of e)if(t===i||t.contains(i))return!0}function wh(e,i,t){let s=e.canvas,n=new MutationObserver(o=>{let r=!1;for(let a of o)r=r||Ri(a.addedNodes,s),r=r&&!Ri(a.removedNodes,s);r&&t()});return n.observe(document,{childList:!0,subtree:!0}),n}function Sh(e,i,t){let s=e.canvas,n=new MutationObserver(o=>{let r=!1;for(let a of o)r=r||Ri(a.removedNodes,s),r=r&&!Ri(a.addedNodes,s);r&&t()});return n.observe(document,{childList:!0,subtree:!0}),n}var Ne=new Map,Lo=0;function Sr(){let e=window.devicePixelRatio;e!==Lo&&(Lo=e,Ne.forEach((i,t)=>{t.currentDevicePixelRatio!==e&&i()}))}function kh(e,i){Ne.size||window.addEventListener("resize",Sr),Ne.set(e,i)}function Ch(e){Ne.delete(e),Ne.size||window.removeEventListener("resize",Sr)}function Ph(e,i,t){let s=e.canvas,n=s&&yi(s);if(!n)return;let o=ms((a,l)=>{let c=n.clientWidth;t(a,l),c{let l=a[0],c=l.contentRect.width,h=l.contentRect.height;c===0&&h===0||o(c,h)});return r.observe(n),kh(e,o),r}function js(e,i,t){t&&t.disconnect(),i==="resize"&&Ch(e)}function Oh(e,i,t){let s=e.canvas,n=ms(o=>{e.ctx!==null&&t(Mh(o,e))},e);return yh(s,i,n),n}var Xs=class extends Li{acquireContext(i,t){let s=i&&i.getContext&&i.getContext("2d");return s&&s.canvas===i?(_h(i,t),s):null}releaseContext(i){let t=i.canvas;if(!t[Ai])return!1;let s=t[Ai].initial;["height","width"].forEach(o=>{let r=s[o];T(r)?t.removeAttribute(o):t.setAttribute(o,r)});let n=s.style||{};return Object.keys(n).forEach(o=>{t.style[o]=n[o]}),t.width=t.width,delete t[Ai],!0}addEventListener(i,t,s){this.removeEventListener(i,t);let n=i.$proxies||(i.$proxies={}),r={attach:wh,detach:Sh,resize:Ph}[t]||Oh;n[t]=r(i,t,s)}removeEventListener(i,t){let s=i.$proxies||(i.$proxies={}),n=s[t];if(!n)return;({attach:js,detach:js,resize:js}[t]||vh)(i,t,n),s[t]=void 0}getDevicePixelRatio(){return window.devicePixelRatio}getMaximumSize(i,t,s,n){return ho(i,t,s,n)}isAttached(i){let t=i&&yi(i);return!!(t&&t.isConnected)}};function Ah(e){return!_i()||typeof OffscreenCanvas<"u"&&e instanceof OffscreenCanvas?Ys:Xs}var lt=class{static defaults={};static defaultRoutes=void 0;x;y;active=!1;options;$animations;tooltipPosition(i){let{x:t,y:s}=this.getProps(["x","y"],i);return{x:t,y:s}}hasValue(){return $t(this.x)&&$t(this.y)}getProps(i,t){let s=this.$animations;if(!t||!s)return this;let n={};return i.forEach(o=>{n[o]=s[o]&&s[o].active()?s[o]._to:this[o]}),n}};function Dh(e,i){let t=e.options.ticks,s=Th(e),n=Math.min(t.maxTicksLimit||s,s),o=t.major.enabled?Rh(i):[],r=o.length,a=o[0],l=o[r-1],c=[];if(r>n)return Ih(i,c,o,r/n),c;let h=Lh(o,i,n);if(r>0){let f,d,u=r>1?Math.round((l-a)/(r-1)):null;for(wi(i,c,h,T(u)?0:a-u,a),f=0,d=r-1;fn)return l}return Math.max(n,1)}function Rh(e){let i=[],t,s;for(t=0,s=e.length;te==="left"?"right":e==="right"?"left":e,Ro=(e,i,t)=>i==="top"||i==="left"?e[i]+t:e[i]-t,Io=(e,i)=>Math.min(i||e,e);function Eo(e,i){let t=[],s=e.length/i,n=e.length,o=0;for(;or+a)))return l}function Bh(e,i){L(e,t=>{let s=t.gc,n=s.length/2,o;if(n>i){for(o=0;os?s:t,s=n&&t>s?t:s,{min:J(t,J(s,t)),max:J(s,J(t,s))}}getPadding(){return{left:this.paddingLeft||0,top:this.paddingTop||0,right:this.paddingRight||0,bottom:this.paddingBottom||0}}getTicks(){return this.ticks}getLabels(){let i=this.chart.data;return this.options.labels||(this.isHorizontal()?i.xLabels:i.yLabels)||i.labels||[]}getLabelItems(i=this.chart.chartArea){return this._labelItems||(this._labelItems=this._computeLabelItems(i))}beforeLayout(){this._cache={},this._dataLimitsCached=!1}beforeUpdate(){I(this.options.beforeUpdate,[this])}update(i,t,s){let{beginAtZero:n,grace:o,ticks:r}=this.options,a=r.sampleSize;this.beforeUpdate(),this.maxWidth=i,this.maxHeight=t,this._margins=s=Object.assign({left:0,right:0,top:0,bottom:0},s),this.ticks=null,this._labelSizes=null,this._gridLineItems=null,this._labelItems=null,this.beforeSetDimensions(),this.setDimensions(),this.afterSetDimensions(),this._maxLength=this.isHorizontal()?this.width+s.left+s.right:this.height+s.top+s.bottom,this._dataLimitsCached||(this.beforeDataLimits(),this.determineDataLimits(),this.afterDataLimits(),this._range=no(this,o,n),this._dataLimitsCached=!0),this.beforeBuildTicks(),this.ticks=this.buildTicks()||[],this.afterBuildTicks();let l=a=o||s<=1||!this.isHorizontal()){this.labelRotation=n;return}let h=this._getLabelSizes(),f=h.widest.width,d=h.highest.height,u=U(this.chart.width-f,0,this.maxWidth);a=i.offset?this.maxWidth/s:u/(s-1),f+6>a&&(a=u/(s-(i.offset?.5:1)),l=this.maxHeight-Fe(i.grid)-t.padding-Fo(i.title,this.chart.options.font),c=Math.sqrt(f*f+d*d),r=di(Math.min(Math.asin(U((h.highest.height+6)/a,-1,1)),Math.asin(U(l/c,-1,1))-Math.asin(U(d/c,-1,1)))),r=Math.max(n,Math.min(o,r))),this.labelRotation=r}afterCalculateLabelRotation(){I(this.options.afterCalculateLabelRotation,[this])}afterAutoSkip(){}beforeFit(){I(this.options.beforeFit,[this])}fit(){let i={width:0,height:0},{chart:t,options:{ticks:s,title:n,grid:o}}=this,r=this._isVisible(),a=this.isHorizontal();if(r){let l=Fo(n,t.options.font);if(a?(i.width=this.maxWidth,i.height=Fe(o)+l):(i.height=this.maxHeight,i.width=Fe(o)+l),s.display&&this.ticks.length){let{first:c,last:h,widest:f,highest:d}=this._getLabelSizes(),u=s.padding*2,p=nt(this.labelRotation),g=Math.cos(p),m=Math.sin(p);if(a){let b=s.mirror?0:m*f.width+g*d.height;i.height=Math.min(this.maxHeight,i.height+b+u)}else{let b=s.mirror?0:g*f.width+m*d.height;i.width=Math.min(this.maxWidth,i.width+b+u)}this._calculatePadding(c,h,m,g)}}this._handleMargins(),a?(this.width=this._length=t.width-this._margins.left-this._margins.right,this.height=i.height):(this.width=i.width,this.height=this._length=t.height-this._margins.top-this._margins.bottom)}_calculatePadding(i,t,s,n){let{ticks:{align:o,padding:r},position:a}=this.options,l=this.labelRotation!==0,c=a!=="top"&&this.axis==="x";if(this.isHorizontal()){let h=this.getPixelForTick(0)-this.left,f=this.right-this.getPixelForTick(this.ticks.length-1),d=0,u=0;l?c?(d=n*i.width,u=s*t.height):(d=s*i.height,u=n*t.width):o==="start"?u=t.width:o==="end"?d=i.width:o!=="inner"&&(d=i.width/2,u=t.width/2),this.paddingLeft=Math.max((d-h+r)*this.width/(this.width-h),0),this.paddingRight=Math.max((u-f+r)*this.width/(this.width-f),0)}else{let h=t.height/2,f=i.height/2;o==="start"?(h=0,f=i.height):o==="end"&&(h=t.height,f=0),this.paddingTop=h+r,this.paddingBottom=f+r}}_handleMargins(){this._margins&&(this._margins.left=Math.max(this.paddingLeft,this._margins.left),this._margins.top=Math.max(this.paddingTop,this._margins.top),this._margins.right=Math.max(this.paddingRight,this._margins.right),this._margins.bottom=Math.max(this.paddingBottom,this._margins.bottom))}afterFit(){I(this.options.afterFit,[this])}isHorizontal(){let{axis:i,position:t}=this.options;return t==="top"||t==="bottom"||i==="x"}isFullSize(){return this.options.fullSize}_convertTicksToLabels(i){this.beforeTickToLabelConversion(),this.generateTickLabels(i);let t,s;for(t=0,s=i.length;t({width:r[k]||0,height:a[k]||0});return{first:w(0),last:w(t-1),widest:w(v),highest:w(S),widths:r,heights:a}}getLabelForValue(i){return i}getPixelForValue(i,t){return NaN}getValueForPixel(i){}getPixelForTick(i){let t=this.ticks;return i<0||i>t.length-1?null:this.getPixelForValue(t[i].value)}getPixelForDecimal(i){this._reversePixels&&(i=1-i);let t=this._startPixel+i*this._length;return Xn(this._alignToPixels?Ot(this.chart,t,0):t)}getDecimalForPixel(i){let t=(i-this._startPixel)/this._length;return this._reversePixels?1-t:t}getBasePixel(){return this.getPixelForValue(this.getBaseValue())}getBaseValue(){let{min:i,max:t}=this;return i<0&&t<0?t:i>0&&t>0?i:0}getContext(i){let t=this.ticks||[];if(i>=0&&ia*n?a/s:l/n:l*n0}_computeGridLineItems(i){let t=this.axis,s=this.chart,n=this.options,{grid:o,position:r,border:a}=n,l=o.offset,c=this.isHorizontal(),f=this.ticks.length+(l?1:0),d=Fe(o),u=[],p=a.setContext(this.getContext()),g=p.display?p.width:0,m=g/2,b=function(N){return Ot(s,N,g)},x,y,M,_,v,S,w,k,O,P,D,Y;if(r==="top")x=b(this.bottom),S=this.bottom-d,k=x-m,P=b(i.top)+m,Y=i.bottom;else if(r==="bottom")x=b(this.top),P=i.top,Y=b(i.bottom)-m,S=x+m,k=this.top+d;else if(r==="left")x=b(this.right),v=this.right-d,w=x-m,O=b(i.left)+m,D=i.right;else if(r==="right")x=b(this.left),O=i.left,D=b(i.right)-m,v=x+m,w=this.left+d;else if(t==="x"){if(r==="center")x=b((i.top+i.bottom)/2+.5);else if(A(r)){let N=Object.keys(r)[0],H=r[N];x=b(this.chart.scales[N].getPixelForValue(H))}P=i.top,Y=i.bottom,S=x+m,k=S+d}else if(t==="y"){if(r==="center")x=b((i.left+i.right)/2);else if(A(r)){let N=Object.keys(r)[0],H=r[N];x=b(this.chart.scales[N].getPixelForValue(H))}v=x-m,w=v-d,O=i.left,D=i.right}let it=C(n.ticks.maxTicksLimit,f),R=Math.max(1,Math.ceil(f/it));for(y=0;y0&&(Nt-=jt/2);break}Ge={left:Nt,top:Me,width:jt+Gt.width,height:ve+Gt.height,color:R.backdropColor}}m.push({label:M,font:k,textOffset:D,options:{rotation:g,color:H,strokeColor:rt,strokeWidth:q,textAlign:qt,textBaseline:Y,translation:[_,v],backdrop:Ge}})}return m}_getXAxisLabelAlignment(){let{position:i,ticks:t}=this.options;if(-nt(this.labelRotation))return i==="top"?"left":"right";let n="center";return t.align==="start"?n="left":t.align==="end"?n="right":t.align==="inner"&&(n="inner"),n}_getYAxisLabelAlignment(i){let{position:t,ticks:{crossAlign:s,mirror:n,padding:o}}=this.options,r=this._getLabelSizes(),a=i+o,l=r.widest.width,c,h;return t==="left"?n?(h=this.right+o,s==="near"?c="left":s==="center"?(c="center",h+=l/2):(c="right",h+=l)):(h=this.right-a,s==="near"?c="right":s==="center"?(c="center",h-=l/2):(c="left",h=this.left)):t==="right"?n?(h=this.left+o,s==="near"?c="right":s==="center"?(c="center",h-=l/2):(c="left",h-=l)):(h=this.left+a,s==="near"?c="left":s==="center"?(c="center",h+=l/2):(c="right",h=this.right)):c="right",{textAlign:c,x:h}}_computeLabelArea(){if(this.options.ticks.mirror)return;let i=this.chart,t=this.options.position;if(t==="left"||t==="right")return{top:0,left:this.left,bottom:i.height,right:this.right};if(t==="top"||t==="bottom")return{top:this.top,left:0,bottom:this.bottom,right:i.width}}drawBackground(){let{ctx:i,options:{backgroundColor:t},left:s,top:n,width:o,height:r}=this;t&&(i.save(),i.fillStyle=t,i.fillRect(s,n,o,r),i.restore())}getLineWidthForValue(i){let t=this.options.grid;if(!this._isVisible()||!t.display)return 0;let n=this.ticks.findIndex(o=>o.value===i);return n>=0?t.setContext(this.getContext(n)).lineWidth:0}drawGrid(i){let t=this.options.grid,s=this.ctx,n=this._gridLineItems||(this._gridLineItems=this._computeGridLineItems(i)),o,r,a=(l,c,h)=>{!h.width||!h.color||(s.save(),s.lineWidth=h.width,s.strokeStyle=h.color,s.setLineDash(h.borderDash||[]),s.lineDashOffset=h.borderDashOffset,s.beginPath(),s.moveTo(l.x,l.y),s.lineTo(c.x,c.y),s.stroke(),s.restore())};if(t.display)for(o=0,r=n.length;o{this.draw(o)}}]:[{z:s,draw:o=>{this.drawBackground(),this.drawGrid(o),this.drawTitle()}},{z:n,draw:()=>{this.drawBorder()}},{z:t,draw:o=>{this.drawLabels(o)}}]}getMatchingVisibleMetas(i){let t=this.chart.getSortedVisibleDatasetMetas(),s=this.axis+"AxisID",n=[],o,r;for(o=0,r=t.length;o{let s=t.split("."),n=s.pop(),o=[e].concat(s).join("."),r=i[t].split("."),a=r.pop(),l=r.join(".");B.route(o,n,l,a)})}function Uh(e){return"id"in e&&"defaults"in e}var Ks=class{constructor(){this.controllers=new ce(Rt,"datasets",!0),this.elements=new ce(lt,"elements"),this.plugins=new ce(Object,"plugins"),this.scales=new ce(Kt,"scales"),this._typedRegistries=[this.controllers,this.scales,this.elements]}add(...i){this._each("register",i)}remove(...i){this._each("unregister",i)}addControllers(...i){this._each("register",i,this.controllers)}addElements(...i){this._each("register",i,this.elements)}addPlugins(...i){this._each("register",i,this.plugins)}addScales(...i){this._each("register",i,this.scales)}getController(i){return this._get(i,this.controllers,"controller")}getElement(i){return this._get(i,this.elements,"element")}getPlugin(i){return this._get(i,this.plugins,"plugin")}getScale(i){return this._get(i,this.scales,"scale")}removeControllers(...i){this._each("unregister",i,this.controllers)}removeElements(...i){this._each("unregister",i,this.elements)}removePlugins(...i){this._each("unregister",i,this.plugins)}removeScales(...i){this._each("unregister",i,this.scales)}_each(i,t,s){[...t].forEach(n=>{let o=s||this._getRegistryForType(n);s||o.isForType(n)||o===this.plugins&&n.id?this._exec(i,o,n):L(n,r=>{let a=s||this._getRegistryForType(r);this._exec(i,a,r)})})}_exec(i,t,s){let n=fi(i);I(s["before"+n],[],s),t[i](s),I(s["after"+n],[],s)}_getRegistryForType(i){for(let t=0;to.filter(a=>!r.some(l=>a.plugin.id===l.plugin.id));this._notify(n(t,s),i,"stop"),this._notify(n(s,t),i,"start")}};function Yh(e){let i={},t=[],s=Object.keys(pt.plugins.items);for(let o=0;o1&&zo(e[0].toLowerCase());if(s)return s}throw new Error(`Cannot determine type of '${e}' axis. Please provide 'axis' or 'position' option.`)}function Bo(e,i,t){if(t[i+"AxisID"]===e)return{axis:i}}function Qh(e,i){if(i.data&&i.data.datasets){let t=i.data.datasets.filter(s=>s.xAxisID===e||s.yAxisID===e);if(t.length)return Bo(e,"x",t[0])||Bo(e,"y",t[0])}return{}}function tf(e,i){let t=Pt[e.type]||{scales:{}},s=i.scales||{},n=Gs(e.type,i),o=Object.create(null);return Object.keys(s).forEach(r=>{let a=s[r];if(!A(a))return console.error(`Invalid scale configuration for scale: ${r}`);if(a._proxy)return console.warn(`Ignoring resolver passed as options for scale: ${r}`);let l=Zs(r,a,Qh(r,e),B.scales[a.type]),c=Zh(l,n),h=t.scales||{};o[r]=ee(Object.create(null),[{axis:l},a,h[l],h[c]])}),e.data.datasets.forEach(r=>{let a=r.type||e.type,l=r.indexAxis||Gs(a,i),h=(Pt[a]||{}).scales||{};Object.keys(h).forEach(f=>{let d=Gh(f,l),u=r[d+"AxisID"]||d;o[u]=o[u]||Object.create(null),ee(o[u],[{axis:d},s[u],h[f]])})}),Object.keys(o).forEach(r=>{let a=o[r];ee(a,[B.scales[a.type],B.scale])}),o}function kr(e){let i=e.options||(e.options={});i.plugins=C(i.plugins,{}),i.scales=tf(e,i)}function Cr(e){return e=e||{},e.datasets=e.datasets||[],e.labels=e.labels||[],e}function ef(e){return e=e||{},e.data=Cr(e.data),kr(e),e}var jo=new Map,Pr=new Set;function Si(e,i){let t=jo.get(e);return t||(t=i(),jo.set(e,t),Pr.add(t)),t}var ze=(e,i,t)=>{let s=_t(i,t);s!==void 0&&e.add(s)},Js=class{constructor(i){this._config=ef(i),this._scopeCache=new Map,this._resolverCache=new Map}get platform(){return this._config.platform}get type(){return this._config.type}set type(i){this._config.type=i}get data(){return this._config.data}set data(i){this._config.data=Cr(i)}get options(){return this._config.options}set options(i){this._config.options=i}get plugins(){return this._config.plugins}update(){let i=this._config;this.clearCache(),kr(i)}clearCache(){this._scopeCache.clear(),this._resolverCache.clear()}datasetScopeKeys(i){return Si(i,()=>[[`datasets.${i}`,""]])}datasetAnimationScopeKeys(i,t){return Si(`${i}.transition.${t}`,()=>[[`datasets.${i}.transitions.${t}`,`transitions.${t}`],[`datasets.${i}`,""]])}datasetElementScopeKeys(i,t){return Si(`${i}-${t}`,()=>[[`datasets.${i}.elements.${t}`,`datasets.${i}`,`elements.${t}`,""]])}pluginScopeKeys(i){let t=i.id,s=this.type;return Si(`${s}-plugin-${t}`,()=>[[`plugins.${t}`,...i.additionalOptionScopes||[]]])}_cachedScopes(i,t){let s=this._scopeCache,n=s.get(i);return(!n||t)&&(n=new Map,s.set(i,n)),n}getOptionScopes(i,t,s){let{options:n,type:o}=this,r=this._cachedScopes(i,s),a=r.get(t);if(a)return a;let l=new Set;t.forEach(h=>{i&&(l.add(i),h.forEach(f=>ze(l,i,f))),h.forEach(f=>ze(l,n,f)),h.forEach(f=>ze(l,Pt[o]||{},f)),h.forEach(f=>ze(l,B,f)),h.forEach(f=>ze(l,gi,f))});let c=Array.from(l);return c.length===0&&c.push(Object.create(null)),Pr.has(t)&&r.set(t,c),c}chartOptionScopes(){let{options:i,type:t}=this;return[i,Pt[t]||{},B.datasets[t]||{},{type:t},B,gi]}resolveNamedOptions(i,t,s,n=[""]){let o={$shared:!0},{resolver:r,subPrefixes:a}=No(this._resolverCache,i,n),l=r;if(nf(r,t)){o.$shared=!1,s=xt(s)?s():s;let c=this.createResolver(i,s,a);l=Ht(r,s,c)}for(let c of t)o[c]=l[c];return o}createResolver(i,t,s=[""],n){let{resolver:o}=No(this._resolverCache,i,s);return A(t)?Ht(o,t,void 0,n):o}};function No(e,i,t){let s=e.get(i);s||(s=new Map,e.set(i,s));let n=t.join(),o=s.get(n);return o||(o={resolver:bi(i,t),subPrefixes:t.filter(a=>!a.toLowerCase().includes("hover"))},s.set(n,o)),o}var sf=e=>A(e)&&Object.getOwnPropertyNames(e).some(i=>xt(e[i]));function nf(e,i){let{isScriptable:t,isIndexable:s}=Ss(e);for(let n of i){let o=t(n),r=s(n),a=(r||o)&&e[n];if(o&&(xt(a)||sf(a))||r&&E(a))return!0}return!1}var of="4.4.4",rf=["top","bottom","left","right","chartArea"];function Wo(e,i){return e==="top"||e==="bottom"||rf.indexOf(e)===-1&&i==="x"}function Vo(e,i){return function(t,s){return t[e]===s[e]?t[i]-s[i]:t[e]-s[e]}}function Ho(e){let i=e.chart,t=i.options.animation;i.notifyPlugins("afterRender"),I(t&&t.onComplete,[e],i)}function af(e){let i=e.chart,t=i.options.animation;I(t&&t.onProgress,[e],i)}function Or(e){return _i()&&typeof e=="string"?e=document.getElementById(e):e&&e.length&&(e=e[0]),e&&e.canvas&&(e=e.canvas),e}var Di={},$o=e=>{let i=Or(e);return Object.values(Di).filter(t=>t.canvas===i).pop()};function lf(e,i,t){let s=Object.keys(e);for(let n of s){let o=+n;if(o>=i){let r=e[n];delete e[n],(t>0||o>i)&&(e[o+t]=r)}}}function cf(e,i,t,s){return!t||e.type==="mouseout"?null:s?i:e}function ki(e,i,t){return e.options.clip?e[t]:i[t]}function hf(e,i){let{xScale:t,yScale:s}=e;return t&&s?{left:ki(t,i,"left"),right:ki(t,i,"right"),top:ki(s,i,"top"),bottom:ki(s,i,"bottom")}:i}var zi=(()=>{class e{static defaults=B;static instances=Di;static overrides=Pt;static registry=pt;static version=of;static getChart=$o;static register(...t){pt.add(...t),Uo()}static unregister(...t){pt.remove(...t),Uo()}constructor(t,s){let n=this.config=new Js(s),o=Or(t),r=$o(o);if(r)throw new Error("Canvas is already in use. Chart with ID '"+r.id+"' must be destroyed before the canvas with ID '"+r.canvas.id+"' can be reused.");let a=n.createResolver(n.chartOptionScopes(),this.getContext());this.platform=new(n.platform||Ah(o)),this.platform.updateConfig(n);let l=this.platform.acquireContext(o,a.aspectRatio),c=l&&l.canvas,h=c&&c.height,f=c&&c.width;if(this.id=Wn(),this.ctx=l,this.canvas=c,this.width=f,this.height=h,this._options=a,this._aspectRatio=this.aspectRatio,this._layers=[],this._metasets=[],this._stacks=void 0,this.boxes=[],this.currentDevicePixelRatio=void 0,this.chartArea=void 0,this._active=[],this._lastEvent=void 0,this._listeners={},this._responsiveListeners=void 0,this._sortedMetasets=[],this.scales={},this._plugins=new qs,this.$proxies={},this._hiddenIndices={},this.attached=!1,this._animationsDisabled=void 0,this.$context=void 0,this._doResize=Jn(d=>this.update(d),a.resizeDelay||0),this._dataChanges=[],Di[this.id]=this,!l||!c){console.error("Failed to create chart: can't acquire context from the given item");return}vt.listen(this,"complete",Ho),vt.listen(this,"progress",af),this._initialize(),this.attached&&this.update()}get aspectRatio(){let{options:{aspectRatio:t,maintainAspectRatio:s},width:n,height:o,_aspectRatio:r}=this;return T(t)?s&&r?r:o?n/o:null:t}get data(){return this.config.data}set data(t){this.config.data=t}get options(){return this._options}set options(t){this.config.options=t}get registry(){return pt}_initialize(){return this.notifyPlugins("beforeInit"),this.options.responsive?this.resize():Os(this,this.options.devicePixelRatio),this.bindEvents(),this.notifyPlugins("afterInit"),this}clear(){return vs(this.canvas,this.ctx),this}stop(){return vt.stop(this),this}resize(t,s){vt.running(this)?this._resizeBeforeDraw={width:t,height:s}:this._resize(t,s)}_resize(t,s){let n=this.options,o=this.canvas,r=n.maintainAspectRatio&&this.aspectRatio,a=this.platform.getMaximumSize(o,t,s,r),l=n.devicePixelRatio||this.platform.getDevicePixelRatio(),c=this.width?"resize":"attach";this.width=a.width,this.height=a.height,this._aspectRatio=this.aspectRatio,Os(this,l,!0)&&(this.notifyPlugins("resize",{size:a}),I(n.onResize,[this,a],this),this.attached&&this._doResize(c)&&this.render())}ensureScalesHaveIDs(){let s=this.options.scales||{};L(s,(n,o)=>{n.id=o})}buildOrUpdateScales(){let t=this.options,s=t.scales,n=this.scales,o=Object.keys(n).reduce((a,l)=>(a[l]=!1,a),{}),r=[];s&&(r=r.concat(Object.keys(s).map(a=>{let l=s[a],c=Zs(a,l),h=c==="r",f=c==="x";return{options:l,dposition:h?"chartArea":f?"bottom":"left",dtype:h?"radialLinear":f?"category":"linear"}}))),L(r,a=>{let l=a.options,c=l.id,h=Zs(c,l),f=C(l.type,a.dtype);(l.position===void 0||Wo(l.position,h)!==Wo(a.dposition))&&(l.position=a.dposition),o[c]=!0;let d=null;if(c in n&&n[c].type===f)d=n[c];else{let u=pt.getScale(f);d=new u({id:c,type:f,ctx:this.ctx,chart:this}),n[d.id]=d}d.init(l,t)}),L(o,(a,l)=>{a||delete n[l]}),L(n,a=>{G.configure(this,a,a.options),G.addBox(this,a)})}_updateMetasets(){let t=this._metasets,s=this.data.datasets.length,n=t.length;if(t.sort((o,r)=>o.index-r.index),n>s){for(let o=s;os.length&&delete this._stacks,t.forEach((n,o)=>{s.filter(r=>r===n._dataset).length===0&&this._destroyDatasetMeta(o)})}buildOrUpdateControllers(){let t=[],s=this.data.datasets,n,o;for(this._removeUnreferencedMetasets(),n=0,o=s.length;n{this.getDatasetMeta(s).controller.reset()},this)}reset(){this._resetElements(),this.notifyPlugins("reset")}update(t){let s=this.config;s.update();let n=this._options=s.createResolver(s.chartOptionScopes(),this.getContext()),o=this._animationsDisabled=!n.animation;if(this._updateScales(),this._checkEventBindings(),this._updateHiddenIndices(),this._plugins.invalidate(),this.notifyPlugins("beforeUpdate",{mode:t,cancelable:!0})===!1)return;let r=this.buildOrUpdateControllers();this.notifyPlugins("beforeElementsUpdate");let a=0;for(let h=0,f=this.data.datasets.length;h{h.reset()}),this._updateDatasets(t),this.notifyPlugins("afterUpdate",{mode:t}),this._layers.sort(Vo("z","_idx"));let{_active:l,_lastEvent:c}=this;c?this._eventHandler(c,!0):l.length&&this._updateHoverStyles(l,l,!0),this.render()}_updateScales(){L(this.scales,t=>{G.removeBox(this,t)}),this.ensureScalesHaveIDs(),this.buildOrUpdateScales()}_checkEventBindings(){let t=this.options,s=new Set(Object.keys(this._listeners)),n=new Set(t.events);(!ls(s,n)||!!this._responsiveListeners!==t.responsive)&&(this.unbindEvents(),this.bindEvents())}_updateHiddenIndices(){let{_hiddenIndices:t}=this,s=this._getUniformDataChanges()||[];for(let{method:n,start:o,count:r}of s){let a=n==="_removeElements"?-r:r;lf(t,o,a)}}_getUniformDataChanges(){let t=this._dataChanges;if(!t||!t.length)return;this._dataChanges=[];let s=this.data.datasets.length,n=r=>new Set(t.filter(a=>a[0]===r).map((a,l)=>l+","+a.splice(1).join(","))),o=n(0);for(let r=1;rr.split(",")).map(r=>({method:r[1],start:+r[2],count:+r[3]}))}_updateLayout(t){if(this.notifyPlugins("beforeLayout",{cancelable:!0})===!1)return;G.update(this,this.width,this.height,t);let s=this.chartArea,n=s.width<=0||s.height<=0;this._layers=[],L(this.boxes,o=>{n&&o.position==="chartArea"||(o.configure&&o.configure(),this._layers.push(...o._layers()))},this),this._layers.forEach((o,r)=>{o._idx=r}),this.notifyPlugins("afterLayout")}_updateDatasets(t){if(this.notifyPlugins("beforeDatasetsUpdate",{mode:t,cancelable:!0})!==!1){for(let s=0,n=this.data.datasets.length;s=0;--s)this._drawDataset(t[s]);this.notifyPlugins("afterDatasetsDraw")}_drawDataset(t){let s=this.ctx,n=t._clip,o=!n.disabled,r=hf(t,this.chartArea),a={meta:t,index:t.index,cancelable:!0};this.notifyPlugins("beforeDatasetDraw",a)!==!1&&(o&&Te(s,{left:n.left===!1?0:r.left-n.left,right:n.right===!1?this.width:r.right+n.right,top:n.top===!1?0:r.top-n.top,bottom:n.bottom===!1?this.height:r.bottom+n.bottom}),t.controller.draw(),o&&Le(s),a.cancelable=!1,this.notifyPlugins("afterDatasetDraw",a))}isPointInArea(t){return ht(t,this.chartArea,this._minPadding)}getElementsAtEventForMode(t,s,n,o){let r=hh.modes[s];return typeof r=="function"?r(this,t,n,o):[]}getDatasetMeta(t){let s=this.data.datasets[t],n=this._metasets,o=n.filter(r=>r&&r._dataset===s).pop();return o||(o={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null,order:s&&s.order||0,index:t,_dataset:s,_parsed:[],_sorted:!1},n.push(o)),o}getContext(){return this.$context||(this.$context=yt(null,{chart:this,type:"chart"}))}getVisibleDatasetCount(){return this.getSortedVisibleDatasetMetas().length}isDatasetVisible(t){let s=this.data.datasets[t];if(!s)return!1;let n=this.getDatasetMeta(t);return typeof n.hidden=="boolean"?!n.hidden:!s.hidden}setDatasetVisibility(t,s){let n=this.getDatasetMeta(t);n.hidden=!s}toggleDataVisibility(t){this._hiddenIndices[t]=!this._hiddenIndices[t]}getDataVisibility(t){return!this._hiddenIndices[t]}_updateVisibility(t,s,n){let o=n?"show":"hide",r=this.getDatasetMeta(t),a=r.controller._resolveAnimations(void 0,o);ie(s)?(r.data[s].hidden=!n,this.update()):(this.setDatasetVisibility(t,n),a.update(r,{visible:n}),this.update(l=>l.datasetIndex===t?o:void 0))}hide(t,s){this._updateVisibility(t,s,!1)}show(t,s){this._updateVisibility(t,s,!0)}_destroyDatasetMeta(t){let s=this._metasets[t];s&&s.controller&&s.controller._destroy(),delete this._metasets[t]}_stop(){let t,s;for(this.stop(),vt.remove(this),t=0,s=this.data.datasets.length;t{s.addEventListener(this,r,a),t[r]=a},o=(r,a,l)=>{r.offsetX=a,r.offsetY=l,this._eventHandler(r)};L(this.options.events,r=>n(r,o))}bindResponsiveEvents(){this._responsiveListeners||(this._responsiveListeners={});let t=this._responsiveListeners,s=this.platform,n=(c,h)=>{s.addEventListener(this,c,h),t[c]=h},o=(c,h)=>{t[c]&&(s.removeEventListener(this,c,h),delete t[c])},r=(c,h)=>{this.canvas&&this.resize(c,h)},a,l=()=>{o("attach",l),this.attached=!0,this.resize(),n("resize",r),n("detach",a)};a=()=>{this.attached=!1,o("resize",r),this._stop(),this._resize(0,0),n("attach",l)},s.isAttached(this.canvas)?l():a()}unbindEvents(){L(this._listeners,(t,s)=>{this.platform.removeEventListener(this,s,t)}),this._listeners={},L(this._responsiveListeners,(t,s)=>{this.platform.removeEventListener(this,s,t)}),this._responsiveListeners=void 0}updateHoverStyle(t,s,n){let o=n?"set":"remove",r,a,l,c;for(s==="dataset"&&(r=this.getDatasetMeta(t[0].datasetIndex),r.controller["_"+o+"DatasetHoverStyle"]()),l=0,c=t.length;l{let l=this.getDatasetMeta(r);if(!l)throw new Error("No dataset found at index "+r);return{datasetIndex:r,element:l.data[a],index:a}});!Ae(n,s)&&(this._active=n,this._lastEvent=null,this._updateHoverStyles(n,s))}notifyPlugins(t,s,n){return this._plugins.notify(this,t,s,n)}isPluginEnabled(t){return this._plugins._cache.filter(s=>s.plugin.id===t).length===1}_updateHoverStyles(t,s,n){let o=this.options.hover,r=(c,h)=>c.filter(f=>!h.some(d=>f.datasetIndex===d.datasetIndex&&f.index===d.index)),a=r(s,t),l=n?t:r(t,s);a.length&&this.updateHoverStyle(a,o.mode,!1),l.length&&o.mode&&this.updateHoverStyle(l,o.mode,!0)}_eventHandler(t,s){let n={event:t,replay:s,cancelable:!0,inChartArea:this.isPointInArea(t)},o=a=>(a.options.events||this.options.events).includes(t.native.type);if(this.notifyPlugins("beforeEvent",n,o)===!1)return;let r=this._handleEvent(t,s,n.inChartArea);return n.cancelable=!1,this.notifyPlugins("afterEvent",n,o),(r||n.changed)&&this.render(),this}_handleEvent(t,s,n){let{_active:o=[],options:r}=this,a=s,l=this._getActiveElements(t,o,n,a),c=$n(t),h=cf(t,this._lastEvent,n,c);n&&(this._lastEvent=null,I(r.onHover,[t,l,this],this),c&&I(r.onClick,[t,l,this],this));let f=!Ae(l,o);return(f||s)&&(this._active=l,this._updateHoverStyles(l,o,s)),this._lastEvent=h,f}_getActiveElements(t,s,n,o){if(t.type==="mouseout")return[];if(!n)return s;let r=this.options.hover;return this.getElementsAtEventForMode(t,r.mode,r,o)}}return e})();function Uo(){return L(zi.instances,e=>e._plugins.invalidate())}function ff(e,i,t){let{startAngle:s,pixelMargin:n,x:o,y:r,outerRadius:a,innerRadius:l}=i,c=n/a;e.beginPath(),e.arc(o,r,a,s-c,t+c),l>n?(c=n/l,e.arc(o,r,l,t+c,s-c,!0)):e.arc(o,r,n,t+V,s-V),e.closePath(),e.clip()}function df(e){return xi(e,["outerStart","outerEnd","innerStart","innerEnd"])}function uf(e,i,t,s){let n=df(e.options.borderRadius),o=(t-i)/2,r=Math.min(o,s*i/2),a=l=>{let c=(t-Math.min(o,l))*s/2;return U(l,0,Math.min(o,c))};return{outerStart:a(n.outerStart),outerEnd:a(n.outerEnd),innerStart:U(n.innerStart,0,r),innerEnd:U(n.innerEnd,0,r)}}function le(e,i,t,s){return{x:t+e*Math.cos(i),y:s+e*Math.sin(i)}}function Ii(e,i,t,s,n,o){let{x:r,y:a,startAngle:l,pixelMargin:c,innerRadius:h}=i,f=Math.max(i.outerRadius+s+t-c,0),d=h>0?h+s+t+c:0,u=0,p=n-l;if(s){let R=h>0?h-s:0,N=f>0?f-s:0,H=(R+N)/2,rt=H!==0?p*H/(H+s):p;u=(p-rt)/2}let g=Math.max(.001,p*f-t/F)/f,m=(p-g)/2,b=l+m+u,x=n-m-u,{outerStart:y,outerEnd:M,innerStart:_,innerEnd:v}=uf(i,d,f,x-b),S=f-y,w=f-M,k=b+y/S,O=x-M/w,P=d+_,D=d+v,Y=b+_/P,it=x-v/D;if(e.beginPath(),o){let R=(k+O)/2;if(e.arc(r,a,f,k,R),e.arc(r,a,f,R,O),M>0){let q=le(w,O,r,a);e.arc(q.x,q.y,M,O,x+V)}let N=le(D,x,r,a);if(e.lineTo(N.x,N.y),v>0){let q=le(D,it,r,a);e.arc(q.x,q.y,v,x+V,it+Math.PI)}let H=(x-v/d+(b+_/d))/2;if(e.arc(r,a,d,x-v/d,H,!0),e.arc(r,a,d,H,b+_/d,!0),_>0){let q=le(P,Y,r,a);e.arc(q.x,q.y,_,Y+Math.PI,b-V)}let rt=le(S,b,r,a);if(e.lineTo(rt.x,rt.y),y>0){let q=le(S,k,r,a);e.arc(q.x,q.y,y,b-V,k)}}else{e.moveTo(r,a);let R=Math.cos(k)*f+r,N=Math.sin(k)*f+a;e.lineTo(R,N);let H=Math.cos(O)*f+r,rt=Math.sin(O)*f+a;e.lineTo(H,rt)}e.closePath()}function pf(e,i,t,s,n){let{fullCircles:o,startAngle:r,circumference:a}=i,l=i.endAngle;if(o){Ii(e,i,t,s,l,n);for(let c=0;ci!=="borderDash"};circumference;endAngle;fullCircles;innerRadius;outerRadius;pixelMargin;startAngle;constructor(i){super(),this.options=void 0,this.circumference=void 0,this.startAngle=void 0,this.endAngle=void 0,this.innerRadius=void 0,this.outerRadius=void 0,this.pixelMargin=0,this.fullCircles=0,i&&Object.assign(this,i)}inRange(i,t,s){let n=this.getProps(["x","y"],s),{angle:o,distance:r}=ds(n,{x:i,y:t}),{startAngle:a,endAngle:l,innerRadius:c,outerRadius:h,circumference:f}=this.getProps(["startAngle","endAngle","innerRadius","outerRadius","circumference"],s),d=(this.options.spacing+this.options.borderWidth)/2,u=C(f,l-a),p=ne(o,a,l)&&a!==l,g=u>=z||p,m=dt(r,c+d,h+d);return g&&m}getCenterPoint(i){let{x:t,y:s,startAngle:n,endAngle:o,innerRadius:r,outerRadius:a}=this.getProps(["x","y","startAngle","endAngle","innerRadius","outerRadius"],i),{offset:l,spacing:c}=this.options,h=(n+o)/2,f=(r+a+c+l)/2;return{x:t+Math.cos(h)*f,y:s+Math.sin(h)*f}}tooltipPosition(i){return this.getCenterPoint(i)}draw(i){let{options:t,circumference:s}=this,n=(t.offset||0)/4,o=(t.spacing||0)/2,r=t.circular;if(this.pixelMargin=t.borderAlign==="inner"?.33:0,this.fullCircles=s>z?Math.floor(s/z):0,s===0||this.innerRadius<0||this.outerRadius<0)return;i.save();let a=(this.startAngle+this.endAngle)/2;i.translate(Math.cos(a)*n,Math.sin(a)*n);let l=1-Math.sin(Math.min(F,s||0)),c=n*l;i.fillStyle=t.backgroundColor,i.strokeStyle=t.borderColor,pf(i,this,c,o,r),gf(i,this,c,o,r),i.restore()}};function Ar(e,i,t=i){e.lineCap=C(t.borderCapStyle,i.borderCapStyle),e.setLineDash(C(t.borderDash,i.borderDash)),e.lineDashOffset=C(t.borderDashOffset,i.borderDashOffset),e.lineJoin=C(t.borderJoinStyle,i.borderJoinStyle),e.lineWidth=C(t.borderWidth,i.borderWidth),e.strokeStyle=C(t.borderColor,i.borderColor)}function mf(e,i,t){e.lineTo(t.x,t.y)}function xf(e){return e.stepped?io:e.tension||e.cubicInterpolationMode==="monotone"?so:mf}function Dr(e,i,t={}){let s=e.length,{start:n=0,end:o=s-1}=t,{start:r,end:a}=i,l=Math.max(n,r),c=Math.min(o,a),h=na&&o>a;return{count:s,start:l,loop:i.loop,ilen:c(r+(c?a-M:M))%o,y=()=>{g!==m&&(e.lineTo(h,m),e.lineTo(h,g),e.lineTo(h,b))};for(l&&(u=n[x(0)],e.moveTo(u.x,u.y)),d=0;d<=a;++d){if(u=n[x(d)],u.skip)continue;let M=u.x,_=u.y,v=M|0;v===p?(_m&&(m=_),h=(f*h+M)/++f):(y(),e.lineTo(M,_),p=v,f=0,g=m=_),b=_}y()}function tn(e){let i=e.options,t=i.borderDash&&i.borderDash.length;return!e._decimated&&!e._loop&&!i.tension&&i.cubicInterpolationMode!=="monotone"&&!i.stepped&&!t?_f:bf}function yf(e){return e.stepped?uo:e.tension||e.cubicInterpolationMode==="monotone"?po:Ct}function vf(e,i,t,s){let n=i._path;n||(n=i._path=new Path2D,i.path(n,t,s)&&n.closePath()),Ar(e,i.options),e.stroke(n)}function Mf(e,i,t,s){let{segments:n,options:o}=i,r=tn(i);for(let a of n)Ar(e,o,a.style),e.beginPath(),r(e,i,a,{start:t,end:t+s-1})&&e.closePath(),e.stroke()}var wf=typeof Path2D=="function";function Sf(e,i,t,s){wf&&!i.options.segment?vf(e,i,t,s):Mf(e,i,t,s)}var Bi=(()=>{class e extends lt{static id="line";static defaults={borderCapStyle:"butt",borderDash:[],borderDashOffset:0,borderJoinStyle:"miter",borderWidth:3,capBezierPoints:!0,cubicInterpolationMode:"default",fill:!1,spanGaps:!1,stepped:!1,tension:0};static defaultRoutes={backgroundColor:"backgroundColor",borderColor:"borderColor"};static descriptors={_scriptable:!0,_indexable:t=>t!=="borderDash"&&t!=="fill"};constructor(t){super(),this.animated=!0,this.options=void 0,this._chart=void 0,this._loop=void 0,this._fullLoop=void 0,this._path=void 0,this._points=void 0,this._segments=void 0,this._decimated=!1,this._pointsUpdated=!1,this._datasetIndex=void 0,t&&Object.assign(this,t)}updateControlPoints(t,s){let n=this.options;if((n.tension||n.cubicInterpolationMode==="monotone")&&!n.stepped&&!this._pointsUpdated){let o=n.spanGaps?this._loop:this._fullLoop;co(this._points,n,t,o,s),this._pointsUpdated=!0}}set points(t){this._points=t,delete this._segments,delete this._path,this._pointsUpdated=!1}get points(){return this._points}get segments(){return this._segments||(this._segments=mo(this,this.options.segment))}first(){let t=this.segments,s=this.points;return t.length&&s[t[0].start]}last(){let t=this.segments,s=this.points,n=t.length;return n&&s[t[n-1].end]}interpolate(t,s){let n=this.options,o=t[s],r=this.points,a=Rs(this,{property:s,start:o,end:o});if(!a.length)return;let l=[],c=yf(n),h,f;for(h=0,f=a.length;h{class e extends lt{static id="point";parsed;skip;stop;static defaults={borderWidth:1,hitRadius:1,hoverBorderWidth:1,hoverRadius:4,pointStyle:"circle",radius:3,rotation:0};static defaultRoutes={backgroundColor:"backgroundColor",borderColor:"borderColor"};constructor(t){super(),this.options=void 0,this.parsed=void 0,this.skip=void 0,this.stop=void 0,t&&Object.assign(this,t)}inRange(t,s,n){let o=this.options,{x:r,y:a}=this.getProps(["x","y"],n);return Math.pow(t-r,2)+Math.pow(s-a,2)e.replace("rgb(","rgba(").replace(")",", 0.5)"));function Lr(e){return sn[e%sn.length]}function Rr(e){return Xo[e%Xo.length]}function Lf(e,i){return e.borderColor=Lr(i),e.backgroundColor=Rr(i),++i}function Rf(e,i){return e.backgroundColor=e.data.map(()=>Lr(i++)),i}function If(e,i){return e.backgroundColor=e.data.map(()=>Rr(i++)),i}function Ef(e){let i=0;return(t,s)=>{let n=e.getDatasetMeta(s).controller;n instanceof fn?i=Rf(t,i):n instanceof yr?i=If(t,i):n&&(i=Lf(t,i))}}function Ko(e){let i;for(i in e)if(e[i].borderColor||e[i].backgroundColor)return!0;return!1}function Ff(e){return e&&(e.borderColor||e.backgroundColor)}var zf={id:"colors",defaults:{enabled:!0,forceOverride:!1},beforeLayout(e,i,t){if(!t.enabled)return;let{data:{datasets:s},options:n}=e.config,{elements:o}=n;if(!t.forceOverride&&(Ko(s)||Ff(n)||o&&Ko(o)))return;let r=Ef(e);s.forEach(r)}};function Bf(e,i,t,s,n){let o=n.samples||s;if(o>=t)return e.slice(i,i+t);let r=[],a=(t-2)/(o-2),l=0,c=i+t-1,h=i,f,d,u,p,g;for(r[l++]=e[h],f=0;fu&&(u=p,d=e[x],g=x);r[l++]=d,h=g}return r[l++]=e[c],r}function jf(e,i,t,s){let n=0,o=0,r,a,l,c,h,f,d,u,p,g,m=[],b=i+t-1,x=e[i].x,M=e[b].x-x;for(r=i;rg&&(g=c,d=r),n=(o*n+a.x)/++o;else{let v=r-1;if(!T(f)&&!T(d)){let S=Math.min(f,d),w=Math.max(f,d);S!==u&&S!==v&&m.push(Je(Ze({},e[S]),{x:n})),w!==u&&w!==v&&m.push(Je(Ze({},e[w]),{x:n}))}r>0&&v!==u&&m.push(e[v]),m.push(a),h=_,o=0,p=g=c,f=d=u=r}}return m}function Ir(e){if(e._decimated){let i=e._data;delete e._decimated,delete e._data,Object.defineProperty(e,"data",{configurable:!0,enumerable:!0,writable:!0,value:i})}}function qo(e){e.data.datasets.forEach(i=>{Ir(i)})}function Nf(e,i){let t=i.length,s=0,n,{iScale:o}=e,{min:r,max:a,minDefined:l,maxDefined:c}=o.getUserBounds();return l&&(s=U(ct(i,o.axis,r).lo,0,t-1)),c?n=U(ct(i,o.axis,a).hi+1,s,t)-s:n=t-s,{start:s,count:n}}var Wf={id:"decimation",defaults:{algorithm:"min-max",enabled:!1},beforeElementsUpdate:(e,i,t)=>{if(!t.enabled){qo(e);return}let s=e.width;e.data.datasets.forEach((n,o)=>{let{_data:r,indexAxis:a}=n,l=e.getDatasetMeta(o),c=r||n.data;if(ae([a,e.options.indexAxis])==="y"||!l.controller.supportsDecimation)return;let h=e.scales[l.xAxisID];if(h.type!=="linear"&&h.type!=="time"||e.options.parsing)return;let{start:f,count:d}=Nf(l,c),u=t.threshold||4*s;if(d<=u){Ir(n);return}T(r)&&(n._data=c,delete n.data,Object.defineProperty(n,"data",{configurable:!0,enumerable:!0,get:function(){return this._decimated},set:function(g){this._data=g}}));let p;switch(t.algorithm){case"lttb":p=Bf(c,f,d,s,t);break;case"min-max":p=jf(c,f,d,s);break;default:throw new Error(`Unsupported decimation algorithm '${t.algorithm}'`)}n._decimated=p})},destroy(e){qo(e)}};function Vf(e,i,t){let s=e.segments,n=e.points,o=i.points,r=[];for(let a of s){let{start:l,end:c}=a;c=dn(l,c,n);let h=nn(t,n[l],n[c],a.loop);if(!i.segments){r.push({source:a,target:h,start:n[l],end:n[c]});continue}let f=Rs(i,h);for(let d of f){let u=nn(t,o[d.start],o[d.end],d.loop),p=Ls(a,n,u);for(let g of p)r.push({source:g,target:d,start:{[t]:Go(h,u,"start",Math.max)},end:{[t]:Go(h,u,"end",Math.min)}})}}return r}function nn(e,i,t,s){if(s)return;let n=i[e],o=t[e];return e==="angle"&&(n=Z(n),o=Z(o)),{property:e,start:n,end:o}}function Hf(e,i){let{x:t=null,y:s=null}=e||{},n=i.points,o=[];return i.segments.forEach(({start:r,end:a})=>{a=dn(r,a,n);let l=n[r],c=n[a];s!==null?(o.push({x:l.x,y:s}),o.push({x:c.x,y:s})):t!==null&&(o.push({x:t,y:l.y}),o.push({x:t,y:c.y}))}),o}function dn(e,i,t){for(;i>e;i--){let s=t[i];if(!isNaN(s.x)&&!isNaN(s.y))break}return i}function Go(e,i,t,s){return e&&i?s(e[t],i[t]):e?e[t]:i?i[t]:0}function Er(e,i){let t=[],s=!1;return E(e)?(s=!0,t=e):t=Hf(e,i),t.length?new Bi({points:t,options:{tension:0},_loop:s,_fullLoop:s}):null}function Zo(e){return e&&e.fill!==!1}function $f(e,i,t){let n=e[i].fill,o=[i],r;if(!t)return n;for(;n!==!1&&o.indexOf(n)===-1;){if(!W(n))return n;if(r=e[n],!r)return!1;if(r.visible)return n;o.push(n),n=r.fill}return!1}function Uf(e,i,t){let s=qf(e);if(A(s))return isNaN(s.value)?!1:s;let n=parseFloat(s);return W(n)&&Math.floor(n)===n?Yf(s[0],i,n,t):["origin","start","end","stack","shape"].indexOf(s)>=0&&s}function Yf(e,i,t,s){return(e==="-"||e==="+")&&(t=i+t),t===i||t<0||t>=s?!1:t}function Xf(e,i){let t=null;return e==="start"?t=i.bottom:e==="end"?t=i.top:A(e)?t=i.getPixelForValue(e.value):i.getBasePixel&&(t=i.getBasePixel()),t}function Kf(e,i,t){let s;return e==="start"?s=t:e==="end"?s=i.options.reverse?i.min:i.max:A(e)?s=e.value:s=i.getBaseValue(),s}function qf(e){let i=e.options,t=i.fill,s=C(t&&t.target,t);return s===void 0&&(s=!!i.backgroundColor),s===!1||s===null?!1:s===!0?"origin":s}function Gf(e){let{scale:i,index:t,line:s}=e,n=[],o=s.segments,r=s.points,a=Zf(i,t);a.push(Er({x:null,y:i.bottom},s));for(let l=0;l=0;--r){let a=n[r].$filler;a&&(a.line.updateControlPoints(o,a.axis),s&&a.fill&&Vs(e.ctx,a,o))}},beforeDatasetsDraw(e,i,t){if(t.drawTime!=="beforeDatasetsDraw")return;let s=e.getSortedVisibleDatasetMetas();for(let n=s.length-1;n>=0;--n){let o=s[n].$filler;Zo(o)&&Vs(e.ctx,o,e.chartArea)}},beforeDatasetDraw(e,i,t){let s=i.meta.$filler;!Zo(s)||t.drawTime!=="beforeDatasetDraw"||Vs(e.ctx,s,e.chartArea)},defaults:{propagate:!0,drawTime:"beforeDatasetDraw"}},er=(e,i)=>{let{boxHeight:t=i,boxWidth:s=i}=e;return e.usePointStyle&&(t=Math.min(t,i),s=e.pointStyleWidth||Math.min(s,i)),{boxWidth:s,boxHeight:t,itemHeight:Math.max(i,t)}},ld=(e,i)=>e!==null&&i!==null&&e.datasetIndex===i.datasetIndex&&e.index===i.index,Fi=class extends lt{constructor(i){super(),this._added=!1,this.legendHitBoxes=[],this._hoveredItem=null,this.doughnutMode=!1,this.chart=i.chart,this.options=i.options,this.ctx=i.ctx,this.legendItems=void 0,this.columnSizes=void 0,this.lineWidths=void 0,this.maxHeight=void 0,this.maxWidth=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.height=void 0,this.width=void 0,this._margins=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(i,t,s){this.maxWidth=i,this.maxHeight=t,this._margins=s,this.setDimensions(),this.buildLabels(),this.fit()}setDimensions(){this.isHorizontal()?(this.width=this.maxWidth,this.left=this._margins.left,this.right=this.width):(this.height=this.maxHeight,this.top=this._margins.top,this.bottom=this.height)}buildLabels(){let i=this.options.labels||{},t=I(i.generateLabels,[this.chart],this)||[];i.filter&&(t=t.filter(s=>i.filter(s,this.chart.data))),i.sort&&(t=t.sort((s,n)=>i.sort(s,n,this.chart.data))),this.options.reverse&&t.reverse(),this.legendItems=t}fit(){let{options:i,ctx:t}=this;if(!i.display){this.width=this.height=0;return}let s=i.labels,n=$(s.font),o=n.size,r=this._computeTitleHeight(),{boxWidth:a,itemHeight:l}=er(s,o),c,h;t.font=n.string,this.isHorizontal()?(c=this.maxWidth,h=this._fitRows(r,o,a,l)+10):(h=this.maxHeight,c=this._fitCols(r,n,a,l)+10),this.width=Math.min(c,i.maxWidth||this.maxWidth),this.height=Math.min(h,i.maxHeight||this.maxHeight)}_fitRows(i,t,s,n){let{ctx:o,maxWidth:r,options:{labels:{padding:a}}}=this,l=this.legendHitBoxes=[],c=this.lineWidths=[0],h=n+a,f=i;o.textAlign="left",o.textBaseline="middle";let d=-1,u=-h;return this.legendItems.forEach((p,g)=>{let m=s+t/2+o.measureText(p.text).width;(g===0||c[c.length-1]+m+2*a>r)&&(f+=h,c[c.length-(g>0?0:1)]=0,u+=h,d++),l[g]={left:0,top:u,row:d,width:m,height:n},c[c.length-1]+=m+a}),f}_fitCols(i,t,s,n){let{ctx:o,maxHeight:r,options:{labels:{padding:a}}}=this,l=this.legendHitBoxes=[],c=this.columnSizes=[],h=r-i,f=a,d=0,u=0,p=0,g=0;return this.legendItems.forEach((m,b)=>{let{itemWidth:x,itemHeight:y}=cd(s,t,o,m,n);b>0&&u+y+2*a>h&&(f+=d+a,c.push({width:d,height:u}),p+=d+a,g++,d=u=0),l[b]={left:p,top:u,col:g,width:x,height:y},d=Math.max(d,x),u+=y+a}),f+=d,c.push({width:d,height:u}),f}adjustHitBoxes(){if(!this.options.display)return;let i=this._computeTitleHeight(),{legendHitBoxes:t,options:{align:s,labels:{padding:n},rtl:o}}=this,r=Ut(o,this.left,this.width);if(this.isHorizontal()){let a=0,l=X(s,this.left+n,this.right-this.lineWidths[a]);for(let c of t)a!==c.row&&(a=c.row,l=X(s,this.left+n,this.right-this.lineWidths[a])),c.top+=this.top+i+n,c.left=r.leftForLtr(r.x(l),c.width),l+=c.width+n}else{let a=0,l=X(s,this.top+i+n,this.bottom-this.columnSizes[a].height);for(let c of t)c.col!==a&&(a=c.col,l=X(s,this.top+i+n,this.bottom-this.columnSizes[a].height)),c.top=l,c.left+=this.left+n,c.left=r.leftForLtr(r.x(c.left),c.width),l+=c.height+n}}isHorizontal(){return this.options.position==="top"||this.options.position==="bottom"}draw(){if(this.options.display){let i=this.ctx;Te(i,this),this._draw(),Le(i)}}_draw(){let{options:i,columnSizes:t,lineWidths:s,ctx:n}=this,{align:o,labels:r}=i,a=B.color,l=Ut(i.rtl,this.left,this.width),c=$(r.font),{padding:h}=r,f=c.size,d=f/2,u;this.drawTitle(),n.textAlign=l.textAlign("left"),n.textBaseline="middle",n.lineWidth=.5,n.font=c.string;let{boxWidth:p,boxHeight:g,itemHeight:m}=er(r,f),b=function(v,S,w){if(isNaN(p)||p<=0||isNaN(g)||g<0)return;n.save();let k=C(w.lineWidth,1);if(n.fillStyle=C(w.fillStyle,a),n.lineCap=C(w.lineCap,"butt"),n.lineDashOffset=C(w.lineDashOffset,0),n.lineJoin=C(w.lineJoin,"miter"),n.lineWidth=k,n.strokeStyle=C(w.strokeStyle,a),n.setLineDash(C(w.lineDash,[])),r.usePointStyle){let O={radius:g*Math.SQRT2/2,pointStyle:w.pointStyle,rotation:w.rotation,borderWidth:k},P=l.xPlus(v,p/2),D=S+d;Ms(n,O,P,D,r.pointStyleWidth&&p)}else{let O=S+Math.max((f-g)/2,0),P=l.leftForLtr(v,p),D=Dt(w.borderRadius);n.beginPath(),Object.values(D).some(Y=>Y!==0)?re(n,{x:P,y:O,w:p,h:g,radius:D}):n.rect(P,O,p,g),n.fill(),k!==0&&n.stroke()}n.restore()},x=function(v,S,w){At(n,w.text,v,S+m/2,c,{strikethrough:w.hidden,textAlign:l.textAlign(w.textAlign)})},y=this.isHorizontal(),M=this._computeTitleHeight();y?u={x:X(o,this.left+h,this.right-s[0]),y:this.top+h+M,line:0}:u={x:this.left+h,y:X(o,this.top+M+h,this.bottom-t[0].height),line:0},Ds(this.ctx,i.textDirection);let _=m+h;this.legendItems.forEach((v,S)=>{n.strokeStyle=v.fontColor,n.fillStyle=v.fontColor;let w=n.measureText(v.text).width,k=l.textAlign(v.textAlign||(v.textAlign=r.textAlign)),O=p+d+w,P=u.x,D=u.y;l.setWidth(this.width),y?S>0&&P+O+h>this.right&&(D=u.y+=_,u.line++,P=u.x=X(o,this.left+h,this.right-s[u.line])):S>0&&D+_>this.bottom&&(P=u.x=P+t[u.line].width+h,u.line++,D=u.y=X(o,this.top+M+h,this.bottom-t[u.line].height));let Y=l.x(P);if(b(Y,D,v),P=Qn(k,P+p+d,y?P+O:this.right,i.rtl),x(l.x(P),D,v),y)u.x+=O+h;else if(typeof v.text!="string"){let it=c.lineHeight;u.y+=Fr(v,it)+h}else u.y+=_}),Ts(this.ctx,i.textDirection)}drawTitle(){let i=this.options,t=i.title,s=$(t.font),n=K(t.padding);if(!t.display)return;let o=Ut(i.rtl,this.left,this.width),r=this.ctx,a=t.position,l=s.size/2,c=n.top+l,h,f=this.left,d=this.width;if(this.isHorizontal())d=Math.max(...this.lineWidths),h=this.top+c,f=X(i.align,f,this.right-d);else{let p=this.columnSizes.reduce((g,m)=>Math.max(g,m.height),0);h=c+X(i.align,this.top,this.bottom-p-i.labels.padding-this._computeTitleHeight())}let u=X(a,f,f+d);r.textAlign=o.textAlign(pi(a)),r.textBaseline="middle",r.strokeStyle=t.color,r.fillStyle=t.color,r.font=s.string,At(r,t.text,u,h,s)}_computeTitleHeight(){let i=this.options.title,t=$(i.font),s=K(i.padding);return i.display?t.lineHeight+s.height:0}_getLegendItemAt(i,t){let s,n,o;if(dt(i,this.left,this.right)&&dt(t,this.top,this.bottom)){for(o=this.legendHitBoxes,s=0;so.length>r.length?o:r)),i+t.size/2+s.measureText(n).width}function fd(e,i,t){let s=e;return typeof i.text!="string"&&(s=Fr(i,t)),s}function Fr(e,i){let t=e.text?e.text.length:0;return i*t}function dd(e,i){return!!((e==="mousemove"||e==="mouseout")&&(i.onHover||i.onLeave)||i.onClick&&(e==="click"||e==="mouseup"))}var ud={id:"legend",_element:Fi,start(e,i,t){let s=e.legend=new Fi({ctx:e.ctx,options:t,chart:e});G.configure(e,s,t),G.addBox(e,s)},stop(e){G.removeBox(e,e.legend),delete e.legend},beforeUpdate(e,i,t){let s=e.legend;G.configure(e,s,t),s.options=t},afterUpdate(e){let i=e.legend;i.buildLabels(),i.adjustHitBoxes()},afterEvent(e,i){i.replay||e.legend.handleEvent(i.event)},defaults:{display:!0,position:"top",align:"center",fullSize:!0,reverse:!1,weight:1e3,onClick(e,i,t){let s=i.datasetIndex,n=t.chart;n.isDatasetVisible(s)?(n.hide(s),i.hidden=!0):(n.show(s),i.hidden=!1)},onHover:null,onLeave:null,labels:{color:e=>e.chart.options.color,boxWidth:40,padding:10,generateLabels(e){let i=e.data.datasets,{labels:{usePointStyle:t,pointStyle:s,textAlign:n,color:o,useBorderRadius:r,borderRadius:a}}=e.legend.options;return e._getSortedDatasetMetas().map(l=>{let c=l.controller.getStyle(t?0:void 0),h=K(c.borderWidth);return{text:i[l.index].label,fillStyle:c.backgroundColor,fontColor:o,hidden:!l.visible,lineCap:c.borderCapStyle,lineDash:c.borderDash,lineDashOffset:c.borderDashOffset,lineJoin:c.borderJoinStyle,lineWidth:(h.width+h.height)/4,strokeStyle:c.borderColor,pointStyle:s||c.pointStyle,rotation:c.rotation,textAlign:n||c.textAlign,borderRadius:r&&(a||c.borderRadius),datasetIndex:l.index}},this)}},title:{color:e=>e.chart.options.color,display:!1,position:"center",text:""}},descriptors:{_scriptable:e=>!e.startsWith("on"),labels:{_scriptable:e=>!["generateLabels","filter","sort"].includes(e)}}},We=class extends lt{constructor(i){super(),this.chart=i.chart,this.options=i.options,this.ctx=i.ctx,this._padding=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.width=void 0,this.height=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(i,t){let s=this.options;if(this.left=0,this.top=0,!s.display){this.width=this.height=this.right=this.bottom=0;return}this.width=this.right=i,this.height=this.bottom=t;let n=E(s.text)?s.text.length:1;this._padding=K(s.padding);let o=n*$(s.font).lineHeight+this._padding.height;this.isHorizontal()?this.height=o:this.width=o}isHorizontal(){let i=this.options.position;return i==="top"||i==="bottom"}_drawArgs(i){let{top:t,left:s,bottom:n,right:o,options:r}=this,a=r.align,l=0,c,h,f;return this.isHorizontal()?(h=X(a,s,o),f=t+i,c=o-s):(r.position==="left"?(h=s+i,f=X(a,n,t),l=F*-.5):(h=o-i,f=X(a,t,n),l=F*.5),c=n-t),{titleX:h,titleY:f,maxWidth:c,rotation:l}}draw(){let i=this.ctx,t=this.options;if(!t.display)return;let s=$(t.font),o=s.lineHeight/2+this._padding.top,{titleX:r,titleY:a,maxWidth:l,rotation:c}=this._drawArgs(o);At(i,t.text,0,0,s,{color:t.color,maxWidth:l,rotation:c,textAlign:pi(t.align),textBaseline:"middle",translation:[r,a]})}};function pd(e,i){let t=new We({ctx:e.ctx,options:i,chart:e});G.configure(e,t,i),G.addBox(e,t),e.titleBlock=t}var gd={id:"title",_element:We,start(e,i,t){pd(e,t)},stop(e){let i=e.titleBlock;G.removeBox(e,i),delete e.titleBlock},beforeUpdate(e,i,t){let s=e.titleBlock;G.configure(e,s,t),s.options=t},defaults:{align:"center",display:!1,font:{weight:"bold"},fullSize:!0,padding:10,position:"top",text:"",weight:2e3},defaultRoutes:{color:"color"},descriptors:{_scriptable:!0,_indexable:!1}},Ci=new WeakMap,md={id:"subtitle",start(e,i,t){let s=new We({ctx:e.ctx,options:t,chart:e});G.configure(e,s,t),G.addBox(e,s),Ci.set(e,s)},stop(e){G.removeBox(e,Ci.get(e)),Ci.delete(e)},beforeUpdate(e,i,t){let s=Ci.get(e);G.configure(e,s,t),s.options=t},defaults:{align:"center",display:!1,font:{weight:"normal"},fullSize:!0,padding:0,position:"top",text:"",weight:1500},defaultRoutes:{color:"color"},descriptors:{_scriptable:!0,_indexable:!1}},je={average(e){if(!e.length)return!1;let i,t,s=new Set,n=0,o=0;for(i=0,t=e.length;ia+l)/s.size,y:n/o}},nearest(e,i){if(!e.length)return!1;let t=i.x,s=i.y,n=Number.POSITIVE_INFINITY,o,r,a;for(o=0,r=e.length;o-1?e.split(` +`):e}function xd(e,i){let{element:t,datasetIndex:s,index:n}=i,o=e.getDatasetMeta(s).controller,{label:r,value:a}=o.getLabelAndValue(n);return{chart:e,label:r,parsed:o.getParsed(n),raw:e.data.datasets[s].data[n],formattedValue:a,dataset:o.getDataset(),dataIndex:n,datasetIndex:s,element:t}}function ir(e,i){let t=e.chart.ctx,{body:s,footer:n,title:o}=e,{boxWidth:r,boxHeight:a}=i,l=$(i.bodyFont),c=$(i.titleFont),h=$(i.footerFont),f=o.length,d=n.length,u=s.length,p=K(i.padding),g=p.height,m=0,b=s.reduce((M,_)=>M+_.before.length+_.lines.length+_.after.length,0);if(b+=e.beforeBody.length+e.afterBody.length,f&&(g+=f*c.lineHeight+(f-1)*i.titleSpacing+i.titleMarginBottom),b){let M=i.displayColors?Math.max(a,l.lineHeight):l.lineHeight;g+=u*M+(b-u)*l.lineHeight+(b-1)*i.bodySpacing}d&&(g+=i.footerMarginTop+d*h.lineHeight+(d-1)*i.footerSpacing);let x=0,y=function(M){m=Math.max(m,t.measureText(M).width+x)};return t.save(),t.font=c.string,L(e.title,y),t.font=l.string,L(e.beforeBody.concat(e.afterBody),y),x=i.displayColors?r+2+i.boxPadding:0,L(s,M=>{L(M.before,y),L(M.lines,y),L(M.after,y)}),x=0,t.font=h.string,L(e.footer,y),t.restore(),m+=p.width,{width:m,height:g}}function bd(e,i){let{y:t,height:s}=i;return te.height-s/2?"bottom":"center"}function _d(e,i,t,s){let{x:n,width:o}=s,r=t.caretSize+t.caretPadding;if(e==="left"&&n+o+r>i.width||e==="right"&&n-o-r<0)return!0}function yd(e,i,t,s){let{x:n,width:o}=t,{width:r,chartArea:{left:a,right:l}}=e,c="center";return s==="center"?c=n<=(a+l)/2?"left":"right":n<=o/2?c="left":n>=r-o/2&&(c="right"),_d(c,e,i,t)&&(c="center"),c}function sr(e,i,t){let s=t.yAlign||i.yAlign||bd(e,t);return{xAlign:t.xAlign||i.xAlign||yd(e,i,t,s),yAlign:s}}function vd(e,i){let{x:t,width:s}=e;return i==="right"?t-=s:i==="center"&&(t-=s/2),t}function Md(e,i,t){let{y:s,height:n}=e;return i==="top"?s+=t:i==="bottom"?s-=n+t:s-=n/2,s}function nr(e,i,t,s){let{caretSize:n,caretPadding:o,cornerRadius:r}=e,{xAlign:a,yAlign:l}=t,c=n+o,{topLeft:h,topRight:f,bottomLeft:d,bottomRight:u}=Dt(r),p=vd(i,a),g=Md(i,l,c);return l==="center"?a==="left"?p+=c:a==="right"&&(p-=c):a==="left"?p-=Math.max(h,d)+n:a==="right"&&(p+=Math.max(f,u)+n),{x:U(p,0,s.width-i.width),y:U(g,0,s.height-i.height)}}function Pi(e,i,t){let s=K(t.padding);return i==="center"?e.x+e.width/2:i==="right"?e.x+e.width-s.right:e.x+s.left}function or(e){return ut([],Mt(e))}function wd(e,i,t){return yt(e,{tooltip:i,tooltipItems:t,type:"tooltip"})}function rr(e,i){let t=i&&i.dataset&&i.dataset.tooltip&&i.dataset.tooltip.callbacks;return t?e.override(t):e}var zr={beforeTitle:ft,title(e){if(e.length>0){let i=e[0],t=i.chart.data.labels,s=t?t.length:0;if(this&&this.options&&this.options.mode==="dataset")return i.dataset.label||"";if(i.label)return i.label;if(s>0&&i.dataIndex"u"?zr[i].call(t,s):n}var ar=(()=>{class e extends lt{static positioners=je;constructor(t){super(),this.opacity=0,this._active=[],this._eventPosition=void 0,this._size=void 0,this._cachedAnimations=void 0,this._tooltipItems=[],this.$animations=void 0,this.$context=void 0,this.chart=t.chart,this.options=t.options,this.dataPoints=void 0,this.title=void 0,this.beforeBody=void 0,this.body=void 0,this.afterBody=void 0,this.footer=void 0,this.xAlign=void 0,this.yAlign=void 0,this.x=void 0,this.y=void 0,this.height=void 0,this.width=void 0,this.caretX=void 0,this.caretY=void 0,this.labelColors=void 0,this.labelPointStyles=void 0,this.labelTextColors=void 0}initialize(t){this.options=t,this._cachedAnimations=void 0,this.$context=void 0}_resolveAnimations(){let t=this._cachedAnimations;if(t)return t;let s=this.chart,n=this.options.setContext(this.getContext()),o=n.enabled&&s.options.animation&&n.animations,r=new Ti(this.chart,o);return o._cacheable&&(this._cachedAnimations=Object.freeze(r)),r}getContext(){return this.$context||(this.$context=wd(this.chart.getContext(),this,this._tooltipItems))}getTitle(t,s){let{callbacks:n}=s,o=Q(n,"beforeTitle",this,t),r=Q(n,"title",this,t),a=Q(n,"afterTitle",this,t),l=[];return l=ut(l,Mt(o)),l=ut(l,Mt(r)),l=ut(l,Mt(a)),l}getBeforeBody(t,s){return or(Q(s.callbacks,"beforeBody",this,t))}getBody(t,s){let{callbacks:n}=s,o=[];return L(t,r=>{let a={before:[],lines:[],after:[]},l=rr(n,r);ut(a.before,Mt(Q(l,"beforeLabel",this,r))),ut(a.lines,Q(l,"label",this,r)),ut(a.after,Mt(Q(l,"afterLabel",this,r))),o.push(a)}),o}getAfterBody(t,s){return or(Q(s.callbacks,"afterBody",this,t))}getFooter(t,s){let{callbacks:n}=s,o=Q(n,"beforeFooter",this,t),r=Q(n,"footer",this,t),a=Q(n,"afterFooter",this,t),l=[];return l=ut(l,Mt(o)),l=ut(l,Mt(r)),l=ut(l,Mt(a)),l}_createItems(t){let s=this._active,n=this.chart.data,o=[],r=[],a=[],l=[],c,h;for(c=0,h=s.length;ct.filter(f,d,u,n))),t.itemSort&&(l=l.sort((f,d)=>t.itemSort(f,d,n))),L(l,f=>{let d=rr(t.callbacks,f);o.push(Q(d,"labelColor",this,f)),r.push(Q(d,"labelPointStyle",this,f)),a.push(Q(d,"labelTextColor",this,f))}),this.labelColors=o,this.labelPointStyles=r,this.labelTextColors=a,this.dataPoints=l,l}update(t,s){let n=this.options.setContext(this.getContext()),o=this._active,r,a=[];if(!o.length)this.opacity!==0&&(r={opacity:0});else{let l=je[n.position].call(this,o,this._eventPosition);a=this._createItems(n),this.title=this.getTitle(a,n),this.beforeBody=this.getBeforeBody(a,n),this.body=this.getBody(a,n),this.afterBody=this.getAfterBody(a,n),this.footer=this.getFooter(a,n);let c=this._size=ir(this,n),h=Object.assign({},l,c),f=sr(this.chart,n,h),d=nr(n,h,f,this.chart);this.xAlign=f.xAlign,this.yAlign=f.yAlign,r={opacity:1,x:d.x,y:d.y,width:c.width,height:c.height,caretX:l.x,caretY:l.y}}this._tooltipItems=a,this.$context=void 0,r&&this._resolveAnimations().update(this,r),t&&n.external&&n.external.call(this,{chart:this.chart,tooltip:this,replay:s})}drawCaret(t,s,n,o){let r=this.getCaretPosition(t,n,o);s.lineTo(r.x1,r.y1),s.lineTo(r.x2,r.y2),s.lineTo(r.x3,r.y3)}getCaretPosition(t,s,n){let{xAlign:o,yAlign:r}=this,{caretSize:a,cornerRadius:l}=n,{topLeft:c,topRight:h,bottomLeft:f,bottomRight:d}=Dt(l),{x:u,y:p}=t,{width:g,height:m}=s,b,x,y,M,_,v;return r==="center"?(_=p+m/2,o==="left"?(b=u,x=b-a,M=_+a,v=_-a):(b=u+g,x=b+a,M=_-a,v=_+a),y=b):(o==="left"?x=u+Math.max(c,f)+a:o==="right"?x=u+g-Math.max(h,d)-a:x=this.caretX,r==="top"?(M=p,_=M-a,b=x-a,y=x+a):(M=p+m,_=M+a,b=x+a,y=x-a),v=M),{x1:b,x2:x,x3:y,y1:M,y2:_,y3:v}}drawTitle(t,s,n){let o=this.title,r=o.length,a,l,c;if(r){let h=Ut(n.rtl,this.x,this.width);for(t.x=Pi(this,n.titleAlign,n),s.textAlign=h.textAlign(n.titleAlign),s.textBaseline="middle",a=$(n.titleFont),l=n.titleSpacing,s.fillStyle=n.titleColor,s.font=a.string,c=0;cy!==0)?(t.beginPath(),t.fillStyle=r.multiKeyBackground,re(t,{x:m,y:g,w:h,h:c,radius:x}),t.fill(),t.stroke(),t.fillStyle=a.backgroundColor,t.beginPath(),re(t,{x:b,y:g+1,w:h-2,h:c-2,radius:x}),t.fill()):(t.fillStyle=r.multiKeyBackground,t.fillRect(m,g,h,c),t.strokeRect(m,g,h,c),t.fillStyle=a.backgroundColor,t.fillRect(b,g+1,h-2,c-2))}t.fillStyle=this.labelTextColors[n]}drawBody(t,s,n){let{body:o}=this,{bodySpacing:r,bodyAlign:a,displayColors:l,boxHeight:c,boxWidth:h,boxPadding:f}=n,d=$(n.bodyFont),u=d.lineHeight,p=0,g=Ut(n.rtl,this.x,this.width),m=function(k){s.fillText(k,g.x(t.x+p),t.y+u/2),t.y+=u+r},b=g.textAlign(a),x,y,M,_,v,S,w;for(s.textAlign=a,s.textBaseline="middle",s.font=d.string,t.x=Pi(this,b,n),s.fillStyle=n.bodyColor,L(this.beforeBody,m),p=l&&b!=="right"?a==="center"?h/2+f:h+2+f:0,_=0,S=o.length;_0&&s.stroke()}_updateAnimationTarget(t){let s=this.chart,n=this.$animations,o=n&&n.x,r=n&&n.y;if(o||r){let a=je[t.position].call(this,this._active,this._eventPosition);if(!a)return;let l=this._size=ir(this,t),c=Object.assign({},a,this._size),h=sr(s,t,c),f=nr(t,c,h,s);(o._to!==f.x||r._to!==f.y)&&(this.xAlign=h.xAlign,this.yAlign=h.yAlign,this.width=l.width,this.height=l.height,this.caretX=a.x,this.caretY=a.y,this._resolveAnimations().update(this,f))}}_willRender(){return!!this.opacity}draw(t){let s=this.options.setContext(this.getContext()),n=this.opacity;if(!n)return;this._updateAnimationTarget(s);let o={width:this.width,height:this.height},r={x:this.x,y:this.y};n=Math.abs(n)<.001?0:n;let a=K(s.padding),l=this.title.length||this.beforeBody.length||this.body.length||this.afterBody.length||this.footer.length;s.enabled&&l&&(t.save(),t.globalAlpha=n,this.drawBackground(r,t,o,s),Ds(t,s.textDirection),r.y+=a.top,this.drawTitle(r,t,s),this.drawBody(r,t,s),this.drawFooter(r,t,s),Ts(t,s.textDirection),t.restore())}getActiveElements(){return this._active||[]}setActiveElements(t,s){let n=this._active,o=t.map(({datasetIndex:l,index:c})=>{let h=this.chart.getDatasetMeta(l);if(!h)throw new Error("Cannot find a dataset at index "+l);return{datasetIndex:l,element:h.data[c],index:c}}),r=!Ae(n,o),a=this._positionChanged(o,s);(r||a)&&(this._active=o,this._eventPosition=s,this._ignoreReplayEvents=!0,this.update(!0))}handleEvent(t,s,n=!0){if(s&&this._ignoreReplayEvents)return!1;this._ignoreReplayEvents=!1;let o=this.options,r=this._active||[],a=this._getActiveElements(t,r,s,n),l=this._positionChanged(a,t),c=s||!Ae(a,r)||l;return c&&(this._active=a,(o.enabled||o.external)&&(this._eventPosition={x:t.x,y:t.y},this.update(!0,s))),c}_getActiveElements(t,s,n,o){let r=this.options;if(t.type==="mouseout")return[];if(!o)return s.filter(l=>this.chart.data.datasets[l.datasetIndex]&&this.chart.getDatasetMeta(l.datasetIndex).controller.getParsed(l.index)!==void 0);let a=this.chart.getElementsAtEventForMode(t,r.mode,r,n);return r.reverse&&a.reverse(),a}_positionChanged(t,s){let{caretX:n,caretY:o,options:r}=this,a=je[r.position].call(this,t,s);return a!==!1&&(n!==a.x||o!==a.y)}}return e})(),Sd={id:"tooltip",_element:ar,positioners:je,afterInit(e,i,t){t&&(e.tooltip=new ar({chart:e,options:t}))},beforeUpdate(e,i,t){e.tooltip&&e.tooltip.initialize(t)},reset(e,i,t){e.tooltip&&e.tooltip.initialize(t)},afterDraw(e){let i=e.tooltip;if(i&&i._willRender()){let t={tooltip:i};if(e.notifyPlugins("beforeTooltipDraw",Je(Ze({},t),{cancelable:!0}))===!1)return;i.draw(e.ctx),e.notifyPlugins("afterTooltipDraw",t)}},afterEvent(e,i){if(e.tooltip){let t=i.replay;e.tooltip.handleEvent(i.event,t,i.inChartArea)&&(i.changed=!0)}},defaults:{enabled:!0,external:null,position:"average",backgroundColor:"rgba(0,0,0,0.8)",titleColor:"#fff",titleFont:{weight:"bold"},titleSpacing:2,titleMarginBottom:6,titleAlign:"left",bodyColor:"#fff",bodySpacing:2,bodyFont:{},bodyAlign:"left",footerColor:"#fff",footerSpacing:2,footerMarginTop:6,footerFont:{weight:"bold"},footerAlign:"left",padding:6,caretPadding:2,caretSize:5,cornerRadius:6,boxHeight:(e,i)=>i.bodyFont.size,boxWidth:(e,i)=>i.bodyFont.size,multiKeyBackground:"#fff",displayColors:!0,boxPadding:0,borderColor:"rgba(0,0,0,0)",borderWidth:0,animation:{duration:400,easing:"easeOutQuart"},animations:{numbers:{type:"number",properties:["x","y","width","height","caretX","caretY"]},opacity:{easing:"linear",duration:200}},callbacks:zr},defaultRoutes:{bodyFont:"font",footerFont:"font",titleFont:"font"},descriptors:{_scriptable:e=>e!=="filter"&&e!=="itemSort"&&e!=="external",_indexable:!1,callbacks:{_scriptable:!1,_indexable:!1},animation:{_fallback:!1},animations:{_fallback:"animation"}},additionalOptionScopes:["interaction"]},kd=Object.freeze({__proto__:null,Colors:zf,Decimation:Wf,Filler:ad,Legend:ud,SubTitle:md,Title:gd,Tooltip:Sd}),Cd=(e,i,t,s)=>(typeof i=="string"?(t=e.push(i)-1,s.unshift({index:t,label:i})):isNaN(i)&&(t=null),t);function Pd(e,i,t,s){let n=e.indexOf(i);if(n===-1)return Cd(e,i,t,s);let o=e.lastIndexOf(i);return n!==o?t:n}var Od=(e,i)=>e===null?null:U(Math.round(e),0,i);function lr(e){let i=this.getLabels();return e>=0&&e{class e extends Kt{static id="category";static defaults={ticks:{callback:lr}};constructor(t){super(t),this._startValue=void 0,this._valueRange=0,this._addedLabels=[]}init(t){let s=this._addedLabels;if(s.length){let n=this.getLabels();for(let{index:o,label:r}of s)n[o]===r&&n.splice(o,1);this._addedLabels=[]}super.init(t)}parse(t,s){if(T(t))return null;let n=this.getLabels();return s=isFinite(s)&&n[s]===t?s:Pd(n,t,C(s,t),this._addedLabels),Od(s,n.length-1)}determineDataLimits(){let{minDefined:t,maxDefined:s}=this.getUserBounds(),{min:n,max:o}=this.getMinMax(!0);this.options.bounds==="ticks"&&(t||(n=0),s||(o=this.getLabels().length-1)),this.min=n,this.max=o}buildTicks(){let t=this.min,s=this.max,n=this.options.offset,o=[],r=this.getLabels();r=t===0&&s===r.length-1?r:r.slice(t,s+1),this._valueRange=Math.max(r.length-(n?0:1),1),this._startValue=this.min-(n?.5:0);for(let a=t;a<=s;a++)o.push({value:a});return o}getLabelForValue(t){return lr.call(this,t)}configure(){super.configure(),this.isHorizontal()||(this._reversePixels=!this._reversePixels)}getPixelForValue(t){return typeof t!="number"&&(t=this.parse(t)),t===null?NaN:this.getPixelForDecimal((t-this._startValue)/this._valueRange)}getPixelForTick(t){let s=this.ticks;return t<0||t>s.length-1?null:this.getPixelForValue(s[t].value)}getValueForPixel(t){return Math.round(this._startValue+this.getDecimalForPixel(t)*this._valueRange)}getBasePixel(){return this.bottom}}return e})();function Dd(e,i){let t=[],{bounds:n,step:o,min:r,max:a,precision:l,count:c,maxTicks:h,maxDigits:f,includeBounds:d}=e,u=o||1,p=h-1,{min:g,max:m}=i,b=!T(r),x=!T(a),y=!T(c),M=(m-g)/(f+1),_=cs((m-g)/p/u)*u,v,S,w,k;if(_<1e-14&&!b&&!x)return[{value:g},{value:m}];k=Math.ceil(m/_)-Math.floor(g/_),k>p&&(_=cs(k*_/p/u)*u),T(l)||(v=Math.pow(10,l),_=Math.ceil(_*v)/v),n==="ticks"?(S=Math.floor(g/_)*_,w=Math.ceil(m/_)*_):(S=g,w=m),b&&x&&o&&Yn((a-r)/o,_/1e3)?(k=Math.round(Math.min((a-r)/_,h)),_=(a-r)/k,S=r,w=a):y?(S=b?r:S,w=x?a:w,k=c-1,_=(w-S)/k):(k=(w-S)/_,se(k,Math.round(k),_/1e3)?k=Math.round(k):k=Math.ceil(k));let O=Math.max(fs(_),fs(S));v=Math.pow(10,T(l)?O:l),S=Math.round(S*v)/v,w=Math.round(w*v)/v;let P=0;for(b&&(d&&S!==r?(t.push({value:r}),Sa)break;t.push({value:D})}return x&&d&&w!==a?t.length&&se(t[t.length-1].value,a,cr(a,M,e))?t[t.length-1].value=a:t.push({value:a}):(!x||w===a)&&t.push({value:w}),t}function cr(e,i,{horizontal:t,minRotation:s}){let n=nt(s),o=(t?Math.sin(n):Math.cos(n))||.001,r=.75*i*(""+e).length;return Math.min(i/o,r)}var he=class extends Kt{constructor(i){super(i),this.start=void 0,this.end=void 0,this._startValue=void 0,this._endValue=void 0,this._valueRange=0}parse(i,t){return T(i)||(typeof i=="number"||i instanceof Number)&&!isFinite(+i)?null:+i}handleTickRangeOptions(){let{beginAtZero:i}=this.options,{minDefined:t,maxDefined:s}=this.getUserBounds(),{min:n,max:o}=this,r=l=>n=t?n:l,a=l=>o=s?o:l;if(i){let l=at(n),c=at(o);l<0&&c<0?a(0):l>0&&c>0&&r(0)}if(n===o){let l=o===0?1:Math.abs(o*.05);a(o+l),i||r(n-l)}this.min=n,this.max=o}getTickLimit(){let i=this.options.ticks,{maxTicksLimit:t,stepSize:s}=i,n;return s?(n=Math.ceil(this.max/s)-Math.floor(this.min/s)+1,n>1e3&&(console.warn(`scales.${this.id}.ticks.stepSize: ${s} would result generating up to ${n} ticks. Limiting to 1000.`),n=1e3)):(n=this.computeTickLimit(),t=t||11),t&&(n=Math.min(t,n)),n}computeTickLimit(){return Number.POSITIVE_INFINITY}buildTicks(){let i=this.options,t=i.ticks,s=this.getTickLimit();s=Math.max(2,s);let n={maxTicks:s,bounds:i.bounds,min:i.min,max:i.max,precision:t.precision,step:t.stepSize,count:t.count,maxDigits:this._maxDigits(),horizontal:this.isHorizontal(),minRotation:t.minRotation||0,includeBounds:t.includeBounds!==!1},o=this._range||this,r=Dd(n,o);return i.bounds==="ticks"&&hs(r,this,"value"),i.reverse?(r.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),r}configure(){let i=this.ticks,t=this.min,s=this.max;if(super.configure(),this.options.offset&&i.length){let n=(s-t)/Math.max(i.length-1,1)/2;t-=n,s+=n}this._startValue=t,this._endValue=s,this._valueRange=s-t}getLabelForValue(i){return oe(i,this.chart.options.locale,this.options.ticks.format)}},on=class extends he{static id="linear";static defaults={ticks:{callback:De.formatters.numeric}};determineDataLimits(){let{min:i,max:t}=this.getMinMax(!0);this.min=W(i)?i:0,this.max=W(t)?t:1,this.handleTickRangeOptions()}computeTickLimit(){let i=this.isHorizontal(),t=i?this.width:this.height,s=nt(this.options.ticks.minRotation),n=(i?Math.sin(s):Math.cos(s))||.001,o=this._resolveTickFontOptions(0);return Math.ceil(t/Math.min(40,o.lineHeight/n))}getPixelForValue(i){return i===null?NaN:this.getPixelForDecimal((i-this._startValue)/this._valueRange)}getValueForPixel(i){return this._startValue+this.getDecimalForPixel(i)*this._valueRange}},Ve=e=>Math.floor(bt(e)),Xt=(e,i)=>Math.pow(10,Ve(e)+i);function hr(e){return e/Math.pow(10,Ve(e))===1}function fr(e,i,t){let s=Math.pow(10,t),n=Math.floor(e/s);return Math.ceil(i/s)-n}function Td(e,i){let t=i-e,s=Ve(t);for(;fr(e,i,s)>10;)s++;for(;fr(e,i,s)<10;)s--;return Math.min(s,Ve(e))}function Ld(e,{min:i,max:t}){i=J(e.min,i);let s=[],n=Ve(i),o=Td(i,t),r=o<0?Math.pow(10,Math.abs(o)):1,a=Math.pow(10,o),l=n>o?Math.pow(10,n):0,c=Math.round((i-l)*r)/r,h=Math.floor((i-l)/a/10)*a*10,f=Math.floor((c-h)/Math.pow(10,o)),d=J(e.min,Math.round((l+h+f*Math.pow(10,o))*r)/r);for(;d=10?f=f<15?15:20:f++,f>=20&&(o++,f=2,r=o>=0?1:r),d=Math.round((l+h+f*Math.pow(10,o))*r)/r;let u=J(e.max,d);return s.push({value:u,major:hr(u),significand:f}),s}var rn=class extends Kt{static id="logarithmic";static defaults={ticks:{callback:De.formatters.logarithmic,major:{enabled:!0}}};constructor(i){super(i),this.start=void 0,this.end=void 0,this._startValue=void 0,this._valueRange=0}parse(i,t){let s=he.prototype.parse.apply(this,[i,t]);if(s===0){this._zero=!0;return}return W(s)&&s>0?s:null}determineDataLimits(){let{min:i,max:t}=this.getMinMax(!0);this.min=W(i)?Math.max(0,i):null,this.max=W(t)?Math.max(0,t):null,this.options.beginAtZero&&(this._zero=!0),this._zero&&this.min!==this._suggestedMin&&!W(this._userMin)&&(this.min=i===Xt(this.min,0)?Xt(this.min,-1):Xt(this.min,0)),this.handleTickRangeOptions()}handleTickRangeOptions(){let{minDefined:i,maxDefined:t}=this.getUserBounds(),s=this.min,n=this.max,o=a=>s=i?s:a,r=a=>n=t?n:a;s===n&&(s<=0?(o(1),r(10)):(o(Xt(s,-1)),r(Xt(n,1)))),s<=0&&o(Xt(n,-1)),n<=0&&r(Xt(s,1)),this.min=s,this.max=n}buildTicks(){let i=this.options,t={min:this._userMin,max:this._userMax},s=Ld(t,this);return i.bounds==="ticks"&&hs(s,this,"value"),i.reverse?(s.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),s}getLabelForValue(i){return i===void 0?"0":oe(i,this.chart.options.locale,this.options.ticks.format)}configure(){let i=this.min;super.configure(),this._startValue=bt(i),this._valueRange=bt(this.max)-bt(i)}getPixelForValue(i){return(i===void 0||i===0)&&(i=this.min),i===null||isNaN(i)?NaN:this.getPixelForDecimal(i===this.min?0:(bt(i)-this._startValue)/this._valueRange)}getValueForPixel(i){let t=this.getDecimalForPixel(i);return Math.pow(10,this._startValue+t*this._valueRange)}};function an(e){let i=e.ticks;if(i.display&&e.display){let t=K(i.backdropPadding);return C(i.font&&i.font.size,B.font.size)+t.height}return 0}function Rd(e,i,t){return t=E(t)?t:[t],{w:eo(e,i.string,t),h:t.length*i.lineHeight}}function dr(e,i,t,s,n){return e===s||e===n?{start:i-t/2,end:i+t/2}:en?{start:i-t,end:i}:{start:i,end:i+t}}function Id(e){let i={l:e.left+e._padding.left,r:e.right-e._padding.right,t:e.top+e._padding.top,b:e.bottom-e._padding.bottom},t=Object.assign({},i),s=[],n=[],o=e._pointLabels.length,r=e.options.pointLabels,a=r.centerPointLabels?F/o:0;for(let l=0;li.r&&(a=(s.end-i.r)/o,e.r=Math.max(e.r,i.r+a)),n.starti.b&&(l=(n.end-i.b)/r,e.b=Math.max(e.b,i.b+l))}function Fd(e,i,t){let s=e.drawingArea,{extra:n,additionalAngle:o,padding:r,size:a}=t,l=e.getPointPosition(i,s+n+r,o),c=Math.round(di(Z(l.angle+V))),h=Wd(l.y,a.h,c),f=jd(c),d=Nd(l.x,a.w,f);return{visible:!0,x:l.x,y:h,textAlign:f,left:d,top:h,right:d+a.w,bottom:h+a.h}}function zd(e,i){if(!i)return!0;let{left:t,top:s,right:n,bottom:o}=e;return!(ht({x:t,y:s},i)||ht({x:t,y:o},i)||ht({x:n,y:s},i)||ht({x:n,y:o},i))}function Bd(e,i,t){let s=[],n=e._pointLabels.length,o=e.options,{centerPointLabels:r,display:a}=o.pointLabels,l={extra:an(o)/2,additionalAngle:r?F/n:0},c;for(let h=0;h270||t<90)&&(e-=i),e}function Vd(e,i,t){let{left:s,top:n,right:o,bottom:r}=t,{backdropColor:a}=i;if(!T(a)){let l=Dt(i.borderRadius),c=K(i.backdropPadding);e.fillStyle=a;let h=s-c.left,f=n-c.top,d=o-s+c.width,u=r-n+c.height;Object.values(l).some(p=>p!==0)?(e.beginPath(),re(e,{x:h,y:f,w:d,h:u,radius:l}),e.fill()):e.fillRect(h,f,d,u)}}function Hd(e,i){let{ctx:t,options:{pointLabels:s}}=e;for(let n=i-1;n>=0;n--){let o=e._pointLabelItems[n];if(!o.visible)continue;let r=s.setContext(e.getPointLabelContext(n));Vd(t,r,o);let a=$(r.font),{x:l,y:c,textAlign:h}=o;At(t,e._pointLabels[n],l,c+a.lineHeight/2,a,{color:r.color,textAlign:h,textBaseline:"middle"})}}function Br(e,i,t,s){let{ctx:n}=e;if(t)n.arc(e.xCenter,e.yCenter,i,0,z);else{let o=e.getPointPosition(0,i);n.moveTo(o.x,o.y);for(let r=1;r{let n=I(this.options.pointLabels.callback,[t,s],this);return n||n===0?n:""}).filter((t,s)=>this.chart.getDataVisibility(s))}fit(){let i=this.options;i.display&&i.pointLabels.display?Id(this):this.setCenterPoint(0,0,0,0)}setCenterPoint(i,t,s,n){this.xCenter+=Math.floor((i-t)/2),this.yCenter+=Math.floor((s-n)/2),this.drawingArea-=Math.min(this.drawingArea/2,Math.max(i,t,s,n))}getIndexAngle(i){let t=z/(this._pointLabels.length||1),s=this.options.startAngle||0;return Z(i*t+nt(s))}getDistanceFromCenterForValue(i){if(T(i))return NaN;let t=this.drawingArea/(this.max-this.min);return this.options.reverse?(this.max-i)*t:(i-this.min)*t}getValueForDistanceFromCenter(i){if(T(i))return NaN;let t=i/(this.drawingArea/(this.max-this.min));return this.options.reverse?this.max-t:this.min+t}getPointLabelContext(i){let t=this._pointLabels||[];if(i>=0&&i{if(f!==0||f===0&&this.min<0){l=this.getDistanceFromCenterForValue(h.value);let d=this.getContext(f),u=n.setContext(d),p=o.setContext(d);$d(this,u,l,r,p)}}),s.display){for(i.save(),a=r-1;a>=0;a--){let h=s.setContext(this.getPointLabelContext(a)),{color:f,lineWidth:d}=h;!d||!f||(i.lineWidth=d,i.strokeStyle=f,i.setLineDash(h.borderDash),i.lineDashOffset=h.borderDashOffset,l=this.getDistanceFromCenterForValue(t.reverse?this.min:this.max),c=this.getPointPosition(a,l),i.beginPath(),i.moveTo(this.xCenter,this.yCenter),i.lineTo(c.x,c.y),i.stroke())}i.restore()}}drawBorder(){}drawLabels(){let i=this.ctx,t=this.options,s=t.ticks;if(!s.display)return;let n=this.getIndexAngle(0),o,r;i.save(),i.translate(this.xCenter,this.yCenter),i.rotate(n),i.textAlign="center",i.textBaseline="middle",this.ticks.forEach((a,l)=>{if(l===0&&this.min>=0&&!t.reverse)return;let c=s.setContext(this.getContext(l)),h=$(c.font);if(o=this.getDistanceFromCenterForValue(this.ticks[l].value),c.showLabelBackdrop){i.font=h.string,r=i.measureText(a.label).width,i.fillStyle=c.backdropColor;let f=K(c.backdropPadding);i.fillRect(-r/2-f.left,-o-h.size/2-f.top,r+f.width,h.size+f.height)}At(i,a.label,0,-o,h,{color:c.color,strokeColor:c.textStrokeColor,strokeWidth:c.textStrokeWidth})}),i.restore()}drawTitle(){}},ji={millisecond:{common:!0,size:1,steps:1e3},second:{common:!0,size:1e3,steps:60},minute:{common:!0,size:6e4,steps:60},hour:{common:!0,size:36e5,steps:24},day:{common:!0,size:864e5,steps:30},week:{common:!1,size:6048e5,steps:4},month:{common:!0,size:2628e6,steps:12},quarter:{common:!1,size:7884e6,steps:4},year:{common:!0,size:3154e7}},tt=Object.keys(ji);function ur(e,i){return e-i}function pr(e,i){if(T(i))return null;let t=e._adapter,{parser:s,round:n,isoWeekday:o}=e._parseOpts,r=i;return typeof s=="function"&&(r=s(r)),W(r)||(r=typeof s=="string"?t.parse(r,s):t.parse(r)),r===null?null:(n&&(r=n==="week"&&($t(o)||o===!0)?t.startOf(r,"isoWeek",o):t.startOf(r,n)),+r)}function gr(e,i,t,s){let n=tt.length;for(let o=tt.indexOf(e);o=tt.indexOf(t);o--){let r=tt[o];if(ji[r].common&&e._adapter.diff(n,s,r)>=i-1)return r}return tt[t?tt.indexOf(t):0]}function Xd(e){for(let i=tt.indexOf(e)+1,t=tt.length;i=i?t[s]:t[n];e[o]=!0}}function Kd(e,i,t,s){let n=e._adapter,o=+n.startOf(i[0].value,s),r=i[i.length-1].value,a,l;for(a=o;a<=r;a=+n.add(a,1,s))l=t[a],l>=0&&(i[l].major=!0);return i}function xr(e,i,t){let s=[],n={},o=i.length,r,a;for(r=0;r{class e extends Kt{static id="time";static defaults={bounds:"data",adapters:{},time:{parser:!1,unit:!1,round:!1,isoWeekday:!1,minUnit:"millisecond",displayFormats:{}},ticks:{source:"auto",callback:!1,major:{enabled:!1}}};constructor(t){super(t),this._cache={data:[],labels:[],all:[]},this._unit="day",this._majorUnit=void 0,this._offsets={},this._normalized=!1,this._parseOpts=void 0}init(t,s={}){let n=t.time||(t.time={}),o=this._adapter=new oh._date(t.adapters.date);o.init(s),ee(n.displayFormats,o.formats()),this._parseOpts={parser:n.parser,round:n.round,isoWeekday:n.isoWeekday},super.init(t),this._normalized=s.normalized}parse(t,s){return t===void 0?null:pr(this,t)}beforeLayout(){super.beforeLayout(),this._cache={data:[],labels:[],all:[]}}determineDataLimits(){let t=this.options,s=this._adapter,n=t.time.unit||"day",{min:o,max:r,minDefined:a,maxDefined:l}=this.getUserBounds();function c(h){!a&&!isNaN(h.min)&&(o=Math.min(o,h.min)),!l&&!isNaN(h.max)&&(r=Math.max(r,h.max))}(!a||!l)&&(c(this._getLabelBounds()),(t.bounds!=="ticks"||t.ticks.source!=="labels")&&c(this.getMinMax(!1))),o=W(o)&&!isNaN(o)?o:+s.startOf(Date.now(),n),r=W(r)&&!isNaN(r)?r:+s.endOf(Date.now(),n)+1,this.min=Math.min(o,r-1),this.max=Math.max(o+1,r)}_getLabelBounds(){let t=this.getLabelTimestamps(),s=Number.POSITIVE_INFINITY,n=Number.NEGATIVE_INFINITY;return t.length&&(s=t[0],n=t[t.length-1]),{min:s,max:n}}buildTicks(){let t=this.options,s=t.time,n=t.ticks,o=n.source==="labels"?this.getLabelTimestamps():this._generate();t.bounds==="ticks"&&o.length&&(this.min=this._userMin||o[0],this.max=this._userMax||o[o.length-1]);let r=this.min,a=this.max,l=qn(o,r,a);return this._unit=s.unit||(n.autoSkip?gr(s.minUnit,this.min,this.max,this._getLabelCapacity(r)):Yd(this,l.length,s.minUnit,this.min,this.max)),this._majorUnit=!n.major.enabled||this._unit==="year"?void 0:Xd(this._unit),this.initOffsets(o),t.reverse&&l.reverse(),xr(this,l,this._majorUnit)}afterAutoSkip(){this.options.offsetAfterAutoskip&&this.initOffsets(this.ticks.map(t=>+t.value))}initOffsets(t=[]){let s=0,n=0,o,r;this.options.offset&&t.length&&(o=this.getDecimalForValue(t[0]),t.length===1?s=1-o:s=(this.getDecimalForValue(t[1])-o)/2,r=this.getDecimalForValue(t[t.length-1]),t.length===1?n=r:n=(r-this.getDecimalForValue(t[t.length-2]))/2);let a=t.length<3?.5:.25;s=U(s,0,a),n=U(n,0,a),this._offsets={start:s,end:n,factor:1/(s+1+n)}}_generate(){let t=this._adapter,s=this.min,n=this.max,o=this.options,r=o.time,a=r.unit||gr(r.minUnit,s,n,this._getLabelCapacity(s)),l=C(o.ticks.stepSize,1),c=a==="week"?r.isoWeekday:!1,h=$t(c)||c===!0,f={},d=s,u,p;if(h&&(d=+t.startOf(d,"isoWeek",c)),d=+t.startOf(d,h?"day":a),t.diff(n,s,a)>1e5*l)throw new Error(s+" and "+n+" are too far apart with stepSize of "+l+" "+a);let g=o.ticks.source==="data"&&this.getDataTimestamps();for(u=d,p=0;u+m)}getLabelForValue(t){let s=this._adapter,n=this.options.time;return n.tooltipFormat?s.format(t,n.tooltipFormat):s.format(t,n.displayFormats.datetime)}format(t,s){let o=this.options.time.displayFormats,r=this._unit,a=s||o[r];return this._adapter.format(t,a)}_tickFormatFunction(t,s,n,o){let r=this.options,a=r.ticks.callback;if(a)return I(a,[t,s,n],this);let l=r.time.displayFormats,c=this._unit,h=this._majorUnit,f=c&&l[c],d=h&&l[h],u=n[s],p=h&&d&&u&&u.major;return this._adapter.format(t,o||(p?d:f))}generateTickLabels(t){let s,n,o;for(s=0,n=t.length;s0?l:1}getDataTimestamps(){let t=this._cache.data||[],s,n;if(t.length)return t;let o=this.getMatchingVisibleMetas();if(this._normalized&&o.length)return this._cache.data=o[0].controller.getAllParsedValues(this);for(s=0,n=o.length;s=e[s].pos&&i<=e[n].pos&&({lo:s,hi:n}=ct(e,"pos",i)),{pos:o,time:a}=e[s],{pos:r,time:l}=e[n]):(i>=e[s].time&&i<=e[n].time&&({lo:s,hi:n}=ct(e,"time",i)),{time:o,pos:a}=e[s],{time:r,pos:l}=e[n]);let c=r-o;return c?a+(l-a)*(i-o)/c:a}var hn=class extends cn{static id="timeseries";static defaults=cn.defaults;constructor(i){super(i),this._table=[],this._minPos=void 0,this._tableRange=void 0}initOffsets(){let i=this._getTimestampsForTable(),t=this._table=this.buildLookupTable(i);this._minPos=Oi(t,this.min),this._tableRange=Oi(t,this.max)-this._minPos,super.initOffsets(i)}buildLookupTable(i){let{min:t,max:s}=this,n=[],o=[],r,a,l,c,h;for(r=0,a=i.length;r=t&&c<=s&&n.push(c);if(n.length<2)return[{time:t,pos:0},{time:s,pos:1}];for(r=0,a=n.length;rn-o)}_getTimestampsForTable(){let i=this._cache.all||[];if(i.length)return i;let t=this.getDataTimestamps(),s=this.getLabelTimestamps();return t.length&&s.length?i=this.normalize(t.concat(s)):i=t.length?t:s,i=this._cache.all=i,i}getDecimalForValue(i){return(Oi(this._table,i)-this._minPos)/this._tableRange}getValueForPixel(i){let t=this._offsets,s=this.getDecimalForPixel(i)/t.factor-t.end;return Oi(this._table,s*this._tableRange+this._minPos,!0)}},qd=Object.freeze({__proto__:null,CategoryScale:Ad,LinearScale:on,LogarithmicScale:rn,RadialLinearScale:ln,TimeScale:cn,TimeSeriesScale:hn}),jr=[nh,Tf,kd,qd];var Gd=typeof global=="object"&&global&&global.Object===Object&&global,Ni=Gd;var Zd=typeof self=="object"&&self&&self.Object===Object&&self,Jd=Ni||Zd||Function("return this")(),ot=Jd;var Qd=ot.Symbol,fe=Qd;var Nr=Object.prototype,tu=Nr.hasOwnProperty,eu=Nr.toString,$e=fe?fe.toStringTag:void 0;function iu(e){var i=tu.call(e,$e),t=e[$e];try{e[$e]=void 0;var s=!0}catch{}var n=eu.call(e);return s&&(i?e[$e]=t:delete e[$e]),n}var Wr=iu;var su=Object.prototype,nu=su.toString;function ou(e){return nu.call(e)}var Vr=ou;var ru="[object Null]",au="[object Undefined]",Hr=fe?fe.toStringTag:void 0;function lu(e){return e==null?e===void 0?au:ru:Hr&&Hr in Object(e)?Wr(e):Vr(e)}var It=lu;function cu(e){return e!=null&&typeof e=="object"}var gt=cu;var hu=Array.isArray,Ue=hu;function fu(e){var i=typeof e;return e!=null&&(i=="object"||i=="function")}var et=fu;function du(e){return e}var Wi=du;var uu="[object AsyncFunction]",pu="[object Function]",gu="[object GeneratorFunction]",mu="[object Proxy]";function xu(e){if(!et(e))return!1;var i=It(e);return i==pu||i==gu||i==uu||i==mu}var de=xu;var bu=ot["__core-js_shared__"],Vi=bu;var $r=function(){var e=/[^.]+$/.exec(Vi&&Vi.keys&&Vi.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();function _u(e){return!!$r&&$r in e}var Ur=_u;var yu=Function.prototype,vu=yu.toString;function Mu(e){if(e!=null){try{return vu.call(e)}catch{}try{return e+""}catch{}}return""}var Yr=Mu;var wu=/[\\^$.*+?()[\]{}|]/g,Su=/^\[object .+?Constructor\]$/,ku=Function.prototype,Cu=Object.prototype,Pu=ku.toString,Ou=Cu.hasOwnProperty,Au=RegExp("^"+Pu.call(Ou).replace(wu,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function Du(e){if(!et(e)||Ur(e))return!1;var i=de(e)?Au:Su;return i.test(Yr(e))}var Xr=Du;function Tu(e,i){return e?.[i]}var Kr=Tu;function Lu(e,i){var t=Kr(e,i);return Xr(t)?t:void 0}var ue=Lu;var qr=Object.create,Ru=function(){function e(){}return function(i){if(!et(i))return{};if(qr)return qr(i);e.prototype=i;var t=new e;return e.prototype=void 0,t}}(),Gr=Ru;function Iu(e,i,t){switch(t.length){case 0:return e.call(i);case 1:return e.call(i,t[0]);case 2:return e.call(i,t[0],t[1]);case 3:return e.call(i,t[0],t[1],t[2])}return e.apply(i,t)}var Zr=Iu;function Eu(e,i){var t=-1,s=e.length;for(i||(i=Array(s));++t0){if(++i>=Fu)return arguments[0]}else i=0;return e.apply(void 0,arguments)}}var Qr=ju;function Nu(e){return function(){return e}}var ta=Nu;var Wu=function(){try{var e=ue(Object,"defineProperty");return e({},"",{}),e}catch{}}(),pe=Wu;var Vu=pe?function(e,i){return pe(e,"toString",{configurable:!0,enumerable:!1,value:ta(i),writable:!0})}:Wi,ea=Vu;var Hu=Qr(ea),ia=Hu;var $u=9007199254740991,Uu=/^(?:0|[1-9]\d*)$/;function Yu(e,i){var t=typeof e;return i=i??$u,!!i&&(t=="number"||t!="symbol"&&Uu.test(e))&&e>-1&&e%1==0&&e-1&&e%1==0&&e<=ep}var $i=ip;function sp(e){return e!=null&&$i(e.length)&&!de(e)}var me=sp;function np(e,i,t){if(!et(t))return!1;var s=typeof i;return(s=="number"?me(t)&&Hi(i,t.length):s=="string"&&i in t)?Et(t[i],e):!1}var la=np;function op(e){return aa(function(i,t){var s=-1,n=t.length,o=n>1?t[n-1]:void 0,r=n>2?t[2]:void 0;for(o=e.length>3&&typeof o=="function"?(n--,o):void 0,r&&la(t[0],t[1],r)&&(o=n<3?void 0:o,n=1),i=Object(i);++s-1}var La=yg;function vg(e,i){var t=this.__data__,s=Ft(t,e);return s<0?(++this.size,t.push([e,i])):t[s][1]=i,this}var Ra=vg;function be(e){var i=-1,t=e==null?0:e.length;for(this.clear();++i{class e{constructor(){this.colorschemesOptions=new Qe(void 0)}setColorschemesOptions(t){this.pColorschemesOptions=t,this.colorschemesOptions.next(t)}getColorschemesOptions(){return this.pColorschemesOptions}static{this.\u0275fac=function(s){return new(s||e)}}static{this.\u0275prov=ti({token:e,factory:e.\u0275fac,providedIn:"root"})}}return e})(),r0=(()=>{class e{constructor(t,s,n,o){this.zone=s,this.themeService=n,this.type="bar",this.plugins=[],this.chartClick=new Ji,this.chartHover=new Ji,this.subs=[],this.themeOverrides={},o?.registerables&&zi.register(...o.registerables),o?.defaults&&B.set(o.defaults),this.ctx=t.nativeElement.getContext("2d"),this.subs.push(this.themeService.colorschemesOptions.pipe(bn()).subscribe(r=>this.themeChanged(r)))}ngOnChanges(t){let s=["type"],n=Object.getOwnPropertyNames(t);if(n.some(o=>s.includes(o))||n.every(o=>t[o].isFirstChange()))this.render();else{let o=this.getChartConfiguration();this.chart&&(Object.assign(this.chart.config.data,o.data),this.chart.config.plugins&&Object.assign(this.chart.config.plugins,o.plugins),this.chart.config.options&&Object.assign(this.chart.config.options,o.options)),this.update()}}ngOnDestroy(){this.chart&&(this.chart.destroy(),this.chart=void 0),this.subs.forEach(t=>t.unsubscribe())}render(){return this.chart&&this.chart.destroy(),this.zone.runOutsideAngular(()=>this.chart=new zi(this.ctx,this.getChartConfiguration()))}update(t){this.chart&&this.zone.runOutsideAngular(()=>this.chart?.update(t))}hideDataset(t,s){this.chart&&(this.chart.getDatasetMeta(t).hidden=s,this.update())}isDatasetHidden(t){return this.chart?.getDatasetMeta(t)?.hidden}toBase64Image(){return this.chart?.toBase64Image()}themeChanged(t){this.themeOverrides=t,this.chart&&(this.chart.config.options&&Object.assign(this.chart.config.options,this.getChartOptions()),this.update())}getChartOptions(){return Zi({onHover:(t,s)=>{!this.chartHover.observed&&!this.chartHover.observers?.length||this.zone.run(()=>this.chartHover.emit({event:t,active:s}))},onClick:(t,s)=>{!this.chartClick.observed&&!this.chartClick.observers?.length||this.zone.run(()=>this.chartClick.emit({event:t,active:s}))}},this.themeOverrides,this.options,{plugins:{legend:{display:this.legend}}})}getChartConfiguration(){return{type:this.type,data:this.getChartData(),options:this.getChartOptions(),plugins:this.plugins}}getChartData(){return this.data?this.data:{labels:this.labels||[],datasets:this.datasets||[]}}static{this.\u0275fac=function(s){return new(s||e)(we(wn),we(Mn),we(nm),we(hl,8))}}static{this.\u0275dir=yn({type:e,selectors:[["canvas","baseChart",""]],inputs:{type:"type",legend:"legend",data:"data",options:"options",plugins:"plugins",labels:"labels",datasets:"datasets"},outputs:{chartClick:"chartClick",chartHover:"chartHover"},exportAs:["base-chart"],standalone:!0,features:[vn]})}}return e})();var om=["primary","secondary","tertiary","neutral","neutral-variant","error","caution","success"],rm=[20,40,50,60,80],l0=["background","foreground",...om.flatMap(e=>rm.map(i=>`${e}-${i}`))],fl={type:"light",colors:{}};var d0=(()=>{class e{constructor(){this.infoSubject=new Qe(fl),this.info$=this.infoSubject.asObservable()}get info(){return this.infoSubject.getValue()}get colors(){return this.info.colors}get type(){return this.info.type}get isDark(){return this.type==="dark"}setInfo(t){this.infoSubject.next(t)}static{this.\u0275fac=function(s){return new(s||e)}}static{this.\u0275prov=ti({token:e,factory:e.\u0275fac,providedIn:"root"})}}return e})();export{n0 as a,o0 as b,r0 as c,l0 as d,d0 as e}; diff --git a/webui/dist/bitmagnet/browser/chunk-DKVITRV6.js b/webui/dist/bitmagnet/browser/chunk-DKVITRV6.js new file mode 100644 index 0000000..dff5661 --- /dev/null +++ b/webui/dist/bitmagnet/browser/chunk-DKVITRV6.js @@ -0,0 +1 @@ +import{a as Q}from"./chunk-KUHKEGBL.js";import{L as H,M as j,Ua as K,a as N,b as A,n as $,qa as q,r as D,ya as G,za as J}from"./chunk-4NEHCUZ2.js";import{$b as o,$c as B,Cb as x,Ea as m,Fa as _,Hb as c,Jc as C,Mb as P,Na as T,Nb as L,Ob as w,Pb as z,Qb as a,Rb as p,Tb as M,Ub as E,Wb as b,Zb as u,kb as s,kc as l,mc as f,pc as V,qa as v,rc as k,sc as F,tc as O,ua as S,uc as d,vc as h,xa as y,zb as I}from"./chunk-3DR3CJRN.js";var U=(t,r,i)=>({x:t,y:r,z:i}),W=(t,r)=>({x:t,y:r}),X=t=>[null,t];function Y(t,r){if(t&1&&(a(0,"mat-option",4),l(1),p()),t&2){let i=r.$implicit;c("value",i),s(),f(" ",i," ")}}function Z(t,r){if(t&1&&(l(0),d(1,"number"),d(2,"number"),d(3,"number")),t&2){let i=o().$implicit,e=o();f(" ",i("paginator.x_to_y_of_z",O(7,U,h(1,1,e.firstItemIndex),h(2,3,e.lastItemIndex),h(3,5,e.totalLength)))," ")}}function tt(t,r){if(t&1&&(l(0),d(1,"number"),d(2,"number")),t&2){let i=o().$implicit,e=o();f(" ",i("paginator.x_to_y",F(5,W,h(1,1,e.firstItemIndex),h(2,3,e.lastItemIndex)))," ")}}function et(t,r){if(t&1){let i=b();a(0,"button",7),u("click",function(){let n;m(i);let g=o(2);return g.page=(n=g.pageCount)!==null&&n!==void 0?n:1,_(g.emitChange())}),a(1,"mat-icon"),l(2,"last_page"),p()()}if(t&2){let i=o().$implicit,e=o();c("disabled",k(2,X,e.page).includes(e.pageCount))("matTooltip",i("paginator.last_page"))}}function it(t,r){if(t&1){let i=b();M(0),a(1,"div",1)(2,"mat-form-field",2)(3,"mat-label"),l(4,"Items per page"),p(),a(5,"mat-select",3),u("valueChange",function(n){m(i);let g=o();return g.pageSize=n,g.page=1,_(g.emitChange())}),w(6,Y,2,2,"mat-option",4,L),p()(),a(8,"p",5),x(9,Z,4,11)(10,tt,3,8),p(),a(11,"div",6)(12,"button",7),u("click",function(){m(i);let n=o();return n.page=1,_(n.emitChange())}),a(13,"mat-icon"),l(14,"first_page"),p()(),a(15,"button",7),u("click",function(){m(i);let n=o();return n.page=n.page-1,_(n.emitChange())}),a(16,"mat-icon"),l(17,"navigate_before"),p()(),a(18,"button",7),u("click",function(){m(i);let n=o();return n.page=n.page+1,_(n.emitChange())}),a(19,"mat-icon"),l(20,"navigate_next"),p()(),x(21,et,3,4,"button",8),p()(),E()}if(t&2){let i=r.$implicit,e=o();s(5),c("value",e.pageSize),s(),z(e.pageSizes),s(3),P(e.hasTotalLength?9:10),s(3),c("disabled",!e.hasPreviousPage)("matTooltip",i("paginator.first_page")),s(3),c("disabled",!e.hasPreviousPage)("matTooltip",i("paginator.previous_page")),s(3),c("disabled",!e.actuallyHasNextPage)("matTooltip",i("paginator.next_page")),s(3),P(e.showLastPage?21:-1)}}var ht=(()=>{class t{constructor(){this.page=1,this.pageSize=10,this.pageSizes=[10,20,50,100],this.pageLength=0,this.totalLength=null,this.totalIsEstimate=!1,this.hasNextPage=null,this.showLastPage=!1,this.paging=new T}get firstItemIndex(){return(this.page-1)*this.pageSize+1}get lastItemIndex(){return(this.page-1)*this.pageSize+this.pageLength}get hasTotalLength(){return typeof this.totalLength=="number"}get hasPreviousPage(){return this.page>1}get pageCount(){return typeof this.totalLength!="number"?null:Math.ceil(this.totalLength/this.pageSize)}get actuallyHasNextPage(){return typeof this.hasNextPage=="boolean"?this.hasNextPage:typeof this.totalLength!="number"?!1:this.page*this.pageSize *[_ngcontent-%COMP%]{display:inline-block;vertical-align:middle}.paginator[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{margin:0 20px}.paginator[_ngcontent-%COMP%] .field-items-per-page[_ngcontent-%COMP%]{width:140px}"]})}}return t})();var vt=(()=>{class t{constructor(){this.transloco=v(N)}transform(i){return Q(i,this.transloco.getActiveLang())}static{this.\u0275fac=function(e){return new(e||t)}}static{this.\u0275pipe=y({name:"timeAgo",type:t,pure:!1,standalone:!0})}}return t})();export{ht as a,vt as b}; diff --git a/webui/dist/bitmagnet/browser/chunk-E4ZH23H3.js b/webui/dist/bitmagnet/browser/chunk-E4ZH23H3.js new file mode 100644 index 0000000..dec5903 --- /dev/null +++ b/webui/dist/bitmagnet/browser/chunk-E4ZH23H3.js @@ -0,0 +1 @@ +import{a as E,b as B,f as pt,g as Ne,l as x,m as Me,n as he}from"./chunk-6XXA7HXI.js";import{a as le,c as dt,ia as S,ka as mt}from"./chunk-3DR3CJRN.js";function gt(n){return new S(3e3,!1)}function Wt(){return new S(3100,!1)}function Gt(){return new S(3101,!1)}function Ht(n){return new S(3001,!1)}function Yt(n){return new S(3003,!1)}function Xt(n){return new S(3004,!1)}function Zt(n,e){return new S(3005,!1)}function Jt(){return new S(3006,!1)}function xt(){return new S(3007,!1)}function es(n,e){return new S(3008,!1)}function ts(n){return new S(3002,!1)}function ss(n,e,t,s,i){return new S(3010,!1)}function is(){return new S(3011,!1)}function ns(){return new S(3012,!1)}function rs(){return new S(3200,!1)}function as(){return new S(3202,!1)}function os(){return new S(3013,!1)}function ls(n){return new S(3014,!1)}function hs(n){return new S(3015,!1)}function us(n){return new S(3016,!1)}function cs(n){return new S(3500,!1)}function fs(n){return new S(3501,!1)}function ds(n,e){return new S(3404,!1)}function ms(n){return new S(3502,!1)}function ps(n){return new S(3503,!1)}function gs(){return new S(3300,!1)}function ys(n){return new S(3504,!1)}function _s(n){return new S(3301,!1)}function Ss(n,e){return new S(3302,!1)}function Es(n){return new S(3303,!1)}function Ts(n,e){return new S(3400,!1)}function vs(n){return new S(3401,!1)}function ws(n){return new S(3402,!1)}function bs(n,e){return new S(3505,!1)}var As=new Set(["-moz-outline-radius","-moz-outline-radius-bottomleft","-moz-outline-radius-bottomright","-moz-outline-radius-topleft","-moz-outline-radius-topright","-ms-grid-columns","-ms-grid-rows","-webkit-line-clamp","-webkit-text-fill-color","-webkit-text-stroke","-webkit-text-stroke-color","accent-color","all","backdrop-filter","background","background-color","background-position","background-size","block-size","border","border-block-end","border-block-end-color","border-block-end-width","border-block-start","border-block-start-color","border-block-start-width","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-width","border-color","border-end-end-radius","border-end-start-radius","border-image-outset","border-image-slice","border-image-width","border-inline-end","border-inline-end-color","border-inline-end-width","border-inline-start","border-inline-start-color","border-inline-start-width","border-left","border-left-color","border-left-width","border-radius","border-right","border-right-color","border-right-width","border-start-end-radius","border-start-start-radius","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-width","border-width","bottom","box-shadow","caret-color","clip","clip-path","color","column-count","column-gap","column-rule","column-rule-color","column-rule-width","column-width","columns","filter","flex","flex-basis","flex-grow","flex-shrink","font","font-size","font-size-adjust","font-stretch","font-variation-settings","font-weight","gap","grid-column-gap","grid-gap","grid-row-gap","grid-template-columns","grid-template-rows","height","inline-size","input-security","inset","inset-block","inset-block-end","inset-block-start","inset-inline","inset-inline-end","inset-inline-start","left","letter-spacing","line-clamp","line-height","margin","margin-block-end","margin-block-start","margin-bottom","margin-inline-end","margin-inline-start","margin-left","margin-right","margin-top","mask","mask-border","mask-position","mask-size","max-block-size","max-height","max-inline-size","max-lines","max-width","min-block-size","min-height","min-inline-size","min-width","object-position","offset","offset-anchor","offset-distance","offset-path","offset-position","offset-rotate","opacity","order","outline","outline-color","outline-offset","outline-width","padding","padding-block-end","padding-block-start","padding-bottom","padding-inline-end","padding-inline-start","padding-left","padding-right","padding-top","perspective","perspective-origin","right","rotate","row-gap","scale","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-coordinate","scroll-snap-destination","scrollbar-color","shape-image-threshold","shape-margin","shape-outside","tab-size","text-decoration","text-decoration-color","text-decoration-thickness","text-emphasis","text-emphasis-color","text-indent","text-shadow","text-underline-offset","top","transform","transform-origin","translate","vertical-align","visibility","width","word-spacing","z-index","zoom"]);function U(n){switch(n.length){case 0:return new x;case 1:return n[0];default:return new Me(n)}}function Lt(n,e,t=new Map,s=new Map){let i=[],r=[],a=-1,o=null;if(e.forEach(l=>{let h=l.get("offset"),c=h==a,u=c&&o||new Map;l.forEach((_,y)=>{let d=y,g=_;if(y!=="offset")switch(d=n.normalizePropertyName(d,i),g){case he:g=t.get(y);break;case B:g=s.get(y);break;default:g=n.normalizeStyleValue(y,d,g,i);break}u.set(d,g)}),c||r.push(u),o=u,a=h}),i.length)throw ms(i);return r}function et(n,e,t,s){switch(e){case"start":n.onStart(()=>s(t&&Ce(t,"start",n)));break;case"done":n.onDone(()=>s(t&&Ce(t,"done",n)));break;case"destroy":n.onDestroy(()=>s(t&&Ce(t,"destroy",n)));break}}function Ce(n,e,t){let s=t.totalTime,i=!!t.disabled,r=tt(n.element,n.triggerName,n.fromState,n.toState,e||n.phaseName,s??n.totalTime,i),a=n._data;return a!=null&&(r._data=a),r}function tt(n,e,t,s,i="",r=0,a){return{element:n,triggerName:e,fromState:t,toState:s,phaseName:i,totalTime:r,disabled:!!a}}function L(n,e,t){let s=n.get(e);return s||n.set(e,s=t),s}function yt(n){let e=n.indexOf(":"),t=n.substring(1,e),s=n.slice(e+1);return[t,s]}var Ps=typeof document>"u"?null:document.documentElement;function st(n){let e=n.parentNode||n.host||null;return e===Ps?null:e}function Ns(n){return n.substring(1,6)=="ebkit"}var H=null,_t=!1;function Ms(n){H||(H=Cs()||{},_t=H.style?"WebkitAppearance"in H.style:!1);let e=!0;return H.style&&!Ns(n)&&(e=n in H.style,!e&&_t&&(e="Webkit"+n.charAt(0).toUpperCase()+n.slice(1)in H.style)),e}function wi(n){return As.has(n)}function Cs(){return typeof document<"u"?document.body:null}function Ft(n,e){for(;e;){if(e===n)return!0;e=st(e)}return!1}function It(n,e,t){if(t)return Array.from(n.querySelectorAll(e));let s=n.querySelector(e);return s?[s]:[]}var zt=(()=>{class n{validateStyleProperty(t){return Ms(t)}containsElement(t,s){return Ft(t,s)}getParentElement(t){return st(t)}query(t,s,i){return It(t,s,i)}computeStyle(t,s,i){return i||""}animate(t,s,i,r,a,o=[],l){return new x(i,r)}static{this.\u0275fac=function(s){return new(s||n)}}static{this.\u0275prov=mt({token:n,factory:n.\u0275fac})}}return n})(),St=class{static{this.NOOP=new zt}},Fe=class{},Ie=class{normalizePropertyName(e,t){return e}normalizeStyleValue(e,t,s,i){return s}},ks=1e3,Kt="{{",Ds="}}",it="ng-enter",pe="ng-leave",ue="ng-trigger",ge=".ng-trigger",Et="ng-animating",ze=".ng-animating";function $(n){if(typeof n=="number")return n;let e=n.match(/^(-?[\.\d]+)(m?s)/);return!e||e.length<2?0:Ke(parseFloat(e[1]),e[2])}function Ke(n,e){switch(e){case"s":return n*ks;default:return n}}function ye(n,e,t){return n.hasOwnProperty("duration")?n:Rs(n,e,t)}function Rs(n,e,t){let s=/^(-?[\.\d]+)(m?s)(?:\s+(-?[\.\d]+)(m?s))?(?:\s+([-a-z]+(?:\(.+?\))?))?$/i,i,r=0,a="";if(typeof n=="string"){let o=n.match(s);if(o===null)return e.push(gt(n)),{duration:0,delay:0,easing:""};i=Ke(parseFloat(o[1]),o[2]);let l=o[3];l!=null&&(r=Ke(parseFloat(l),o[4]));let h=o[5];h&&(a=h)}else i=n;if(!t){let o=!1,l=e.length;i<0&&(e.push(Wt()),o=!0),r<0&&(e.push(Gt()),o=!0),o&&e.splice(l,0,gt(n))}return{duration:i,delay:r,easing:a}}function Os(n){return n.length?n[0]instanceof Map?n:n.map(e=>new Map(Object.entries(e))):[]}function Tt(n){return Array.isArray(n)?new Map(...n):new Map(n)}function Q(n,e,t){e.forEach((s,i)=>{let r=nt(i);t&&!t.has(i)&&t.set(i,n.style[r]),n.style[r]=s})}function X(n,e){e.forEach((t,s)=>{let i=nt(s);n.style[i]=""})}function se(n){return Array.isArray(n)?n.length==1?n[0]:pt(n):n}function Ls(n,e,t){let s=e.params||{},i=qt(n);i.length&&i.forEach(r=>{s.hasOwnProperty(r)||t.push(Ht(r))})}var qe=new RegExp(`${Kt}\\s*(.+?)\\s*${Ds}`,"g");function qt(n){let e=[];if(typeof n=="string"){let t;for(;t=qe.exec(n);)e.push(t[1]);qe.lastIndex=0}return e}function ne(n,e,t){let s=`${n}`,i=s.replace(qe,(r,a)=>{let o=e[a];return o==null&&(t.push(Yt(a)),o=""),o.toString()});return i==s?n:i}var Fs=/-+([a-z0-9])/g;function nt(n){return n.replace(Fs,(...e)=>e[1].toUpperCase())}function bi(n){return n.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase()}function Is(n,e){return n===0||e===0}function zs(n,e,t){if(t.size&&e.length){let s=e[0],i=[];if(t.forEach((r,a)=>{s.has(a)||i.push(a),s.set(a,r)}),i.length)for(let r=1;ra.set(o,rt(n,o)))}}return e}function O(n,e,t){switch(e.type){case E.Trigger:return n.visitTrigger(e,t);case E.State:return n.visitState(e,t);case E.Transition:return n.visitTransition(e,t);case E.Sequence:return n.visitSequence(e,t);case E.Group:return n.visitGroup(e,t);case E.Animate:return n.visitAnimate(e,t);case E.Keyframes:return n.visitKeyframes(e,t);case E.Style:return n.visitStyle(e,t);case E.Reference:return n.visitReference(e,t);case E.AnimateChild:return n.visitAnimateChild(e,t);case E.AnimateRef:return n.visitAnimateRef(e,t);case E.Query:return n.visitQuery(e,t);case E.Stagger:return n.visitStagger(e,t);default:throw Xt(e.type)}}function rt(n,e){return window.getComputedStyle(n)[e]}var Ks=new Set(["width","height","minWidth","minHeight","maxWidth","maxHeight","left","top","bottom","right","fontSize","outlineWidth","outlineOffset","paddingTop","paddingLeft","paddingBottom","paddingRight","marginTop","marginLeft","marginBottom","marginRight","borderRadius","borderWidth","borderTopWidth","borderLeftWidth","borderRightWidth","borderBottomWidth","textIndent","perspective"]),Be=class extends Fe{normalizePropertyName(e,t){return nt(e)}normalizeStyleValue(e,t,s,i){let r="",a=s.toString().trim();if(Ks.has(t)&&s!==0&&s!=="0")if(typeof s=="number")r="px";else{let o=s.match(/^[+-]?[\d\.]+([a-z]*)$/);o&&o[1].length==0&&i.push(Zt(e,s))}return a+r}};var _e="*";function qs(n,e){let t=[];return typeof n=="string"?n.split(/\s*,\s*/).forEach(s=>Bs(s,t,e)):t.push(n),t}function Bs(n,e,t){if(n[0]==":"){let l=Qs(n,t);if(typeof l=="function"){e.push(l);return}n=l}let s=n.match(/^(\*|[-\w]+)\s*()\s*(\*|[-\w]+)$/);if(s==null||s.length<4)return t.push(hs(n)),e;let i=s[1],r=s[2],a=s[3];e.push(vt(i,a));let o=i==_e&&a==_e;r[0]=="<"&&!o&&e.push(vt(a,i))}function Qs(n,e){switch(n){case":enter":return"void => *";case":leave":return"* => void";case":increment":return(t,s)=>parseFloat(s)>parseFloat(t);case":decrement":return(t,s)=>parseFloat(s) *"}}var ce=new Set(["true","1"]),fe=new Set(["false","0"]);function vt(n,e){let t=ce.has(n)||fe.has(n),s=ce.has(e)||fe.has(e);return(i,r)=>{let a=n==_e||n==i,o=e==_e||e==r;return!a&&t&&typeof i=="boolean"&&(a=i?ce.has(n):fe.has(n)),!o&&s&&typeof r=="boolean"&&(o=r?ce.has(e):fe.has(e)),a&&o}}var Bt=":self",$s=new RegExp(`s*${Bt}s*,?`,"g");function at(n,e,t,s){return new Qe(n).build(e,t,s)}var wt="",Qe=class{constructor(e){this._driver=e}build(e,t,s){let i=new $e(t);return this._resetContextStyleTimingState(i),O(this,se(e),i)}_resetContextStyleTimingState(e){e.currentQuerySelector=wt,e.collectedStyles=new Map,e.collectedStyles.set(wt,new Map),e.currentTime=0}visitTrigger(e,t){let s=t.queryCount=0,i=t.depCount=0,r=[],a=[];return e.name.charAt(0)=="@"&&t.errors.push(Jt()),e.definitions.forEach(o=>{if(this._resetContextStyleTimingState(t),o.type==E.State){let l=o,h=l.name;h.toString().split(/\s*,\s*/).forEach(c=>{l.name=c,r.push(this.visitState(l,t))}),l.name=h}else if(o.type==E.Transition){let l=this.visitTransition(o,t);s+=l.queryCount,i+=l.depCount,a.push(l)}else t.errors.push(xt())}),{type:E.Trigger,name:e.name,states:r,transitions:a,queryCount:s,depCount:i,options:null}}visitState(e,t){let s=this.visitStyle(e.styles,t),i=e.options&&e.options.params||null;if(s.containsDynamicStyles){let r=new Set,a=i||{};s.styles.forEach(o=>{o instanceof Map&&o.forEach(l=>{qt(l).forEach(h=>{a.hasOwnProperty(h)||r.add(h)})})}),r.size&&t.errors.push(es(e.name,[...r.values()]))}return{type:E.State,name:e.name,style:s,options:i?{params:i}:null}}visitTransition(e,t){t.queryCount=0,t.depCount=0;let s=O(this,se(e.animation),t),i=qs(e.expr,t.errors);return{type:E.Transition,matchers:i,animation:s,queryCount:t.queryCount,depCount:t.depCount,options:Y(e.options)}}visitSequence(e,t){return{type:E.Sequence,steps:e.steps.map(s=>O(this,s,t)),options:Y(e.options)}}visitGroup(e,t){let s=t.currentTime,i=0,r=e.steps.map(a=>{t.currentTime=s;let o=O(this,a,t);return i=Math.max(i,t.currentTime),o});return t.currentTime=i,{type:E.Group,steps:r,options:Y(e.options)}}visitAnimate(e,t){let s=Ws(e.timings,t.errors);t.currentAnimateTimings=s;let i,r=e.styles?e.styles:Ne({});if(r.type==E.Keyframes)i=this.visitKeyframes(r,t);else{let a=e.styles,o=!1;if(!a){o=!0;let h={};s.easing&&(h.easing=s.easing),a=Ne(h)}t.currentTime+=s.duration+s.delay;let l=this.visitStyle(a,t);l.isEmptyStep=o,i=l}return t.currentAnimateTimings=null,{type:E.Animate,timings:s,style:i,options:null}}visitStyle(e,t){let s=this._makeStyleAst(e,t);return this._validateStyleAst(s,t),s}_makeStyleAst(e,t){let s=[],i=Array.isArray(e.styles)?e.styles:[e.styles];for(let o of i)typeof o=="string"?o===B?s.push(o):t.errors.push(ts(o)):s.push(new Map(Object.entries(o)));let r=!1,a=null;return s.forEach(o=>{if(o instanceof Map&&(o.has("easing")&&(a=o.get("easing"),o.delete("easing")),!r)){for(let l of o.values())if(l.toString().indexOf(Kt)>=0){r=!0;break}}}),{type:E.Style,styles:s,easing:a,offset:e.offset,containsDynamicStyles:r,options:null}}_validateStyleAst(e,t){let s=t.currentAnimateTimings,i=t.currentTime,r=t.currentTime;s&&r>0&&(r-=s.duration+s.delay),e.styles.forEach(a=>{typeof a!="string"&&a.forEach((o,l)=>{let h=t.collectedStyles.get(t.currentQuerySelector),c=h.get(l),u=!0;c&&(r!=i&&r>=c.startTime&&i<=c.endTime&&(t.errors.push(ss(l,c.startTime,c.endTime,r,i)),u=!1),r=c.startTime),u&&h.set(l,{startTime:r,endTime:i}),t.options&&Ls(o,t.options,t.errors)})})}visitKeyframes(e,t){let s={type:E.Keyframes,styles:[],options:null};if(!t.currentAnimateTimings)return t.errors.push(is()),s;let i=1,r=0,a=[],o=!1,l=!1,h=0,c=e.steps.map(b=>{let A=this._makeStyleAst(b,t),C=A.offset!=null?A.offset:js(A.styles),N=0;return C!=null&&(r++,N=A.offset=C),l=l||N<0||N>1,o=o||N0&&r{let C=_>0?A==y?1:_*A:a[A],N=C*v;t.currentTime=d+g.delay+N,g.duration=N,this._validateStyleAst(b,t),b.offset=C,s.styles.push(b)}),s}visitReference(e,t){return{type:E.Reference,animation:O(this,se(e.animation),t),options:Y(e.options)}}visitAnimateChild(e,t){return t.depCount++,{type:E.AnimateChild,options:Y(e.options)}}visitAnimateRef(e,t){return{type:E.AnimateRef,animation:this.visitReference(e.animation,t),options:Y(e.options)}}visitQuery(e,t){let s=t.currentQuerySelector,i=e.options||{};t.queryCount++,t.currentQuery=e;let[r,a]=Vs(e.selector);t.currentQuerySelector=s.length?s+" "+r:r,L(t.collectedStyles,t.currentQuerySelector,new Map);let o=O(this,se(e.animation),t);return t.currentQuery=null,t.currentQuerySelector=s,{type:E.Query,selector:r,limit:i.limit||0,optional:!!i.optional,includeSelf:a,animation:o,originalSelector:e.selector,options:Y(e.options)}}visitStagger(e,t){t.currentQuery||t.errors.push(os());let s=e.timings==="full"?{duration:0,delay:0,easing:"full"}:ye(e.timings,t.errors,!0);return{type:E.Stagger,animation:O(this,se(e.animation),t),timings:s,options:null}}};function Vs(n){let e=!!n.split(/\s*,\s*/).find(t=>t==Bt);return e&&(n=n.replace($s,"")),n=n.replace(/@\*/g,ge).replace(/@\w+/g,t=>ge+"-"+t.slice(1)).replace(/:animating/g,ze),[n,e]}function Us(n){return n?le({},n):null}var $e=class{constructor(e){this.errors=e,this.queryCount=0,this.depCount=0,this.currentTransition=null,this.currentQuery=null,this.currentQuerySelector=null,this.currentAnimateTimings=null,this.currentTime=0,this.collectedStyles=new Map,this.options=null,this.unsupportedCSSPropertiesFound=new Set}};function js(n){if(typeof n=="string")return null;let e=null;if(Array.isArray(n))n.forEach(t=>{if(t instanceof Map&&t.has("offset")){let s=t;e=parseFloat(s.get("offset")),s.delete("offset")}});else if(n instanceof Map&&n.has("offset")){let t=n;e=parseFloat(t.get("offset")),t.delete("offset")}return e}function Ws(n,e){if(n.hasOwnProperty("duration"))return n;if(typeof n=="number"){let r=ye(n,e).duration;return ke(r,0,"")}let t=n;if(t.split(/\s+/).some(r=>r.charAt(0)=="{"&&r.charAt(1)=="{")){let r=ke(0,0,"");return r.dynamic=!0,r.strValue=t,r}let i=ye(t,e);return ke(i.duration,i.delay,i.easing)}function Y(n){return n?(n=le({},n),n.params&&(n.params=Us(n.params))):n={},n}function ke(n,e,t){return{duration:n,delay:e,easing:t}}function ot(n,e,t,s,i,r,a=null,o=!1){return{type:1,element:n,keyframes:e,preStyleProps:t,postStyleProps:s,duration:i,delay:r,totalTime:i+r,easing:a,subTimeline:o}}var te=class{constructor(){this._map=new Map}get(e){return this._map.get(e)||[]}append(e,t){let s=this._map.get(e);s||this._map.set(e,s=[]),s.push(...t)}has(e){return this._map.has(e)}clear(){this._map.clear()}},Gs=1,Hs=":enter",Ys=new RegExp(Hs,"g"),Xs=":leave",Zs=new RegExp(Xs,"g");function lt(n,e,t,s,i,r=new Map,a=new Map,o,l,h=[]){return new Ve().buildKeyframes(n,e,t,s,i,r,a,o,l,h)}var Ve=class{buildKeyframes(e,t,s,i,r,a,o,l,h,c=[]){h=h||new te;let u=new Ue(e,t,h,i,r,c,[]);u.options=l;let _=l.delay?$(l.delay):0;u.currentTimeline.delayNextStep(_),u.currentTimeline.setStyles([a],null,u.errors,l),O(this,s,u);let y=u.timelines.filter(d=>d.containsAnimation());if(y.length&&o.size){let d;for(let g=y.length-1;g>=0;g--){let v=y[g];if(v.element===t){d=v;break}}d&&!d.allowOnlyTimelineStyles()&&d.setStyles([o],null,u.errors,l)}return y.length?y.map(d=>d.buildKeyframes()):[ot(t,[],[],[],0,_,"",!1)]}visitTrigger(e,t){}visitState(e,t){}visitTransition(e,t){}visitAnimateChild(e,t){let s=t.subInstructions.get(t.element);if(s){let i=t.createSubContext(e.options),r=t.currentTimeline.currentTime,a=this._visitSubInstructions(s,i,i.options);r!=a&&t.transformIntoNewTimeline(a)}t.previousNode=e}visitAnimateRef(e,t){let s=t.createSubContext(e.options);s.transformIntoNewTimeline(),this._applyAnimationRefDelays([e.options,e.animation.options],t,s),this.visitReference(e.animation,s),t.transformIntoNewTimeline(s.currentTimeline.currentTime),t.previousNode=e}_applyAnimationRefDelays(e,t,s){for(let i of e){let r=i?.delay;if(r){let a=typeof r=="number"?r:$(ne(r,i?.params??{},t.errors));s.delayNextStep(a)}}}_visitSubInstructions(e,t,s){let r=t.currentTimeline.currentTime,a=s.duration!=null?$(s.duration):null,o=s.delay!=null?$(s.delay):null;return a!==0&&e.forEach(l=>{let h=t.appendInstructionToTimeline(l,a,o);r=Math.max(r,h.duration+h.delay)}),r}visitReference(e,t){t.updateOptions(e.options,!0),O(this,e.animation,t),t.previousNode=e}visitSequence(e,t){let s=t.subContextCount,i=t,r=e.options;if(r&&(r.params||r.delay)&&(i=t.createSubContext(r),i.transformIntoNewTimeline(),r.delay!=null)){i.previousNode.type==E.Style&&(i.currentTimeline.snapshotCurrentStyles(),i.previousNode=Se);let a=$(r.delay);i.delayNextStep(a)}e.steps.length&&(e.steps.forEach(a=>O(this,a,i)),i.currentTimeline.applyStylesToKeyframe(),i.subContextCount>s&&i.transformIntoNewTimeline()),t.previousNode=e}visitGroup(e,t){let s=[],i=t.currentTimeline.currentTime,r=e.options&&e.options.delay?$(e.options.delay):0;e.steps.forEach(a=>{let o=t.createSubContext(e.options);r&&o.delayNextStep(r),O(this,a,o),i=Math.max(i,o.currentTimeline.currentTime),s.push(o.currentTimeline)}),s.forEach(a=>t.currentTimeline.mergeTimelineCollectedStyles(a)),t.transformIntoNewTimeline(i),t.previousNode=e}_visitTiming(e,t){if(e.dynamic){let s=e.strValue,i=t.params?ne(s,t.params,t.errors):s;return ye(i,t.errors)}else return{duration:e.duration,delay:e.delay,easing:e.easing}}visitAnimate(e,t){let s=t.currentAnimateTimings=this._visitTiming(e.timings,t),i=t.currentTimeline;s.delay&&(t.incrementTime(s.delay),i.snapshotCurrentStyles());let r=e.style;r.type==E.Keyframes?this.visitKeyframes(r,t):(t.incrementTime(s.duration),this.visitStyle(r,t),i.applyStylesToKeyframe()),t.currentAnimateTimings=null,t.previousNode=e}visitStyle(e,t){let s=t.currentTimeline,i=t.currentAnimateTimings;!i&&s.hasCurrentStyleProperties()&&s.forwardFrame();let r=i&&i.easing||e.easing;e.isEmptyStep?s.applyEmptyStep(r):s.setStyles(e.styles,r,t.errors,t.options),t.previousNode=e}visitKeyframes(e,t){let s=t.currentAnimateTimings,i=t.currentTimeline.duration,r=s.duration,o=t.createSubContext().currentTimeline;o.easing=s.easing,e.styles.forEach(l=>{let h=l.offset||0;o.forwardTime(h*r),o.setStyles(l.styles,l.easing,t.errors,t.options),o.applyStylesToKeyframe()}),t.currentTimeline.mergeTimelineCollectedStyles(o),t.transformIntoNewTimeline(i+r),t.previousNode=e}visitQuery(e,t){let s=t.currentTimeline.currentTime,i=e.options||{},r=i.delay?$(i.delay):0;r&&(t.previousNode.type===E.Style||s==0&&t.currentTimeline.hasCurrentStyleProperties())&&(t.currentTimeline.snapshotCurrentStyles(),t.previousNode=Se);let a=s,o=t.invokeQuery(e.selector,e.originalSelector,e.limit,e.includeSelf,!!i.optional,t.errors);t.currentQueryTotal=o.length;let l=null;o.forEach((h,c)=>{t.currentQueryIndex=c;let u=t.createSubContext(e.options,h);r&&u.delayNextStep(r),h===t.element&&(l=u.currentTimeline),O(this,e.animation,u),u.currentTimeline.applyStylesToKeyframe();let _=u.currentTimeline.currentTime;a=Math.max(a,_)}),t.currentQueryIndex=0,t.currentQueryTotal=0,t.transformIntoNewTimeline(a),l&&(t.currentTimeline.mergeTimelineCollectedStyles(l),t.currentTimeline.snapshotCurrentStyles()),t.previousNode=e}visitStagger(e,t){let s=t.parentContext,i=t.currentTimeline,r=e.timings,a=Math.abs(r.duration),o=a*(t.currentQueryTotal-1),l=a*t.currentQueryIndex;switch(r.duration<0?"reverse":r.easing){case"reverse":l=o-l;break;case"full":l=s.currentStaggerTime;break}let c=t.currentTimeline;l&&c.delayNextStep(l);let u=c.currentTime;O(this,e.animation,t),t.previousNode=e,s.currentStaggerTime=i.currentTime-u+(i.startTime-s.currentTimeline.startTime)}},Se={},Ue=class n{constructor(e,t,s,i,r,a,o,l){this._driver=e,this.element=t,this.subInstructions=s,this._enterClassName=i,this._leaveClassName=r,this.errors=a,this.timelines=o,this.parentContext=null,this.currentAnimateTimings=null,this.previousNode=Se,this.subContextCount=0,this.options={},this.currentQueryIndex=0,this.currentQueryTotal=0,this.currentStaggerTime=0,this.currentTimeline=l||new Ee(this._driver,t,0),o.push(this.currentTimeline)}get params(){return this.options.params}updateOptions(e,t){if(!e)return;let s=e,i=this.options;s.duration!=null&&(i.duration=$(s.duration)),s.delay!=null&&(i.delay=$(s.delay));let r=s.params;if(r){let a=i.params;a||(a=this.options.params={}),Object.keys(r).forEach(o=>{(!t||!a.hasOwnProperty(o))&&(a[o]=ne(r[o],a,this.errors))})}}_copyOptions(){let e={};if(this.options){let t=this.options.params;if(t){let s=e.params={};Object.keys(t).forEach(i=>{s[i]=t[i]})}}return e}createSubContext(e=null,t,s){let i=t||this.element,r=new n(this._driver,i,this.subInstructions,this._enterClassName,this._leaveClassName,this.errors,this.timelines,this.currentTimeline.fork(i,s||0));return r.previousNode=this.previousNode,r.currentAnimateTimings=this.currentAnimateTimings,r.options=this._copyOptions(),r.updateOptions(e),r.currentQueryIndex=this.currentQueryIndex,r.currentQueryTotal=this.currentQueryTotal,r.parentContext=this,this.subContextCount++,r}transformIntoNewTimeline(e){return this.previousNode=Se,this.currentTimeline=this.currentTimeline.fork(this.element,e),this.timelines.push(this.currentTimeline),this.currentTimeline}appendInstructionToTimeline(e,t,s){let i={duration:t??e.duration,delay:this.currentTimeline.currentTime+(s??0)+e.delay,easing:""},r=new je(this._driver,e.element,e.keyframes,e.preStyleProps,e.postStyleProps,i,e.stretchStartingKeyframe);return this.timelines.push(r),i}incrementTime(e){this.currentTimeline.forwardTime(this.currentTimeline.duration+e)}delayNextStep(e){e>0&&this.currentTimeline.delayNextStep(e)}invokeQuery(e,t,s,i,r,a){let o=[];if(i&&o.push(this.element),e.length>0){e=e.replace(Ys,"."+this._enterClassName),e=e.replace(Zs,"."+this._leaveClassName);let l=s!=1,h=this._driver.query(this.element,e,l);s!==0&&(h=s<0?h.slice(h.length+s,h.length):h.slice(0,s)),o.push(...h)}return!r&&o.length==0&&a.push(ls(t)),o}},Ee=class n{constructor(e,t,s,i){this._driver=e,this.element=t,this.startTime=s,this._elementTimelineStylesLookup=i,this.duration=0,this.easing=null,this._previousKeyframe=new Map,this._currentKeyframe=new Map,this._keyframes=new Map,this._styleSummary=new Map,this._localTimelineStyles=new Map,this._pendingStyles=new Map,this._backFill=new Map,this._currentEmptyStepKeyframe=null,this._elementTimelineStylesLookup||(this._elementTimelineStylesLookup=new Map),this._globalTimelineStyles=this._elementTimelineStylesLookup.get(t),this._globalTimelineStyles||(this._globalTimelineStyles=this._localTimelineStyles,this._elementTimelineStylesLookup.set(t,this._localTimelineStyles)),this._loadKeyframe()}containsAnimation(){switch(this._keyframes.size){case 0:return!1;case 1:return this.hasCurrentStyleProperties();default:return!0}}hasCurrentStyleProperties(){return this._currentKeyframe.size>0}get currentTime(){return this.startTime+this.duration}delayNextStep(e){let t=this._keyframes.size===1&&this._pendingStyles.size;this.duration||t?(this.forwardTime(this.currentTime+e),t&&this.snapshotCurrentStyles()):this.startTime+=e}fork(e,t){return this.applyStylesToKeyframe(),new n(this._driver,e,t||this.currentTime,this._elementTimelineStylesLookup)}_loadKeyframe(){this._currentKeyframe&&(this._previousKeyframe=this._currentKeyframe),this._currentKeyframe=this._keyframes.get(this.duration),this._currentKeyframe||(this._currentKeyframe=new Map,this._keyframes.set(this.duration,this._currentKeyframe))}forwardFrame(){this.duration+=Gs,this._loadKeyframe()}forwardTime(e){this.applyStylesToKeyframe(),this.duration=e,this._loadKeyframe()}_updateStyle(e,t){this._localTimelineStyles.set(e,t),this._globalTimelineStyles.set(e,t),this._styleSummary.set(e,{time:this.currentTime,value:t})}allowOnlyTimelineStyles(){return this._currentEmptyStepKeyframe!==this._currentKeyframe}applyEmptyStep(e){e&&this._previousKeyframe.set("easing",e);for(let[t,s]of this._globalTimelineStyles)this._backFill.set(t,s||B),this._currentKeyframe.set(t,B);this._currentEmptyStepKeyframe=this._currentKeyframe}setStyles(e,t,s,i){t&&this._previousKeyframe.set("easing",t);let r=i&&i.params||{},a=Js(e,this._globalTimelineStyles);for(let[o,l]of a){let h=ne(l,r,s);this._pendingStyles.set(o,h),this._localTimelineStyles.has(o)||this._backFill.set(o,this._globalTimelineStyles.get(o)??B),this._updateStyle(o,h)}}applyStylesToKeyframe(){this._pendingStyles.size!=0&&(this._pendingStyles.forEach((e,t)=>{this._currentKeyframe.set(t,e)}),this._pendingStyles.clear(),this._localTimelineStyles.forEach((e,t)=>{this._currentKeyframe.has(t)||this._currentKeyframe.set(t,e)}))}snapshotCurrentStyles(){for(let[e,t]of this._localTimelineStyles)this._pendingStyles.set(e,t),this._updateStyle(e,t)}getFinalKeyframe(){return this._keyframes.get(this.duration)}get properties(){let e=[];for(let t in this._currentKeyframe)e.push(t);return e}mergeTimelineCollectedStyles(e){e._styleSummary.forEach((t,s)=>{let i=this._styleSummary.get(s);(!i||t.time>i.time)&&this._updateStyle(s,t.value)})}buildKeyframes(){this.applyStylesToKeyframe();let e=new Set,t=new Set,s=this._keyframes.size===1&&this.duration===0,i=[];this._keyframes.forEach((o,l)=>{let h=new Map([...this._backFill,...o]);h.forEach((c,u)=>{c===he?e.add(u):c===B&&t.add(u)}),s||h.set("offset",l/this.duration),i.push(h)});let r=[...e.values()],a=[...t.values()];if(s){let o=i[0],l=new Map(o);o.set("offset",0),l.set("offset",1),i=[o,l]}return ot(this.element,i,r,a,this.duration,this.startTime,this.easing,!1)}},je=class extends Ee{constructor(e,t,s,i,r,a,o=!1){super(e,t,a.delay),this.keyframes=s,this.preStyleProps=i,this.postStyleProps=r,this._stretchStartingKeyframe=o,this.timings={duration:a.duration,delay:a.delay,easing:a.easing}}containsAnimation(){return this.keyframes.length>1}buildKeyframes(){let e=this.keyframes,{delay:t,duration:s,easing:i}=this.timings;if(this._stretchStartingKeyframe&&t){let r=[],a=s+t,o=t/a,l=new Map(e[0]);l.set("offset",0),r.push(l);let h=new Map(e[0]);h.set("offset",bt(o)),r.push(h);let c=e.length-1;for(let u=1;u<=c;u++){let _=new Map(e[u]),y=_.get("offset"),d=t+y*s;_.set("offset",bt(d/a)),r.push(_)}s=a,t=0,i="",e=r}return ot(this.element,e,this.preStyleProps,this.postStyleProps,s,t,i,!0)}};function bt(n,e=3){let t=Math.pow(10,e-1);return Math.round(n*t)/t}function Js(n,e){let t=new Map,s;return n.forEach(i=>{if(i==="*"){s??=e.keys();for(let r of s)t.set(r,B)}else for(let[r,a]of i)t.set(r,a)}),t}function At(n,e,t,s,i,r,a,o,l,h,c,u,_){return{type:0,element:n,triggerName:e,isRemovalTransition:i,fromState:t,fromStyles:r,toState:s,toStyles:a,timelines:o,queriedElements:l,preStyleProps:h,postStyleProps:c,totalTime:u,errors:_}}var De={},Te=class{constructor(e,t,s){this._triggerName=e,this.ast=t,this._stateStyles=s}match(e,t,s,i){return xs(this.ast.matchers,e,t,s,i)}buildStyles(e,t,s){let i=this._stateStyles.get("*");return e!==void 0&&(i=this._stateStyles.get(e?.toString())||i),i?i.buildStyles(t,s):new Map}build(e,t,s,i,r,a,o,l,h,c){let u=[],_=this.ast.options&&this.ast.options.params||De,y=o&&o.params||De,d=this.buildStyles(s,y,u),g=l&&l.params||De,v=this.buildStyles(i,g,u),b=new Set,A=new Map,C=new Map,N=i==="void",Z={params:Qt(g,_),delay:this.ast.options?.delay},K=c?[]:lt(e,t,this.ast.animation,r,a,d,v,Z,h,u),k=0;return K.forEach(D=>{k=Math.max(D.duration+D.delay,k)}),u.length?At(t,this._triggerName,s,i,N,d,v,[],[],A,C,k,u):(K.forEach(D=>{let j=D.element,J=L(A,j,new Set);D.preStyleProps.forEach(W=>J.add(W));let ht=L(C,j,new Set);D.postStyleProps.forEach(W=>ht.add(W)),j!==t&&b.add(j)}),At(t,this._triggerName,s,i,N,d,v,K,[...b.values()],A,C,k))}};function xs(n,e,t,s,i){return n.some(r=>r(e,t,s,i))}function Qt(n,e){let t=le({},e);return Object.entries(n).forEach(([s,i])=>{i!=null&&(t[s]=i)}),t}var We=class{constructor(e,t,s){this.styles=e,this.defaultParams=t,this.normalizer=s}buildStyles(e,t){let s=new Map,i=Qt(e,this.defaultParams);return this.styles.styles.forEach(r=>{typeof r!="string"&&r.forEach((a,o)=>{a&&(a=ne(a,i,t));let l=this.normalizer.normalizePropertyName(o,t);a=this.normalizer.normalizeStyleValue(o,l,a,t),s.set(o,a)})}),s}};function ei(n,e,t){return new Ge(n,e,t)}var Ge=class{constructor(e,t,s){this.name=e,this.ast=t,this._normalizer=s,this.transitionFactories=[],this.states=new Map,t.states.forEach(i=>{let r=i.options&&i.options.params||{};this.states.set(i.name,new We(i.style,r,s))}),Pt(this.states,"true","1"),Pt(this.states,"false","0"),t.transitions.forEach(i=>{this.transitionFactories.push(new Te(e,i,this.states))}),this.fallbackTransition=ti(e,this.states,this._normalizer)}get containsQueries(){return this.ast.queryCount>0}matchTransition(e,t,s,i){return this.transitionFactories.find(a=>a.match(e,t,s,i))||null}matchStyles(e,t,s){return this.fallbackTransition.buildStyles(e,t,s)}};function ti(n,e,t){let s=[(a,o)=>!0],i={type:E.Sequence,steps:[],options:null},r={type:E.Transition,animation:i,matchers:s,options:null,queryCount:0,depCount:0};return new Te(n,r,e)}function Pt(n,e,t){n.has(e)?n.has(t)||n.set(t,n.get(e)):n.has(t)&&n.set(e,n.get(t))}var si=new te,He=class{constructor(e,t,s){this.bodyNode=e,this._driver=t,this._normalizer=s,this._animations=new Map,this._playersById=new Map,this.players=[]}register(e,t){let s=[],i=[],r=at(this._driver,t,s,i);if(s.length)throw ps(s);i.length&&void 0,this._animations.set(e,r)}_buildPlayer(e,t,s){let i=e.element,r=Lt(this._normalizer,e.keyframes,t,s);return this._driver.animate(i,r,e.duration,e.delay,e.easing,[],!0)}create(e,t,s={}){let i=[],r=this._animations.get(e),a,o=new Map;if(r?(a=lt(this._driver,t,r,it,pe,new Map,new Map,s,si,i),a.forEach(c=>{let u=L(o,c.element,new Map);c.postStyleProps.forEach(_=>u.set(_,null))})):(i.push(gs()),a=[]),i.length)throw ys(i);o.forEach((c,u)=>{c.forEach((_,y)=>{c.set(y,this._driver.computeStyle(u,y,B))})});let l=a.map(c=>{let u=o.get(c.element);return this._buildPlayer(c,new Map,u)}),h=U(l);return this._playersById.set(e,h),h.onDestroy(()=>this.destroy(e)),this.players.push(h),h}destroy(e){let t=this._getPlayer(e);t.destroy(),this._playersById.delete(e);let s=this.players.indexOf(t);s>=0&&this.players.splice(s,1)}_getPlayer(e){let t=this._playersById.get(e);if(!t)throw _s(e);return t}listen(e,t,s,i){let r=tt(t,"","","");return et(this._getPlayer(e),s,r,i),()=>{}}command(e,t,s,i){if(s=="register"){this.register(e,i[0]);return}if(s=="create"){let a=i[0]||{};this.create(e,t,a);return}let r=this._getPlayer(e);switch(s){case"play":r.play();break;case"pause":r.pause();break;case"reset":r.reset();break;case"restart":r.restart();break;case"finish":r.finish();break;case"init":r.init();break;case"setPosition":r.setPosition(parseFloat(i[0]));break;case"destroy":this.destroy(e);break}}},Nt="ng-animate-queued",ii=".ng-animate-queued",Re="ng-animate-disabled",ni=".ng-animate-disabled",ri="ng-star-inserted",ai=".ng-star-inserted",oi=[],$t={namespaceId:"",setForRemoval:!1,setForMove:!1,hasAnimation:!1,removedBeforeQueried:!1},li={namespaceId:"",setForMove:!1,setForRemoval:!1,hasAnimation:!1,removedBeforeQueried:!0},z="__ng_removed",re=class{get params(){return this.options.params}constructor(e,t=""){this.namespaceId=t;let s=e&&e.hasOwnProperty("value"),i=s?e.value:e;if(this.value=ui(i),s){let r=e,{value:a}=r,o=dt(r,["value"]);this.options=o}else this.options={};this.options.params||(this.options.params={})}absorbOptions(e){let t=e.params;if(t){let s=this.options.params;Object.keys(t).forEach(i=>{s[i]==null&&(s[i]=t[i])})}}},ie="void",Oe=new re(ie),Ye=class{constructor(e,t,s){this.id=e,this.hostElement=t,this._engine=s,this.players=[],this._triggers=new Map,this._queue=[],this._elementListeners=new Map,this._hostClassName="ng-tns-"+e,I(t,this._hostClassName)}listen(e,t,s,i){if(!this._triggers.has(t))throw Ss(s,t);if(s==null||s.length==0)throw Es(t);if(!ci(s))throw Ts(s,t);let r=L(this._elementListeners,e,[]),a={name:t,phase:s,callback:i};r.push(a);let o=L(this._engine.statesByElement,e,new Map);return o.has(t)||(I(e,ue),I(e,ue+"-"+t),o.set(t,Oe)),()=>{this._engine.afterFlush(()=>{let l=r.indexOf(a);l>=0&&r.splice(l,1),this._triggers.has(t)||o.delete(t)})}}register(e,t){return this._triggers.has(e)?!1:(this._triggers.set(e,t),!0)}_getTrigger(e){let t=this._triggers.get(e);if(!t)throw vs(e);return t}trigger(e,t,s,i=!0){let r=this._getTrigger(t),a=new ae(this.id,t,e),o=this._engine.statesByElement.get(e);o||(I(e,ue),I(e,ue+"-"+t),this._engine.statesByElement.set(e,o=new Map));let l=o.get(t),h=new re(s,this.id);if(!(s&&s.hasOwnProperty("value"))&&l&&h.absorbOptions(l.options),o.set(t,h),l||(l=Oe),!(h.value===ie)&&l.value===h.value){if(!mi(l.params,h.params)){let g=[],v=r.matchStyles(l.value,l.params,g),b=r.matchStyles(h.value,h.params,g);g.length?this._engine.reportError(g):this._engine.afterFlush(()=>{X(e,v),Q(e,b)})}return}let _=L(this._engine.playersByElement,e,[]);_.forEach(g=>{g.namespaceId==this.id&&g.triggerName==t&&g.queued&&g.destroy()});let y=r.matchTransition(l.value,h.value,e,h.params),d=!1;if(!y){if(!i)return;y=r.fallbackTransition,d=!0}return this._engine.totalQueuedPlayers++,this._queue.push({element:e,triggerName:t,transition:y,fromState:l,toState:h,player:a,isFallbackTransition:d}),d||(I(e,Nt),a.onStart(()=>{ee(e,Nt)})),a.onDone(()=>{let g=this.players.indexOf(a);g>=0&&this.players.splice(g,1);let v=this._engine.playersByElement.get(e);if(v){let b=v.indexOf(a);b>=0&&v.splice(b,1)}}),this.players.push(a),_.push(a),a}deregister(e){this._triggers.delete(e),this._engine.statesByElement.forEach(t=>t.delete(e)),this._elementListeners.forEach((t,s)=>{this._elementListeners.set(s,t.filter(i=>i.name!=e))})}clearElementCache(e){this._engine.statesByElement.delete(e),this._elementListeners.delete(e);let t=this._engine.playersByElement.get(e);t&&(t.forEach(s=>s.destroy()),this._engine.playersByElement.delete(e))}_signalRemovalForInnerTriggers(e,t){let s=this._engine.driver.query(e,ge,!0);s.forEach(i=>{if(i[z])return;let r=this._engine.fetchNamespacesByElement(i);r.size?r.forEach(a=>a.triggerLeaveAnimation(i,t,!1,!0)):this.clearElementCache(i)}),this._engine.afterFlushAnimationsDone(()=>s.forEach(i=>this.clearElementCache(i)))}triggerLeaveAnimation(e,t,s,i){let r=this._engine.statesByElement.get(e),a=new Map;if(r){let o=[];if(r.forEach((l,h)=>{if(a.set(h,l.value),this._triggers.has(h)){let c=this.trigger(e,h,ie,i);c&&o.push(c)}}),o.length)return this._engine.markElementAsRemoved(this.id,e,!0,t,a),s&&U(o).onDone(()=>this._engine.processLeaveNode(e)),!0}return!1}prepareLeaveAnimationListeners(e){let t=this._elementListeners.get(e),s=this._engine.statesByElement.get(e);if(t&&s){let i=new Set;t.forEach(r=>{let a=r.name;if(i.has(a))return;i.add(a);let l=this._triggers.get(a).fallbackTransition,h=s.get(a)||Oe,c=new re(ie),u=new ae(this.id,a,e);this._engine.totalQueuedPlayers++,this._queue.push({element:e,triggerName:a,transition:l,fromState:h,toState:c,player:u,isFallbackTransition:!0})})}}removeNode(e,t){let s=this._engine;if(e.childElementCount&&this._signalRemovalForInnerTriggers(e,t),this.triggerLeaveAnimation(e,t,!0))return;let i=!1;if(s.totalAnimations){let r=s.players.length?s.playersByQueriedElement.get(e):[];if(r&&r.length)i=!0;else{let a=e;for(;a=a.parentNode;)if(s.statesByElement.get(a)){i=!0;break}}}if(this.prepareLeaveAnimationListeners(e),i)s.markElementAsRemoved(this.id,e,!1,t);else{let r=e[z];(!r||r===$t)&&(s.afterFlush(()=>this.clearElementCache(e)),s.destroyInnerAnimations(e),s._onRemovalComplete(e,t))}}insertNode(e,t){I(e,this._hostClassName)}drainQueuedTransitions(e){let t=[];return this._queue.forEach(s=>{let i=s.player;if(i.destroyed)return;let r=s.element,a=this._elementListeners.get(r);a&&a.forEach(o=>{if(o.name==s.triggerName){let l=tt(r,s.triggerName,s.fromState.value,s.toState.value);l._data=e,et(s.player,o.phase,l,o.callback)}}),i.markedForDestroy?this._engine.afterFlush(()=>{i.destroy()}):t.push(s)}),this._queue=[],t.sort((s,i)=>{let r=s.transition.ast.depCount,a=i.transition.ast.depCount;return r==0||a==0?r-a:this._engine.driver.containsElement(s.element,i.element)?1:-1})}destroy(e){this.players.forEach(t=>t.destroy()),this._signalRemovalForInnerTriggers(this.hostElement,e)}},Xe=class{_onRemovalComplete(e,t){this.onRemovalComplete(e,t)}constructor(e,t,s){this.bodyNode=e,this.driver=t,this._normalizer=s,this.players=[],this.newHostElements=new Map,this.playersByElement=new Map,this.playersByQueriedElement=new Map,this.statesByElement=new Map,this.disabledNodes=new Set,this.totalAnimations=0,this.totalQueuedPlayers=0,this._namespaceLookup={},this._namespaceList=[],this._flushFns=[],this._whenQuietFns=[],this.namespacesByHostElement=new Map,this.collectedEnterElements=[],this.collectedLeaveElements=[],this.onRemovalComplete=(i,r)=>{}}get queuedPlayers(){let e=[];return this._namespaceList.forEach(t=>{t.players.forEach(s=>{s.queued&&e.push(s)})}),e}createNamespace(e,t){let s=new Ye(e,t,this);return this.bodyNode&&this.driver.containsElement(this.bodyNode,t)?this._balanceNamespaceList(s,t):(this.newHostElements.set(t,s),this.collectEnterElement(t)),this._namespaceLookup[e]=s}_balanceNamespaceList(e,t){let s=this._namespaceList,i=this.namespacesByHostElement;if(s.length-1>=0){let a=!1,o=this.driver.getParentElement(t);for(;o;){let l=i.get(o);if(l){let h=s.indexOf(l);s.splice(h+1,0,e),a=!0;break}o=this.driver.getParentElement(o)}a||s.unshift(e)}else s.push(e);return i.set(t,e),e}register(e,t){let s=this._namespaceLookup[e];return s||(s=this.createNamespace(e,t)),s}registerTrigger(e,t,s){let i=this._namespaceLookup[e];i&&i.register(t,s)&&this.totalAnimations++}destroy(e,t){e&&(this.afterFlush(()=>{}),this.afterFlushAnimationsDone(()=>{let s=this._fetchNamespace(e);this.namespacesByHostElement.delete(s.hostElement);let i=this._namespaceList.indexOf(s);i>=0&&this._namespaceList.splice(i,1),s.destroy(t),delete this._namespaceLookup[e]}))}_fetchNamespace(e){return this._namespaceLookup[e]}fetchNamespacesByElement(e){let t=new Set,s=this.statesByElement.get(e);if(s){for(let i of s.values())if(i.namespaceId){let r=this._fetchNamespace(i.namespaceId);r&&t.add(r)}}return t}trigger(e,t,s,i){if(de(t)){let r=this._fetchNamespace(e);if(r)return r.trigger(t,s,i),!0}return!1}insertNode(e,t,s,i){if(!de(t))return;let r=t[z];if(r&&r.setForRemoval){r.setForRemoval=!1,r.setForMove=!0;let a=this.collectedLeaveElements.indexOf(t);a>=0&&this.collectedLeaveElements.splice(a,1)}if(e){let a=this._fetchNamespace(e);a&&a.insertNode(t,s)}i&&this.collectEnterElement(t)}collectEnterElement(e){this.collectedEnterElements.push(e)}markElementAsDisabled(e,t){t?this.disabledNodes.has(e)||(this.disabledNodes.add(e),I(e,Re)):this.disabledNodes.has(e)&&(this.disabledNodes.delete(e),ee(e,Re))}removeNode(e,t,s){if(de(t)){let i=e?this._fetchNamespace(e):null;i?i.removeNode(t,s):this.markElementAsRemoved(e,t,!1,s);let r=this.namespacesByHostElement.get(t);r&&r.id!==e&&r.removeNode(t,s)}else this._onRemovalComplete(t,s)}markElementAsRemoved(e,t,s,i,r){this.collectedLeaveElements.push(t),t[z]={namespaceId:e,setForRemoval:i,hasAnimation:s,removedBeforeQueried:!1,previousTriggersValues:r}}listen(e,t,s,i,r){return de(t)?this._fetchNamespace(e).listen(t,s,i,r):()=>{}}_buildInstruction(e,t,s,i,r){return e.transition.build(this.driver,e.element,e.fromState.value,e.toState.value,s,i,e.fromState.options,e.toState.options,t,r)}destroyInnerAnimations(e){let t=this.driver.query(e,ge,!0);t.forEach(s=>this.destroyActiveAnimationsForElement(s)),this.playersByQueriedElement.size!=0&&(t=this.driver.query(e,ze,!0),t.forEach(s=>this.finishActiveQueriedAnimationOnElement(s)))}destroyActiveAnimationsForElement(e){let t=this.playersByElement.get(e);t&&t.forEach(s=>{s.queued?s.markedForDestroy=!0:s.destroy()})}finishActiveQueriedAnimationOnElement(e){let t=this.playersByQueriedElement.get(e);t&&t.forEach(s=>s.finish())}whenRenderingDone(){return new Promise(e=>{if(this.players.length)return U(this.players).onDone(()=>e());e()})}processLeaveNode(e){let t=e[z];if(t&&t.setForRemoval){if(e[z]=$t,t.namespaceId){this.destroyInnerAnimations(e);let s=this._fetchNamespace(t.namespaceId);s&&s.clearElementCache(e)}this._onRemovalComplete(e,t.setForRemoval)}e.classList?.contains(Re)&&this.markElementAsDisabled(e,!1),this.driver.query(e,ni,!0).forEach(s=>{this.markElementAsDisabled(s,!1)})}flush(e=-1){let t=[];if(this.newHostElements.size&&(this.newHostElements.forEach((s,i)=>this._balanceNamespaceList(s,i)),this.newHostElements.clear()),this.totalAnimations&&this.collectedEnterElements.length)for(let s=0;ss()),this._flushFns=[],this._whenQuietFns.length){let s=this._whenQuietFns;this._whenQuietFns=[],t.length?U(t).onDone(()=>{s.forEach(i=>i())}):s.forEach(i=>i())}}reportError(e){throw ws(e)}_flushAnimations(e,t){let s=new te,i=[],r=new Map,a=[],o=new Map,l=new Map,h=new Map,c=new Set;this.disabledNodes.forEach(f=>{c.add(f);let m=this.driver.query(f,ii,!0);for(let p=0;p{let p=it+g++;d.set(m,p),f.forEach(T=>I(T,p))});let v=[],b=new Set,A=new Set;for(let f=0;fb.add(T)):A.add(m))}let C=new Map,N=kt(_,Array.from(b));N.forEach((f,m)=>{let p=pe+g++;C.set(m,p),f.forEach(T=>I(T,p))}),e.push(()=>{y.forEach((f,m)=>{let p=d.get(m);f.forEach(T=>ee(T,p))}),N.forEach((f,m)=>{let p=C.get(m);f.forEach(T=>ee(T,p))}),v.forEach(f=>{this.processLeaveNode(f)})});let Z=[],K=[];for(let f=this._namespaceList.length-1;f>=0;f--)this._namespaceList[f].drainQueuedTransitions(t).forEach(p=>{let T=p.player,P=p.element;if(Z.push(T),this.collectedEnterElements.length){let M=P[z];if(M&&M.setForMove){if(M.previousTriggersValues&&M.previousTriggersValues.has(p.triggerName)){let G=M.previousTriggersValues.get(p.triggerName),F=this.statesByElement.get(p.element);if(F&&F.has(p.triggerName)){let oe=F.get(p.triggerName);oe.value=G,F.set(p.triggerName,oe)}}T.destroy();return}}let q=!u||!this.driver.containsElement(u,P),R=C.get(P),V=d.get(P),w=this._buildInstruction(p,s,V,R,q);if(w.errors&&w.errors.length){K.push(w);return}if(q){T.onStart(()=>X(P,w.fromStyles)),T.onDestroy(()=>Q(P,w.toStyles)),i.push(T);return}if(p.isFallbackTransition){T.onStart(()=>X(P,w.fromStyles)),T.onDestroy(()=>Q(P,w.toStyles)),i.push(T);return}let ft=[];w.timelines.forEach(M=>{M.stretchStartingKeyframe=!0,this.disabledNodes.has(M.element)||ft.push(M)}),w.timelines=ft,s.append(P,w.timelines);let jt={instruction:w,player:T,element:P};a.push(jt),w.queriedElements.forEach(M=>L(o,M,[]).push(T)),w.preStyleProps.forEach((M,G)=>{if(M.size){let F=l.get(G);F||l.set(G,F=new Set),M.forEach((oe,Pe)=>F.add(Pe))}}),w.postStyleProps.forEach((M,G)=>{let F=h.get(G);F||h.set(G,F=new Set),M.forEach((oe,Pe)=>F.add(Pe))})});if(K.length){let f=[];K.forEach(m=>{f.push(bs(m.triggerName,m.errors))}),Z.forEach(m=>m.destroy()),this.reportError(f)}let k=new Map,D=new Map;a.forEach(f=>{let m=f.element;s.has(m)&&(D.set(m,m),this._beforeAnimationBuild(f.player.namespaceId,f.instruction,k))}),i.forEach(f=>{let m=f.element;this._getPreviousPlayers(m,!1,f.namespaceId,f.triggerName,null).forEach(T=>{L(k,m,[]).push(T),T.destroy()})});let j=v.filter(f=>Dt(f,l,h)),J=new Map;Ct(J,this.driver,A,h,B).forEach(f=>{Dt(f,l,h)&&j.push(f)});let W=new Map;y.forEach((f,m)=>{Ct(W,this.driver,new Set(f),l,he)}),j.forEach(f=>{let m=J.get(f),p=W.get(f);J.set(f,new Map([...m?.entries()??[],...p?.entries()??[]]))});let Ae=[],ut=[],ct={};a.forEach(f=>{let{element:m,player:p,instruction:T}=f;if(s.has(m)){if(c.has(m)){p.onDestroy(()=>Q(m,T.toStyles)),p.disabled=!0,p.overrideTotalTime(T.totalTime),i.push(p);return}let P=ct;if(D.size>1){let R=m,V=[];for(;R=R.parentNode;){let w=D.get(R);if(w){P=w;break}V.push(R)}V.forEach(w=>D.set(w,P))}let q=this._buildAnimation(p.namespaceId,T,k,r,W,J);if(p.setRealPlayer(q),P===ct)Ae.push(p);else{let R=this.playersByElement.get(P);R&&R.length&&(p.parentPlayer=U(R)),i.push(p)}}else X(m,T.fromStyles),p.onDestroy(()=>Q(m,T.toStyles)),ut.push(p),c.has(m)&&i.push(p)}),ut.forEach(f=>{let m=r.get(f.element);if(m&&m.length){let p=U(m);f.setRealPlayer(p)}}),i.forEach(f=>{f.parentPlayer?f.syncPlayerEvents(f.parentPlayer):f.destroy()});for(let f=0;f!q.destroyed);P.length?fi(this,m,P):this.processLeaveNode(m)}return v.length=0,Ae.forEach(f=>{this.players.push(f),f.onDone(()=>{f.destroy();let m=this.players.indexOf(f);this.players.splice(m,1)}),f.play()}),Ae}afterFlush(e){this._flushFns.push(e)}afterFlushAnimationsDone(e){this._whenQuietFns.push(e)}_getPreviousPlayers(e,t,s,i,r){let a=[];if(t){let o=this.playersByQueriedElement.get(e);o&&(a=o)}else{let o=this.playersByElement.get(e);if(o){let l=!r||r==ie;o.forEach(h=>{h.queued||!l&&h.triggerName!=i||a.push(h)})}}return(s||i)&&(a=a.filter(o=>!(s&&s!=o.namespaceId||i&&i!=o.triggerName))),a}_beforeAnimationBuild(e,t,s){let i=t.triggerName,r=t.element,a=t.isRemovalTransition?void 0:e,o=t.isRemovalTransition?void 0:i;for(let l of t.timelines){let h=l.element,c=h!==r,u=L(s,h,[]);this._getPreviousPlayers(h,c,a,o,t.toState).forEach(y=>{let d=y.getRealPlayer();d.beforeDestroy&&d.beforeDestroy(),y.destroy(),u.push(y)})}X(r,t.fromStyles)}_buildAnimation(e,t,s,i,r,a){let o=t.triggerName,l=t.element,h=[],c=new Set,u=new Set,_=t.timelines.map(d=>{let g=d.element;c.add(g);let v=g[z];if(v&&v.removedBeforeQueried)return new x(d.duration,d.delay);let b=g!==l,A=di((s.get(g)||oi).map(k=>k.getRealPlayer())).filter(k=>{let D=k;return D.element?D.element===g:!1}),C=r.get(g),N=a.get(g),Z=Lt(this._normalizer,d.keyframes,C,N),K=this._buildPlayer(d,Z,A);if(d.subTimeline&&i&&u.add(g),b){let k=new ae(e,o,g);k.setRealPlayer(K),h.push(k)}return K});h.forEach(d=>{L(this.playersByQueriedElement,d.element,[]).push(d),d.onDone(()=>hi(this.playersByQueriedElement,d.element,d))}),c.forEach(d=>I(d,Et));let y=U(_);return y.onDestroy(()=>{c.forEach(d=>ee(d,Et)),Q(l,t.toStyles)}),u.forEach(d=>{L(i,d,[]).push(y)}),y}_buildPlayer(e,t,s){return t.length>0?this.driver.animate(e.element,t,e.duration,e.delay,e.easing,s):new x(e.duration,e.delay)}},ae=class{constructor(e,t,s){this.namespaceId=e,this.triggerName=t,this.element=s,this._player=new x,this._containsRealPlayer=!1,this._queuedCallbacks=new Map,this.destroyed=!1,this.parentPlayer=null,this.markedForDestroy=!1,this.disabled=!1,this.queued=!0,this.totalTime=0}setRealPlayer(e){this._containsRealPlayer||(this._player=e,this._queuedCallbacks.forEach((t,s)=>{t.forEach(i=>et(e,s,void 0,i))}),this._queuedCallbacks.clear(),this._containsRealPlayer=!0,this.overrideTotalTime(e.totalTime),this.queued=!1)}getRealPlayer(){return this._player}overrideTotalTime(e){this.totalTime=e}syncPlayerEvents(e){let t=this._player;t.triggerCallback&&e.onStart(()=>t.triggerCallback("start")),e.onDone(()=>this.finish()),e.onDestroy(()=>this.destroy())}_queueEvent(e,t){L(this._queuedCallbacks,e,[]).push(t)}onDone(e){this.queued&&this._queueEvent("done",e),this._player.onDone(e)}onStart(e){this.queued&&this._queueEvent("start",e),this._player.onStart(e)}onDestroy(e){this.queued&&this._queueEvent("destroy",e),this._player.onDestroy(e)}init(){this._player.init()}hasStarted(){return this.queued?!1:this._player.hasStarted()}play(){!this.queued&&this._player.play()}pause(){!this.queued&&this._player.pause()}restart(){!this.queued&&this._player.restart()}finish(){this._player.finish()}destroy(){this.destroyed=!0,this._player.destroy()}reset(){!this.queued&&this._player.reset()}setPosition(e){this.queued||this._player.setPosition(e)}getPosition(){return this.queued?0:this._player.getPosition()}triggerCallback(e){let t=this._player;t.triggerCallback&&t.triggerCallback(e)}};function hi(n,e,t){let s=n.get(e);if(s){if(s.length){let i=s.indexOf(t);s.splice(i,1)}s.length==0&&n.delete(e)}return s}function ui(n){return n??null}function de(n){return n&&n.nodeType===1}function ci(n){return n=="start"||n=="done"}function Mt(n,e){let t=n.style.display;return n.style.display=e??"none",t}function Ct(n,e,t,s,i){let r=[];t.forEach(l=>r.push(Mt(l)));let a=[];s.forEach((l,h)=>{let c=new Map;l.forEach(u=>{let _=e.computeStyle(h,u,i);c.set(u,_),(!_||_.length==0)&&(h[z]=li,a.push(h))}),n.set(h,c)});let o=0;return t.forEach(l=>Mt(l,r[o++])),a}function kt(n,e){let t=new Map;if(n.forEach(o=>t.set(o,[])),e.length==0)return t;let s=1,i=new Set(e),r=new Map;function a(o){if(!o)return s;let l=r.get(o);if(l)return l;let h=o.parentNode;return t.has(h)?l=h:i.has(h)?l=s:l=a(h),r.set(o,l),l}return e.forEach(o=>{let l=a(o);l!==s&&t.get(l).push(o)}),t}function I(n,e){n.classList?.add(e)}function ee(n,e){n.classList?.remove(e)}function fi(n,e,t){U(t).onDone(()=>n.processLeaveNode(e))}function di(n){let e=[];return Vt(n,e),e}function Vt(n,e){for(let t=0;ti.add(r)):e.set(n,s),t.delete(n),!0}var ve=class{constructor(e,t,s){this._driver=t,this._normalizer=s,this._triggerCache={},this.onRemovalComplete=(i,r)=>{},this._transitionEngine=new Xe(e.body,t,s),this._timelineEngine=new He(e.body,t,s),this._transitionEngine.onRemovalComplete=(i,r)=>this.onRemovalComplete(i,r)}registerTrigger(e,t,s,i,r){let a=e+"-"+i,o=this._triggerCache[a];if(!o){let l=[],h=[],c=at(this._driver,r,l,h);if(l.length)throw ds(i,l);h.length&&void 0,o=ei(i,c,this._normalizer),this._triggerCache[a]=o}this._transitionEngine.registerTrigger(t,i,o)}register(e,t){this._transitionEngine.register(e,t)}destroy(e,t){this._transitionEngine.destroy(e,t)}onInsert(e,t,s,i){this._transitionEngine.insertNode(e,t,s,i)}onRemove(e,t,s){this._transitionEngine.removeNode(e,t,s)}disableAnimations(e,t){this._transitionEngine.markElementAsDisabled(e,t)}process(e,t,s,i){if(s.charAt(0)=="@"){let[r,a]=yt(s),o=i;this._timelineEngine.command(r,t,a,o)}else this._transitionEngine.trigger(e,t,s,i)}listen(e,t,s,i,r){if(s.charAt(0)=="@"){let[a,o]=yt(s);return this._timelineEngine.listen(a,t,o,r)}return this._transitionEngine.listen(e,t,s,i,r)}flush(e=-1){this._transitionEngine.flush(e)}get players(){return[...this._transitionEngine.players,...this._timelineEngine.players]}whenRenderingDone(){return this._transitionEngine.whenRenderingDone()}afterFlushAnimationsDone(e){this._transitionEngine.afterFlushAnimationsDone(e)}};function pi(n,e){let t=null,s=null;return Array.isArray(e)&&e.length?(t=Le(e[0]),e.length>1&&(s=Le(e[e.length-1]))):e instanceof Map&&(t=Le(e)),t||s?new Ze(n,t,s):null}var Ze=class n{static{this.initialStylesByElement=new WeakMap}constructor(e,t,s){this._element=e,this._startStyles=t,this._endStyles=s,this._state=0;let i=n.initialStylesByElement.get(e);i||n.initialStylesByElement.set(e,i=new Map),this._initialStyles=i}start(){this._state<1&&(this._startStyles&&Q(this._element,this._startStyles,this._initialStyles),this._state=1)}finish(){this.start(),this._state<2&&(Q(this._element,this._initialStyles),this._endStyles&&(Q(this._element,this._endStyles),this._endStyles=null),this._state=1)}destroy(){this.finish(),this._state<3&&(n.initialStylesByElement.delete(this._element),this._startStyles&&(X(this._element,this._startStyles),this._endStyles=null),this._endStyles&&(X(this._element,this._endStyles),this._endStyles=null),Q(this._element,this._initialStyles),this._state=3)}};function Le(n){let e=null;return n.forEach((t,s)=>{gi(s)&&(e=e||new Map,e.set(s,t))}),e}function gi(n){return n==="display"||n==="position"}var we=class{constructor(e,t,s,i){this.element=e,this.keyframes=t,this.options=s,this._specialStyles=i,this._onDoneFns=[],this._onStartFns=[],this._onDestroyFns=[],this._initialized=!1,this._finished=!1,this._started=!1,this._destroyed=!1,this._originalOnDoneFns=[],this._originalOnStartFns=[],this.time=0,this.parentPlayer=null,this.currentSnapshot=new Map,this._duration=s.duration,this._delay=s.delay||0,this.time=this._duration+this._delay}_onFinish(){this._finished||(this._finished=!0,this._onDoneFns.forEach(e=>e()),this._onDoneFns=[])}init(){this._buildPlayer(),this._preparePlayerBeforeStart()}_buildPlayer(){if(this._initialized)return;this._initialized=!0;let e=this.keyframes;this.domPlayer=this._triggerWebAnimation(this.element,e,this.options),this._finalKeyframe=e.length?e[e.length-1]:new Map;let t=()=>this._onFinish();this.domPlayer.addEventListener("finish",t),this.onDestroy(()=>{this.domPlayer.removeEventListener("finish",t)})}_preparePlayerBeforeStart(){this._delay?this._resetDomPlayerState():this.domPlayer.pause()}_convertKeyframesToObject(e){let t=[];return e.forEach(s=>{t.push(Object.fromEntries(s))}),t}_triggerWebAnimation(e,t,s){return e.animate(this._convertKeyframesToObject(t),s)}onStart(e){this._originalOnStartFns.push(e),this._onStartFns.push(e)}onDone(e){this._originalOnDoneFns.push(e),this._onDoneFns.push(e)}onDestroy(e){this._onDestroyFns.push(e)}play(){this._buildPlayer(),this.hasStarted()||(this._onStartFns.forEach(e=>e()),this._onStartFns=[],this._started=!0,this._specialStyles&&this._specialStyles.start()),this.domPlayer.play()}pause(){this.init(),this.domPlayer.pause()}finish(){this.init(),this._specialStyles&&this._specialStyles.finish(),this._onFinish(),this.domPlayer.finish()}reset(){this._resetDomPlayerState(),this._destroyed=!1,this._finished=!1,this._started=!1,this._onStartFns=this._originalOnStartFns,this._onDoneFns=this._originalOnDoneFns}_resetDomPlayerState(){this.domPlayer&&this.domPlayer.cancel()}restart(){this.reset(),this.play()}hasStarted(){return this._started}destroy(){this._destroyed||(this._destroyed=!0,this._resetDomPlayerState(),this._onFinish(),this._specialStyles&&this._specialStyles.destroy(),this._onDestroyFns.forEach(e=>e()),this._onDestroyFns=[])}setPosition(e){this.domPlayer===void 0&&this.init(),this.domPlayer.currentTime=e*this.time}getPosition(){return+(this.domPlayer.currentTime??0)/this.time}get totalTime(){return this._delay+this._duration}beforeDestroy(){let e=new Map;this.hasStarted()&&this._finalKeyframe.forEach((s,i)=>{i!=="offset"&&e.set(i,this._finished?s:rt(this.element,i))}),this.currentSnapshot=e}triggerCallback(e){let t=e==="start"?this._onStartFns:this._onDoneFns;t.forEach(s=>s()),t.length=0}},Je=class{validateStyleProperty(e){return!0}validateAnimatableStyleProperty(e){return!0}containsElement(e,t){return Ft(e,t)}getParentElement(e){return st(e)}query(e,t,s){return It(e,t,s)}computeStyle(e,t,s){return rt(e,t)}animate(e,t,s,i,r,a=[]){let o=i==0?"both":"forwards",l={duration:s,delay:i,fill:o};r&&(l.easing=r);let h=new Map,c=a.filter(y=>y instanceof we);Is(s,i)&&c.forEach(y=>{y.currentSnapshot.forEach((d,g)=>h.set(g,d))});let u=Os(t).map(y=>new Map(y));u=zs(e,u,h);let _=pi(e,u);return new we(e,u,l,_)}};function Ai(n,e){return n==="noop"?new ve(e,new zt,new Ie):new ve(e,new Je,new Be)}var Rt=class{constructor(e,t){this._driver=e;let s=[],i=[],r=at(e,t,s,i);if(s.length)throw cs(s);i.length&&void 0,this._animationAst=r}buildTimelines(e,t,s,i,r){let a=Array.isArray(t)?Tt(t):t,o=Array.isArray(s)?Tt(s):s,l=[];r=r||new te;let h=lt(this._driver,e,this._animationAst,it,pe,a,o,i,r,l);if(l.length)throw fs(l);return h}},me="@",Ut="@.disabled",be=class{constructor(e,t,s,i){this.namespaceId=e,this.delegate=t,this.engine=s,this._onDestroy=i,this.\u0275type=0}get data(){return this.delegate.data}destroyNode(e){this.delegate.destroyNode?.(e)}destroy(){this.engine.destroy(this.namespaceId,this.delegate),this.engine.afterFlushAnimationsDone(()=>{queueMicrotask(()=>{this.delegate.destroy()})}),this._onDestroy?.()}createElement(e,t){return this.delegate.createElement(e,t)}createComment(e){return this.delegate.createComment(e)}createText(e){return this.delegate.createText(e)}appendChild(e,t){this.delegate.appendChild(e,t),this.engine.onInsert(this.namespaceId,t,e,!1)}insertBefore(e,t,s,i=!0){this.delegate.insertBefore(e,t,s),this.engine.onInsert(this.namespaceId,t,e,i)}removeChild(e,t,s){this.parentNode(t)&&this.engine.onRemove(this.namespaceId,t,this.delegate)}selectRootElement(e,t){return this.delegate.selectRootElement(e,t)}parentNode(e){return this.delegate.parentNode(e)}nextSibling(e){return this.delegate.nextSibling(e)}setAttribute(e,t,s,i){this.delegate.setAttribute(e,t,s,i)}removeAttribute(e,t,s){this.delegate.removeAttribute(e,t,s)}addClass(e,t){this.delegate.addClass(e,t)}removeClass(e,t){this.delegate.removeClass(e,t)}setStyle(e,t,s,i){this.delegate.setStyle(e,t,s,i)}removeStyle(e,t,s){this.delegate.removeStyle(e,t,s)}setProperty(e,t,s){t.charAt(0)==me&&t==Ut?this.disableAnimations(e,!!s):this.delegate.setProperty(e,t,s)}setValue(e,t){this.delegate.setValue(e,t)}listen(e,t,s){return this.delegate.listen(e,t,s)}disableAnimations(e,t){this.engine.disableAnimations(e,t)}},xe=class extends be{constructor(e,t,s,i,r){super(t,s,i,r),this.factory=e,this.namespaceId=t}setProperty(e,t,s){t.charAt(0)==me?t.charAt(1)=="."&&t==Ut?(s=s===void 0?!0:!!s,this.disableAnimations(e,s)):this.engine.process(this.namespaceId,e,t.slice(1),s):this.delegate.setProperty(e,t,s)}listen(e,t,s){if(t.charAt(0)==me){let i=yi(e),r=t.slice(1),a="";return r.charAt(0)!=me&&([r,a]=_i(r)),this.engine.listen(this.namespaceId,i,r,a,o=>{let l=o._data||-1;this.factory.scheduleListenerCallback(l,s,o)})}return this.delegate.listen(e,t,s)}};function yi(n){switch(n){case"body":return document.body;case"document":return document;case"window":return window;default:return n}}function _i(n){let e=n.indexOf("."),t=n.substring(0,e),s=n.slice(e+1);return[t,s]}var Ot=class{constructor(e,t,s){this.delegate=e,this.engine=t,this._zone=s,this._currentId=0,this._microtaskId=1,this._animationCallbacksBuffer=[],this._rendererCache=new Map,this._cdRecurDepth=0,t.onRemovalComplete=(i,r)=>{r?.removeChild(null,i)}}createRenderer(e,t){let s="",i=this.delegate.createRenderer(e,t);if(!e||!t?.data?.animation){let h=this._rendererCache,c=h.get(i);if(!c){let u=()=>h.delete(i);c=new be(s,i,this.engine,u),h.set(i,c)}return c}let r=t.id,a=t.id+"-"+this._currentId;this._currentId++,this.engine.register(a,e);let o=h=>{Array.isArray(h)?h.forEach(o):this.engine.registerTrigger(r,a,e,h.name,h)};return t.data.animation.forEach(o),new xe(this,a,i,this.engine)}begin(){this._cdRecurDepth++,this.delegate.begin&&this.delegate.begin()}_scheduleCountTask(){queueMicrotask(()=>{this._microtaskId++})}scheduleListenerCallback(e,t,s){if(e>=0&&et(s));return}let i=this._animationCallbacksBuffer;i.length==0&&queueMicrotask(()=>{this._zone.run(()=>{i.forEach(r=>{let[a,o]=r;a(o)}),this._animationCallbacksBuffer=[]})}),i.push([t,s])}end(){this._cdRecurDepth--,this._cdRecurDepth==0&&this._zone.runOutsideAngular(()=>{this._scheduleCountTask(),this.engine.flush(this._microtaskId)}),this.delegate.end&&this.delegate.end()}whenRenderingDone(){return this.engine.whenRenderingDone()}};export{St as AnimationDriver,zt as NoopAnimationDriver,Rt as \u0275Animation,ve as \u0275AnimationEngine,xe as \u0275AnimationRenderer,Ot as \u0275AnimationRendererFactory,Fe as \u0275AnimationStyleNormalizer,be as \u0275BaseAnimationRenderer,Ie as \u0275NoopAnimationStyleNormalizer,Je as \u0275WebAnimationsDriver,we as \u0275WebAnimationsPlayer,Be as \u0275WebAnimationsStyleNormalizer,Is as \u0275allowPreviousPlayerStylesMerge,bi as \u0275camelCaseToDashCase,Ft as \u0275containsElement,Ai as \u0275createEngine,st as \u0275getParentElement,It as \u0275invokeQuery,Os as \u0275normalizeKeyframes,Ms as \u0275validateStyleProperty,wi as \u0275validateWebAnimatableStyleProperty}; diff --git a/webui/dist/bitmagnet/browser/chunk-FKMTSCBK.js b/webui/dist/bitmagnet/browser/chunk-FKMTSCBK.js new file mode 100644 index 0000000..0ad0453 --- /dev/null +++ b/webui/dist/bitmagnet/browser/chunk-FKMTSCBK.js @@ -0,0 +1,2 @@ +import{$ as Cr,$a as Lr,A as Rr,Aa as le,Ab as Wr,Ac as wn,B as S,Ba as F,Bb as yn,Bc as Tt,C as mt,Cc as bt,D as U,Da as Rt,Dc as Ct,E as Le,F as Sr,Fb as Hr,Fc as Et,G as on,Gb as Xr,Hc as ni,Ia as hn,Ic as It,Ja as Pr,Ka as dn,L as H,Ma as _e,N as me,Na as ye,Nc as ri,Oa as q,Oc as Rn,P as ee,Pa as fn,Pc as ii,Qa as pn,Qc as si,R as an,Rc as x,S as ve,Sa as Nr,Sb as Jr,Sc as oi,T as Tr,Ta as gn,Tc as $e,Ua as xr,Uc as ai,Va as he,Vc as ci,W as ue,Wc as ze,X as te,Xa as mn,Xc as Mt,Y as cn,Ya as we,Z as br,Za as Re,Zb as Zr,_a as Ur,a as f,ab as kr,b as P,bb as jr,cb as _r,cd as ui,d as tn,da as Er,db as Fr,dc as Kr,e as vr,ea as L,eb as $r,ed as At,fa as Ir,fb as de,fc as Yr,fd as li,g as yr,gc as Qr,gd as Dt,h as nn,ha as D,i as rn,ia as E,ib as zr,j as sn,jb as Fe,k as Y,ka as R,l as _,la as vt,lb as z,ma as Mr,mb as Br,na as C,o as Q,oa as un,pa as m,pc as ei,qa as d,qb as Vr,ra as ln,rb as vn,sa as Ar,sb as qr,ta as ke,ua as Dr,va as yt,w as O,wa as wt,x as p,y as Ue,ya as je,yc as St,z as wr,za as Or,zb as Gr,zc as ti}from"./chunk-3DR3CJRN.js";var Ve=class{},Pt=class{},X=class t{constructor(n){this.normalizedNames=new Map,this.lazyUpdate=null,n?typeof n=="string"?this.lazyInit=()=>{this.headers=new Map,n.split(` +`).forEach(e=>{let r=e.indexOf(":");if(r>0){let i=e.slice(0,r),s=i.toLowerCase(),o=e.slice(r+1).trim();this.maybeSetNormalizedName(i,s),this.headers.has(s)?this.headers.get(s).push(o):this.headers.set(s,[o])}})}:typeof Headers<"u"&&n instanceof Headers?(this.headers=new Map,n.forEach((e,r)=>{this.setHeaderEntries(r,e)})):this.lazyInit=()=>{this.headers=new Map,Object.entries(n).forEach(([e,r])=>{this.setHeaderEntries(e,r)})}:this.headers=new Map}has(n){return this.init(),this.headers.has(n.toLowerCase())}get(n){this.init();let e=this.headers.get(n.toLowerCase());return e&&e.length>0?e[0]:null}keys(){return this.init(),Array.from(this.normalizedNames.values())}getAll(n){return this.init(),this.headers.get(n.toLowerCase())||null}append(n,e){return this.clone({name:n,value:e,op:"a"})}set(n,e){return this.clone({name:n,value:e,op:"s"})}delete(n,e){return this.clone({name:n,value:e,op:"d"})}maybeSetNormalizedName(n,e){this.normalizedNames.has(e)||this.normalizedNames.set(e,n)}init(){this.lazyInit&&(this.lazyInit instanceof t?this.copyFrom(this.lazyInit):this.lazyInit(),this.lazyInit=null,this.lazyUpdate&&(this.lazyUpdate.forEach(n=>this.applyUpdate(n)),this.lazyUpdate=null))}copyFrom(n){n.init(),Array.from(n.headers.keys()).forEach(e=>{this.headers.set(e,n.headers.get(e)),this.normalizedNames.set(e,n.normalizedNames.get(e))})}clone(n){let e=new t;return e.lazyInit=this.lazyInit&&this.lazyInit instanceof t?this.lazyInit:this,e.lazyUpdate=(this.lazyUpdate||[]).concat([n]),e}applyUpdate(n){let e=n.name.toLowerCase();switch(n.op){case"a":case"s":let r=n.value;if(typeof r=="string"&&(r=[r]),r.length===0)return;this.maybeSetNormalizedName(n.name,e);let i=(n.op==="a"?this.headers.get(e):void 0)||[];i.push(...r),this.headers.set(e,i);break;case"d":let s=n.value;if(!s)this.headers.delete(e),this.normalizedNames.delete(e);else{let o=this.headers.get(e);if(!o)return;o=o.filter(c=>s.indexOf(c)===-1),o.length===0?(this.headers.delete(e),this.normalizedNames.delete(e)):this.headers.set(e,o)}break}}setHeaderEntries(n,e){let r=(Array.isArray(e)?e:[e]).map(s=>s.toString()),i=n.toLowerCase();this.headers.set(i,r),this.maybeSetNormalizedName(n,i)}forEach(n){this.init(),Array.from(this.normalizedNames.keys()).forEach(e=>n(this.normalizedNames.get(e),this.headers.get(e)))}};var Tn=class{encodeKey(n){return hi(n)}encodeValue(n){return hi(n)}decodeKey(n){return decodeURIComponent(n)}decodeValue(n){return decodeURIComponent(n)}};function As(t,n){let e=new Map;return t.length>0&&t.replace(/^\?/,"").split("&").forEach(i=>{let s=i.indexOf("="),[o,c]=s==-1?[n.decodeKey(i),""]:[n.decodeKey(i.slice(0,s)),n.decodeValue(i.slice(s+1))],a=e.get(o)||[];a.push(c),e.set(o,a)}),e}var Ds=/%(\d[a-f0-9])/gi,Os={40:"@","3A":":",24:"$","2C":",","3B":";","3D":"=","3F":"?","2F":"/"};function hi(t){return encodeURIComponent(t).replace(Ds,(n,e)=>Os[e]??n)}function Ot(t){return`${t}`}var re=class t{constructor(n={}){if(this.updates=null,this.cloneFrom=null,this.encoder=n.encoder||new Tn,n.fromString){if(n.fromObject)throw new Error("Cannot specify both fromString and fromObject.");this.map=As(n.fromString,this.encoder)}else n.fromObject?(this.map=new Map,Object.keys(n.fromObject).forEach(e=>{let r=n.fromObject[e],i=Array.isArray(r)?r.map(Ot):[Ot(r)];this.map.set(e,i)})):this.map=null}has(n){return this.init(),this.map.has(n)}get(n){this.init();let e=this.map.get(n);return e?e[0]:null}getAll(n){return this.init(),this.map.get(n)||null}keys(){return this.init(),Array.from(this.map.keys())}append(n,e){return this.clone({param:n,value:e,op:"a"})}appendAll(n){let e=[];return Object.keys(n).forEach(r=>{let i=n[r];Array.isArray(i)?i.forEach(s=>{e.push({param:r,value:s,op:"a"})}):e.push({param:r,value:i,op:"a"})}),this.clone(e)}set(n,e){return this.clone({param:n,value:e,op:"s"})}delete(n,e){return this.clone({param:n,value:e,op:"d"})}toString(){return this.init(),this.keys().map(n=>{let e=this.encoder.encodeKey(n);return this.map.get(n).map(r=>e+"="+this.encoder.encodeValue(r)).join("&")}).filter(n=>n!=="").join("&")}clone(n){let e=new t({encoder:this.encoder});return e.cloneFrom=this.cloneFrom||this,e.updates=(this.updates||[]).concat(n),e}init(){this.map===null&&(this.map=new Map),this.cloneFrom!==null&&(this.cloneFrom.init(),this.cloneFrom.keys().forEach(n=>this.map.set(n,this.cloneFrom.map.get(n))),this.updates.forEach(n=>{switch(n.op){case"a":case"s":let e=(n.op==="a"?this.map.get(n.param):void 0)||[];e.push(Ot(n.value)),this.map.set(n.param,e);break;case"d":if(n.value!==void 0){let r=this.map.get(n.param)||[],i=r.indexOf(Ot(n.value));i!==-1&&r.splice(i,1),r.length>0?this.map.set(n.param,r):this.map.delete(n.param)}else{this.map.delete(n.param);break}}}),this.cloneFrom=this.updates=null)}};var bn=class{constructor(){this.map=new Map}set(n,e){return this.map.set(n,e),this}get(n){return this.map.has(n)||this.map.set(n,n.defaultValue()),this.map.get(n)}delete(n){return this.map.delete(n),this}has(n){return this.map.has(n)}keys(){return this.map.keys()}};function Ps(t){switch(t){case"DELETE":case"GET":case"HEAD":case"OPTIONS":case"JSONP":return!1;default:return!0}}function di(t){return typeof ArrayBuffer<"u"&&t instanceof ArrayBuffer}function fi(t){return typeof Blob<"u"&&t instanceof Blob}function pi(t){return typeof FormData<"u"&&t instanceof FormData}function Ns(t){return typeof URLSearchParams<"u"&&t instanceof URLSearchParams}var Be=class t{constructor(n,e,r,i){this.url=e,this.body=null,this.reportProgress=!1,this.withCredentials=!1,this.responseType="json",this.method=n.toUpperCase();let s;if(Ps(this.method)||i?(this.body=r!==void 0?r:null,s=i):s=r,s&&(this.reportProgress=!!s.reportProgress,this.withCredentials=!!s.withCredentials,s.responseType&&(this.responseType=s.responseType),s.headers&&(this.headers=s.headers),s.context&&(this.context=s.context),s.params&&(this.params=s.params),this.transferCache=s.transferCache),this.headers??=new X,this.context??=new bn,!this.params)this.params=new re,this.urlWithParams=e;else{let o=this.params.toString();if(o.length===0)this.urlWithParams=e;else{let c=e.indexOf("?"),a=c===-1?"?":cy.set(T,n.setHeaders[T]),u)),n.setParams&&(l=Object.keys(n.setParams).reduce((y,T)=>y.set(T,n.setParams[T]),l)),new t(e,r,o,{params:l,headers:u,context:h,reportProgress:a,responseType:i,withCredentials:c,transferCache:s})}},ie=function(t){return t[t.Sent=0]="Sent",t[t.UploadProgress=1]="UploadProgress",t[t.ResponseHeader=2]="ResponseHeader",t[t.DownloadProgress=3]="DownloadProgress",t[t.Response=4]="Response",t[t.User=5]="User",t}(ie||{}),qe=class{constructor(n,e=200,r="OK"){this.headers=n.headers||new X,this.status=n.status!==void 0?n.status:e,this.statusText=n.statusText||r,this.url=n.url||null,this.ok=this.status>=200&&this.status<300}},Nt=class t extends qe{constructor(n={}){super(n),this.type=ie.ResponseHeader}clone(n={}){return new t({headers:n.headers||this.headers,status:n.status!==void 0?n.status:this.status,statusText:n.statusText||this.statusText,url:n.url||this.url||void 0})}},Ge=class t extends qe{constructor(n={}){super(n),this.type=ie.Response,this.body=n.body!==void 0?n.body:null}clone(n={}){return new t({body:n.body!==void 0?n.body:this.body,headers:n.headers||this.headers,status:n.status!==void 0?n.status:this.status,statusText:n.statusText||this.statusText,url:n.url||this.url||void 0})}},ne=class extends qe{constructor(n){super(n,0,"Unknown Error"),this.name="HttpErrorResponse",this.ok=!1,this.status>=200&&this.status<300?this.message=`Http failure during parsing for ${n.url||"(unknown url)"}`:this.message=`Http failure response for ${n.url||"(unknown url)"}: ${n.status} ${n.statusText}`,this.error=n.error||null}},Ri=200,xs=204;function Sn(t,n){return{body:n,headers:t.headers,context:t.context,observe:t.observe,params:t.params,reportProgress:t.reportProgress,responseType:t.responseType,withCredentials:t.withCredentials,transferCache:t.transferCache}}var Us=(()=>{class t{constructor(e){this.handler=e}request(e,r,i={}){let s;if(e instanceof Be)s=e;else{let a;i.headers instanceof X?a=i.headers:a=new X(i.headers);let u;i.params&&(i.params instanceof re?u=i.params:u=new re({fromObject:i.params})),s=new Be(e,r,i.body!==void 0?i.body:null,{headers:a,context:i.context,params:u,reportProgress:i.reportProgress,responseType:i.responseType||"json",withCredentials:i.withCredentials,transferCache:i.transferCache})}let o=p(s).pipe(ee(a=>this.handler.handle(a)));if(e instanceof Be||i.observe==="events")return o;let c=o.pipe(H(a=>a instanceof Ge));switch(i.observe||"body"){case"body":switch(s.responseType){case"arraybuffer":return c.pipe(S(a=>{if(a.body!==null&&!(a.body instanceof ArrayBuffer))throw new Error("Response is not an ArrayBuffer.");return a.body}));case"blob":return c.pipe(S(a=>{if(a.body!==null&&!(a.body instanceof Blob))throw new Error("Response is not a Blob.");return a.body}));case"text":return c.pipe(S(a=>{if(a.body!==null&&typeof a.body!="string")throw new Error("Response is not a string.");return a.body}));case"json":default:return c.pipe(S(a=>a.body))}case"response":return c;default:throw new Error(`Unreachable: unhandled observe type ${i.observe}}`)}}delete(e,r={}){return this.request("DELETE",e,r)}get(e,r={}){return this.request("GET",e,r)}head(e,r={}){return this.request("HEAD",e,r)}jsonp(e,r){return this.request("JSONP",e,{params:new re().append(r,"JSONP_CALLBACK"),observe:"body",responseType:"json"})}options(e,r={}){return this.request("OPTIONS",e,r)}patch(e,r,i={}){return this.request("PATCH",e,Sn(i,r))}post(e,r,i={}){return this.request("POST",e,Sn(i,r))}put(e,r,i={}){return this.request("PUT",e,Sn(i,r))}static{this.\u0275fac=function(r){return new(r||t)(m(Ve))}}static{this.\u0275prov=R({token:t,factory:t.\u0275fac})}}return t})(),Ls=/^\)\]\}',?\n/,ks="X-Request-URL";function gi(t){if(t.url)return t.url;let n=ks.toLocaleLowerCase();return t.headers.get(n)}var js=(()=>{class t{constructor(){this.fetchImpl=d(Cn,{optional:!0})?.fetch??((...e)=>globalThis.fetch(...e)),this.ngZone=d(q)}handle(e){return new nn(r=>{let i=new AbortController;return this.doRequest(e,i.signal,r).then(En,s=>r.error(new ne({error:s}))),()=>i.abort()})}doRequest(e,r,i){return tn(this,null,function*(){let s=this.createRequestInit(e),o;try{let T=this.ngZone.runOutsideAngular(()=>this.fetchImpl(e.urlWithParams,f({signal:r},s)));_s(T),i.next({type:ie.Sent}),o=yield T}catch(T){i.error(new ne({error:T,status:T.status??0,statusText:T.statusText,url:e.urlWithParams,headers:T.headers}));return}let c=new X(o.headers),a=o.statusText,u=gi(o)??e.urlWithParams,l=o.status,h=null;if(e.reportProgress&&i.next(new Nt({headers:c,status:l,statusText:a,url:u})),o.body){let T=o.headers.get("content-length"),M=[],w=o.body.getReader(),v=0,N,K,I=typeof Zone<"u"&&Zone.current;yield this.ngZone.runOutsideAngular(()=>tn(this,null,function*(){for(;;){let{done:ce,value:xe}=yield w.read();if(ce)break;if(M.push(xe),v+=xe.length,e.reportProgress){K=e.responseType==="text"?(K??"")+(N??=new TextDecoder).decode(xe,{stream:!0}):void 0;let mr=()=>i.next({type:ie.DownloadProgress,total:T?+T:void 0,loaded:v,partialText:K});I?I.run(mr):mr()}}}));let Ne=this.concatChunks(M,v);try{let ce=o.headers.get("Content-Type")??"";h=this.parseBody(e,Ne,ce)}catch(ce){i.error(new ne({error:ce,headers:new X(o.headers),status:o.status,statusText:o.statusText,url:gi(o)??e.urlWithParams}));return}}l===0&&(l=h?Ri:0),l>=200&&l<300?(i.next(new Ge({body:h,headers:c,status:l,statusText:a,url:u})),i.complete()):i.error(new ne({error:h,headers:c,status:l,statusText:a,url:u}))})}parseBody(e,r,i){switch(e.responseType){case"json":let s=new TextDecoder().decode(r).replace(Ls,"");return s===""?null:JSON.parse(s);case"text":return new TextDecoder().decode(r);case"blob":return new Blob([r],{type:i});case"arraybuffer":return r.buffer}}createRequestInit(e){let r={},i=e.withCredentials?"include":void 0;if(e.headers.forEach((s,o)=>r[s]=o.join(",")),e.headers.has("Accept")||(r.Accept="application/json, text/plain, */*"),!e.headers.has("Content-Type")){let s=e.detectContentTypeHeader();s!==null&&(r["Content-Type"]=s)}return{body:e.serializeBody(),method:e.method,headers:r,credentials:i}}concatChunks(e,r){let i=new Uint8Array(r),s=0;for(let o of e)i.set(o,s),s+=o.length;return i}static{this.\u0275fac=function(r){return new(r||t)}}static{this.\u0275prov=R({token:t,factory:t.\u0275fac})}}return t})(),Cn=class{};function En(){}function _s(t){t.then(En,En)}function Si(t,n){return n(t)}function Fs(t,n){return(e,r)=>n.intercept(e,{handle:i=>t(i,r)})}function $s(t,n,e){return(r,i)=>F(e,()=>n(r,s=>t(s,i)))}var zs=new C(""),In=new C(""),Bs=new C(""),Ti=new C("",{providedIn:"root",factory:()=>!0});function Vs(){let t=null;return(n,e)=>{t===null&&(t=(d(zs,{optional:!0})??[]).reduceRight(Fs,Si));let r=d(_e);if(d(Ti)){let s=r.add();return t(n,e).pipe(ue(()=>r.remove(s)))}else return t(n,e)}}var mi=(()=>{class t extends Ve{constructor(e,r){super(),this.backend=e,this.injector=r,this.chain=null,this.pendingTasks=d(_e),this.contributeToStability=d(Ti)}handle(e){if(this.chain===null){let r=Array.from(new Set([...this.injector.get(In),...this.injector.get(Bs,[])]));this.chain=r.reduceRight((i,s)=>$s(i,s,this.injector),Si)}if(this.contributeToStability){let r=this.pendingTasks.add();return this.chain(e,i=>this.backend.handle(i)).pipe(ue(()=>this.pendingTasks.remove(r)))}else return this.chain(e,r=>this.backend.handle(r))}static{this.\u0275fac=function(r){return new(r||t)(m(Pt),m(le))}}static{this.\u0275prov=R({token:t,factory:t.\u0275fac})}}return t})();var qs=/^\)\]\}',?\n/;function Gs(t){return"responseURL"in t&&t.responseURL?t.responseURL:/^X-Request-URL:/m.test(t.getAllResponseHeaders())?t.getResponseHeader("X-Request-URL"):null}var vi=(()=>{class t{constructor(e){this.xhrFactory=e}handle(e){if(e.method==="JSONP")throw new E(-2800,!1);let r=this.xhrFactory;return(r.\u0275loadImpl?O(r.\u0275loadImpl()):p(null)).pipe(L(()=>new nn(s=>{let o=r.build();if(o.open(e.method,e.urlWithParams),e.withCredentials&&(o.withCredentials=!0),e.headers.forEach((w,v)=>o.setRequestHeader(w,v.join(","))),e.headers.has("Accept")||o.setRequestHeader("Accept","application/json, text/plain, */*"),!e.headers.has("Content-Type")){let w=e.detectContentTypeHeader();w!==null&&o.setRequestHeader("Content-Type",w)}if(e.responseType){let w=e.responseType.toLowerCase();o.responseType=w!=="json"?w:"text"}let c=e.serializeBody(),a=null,u=()=>{if(a!==null)return a;let w=o.statusText||"OK",v=new X(o.getAllResponseHeaders()),N=Gs(o)||e.url;return a=new Nt({headers:v,status:o.status,statusText:w,url:N}),a},l=()=>{let{headers:w,status:v,statusText:N,url:K}=u(),I=null;v!==xs&&(I=typeof o.response>"u"?o.responseText:o.response),v===0&&(v=I?Ri:0);let Ne=v>=200&&v<300;if(e.responseType==="json"&&typeof I=="string"){let ce=I;I=I.replace(qs,"");try{I=I!==""?JSON.parse(I):null}catch(xe){I=ce,Ne&&(Ne=!1,I={error:xe,text:I})}}Ne?(s.next(new Ge({body:I,headers:w,status:v,statusText:N,url:K||void 0})),s.complete()):s.error(new ne({error:I,headers:w,status:v,statusText:N,url:K||void 0}))},h=w=>{let{url:v}=u(),N=new ne({error:w,status:o.status||0,statusText:o.statusText||"Unknown Error",url:v||void 0});s.error(N)},y=!1,T=w=>{y||(s.next(u()),y=!0);let v={type:ie.DownloadProgress,loaded:w.loaded};w.lengthComputable&&(v.total=w.total),e.responseType==="text"&&o.responseText&&(v.partialText=o.responseText),s.next(v)},M=w=>{let v={type:ie.UploadProgress,loaded:w.loaded};w.lengthComputable&&(v.total=w.total),s.next(v)};return o.addEventListener("load",l),o.addEventListener("error",h),o.addEventListener("timeout",h),o.addEventListener("abort",h),e.reportProgress&&(o.addEventListener("progress",T),c!==null&&o.upload&&o.upload.addEventListener("progress",M)),o.send(c),s.next({type:ie.Sent}),()=>{o.removeEventListener("error",h),o.removeEventListener("abort",h),o.removeEventListener("load",l),o.removeEventListener("timeout",h),e.reportProgress&&(o.removeEventListener("progress",T),c!==null&&o.upload&&o.upload.removeEventListener("progress",M)),o.readyState!==o.DONE&&o.abort()}})))}static{this.\u0275fac=function(r){return new(r||t)(m(Dt))}}static{this.\u0275prov=R({token:t,factory:t.\u0275fac})}}return t})(),bi=new C(""),Ws="XSRF-TOKEN",Hs=new C("",{providedIn:"root",factory:()=>Ws}),Xs="X-XSRF-TOKEN",Js=new C("",{providedIn:"root",factory:()=>Xs}),xt=class{},Zs=(()=>{class t{constructor(e,r,i){this.doc=e,this.platform=r,this.cookieName=i,this.lastCookieString="",this.lastToken=null,this.parseCount=0}getToken(){if(this.platform==="server")return null;let e=this.doc.cookie||"";return e!==this.lastCookieString&&(this.parseCount++,this.lastToken=Mt(e,this.cookieName),this.lastCookieString=e),this.lastToken}static{this.\u0275fac=function(r){return new(r||t)(m(x),m(he),m(Hs))}}static{this.\u0275prov=R({token:t,factory:t.\u0275fac})}}return t})();function Ks(t,n){let e=t.url.toLowerCase();if(!d(bi)||t.method==="GET"||t.method==="HEAD"||e.startsWith("http://")||e.startsWith("https://"))return n(t);let r=d(xt).getToken(),i=d(Js);return r!=null&&!t.headers.has(i)&&(t=t.clone({headers:t.headers.set(i,r)})),n(t)}var Ci=function(t){return t[t.Interceptors=0]="Interceptors",t[t.LegacyInterceptors=1]="LegacyInterceptors",t[t.CustomXsrfConfiguration=2]="CustomXsrfConfiguration",t[t.NoXsrfProtection=3]="NoXsrfProtection",t[t.JsonpSupport=4]="JsonpSupport",t[t.RequestsMadeViaParent=5]="RequestsMadeViaParent",t[t.Fetch=6]="Fetch",t}(Ci||{});function Ys(t,n){return{\u0275kind:t,\u0275providers:n}}function kc(...t){let n=[Us,vi,mi,{provide:Ve,useExisting:mi},{provide:Pt,useFactory:()=>d(js,{optional:!0})??d(vi)},{provide:In,useValue:Ks,multi:!0},{provide:bi,useValue:!0},{provide:xt,useClass:Zs}];for(let e of t)n.push(...e.\u0275providers);return je(n)}var yi=new C("");function jc(){return Ys(Ci.LegacyInterceptors,[{provide:yi,useFactory:Vs},{provide:In,useExisting:yi,multi:!0}])}var Dn=class extends si{constructor(){super(...arguments),this.supportsDOMEvents=!0}},On=class t extends Dn{static makeCurrent(){ii(new t)}onAndCancel(n,e,r){return n.addEventListener(e,r),()=>{n.removeEventListener(e,r)}}dispatchEvent(n,e){n.dispatchEvent(e)}remove(n){n.remove()}createElement(n,e){return e=e||this.getDefaultDocument(),e.createElement(n)}createHtmlDocument(){return document.implementation.createHTMLDocument("fakeTitle")}getDefaultDocument(){return document}isElementNode(n){return n.nodeType===Node.ELEMENT_NODE}isShadowRoot(n){return n instanceof DocumentFragment}getGlobalEventTarget(n,e){return e==="window"?window:e==="document"?n:e==="body"?n.body:null}getBaseHref(n){let e=to();return e==null?null:no(e)}resetBaseElement(){We=null}getUserAgent(){return window.navigator.userAgent}getCookie(n){return Mt(document.cookie,n)}},We=null;function to(){return We=We||document.querySelector("base"),We?We.getAttribute("href"):null}function no(t){return new URL(t,document.baseURI).pathname}var ro=(()=>{class t{build(){return new XMLHttpRequest}static{this.\u0275fac=function(r){return new(r||t)}}static{this.\u0275prov=R({token:t,factory:t.\u0275fac})}}return t})(),Pn=new C(""),Ai=(()=>{class t{constructor(e,r){this._zone=r,this._eventNameToPlugin=new Map,e.forEach(i=>{i.manager=this}),this._plugins=e.slice().reverse()}addEventListener(e,r,i){return this._findPluginFor(r).addEventListener(e,r,i)}getZone(){return this._zone}_findPluginFor(e){let r=this._eventNameToPlugin.get(e);if(r)return r;if(r=this._plugins.find(s=>s.supports(e)),!r)throw new E(5101,!1);return this._eventNameToPlugin.set(e,r),r}static{this.\u0275fac=function(r){return new(r||t)(m(Pn),m(q))}}static{this.\u0275prov=R({token:t,factory:t.\u0275fac})}}return t})(),Ut=class{constructor(n){this._doc=n}},Mn="ng-app-id",Di=(()=>{class t{constructor(e,r,i,s={}){this.doc=e,this.appId=r,this.nonce=i,this.platformId=s,this.styleRef=new Map,this.hostNodes=new Set,this.styleNodesInDOM=this.collectServerRenderedStyles(),this.platformIsServer=At(s),this.resetHostNodes()}addStyles(e){for(let r of e)this.changeUsageCount(r,1)===1&&this.onStyleAdded(r)}removeStyles(e){for(let r of e)this.changeUsageCount(r,-1)<=0&&this.onStyleRemoved(r)}ngOnDestroy(){let e=this.styleNodesInDOM;e&&(e.forEach(r=>r.remove()),e.clear());for(let r of this.getAllStyles())this.onStyleRemoved(r);this.resetHostNodes()}addHost(e){this.hostNodes.add(e);for(let r of this.getAllStyles())this.addStyleToHost(e,r)}removeHost(e){this.hostNodes.delete(e)}getAllStyles(){return this.styleRef.keys()}onStyleAdded(e){for(let r of this.hostNodes)this.addStyleToHost(r,e)}onStyleRemoved(e){let r=this.styleRef;r.get(e)?.elements?.forEach(i=>i.remove()),r.delete(e)}collectServerRenderedStyles(){let e=this.doc.head?.querySelectorAll(`style[${Mn}="${this.appId}"]`);if(e?.length){let r=new Map;return e.forEach(i=>{i.textContent!=null&&r.set(i.textContent,i)}),r}return null}changeUsageCount(e,r){let i=this.styleRef;if(i.has(e)){let s=i.get(e);return s.usage+=r,s.usage}return i.set(e,{usage:r,elements:[]}),r}getStyleElement(e,r){let i=this.styleNodesInDOM,s=i?.get(r);if(s?.parentNode===e)return i.delete(r),s.removeAttribute(Mn),s;{let o=this.doc.createElement("style");return this.nonce&&o.setAttribute("nonce",this.nonce),o.textContent=r,this.platformIsServer&&o.setAttribute(Mn,this.appId),e.appendChild(o),o}}addStyleToHost(e,r){let i=this.getStyleElement(e,r),s=this.styleRef,o=s.get(r)?.elements;o?o.push(i):s.set(r,{elements:[i],usage:1})}resetHostNodes(){let e=this.hostNodes;e.clear(),e.add(this.doc.head)}static{this.\u0275fac=function(r){return new(r||t)(m(x),m(gn),m(mn,8),m(he))}}static{this.\u0275prov=R({token:t,factory:t.\u0275fac})}}return t})(),An={svg:"http://www.w3.org/2000/svg",xhtml:"http://www.w3.org/1999/xhtml",xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/",math:"http://www.w3.org/1998/Math/MathML"},xn=/%COMP%/g,Oi="%COMP%",io=`_nghost-${Oi}`,so=`_ngcontent-${Oi}`,oo=!0,ao=new C("",{providedIn:"root",factory:()=>oo});function co(t){return so.replace(xn,t)}function uo(t){return io.replace(xn,t)}function Pi(t,n){return n.map(e=>e.replace(xn,t))}var Ei=(()=>{class t{constructor(e,r,i,s,o,c,a,u=null){this.eventManager=e,this.sharedStylesHost=r,this.appId=i,this.removeStylesOnCompDestroy=s,this.doc=o,this.platformId=c,this.ngZone=a,this.nonce=u,this.rendererByCompId=new Map,this.platformIsServer=At(c),this.defaultRenderer=new He(e,o,a,this.platformIsServer)}createRenderer(e,r){if(!e||!r)return this.defaultRenderer;this.platformIsServer&&r.encapsulation===ke.ShadowDom&&(r=P(f({},r),{encapsulation:ke.Emulated}));let i=this.getOrCreateRenderer(e,r);return i instanceof Lt?i.applyToHost(e):i instanceof Xe&&i.applyStyles(),i}getOrCreateRenderer(e,r){let i=this.rendererByCompId,s=i.get(r.id);if(!s){let o=this.doc,c=this.ngZone,a=this.eventManager,u=this.sharedStylesHost,l=this.removeStylesOnCompDestroy,h=this.platformIsServer;switch(r.encapsulation){case ke.Emulated:s=new Lt(a,u,r,this.appId,l,o,c,h);break;case ke.ShadowDom:return new Nn(a,u,e,r,o,c,this.nonce,h);default:s=new Xe(a,u,r,l,o,c,h);break}i.set(r.id,s)}return s}ngOnDestroy(){this.rendererByCompId.clear()}static{this.\u0275fac=function(r){return new(r||t)(m(Ai),m(Di),m(gn),m(ao),m(x),m(he),m(q),m(mn))}}static{this.\u0275prov=R({token:t,factory:t.\u0275fac})}}return t})(),He=class{constructor(n,e,r,i){this.eventManager=n,this.doc=e,this.ngZone=r,this.platformIsServer=i,this.data=Object.create(null),this.throwOnSyntheticProps=!0,this.destroyNode=null}destroy(){}createElement(n,e){return e?this.doc.createElementNS(An[e]||e,n):this.doc.createElement(n)}createComment(n){return this.doc.createComment(n)}createText(n){return this.doc.createTextNode(n)}appendChild(n,e){(Ii(n)?n.content:n).appendChild(e)}insertBefore(n,e,r){n&&(Ii(n)?n.content:n).insertBefore(e,r)}removeChild(n,e){e.remove()}selectRootElement(n,e){let r=typeof n=="string"?this.doc.querySelector(n):n;if(!r)throw new E(-5104,!1);return e||(r.textContent=""),r}parentNode(n){return n.parentNode}nextSibling(n){return n.nextSibling}setAttribute(n,e,r,i){if(i){e=i+":"+e;let s=An[i];s?n.setAttributeNS(s,e,r):n.setAttribute(e,r)}else n.setAttribute(e,r)}removeAttribute(n,e,r){if(r){let i=An[r];i?n.removeAttributeNS(i,e):n.removeAttribute(`${r}:${e}`)}else n.removeAttribute(e)}addClass(n,e){n.classList.add(e)}removeClass(n,e){n.classList.remove(e)}setStyle(n,e,r,i){i&(Fe.DashCase|Fe.Important)?n.style.setProperty(e,r,i&Fe.Important?"important":""):n.style[e]=r}removeStyle(n,e,r){r&Fe.DashCase?n.style.removeProperty(e):n.style[e]=""}setProperty(n,e,r){n!=null&&(n[e]=r)}setValue(n,e){n.nodeValue=e}listen(n,e,r){if(typeof n=="string"&&(n=Rn().getGlobalEventTarget(this.doc,n),!n))throw new Error(`Unsupported event target ${n} for event ${e}`);return this.eventManager.addEventListener(n,e,this.decoratePreventDefault(r))}decoratePreventDefault(n){return e=>{if(e==="__ngUnwrap__")return n;(this.platformIsServer?this.ngZone.runGuarded(()=>n(e)):n(e))===!1&&e.preventDefault()}}};function Ii(t){return t.tagName==="TEMPLATE"&&t.content!==void 0}var Nn=class extends He{constructor(n,e,r,i,s,o,c,a){super(n,s,o,a),this.sharedStylesHost=e,this.hostEl=r,this.shadowRoot=r.attachShadow({mode:"open"}),this.sharedStylesHost.addHost(this.shadowRoot);let u=Pi(i.id,i.styles);for(let l of u){let h=document.createElement("style");c&&h.setAttribute("nonce",c),h.textContent=l,this.shadowRoot.appendChild(h)}}nodeOrShadowRoot(n){return n===this.hostEl?this.shadowRoot:n}appendChild(n,e){return super.appendChild(this.nodeOrShadowRoot(n),e)}insertBefore(n,e,r){return super.insertBefore(this.nodeOrShadowRoot(n),e,r)}removeChild(n,e){return super.removeChild(null,e)}parentNode(n){return this.nodeOrShadowRoot(super.parentNode(this.nodeOrShadowRoot(n)))}destroy(){this.sharedStylesHost.removeHost(this.shadowRoot)}},Xe=class extends He{constructor(n,e,r,i,s,o,c,a){super(n,s,o,c),this.sharedStylesHost=e,this.removeStylesOnCompDestroy=i,this.styles=a?Pi(a,r.styles):r.styles}applyStyles(){this.sharedStylesHost.addStyles(this.styles)}destroy(){this.removeStylesOnCompDestroy&&this.sharedStylesHost.removeStyles(this.styles)}},Lt=class extends Xe{constructor(n,e,r,i,s,o,c,a){let u=i+"-"+r.id;super(n,e,r,s,o,c,a,u),this.contentAttr=co(u),this.hostAttr=uo(u)}applyToHost(n){this.applyStyles(),this.setAttribute(n,this.hostAttr,"")}createElement(n,e){let r=super.createElement(n,e);return super.setAttribute(r,this.contentAttr,""),r}},lo=(()=>{class t extends Ut{constructor(e){super(e)}supports(e){return!0}addEventListener(e,r,i){return e.addEventListener(r,i,!1),()=>this.removeEventListener(e,r,i)}removeEventListener(e,r,i){return e.removeEventListener(r,i)}static{this.\u0275fac=function(r){return new(r||t)(m(x))}}static{this.\u0275prov=R({token:t,factory:t.\u0275fac})}}return t})(),Mi=["alt","control","meta","shift"],ho={"\b":"Backspace"," ":"Tab","\x7F":"Delete","\x1B":"Escape",Del:"Delete",Esc:"Escape",Left:"ArrowLeft",Right:"ArrowRight",Up:"ArrowUp",Down:"ArrowDown",Menu:"ContextMenu",Scroll:"ScrollLock",Win:"OS"},fo={alt:t=>t.altKey,control:t=>t.ctrlKey,meta:t=>t.metaKey,shift:t=>t.shiftKey},po=(()=>{class t extends Ut{constructor(e){super(e)}supports(e){return t.parseEventName(e)!=null}addEventListener(e,r,i){let s=t.parseEventName(r),o=t.eventCallback(s.fullKey,i,this.manager.getZone());return this.manager.getZone().runOutsideAngular(()=>Rn().onAndCancel(e,s.domEventName,o))}static parseEventName(e){let r=e.toLowerCase().split("."),i=r.shift();if(r.length===0||!(i==="keydown"||i==="keyup"))return null;let s=t._normalizeKey(r.pop()),o="",c=r.indexOf("code");if(c>-1&&(r.splice(c,1),o="code."),Mi.forEach(u=>{let l=r.indexOf(u);l>-1&&(r.splice(l,1),o+=u+".")}),o+=s,r.length!=0||s.length===0)return null;let a={};return a.domEventName=i,a.fullKey=o,a}static matchEventFullKeyCode(e,r){let i=ho[e.key]||e.key,s="";return r.indexOf("code.")>-1&&(i=e.code,s="code."),i==null||!i?!1:(i=i.toLowerCase(),i===" "?i="space":i==="."&&(i="dot"),Mi.forEach(o=>{if(o!==i){let c=fo[o];c(e)&&(s+=o+".")}}),s+=i,s===r)}static eventCallback(e,r,i){return s=>{t.matchEventFullKeyCode(s,e)&&i.runGuarded(()=>r(s))}}static _normalizeKey(e){return e==="esc"?"escape":e}static{this.\u0275fac=function(r){return new(r||t)(m(x))}}static{this.\u0275prov=R({token:t,factory:t.\u0275fac})}}return t})();function au(t,n){return ni(f({rootComponent:t},go(n)))}function go(t){return{appProviders:[...Ro,...t?.providers??[]],platformProviders:wo}}function mo(){On.makeCurrent()}function vo(){return new fn}function yo(){return Nr(document),document}var wo=[{provide:he,useValue:ui},{provide:xr,useValue:mo,multi:!0},{provide:x,useFactory:yo,deps:[]}];var Ro=[{provide:Or,useValue:"root"},{provide:fn,useFactory:vo,deps:[]},{provide:Pn,useClass:lo,multi:!0,deps:[x,q,he]},{provide:Pn,useClass:po,multi:!0,deps:[x]},Ei,Di,Ai,{provide:Vr,useExisting:Ei},{provide:Dt,useClass:ro,deps:[]},[]];var Ni=(()=>{class t{constructor(e){this._doc=e}getTitle(){return this._doc.title}setTitle(e){this._doc.title=e||""}static{this.\u0275fac=function(r){return new(r||t)(m(x))}}static{this.\u0275prov=R({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();var So=(()=>{class t{static{this.\u0275fac=function(r){return new(r||t)}}static{this.\u0275prov=R({token:t,factory:function(r){let i=null;return r?i=new(r||t):i=m(To),i},providedIn:"root"})}}return t})(),To=(()=>{class t extends So{constructor(e){super(),this._doc=e}sanitize(e,r){if(r==null)return null;switch(e){case de.NONE:return r;case de.HTML:return Re(r,"HTML")?we(r):$r(this._doc,String(r)).toString();case de.STYLE:return Re(r,"Style")?we(r):r;case de.SCRIPT:if(Re(r,"Script"))return we(r);throw new E(5200,!1);case de.URL:return Re(r,"URL")?we(r):Fr(String(r));case de.RESOURCE_URL:if(Re(r,"ResourceURL"))return we(r);throw new E(5201,!1);default:throw new E(5202,!1)}}bypassSecurityTrustHtml(e){return Ur(e)}bypassSecurityTrustStyle(e){return Lr(e)}bypassSecurityTrustScript(e){return kr(e)}bypassSecurityTrustUrl(e){return jr(e)}bypassSecurityTrustResourceUrl(e){return _r(e)}static{this.\u0275fac=function(r){return new(r||t)(m(x))}}static{this.\u0275prov=R({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();var g="primary",ut=Symbol("RouteTitle"),_n=class{constructor(n){this.params=n||{}}has(n){return Object.prototype.hasOwnProperty.call(this.params,n)}get(n){if(this.has(n)){let e=this.params[n];return Array.isArray(e)?e[0]:e}return null}getAll(n){if(this.has(n)){let e=this.params[n];return Array.isArray(e)?e:[e]}return[]}get keys(){return Object.keys(this.params)}};function Ie(t){return new _n(t)}function Co(t,n,e){let r=e.path.split("/");if(r.length>t.length||e.pathMatch==="full"&&(n.hasChildren()||r.lengthr[s]===i)}else return t===n}function Gi(t){return t.length>0?t[t.length-1]:null}function ae(t){return wr(t)?t:ti(t)?O(Promise.resolve(t)):p(t)}var Io={exact:Hi,subset:Xi},Wi={exact:Mo,subset:Ao,ignored:()=>!0};function xi(t,n,e){return Io[e.paths](t.root,n.root,e.matrixParams)&&Wi[e.queryParams](t.queryParams,n.queryParams)&&!(e.fragment==="exact"&&t.fragment!==n.fragment)}function Mo(t,n){return G(t,n)}function Hi(t,n,e){if(!pe(t.segments,n.segments)||!_t(t.segments,n.segments,e)||t.numberOfChildren!==n.numberOfChildren)return!1;for(let r in n.children)if(!t.children[r]||!Hi(t.children[r],n.children[r],e))return!1;return!0}function Ao(t,n){return Object.keys(n).length<=Object.keys(t).length&&Object.keys(n).every(e=>qi(t[e],n[e]))}function Xi(t,n,e){return Ji(t,n,n.segments,e)}function Ji(t,n,e,r){if(t.segments.length>e.length){let i=t.segments.slice(0,e.length);return!(!pe(i,e)||n.hasChildren()||!_t(i,e,r))}else if(t.segments.length===e.length){if(!pe(t.segments,e)||!_t(t.segments,e,r))return!1;for(let i in n.children)if(!t.children[i]||!Xi(t.children[i],n.children[i],r))return!1;return!0}else{let i=e.slice(0,t.segments.length),s=e.slice(t.segments.length);return!pe(t.segments,i)||!_t(t.segments,i,r)||!t.children[g]?!1:Ji(t.children[g],n,s,r)}}function _t(t,n,e){return n.every((r,i)=>Wi[e](t[i].parameters,r.parameters))}var Z=class{constructor(n=new b([],{}),e={},r=null){this.root=n,this.queryParams=e,this.fragment=r}get queryParamMap(){return this._queryParamMap??=Ie(this.queryParams),this._queryParamMap}toString(){return Po.serialize(this)}},b=class{constructor(n,e){this.segments=n,this.children=e,this.parent=null,Object.values(e).forEach(r=>r.parent=this)}hasChildren(){return this.numberOfChildren>0}get numberOfChildren(){return Object.keys(this.children).length}toString(){return Ft(this)}},fe=class{constructor(n,e){this.path=n,this.parameters=e}get parameterMap(){return this._parameterMap??=Ie(this.parameters),this._parameterMap}toString(){return Ki(this)}};function Do(t,n){return pe(t,n)&&t.every((e,r)=>G(e.parameters,n[r].parameters))}function pe(t,n){return t.length!==n.length?!1:t.every((e,r)=>e.path===n[r].path)}function Oo(t,n){let e=[];return Object.entries(t.children).forEach(([r,i])=>{r===g&&(e=e.concat(n(i,r)))}),Object.entries(t.children).forEach(([r,i])=>{r!==g&&(e=e.concat(n(i,r)))}),e}var lt=(()=>{class t{static{this.\u0275fac=function(r){return new(r||t)}}static{this.\u0275prov=R({token:t,factory:()=>new Me,providedIn:"root"})}}return t})(),Me=class{parse(n){let e=new zn(n);return new Z(e.parseRootSegment(),e.parseQueryParams(),e.parseFragment())}serialize(n){let e=`/${Je(n.root,!0)}`,r=Uo(n.queryParams),i=typeof n.fragment=="string"?`#${No(n.fragment)}`:"";return`${e}${r}${i}`}},Po=new Me;function Ft(t){return t.segments.map(n=>Ki(n)).join("/")}function Je(t,n){if(!t.hasChildren())return Ft(t);if(n){let e=t.children[g]?Je(t.children[g],!1):"",r=[];return Object.entries(t.children).forEach(([i,s])=>{i!==g&&r.push(`${i}:${Je(s,!1)}`)}),r.length>0?`${e}(${r.join("//")})`:e}else{let e=Oo(t,(r,i)=>i===g?[Je(t.children[g],!1)]:[`${i}:${Je(r,!1)}`]);return Object.keys(t.children).length===1&&t.children[g]!=null?`${Ft(t)}/${e[0]}`:`${Ft(t)}/(${e.join("//")})`}}function Zi(t){return encodeURIComponent(t).replace(/%40/g,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",")}function kt(t){return Zi(t).replace(/%3B/gi,";")}function No(t){return encodeURI(t)}function $n(t){return Zi(t).replace(/\(/g,"%28").replace(/\)/g,"%29").replace(/%26/gi,"&")}function $t(t){return decodeURIComponent(t)}function Ui(t){return $t(t.replace(/\+/g,"%20"))}function Ki(t){return`${$n(t.path)}${xo(t.parameters)}`}function xo(t){return Object.entries(t).map(([n,e])=>`;${$n(n)}=${$n(e)}`).join("")}function Uo(t){let n=Object.entries(t).map(([e,r])=>Array.isArray(r)?r.map(i=>`${kt(e)}=${kt(i)}`).join("&"):`${kt(e)}=${kt(r)}`).filter(e=>e);return n.length?`?${n.join("&")}`:""}var Lo=/^[^\/()?;#]+/;function Un(t){let n=t.match(Lo);return n?n[0]:""}var ko=/^[^\/()?;=#]+/;function jo(t){let n=t.match(ko);return n?n[0]:""}var _o=/^[^=?&#]+/;function Fo(t){let n=t.match(_o);return n?n[0]:""}var $o=/^[^&#]+/;function zo(t){let n=t.match($o);return n?n[0]:""}var zn=class{constructor(n){this.url=n,this.remaining=n}parseRootSegment(){return this.consumeOptional("/"),this.remaining===""||this.peekStartsWith("?")||this.peekStartsWith("#")?new b([],{}):new b([],this.parseChildren())}parseQueryParams(){let n={};if(this.consumeOptional("?"))do this.parseQueryParam(n);while(this.consumeOptional("&"));return n}parseFragment(){return this.consumeOptional("#")?decodeURIComponent(this.remaining):null}parseChildren(){if(this.remaining==="")return{};this.consumeOptional("/");let n=[];for(this.peekStartsWith("(")||n.push(this.parseSegment());this.peekStartsWith("/")&&!this.peekStartsWith("//")&&!this.peekStartsWith("/(");)this.capture("/"),n.push(this.parseSegment());let e={};this.peekStartsWith("/(")&&(this.capture("/"),e=this.parseParens(!0));let r={};return this.peekStartsWith("(")&&(r=this.parseParens(!1)),(n.length>0||Object.keys(e).length>0)&&(r[g]=new b(n,e)),r}parseSegment(){let n=Un(this.remaining);if(n===""&&this.peekStartsWith(";"))throw new E(4009,!1);return this.capture(n),new fe($t(n),this.parseMatrixParams())}parseMatrixParams(){let n={};for(;this.consumeOptional(";");)this.parseParam(n);return n}parseParam(n){let e=jo(this.remaining);if(!e)return;this.capture(e);let r="";if(this.consumeOptional("=")){let i=Un(this.remaining);i&&(r=i,this.capture(r))}n[$t(e)]=$t(r)}parseQueryParam(n){let e=Fo(this.remaining);if(!e)return;this.capture(e);let r="";if(this.consumeOptional("=")){let o=zo(this.remaining);o&&(r=o,this.capture(r))}let i=Ui(e),s=Ui(r);if(n.hasOwnProperty(i)){let o=n[i];Array.isArray(o)||(o=[o],n[i]=o),o.push(s)}else n[i]=s}parseParens(n){let e={};for(this.capture("(");!this.consumeOptional(")")&&this.remaining.length>0;){let r=Un(this.remaining),i=this.remaining[r.length];if(i!=="/"&&i!==")"&&i!==";")throw new E(4010,!1);let s;r.indexOf(":")>-1?(s=r.slice(0,r.indexOf(":")),this.capture(s),this.capture(":")):n&&(s=g);let o=this.parseChildren();e[s]=Object.keys(o).length===1?o[g]:new b([],o),this.consumeOptional("//")}return e}peekStartsWith(n){return this.remaining.startsWith(n)}consumeOptional(n){return this.peekStartsWith(n)?(this.remaining=this.remaining.substring(n.length),!0):!1}capture(n){if(!this.consumeOptional(n))throw new E(4011,!1)}};function Yi(t){return t.segments.length>0?new b([],{[g]:t}):t}function Qi(t){let n={};for(let[r,i]of Object.entries(t.children)){let s=Qi(i);if(r===g&&s.segments.length===0&&s.hasChildren())for(let[o,c]of Object.entries(s.children))n[o]=c;else(s.segments.length>0||s.hasChildren())&&(n[r]=s)}let e=new b(t.segments,n);return Bo(e)}function Bo(t){if(t.numberOfChildren===1&&t.children[g]){let n=t.children[g];return new b(t.segments.concat(n.segments),n.children)}return t}function ge(t){return t instanceof Z}function Vo(t,n,e=null,r=null){let i=es(t);return ts(i,n,e,r)}function es(t){let n;function e(s){let o={};for(let a of s.children){let u=e(a);o[a.outlet]=u}let c=new b(s.url,o);return s===t&&(n=c),c}let r=e(t.root),i=Yi(r);return n??i}function ts(t,n,e,r){let i=t;for(;i.parent;)i=i.parent;if(n.length===0)return Ln(i,i,i,e,r);let s=qo(n);if(s.toRoot())return Ln(i,i,new b([],{}),e,r);let o=Go(s,i,t),c=o.processChildren?Ye(o.segmentGroup,o.index,s.commands):rs(o.segmentGroup,o.index,s.commands);return Ln(i,o.segmentGroup,c,e,r)}function zt(t){return typeof t=="object"&&t!=null&&!t.outlets&&!t.segmentPath}function tt(t){return typeof t=="object"&&t!=null&&t.outlets}function Ln(t,n,e,r,i){let s={};r&&Object.entries(r).forEach(([a,u])=>{s[a]=Array.isArray(u)?u.map(l=>`${l}`):`${u}`});let o;t===n?o=e:o=ns(t,n,e);let c=Yi(Qi(o));return new Z(c,s,i)}function ns(t,n,e){let r={};return Object.entries(t.children).forEach(([i,s])=>{s===n?r[i]=e:r[i]=ns(s,n,e)}),new b(t.segments,r)}var Bt=class{constructor(n,e,r){if(this.isAbsolute=n,this.numberOfDoubleDots=e,this.commands=r,n&&r.length>0&&zt(r[0]))throw new E(4003,!1);let i=r.find(tt);if(i&&i!==Gi(r))throw new E(4004,!1)}toRoot(){return this.isAbsolute&&this.commands.length===1&&this.commands[0]=="/"}};function qo(t){if(typeof t[0]=="string"&&t.length===1&&t[0]==="/")return new Bt(!0,0,t);let n=0,e=!1,r=t.reduce((i,s,o)=>{if(typeof s=="object"&&s!=null){if(s.outlets){let c={};return Object.entries(s.outlets).forEach(([a,u])=>{c[a]=typeof u=="string"?u.split("/"):u}),[...i,{outlets:c}]}if(s.segmentPath)return[...i,s.segmentPath]}return typeof s!="string"?[...i,s]:o===0?(s.split("/").forEach((c,a)=>{a==0&&c==="."||(a==0&&c===""?e=!0:c===".."?n++:c!=""&&i.push(c))}),i):[...i,s]},[]);return new Bt(e,n,r)}var be=class{constructor(n,e,r){this.segmentGroup=n,this.processChildren=e,this.index=r}};function Go(t,n,e){if(t.isAbsolute)return new be(n,!0,0);if(!e)return new be(n,!1,NaN);if(e.parent===null)return new be(e,!0,0);let r=zt(t.commands[0])?0:1,i=e.segments.length-1+r;return Wo(e,i,t.numberOfDoubleDots)}function Wo(t,n,e){let r=t,i=n,s=e;for(;s>i;){if(s-=i,r=r.parent,!r)throw new E(4005,!1);i=r.segments.length}return new be(r,!1,i-s)}function Ho(t){return tt(t[0])?t[0].outlets:{[g]:t}}function rs(t,n,e){if(t??=new b([],{}),t.segments.length===0&&t.hasChildren())return Ye(t,n,e);let r=Xo(t,n,e),i=e.slice(r.commandIndex);if(r.match&&r.pathIndexs!==g)&&t.children[g]&&t.numberOfChildren===1&&t.children[g].segments.length===0){let s=Ye(t.children[g],n,e);return new b(t.segments,s.children)}return Object.entries(r).forEach(([s,o])=>{typeof o=="string"&&(o=[o]),o!==null&&(i[s]=rs(t.children[s],n,o))}),Object.entries(t.children).forEach(([s,o])=>{r[s]===void 0&&(i[s]=o)}),new b(t.segments,i)}}function Xo(t,n,e){let r=0,i=n,s={match:!1,pathIndex:0,commandIndex:0};for(;i=e.length)return s;let o=t.segments[i],c=e[r];if(tt(c))break;let a=`${c}`,u=r0&&a===void 0)break;if(a&&u&&typeof u=="object"&&u.outlets===void 0){if(!ki(a,u,o))return s;r+=2}else{if(!ki(a,{},o))return s;r++}i++}return{match:!0,pathIndex:i,commandIndex:r}}function Bn(t,n,e){let r=t.segments.slice(0,n),i=0;for(;i{typeof r=="string"&&(r=[r]),r!==null&&(n[e]=Bn(new b([],{}),0,r))}),n}function Li(t){let n={};return Object.entries(t).forEach(([e,r])=>n[e]=`${r}`),n}function ki(t,n,e){return t==e.path&&G(n,e.parameters)}var Qe="imperative",A=function(t){return t[t.NavigationStart=0]="NavigationStart",t[t.NavigationEnd=1]="NavigationEnd",t[t.NavigationCancel=2]="NavigationCancel",t[t.NavigationError=3]="NavigationError",t[t.RoutesRecognized=4]="RoutesRecognized",t[t.ResolveStart=5]="ResolveStart",t[t.ResolveEnd=6]="ResolveEnd",t[t.GuardsCheckStart=7]="GuardsCheckStart",t[t.GuardsCheckEnd=8]="GuardsCheckEnd",t[t.RouteConfigLoadStart=9]="RouteConfigLoadStart",t[t.RouteConfigLoadEnd=10]="RouteConfigLoadEnd",t[t.ChildActivationStart=11]="ChildActivationStart",t[t.ChildActivationEnd=12]="ChildActivationEnd",t[t.ActivationStart=13]="ActivationStart",t[t.ActivationEnd=14]="ActivationEnd",t[t.Scroll=15]="Scroll",t[t.NavigationSkipped=16]="NavigationSkipped",t}(A||{}),$=class{constructor(n,e){this.id=n,this.url=e}},Ae=class extends ${constructor(n,e,r="imperative",i=null){super(n,e),this.type=A.NavigationStart,this.navigationTrigger=r,this.restoredState=i}toString(){return`NavigationStart(id: ${this.id}, url: '${this.url}')`}},V=class extends ${constructor(n,e,r){super(n,e),this.urlAfterRedirects=r,this.type=A.NavigationEnd}toString(){return`NavigationEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}')`}},j=function(t){return t[t.Redirect=0]="Redirect",t[t.SupersededByNewNavigation=1]="SupersededByNewNavigation",t[t.NoDataFromResolver=2]="NoDataFromResolver",t[t.GuardRejected=3]="GuardRejected",t}(j||{}),Vt=function(t){return t[t.IgnoredSameUrlNavigation=0]="IgnoredSameUrlNavigation",t[t.IgnoredByUrlHandlingStrategy=1]="IgnoredByUrlHandlingStrategy",t}(Vt||{}),J=class extends ${constructor(n,e,r,i){super(n,e),this.reason=r,this.code=i,this.type=A.NavigationCancel}toString(){return`NavigationCancel(id: ${this.id}, url: '${this.url}')`}},se=class extends ${constructor(n,e,r,i){super(n,e),this.reason=r,this.code=i,this.type=A.NavigationSkipped}},nt=class extends ${constructor(n,e,r,i){super(n,e),this.error=r,this.target=i,this.type=A.NavigationError}toString(){return`NavigationError(id: ${this.id}, url: '${this.url}', error: ${this.error})`}},qt=class extends ${constructor(n,e,r,i){super(n,e),this.urlAfterRedirects=r,this.state=i,this.type=A.RoutesRecognized}toString(){return`RoutesRecognized(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}},Vn=class extends ${constructor(n,e,r,i){super(n,e),this.urlAfterRedirects=r,this.state=i,this.type=A.GuardsCheckStart}toString(){return`GuardsCheckStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}},qn=class extends ${constructor(n,e,r,i,s){super(n,e),this.urlAfterRedirects=r,this.state=i,this.shouldActivate=s,this.type=A.GuardsCheckEnd}toString(){return`GuardsCheckEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state}, shouldActivate: ${this.shouldActivate})`}},Gn=class extends ${constructor(n,e,r,i){super(n,e),this.urlAfterRedirects=r,this.state=i,this.type=A.ResolveStart}toString(){return`ResolveStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}},Wn=class extends ${constructor(n,e,r,i){super(n,e),this.urlAfterRedirects=r,this.state=i,this.type=A.ResolveEnd}toString(){return`ResolveEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}},Hn=class{constructor(n){this.route=n,this.type=A.RouteConfigLoadStart}toString(){return`RouteConfigLoadStart(path: ${this.route.path})`}},Xn=class{constructor(n){this.route=n,this.type=A.RouteConfigLoadEnd}toString(){return`RouteConfigLoadEnd(path: ${this.route.path})`}},Jn=class{constructor(n){this.snapshot=n,this.type=A.ChildActivationStart}toString(){return`ChildActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}},Zn=class{constructor(n){this.snapshot=n,this.type=A.ChildActivationEnd}toString(){return`ChildActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}},Kn=class{constructor(n){this.snapshot=n,this.type=A.ActivationStart}toString(){return`ActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}},Yn=class{constructor(n){this.snapshot=n,this.type=A.ActivationEnd}toString(){return`ActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}},Gt=class{constructor(n,e,r){this.routerEvent=n,this.position=e,this.anchor=r,this.type=A.Scroll}toString(){let n=this.position?`${this.position[0]}, ${this.position[1]}`:null;return`Scroll(anchor: '${this.anchor}', position: '${n}')`}},rt=class{},De=class{constructor(n,e){this.url=n,this.navigationBehaviorOptions=e}};function Zo(t,n){return t.providers&&!t._injector&&(t._injector=yn(t.providers,n,`Route: ${t.path}`)),t._injector??n}function B(t){return t.outlet||g}function Ko(t,n){let e=t.filter(r=>B(r)===n);return e.push(...t.filter(r=>B(r)!==n)),e}function ht(t){if(!t)return null;if(t.routeConfig?._injector)return t.routeConfig._injector;for(let n=t.parent;n;n=n.parent){let e=n.routeConfig;if(e?._loadedInjector)return e._loadedInjector;if(e?._injector)return e._injector}return null}var Qn=class{get injector(){return ht(this.route?.snapshot)??this.rootInjector}set injector(n){}constructor(n){this.rootInjector=n,this.outlet=null,this.route=null,this.children=new dt(this.rootInjector),this.attachRef=null}},dt=(()=>{class t{constructor(e){this.rootInjector=e,this.contexts=new Map}onChildOutletCreated(e,r){let i=this.getOrCreateContext(e);i.outlet=r,this.contexts.set(e,i)}onChildOutletDestroyed(e){let r=this.getContext(e);r&&(r.outlet=null,r.attachRef=null)}onOutletDeactivated(){let e=this.contexts;return this.contexts=new Map,e}onOutletReAttached(e){this.contexts=e}getOrCreateContext(e){let r=this.getContext(e);return r||(r=new Qn(this.rootInjector),this.contexts.set(e,r)),r}getContext(e){return this.contexts.get(e)||null}static{this.\u0275fac=function(r){return new(r||t)(m(le))}}static{this.\u0275prov=R({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})(),Wt=class{constructor(n){this._root=n}get root(){return this._root.value}parent(n){let e=this.pathFromRoot(n);return e.length>1?e[e.length-2]:null}children(n){let e=er(n,this._root);return e?e.children.map(r=>r.value):[]}firstChild(n){let e=er(n,this._root);return e&&e.children.length>0?e.children[0].value:null}siblings(n){let e=tr(n,this._root);return e.length<2?[]:e[e.length-2].children.map(i=>i.value).filter(i=>i!==n)}pathFromRoot(n){return tr(n,this._root).map(e=>e.value)}};function er(t,n){if(t===n.value)return n;for(let e of n.children){let r=er(t,e);if(r)return r}return null}function tr(t,n){if(t===n.value)return[n];for(let e of n.children){let r=tr(t,e);if(r.length)return r.unshift(n),r}return[]}var k=class{constructor(n,e){this.value=n,this.children=e}toString(){return`TreeNode(${this.value})`}};function Te(t){let n={};return t&&t.children.forEach(e=>n[e.value.outlet]=e),n}var Ht=class extends Wt{constructor(n,e){super(n),this.snapshot=e,lr(this,n)}toString(){return this.snapshot.toString()}};function is(t){let n=Yo(t),e=new _([new fe("",{})]),r=new _({}),i=new _({}),s=new _({}),o=new _(""),c=new oe(e,r,s,o,i,g,t,n.root);return c.snapshot=n.root,new Ht(new k(c,[]),n)}function Yo(t){let n={},e={},r={},i="",s=new Ce([],n,r,i,e,g,t,null,{});return new Jt("",new k(s,[]))}var oe=class{constructor(n,e,r,i,s,o,c,a){this.urlSubject=n,this.paramsSubject=e,this.queryParamsSubject=r,this.fragmentSubject=i,this.dataSubject=s,this.outlet=o,this.component=c,this._futureSnapshot=a,this.title=this.dataSubject?.pipe(S(u=>u[ut]))??p(void 0),this.url=n,this.params=e,this.queryParams=r,this.fragment=i,this.data=s}get routeConfig(){return this._futureSnapshot.routeConfig}get root(){return this._routerState.root}get parent(){return this._routerState.parent(this)}get firstChild(){return this._routerState.firstChild(this)}get children(){return this._routerState.children(this)}get pathFromRoot(){return this._routerState.pathFromRoot(this)}get paramMap(){return this._paramMap??=this.params.pipe(S(n=>Ie(n))),this._paramMap}get queryParamMap(){return this._queryParamMap??=this.queryParams.pipe(S(n=>Ie(n))),this._queryParamMap}toString(){return this.snapshot?this.snapshot.toString():`Future(${this._futureSnapshot})`}};function Xt(t,n,e="emptyOnly"){let r,{routeConfig:i}=t;return n!==null&&(e==="always"||i?.path===""||!n.component&&!n.routeConfig?.loadComponent)?r={params:f(f({},n.params),t.params),data:f(f({},n.data),t.data),resolve:f(f(f(f({},t.data),n.data),i?.data),t._resolvedData)}:r={params:f({},t.params),data:f({},t.data),resolve:f(f({},t.data),t._resolvedData??{})},i&&os(i)&&(r.resolve[ut]=i.title),r}var Ce=class{get title(){return this.data?.[ut]}constructor(n,e,r,i,s,o,c,a,u){this.url=n,this.params=e,this.queryParams=r,this.fragment=i,this.data=s,this.outlet=o,this.component=c,this.routeConfig=a,this._resolve=u}get root(){return this._routerState.root}get parent(){return this._routerState.parent(this)}get firstChild(){return this._routerState.firstChild(this)}get children(){return this._routerState.children(this)}get pathFromRoot(){return this._routerState.pathFromRoot(this)}get paramMap(){return this._paramMap??=Ie(this.params),this._paramMap}get queryParamMap(){return this._queryParamMap??=Ie(this.queryParams),this._queryParamMap}toString(){let n=this.url.map(r=>r.toString()).join("/"),e=this.routeConfig?this.routeConfig.path:"";return`Route(url:'${n}', path:'${e}')`}},Jt=class extends Wt{constructor(n,e){super(e),this.url=n,lr(this,e)}toString(){return ss(this._root)}};function lr(t,n){n.value._routerState=t,n.children.forEach(e=>lr(t,e))}function ss(t){let n=t.children.length>0?` { ${t.children.map(ss).join(", ")} } `:"";return`${t.value}${n}`}function kn(t){if(t.snapshot){let n=t.snapshot,e=t._futureSnapshot;t.snapshot=e,G(n.queryParams,e.queryParams)||t.queryParamsSubject.next(e.queryParams),n.fragment!==e.fragment&&t.fragmentSubject.next(e.fragment),G(n.params,e.params)||t.paramsSubject.next(e.params),Eo(n.url,e.url)||t.urlSubject.next(e.url),G(n.data,e.data)||t.dataSubject.next(e.data)}else t.snapshot=t._futureSnapshot,t.dataSubject.next(t._futureSnapshot.data)}function nr(t,n){let e=G(t.params,n.params)&&Do(t.url,n.url),r=!t.parent!=!n.parent;return e&&!r&&(!t.parent||nr(t.parent,n.parent))}function os(t){return typeof t.title=="string"||t.title===null}var Qo=(()=>{class t{constructor(){this.activated=null,this._activatedRoute=null,this.name=g,this.activateEvents=new ye,this.deactivateEvents=new ye,this.attachEvents=new ye,this.detachEvents=new ye,this.parentContexts=d(dt),this.location=d(qr),this.changeDetector=d(Et),this.inputBinder=d(Qt,{optional:!0}),this.supportsBindingToComponentInputs=!0}get activatedComponentRef(){return this.activated}ngOnChanges(e){if(e.name){let{firstChange:r,previousValue:i}=e.name;if(r)return;this.isTrackedInParentContexts(i)&&(this.deactivate(),this.parentContexts.onChildOutletDestroyed(i)),this.initializeOutletWithName()}}ngOnDestroy(){this.isTrackedInParentContexts(this.name)&&this.parentContexts.onChildOutletDestroyed(this.name),this.inputBinder?.unsubscribeFromRouteData(this)}isTrackedInParentContexts(e){return this.parentContexts.getContext(e)?.outlet===this}ngOnInit(){this.initializeOutletWithName()}initializeOutletWithName(){if(this.parentContexts.onChildOutletCreated(this.name,this),this.activated)return;let e=this.parentContexts.getContext(this.name);e?.route&&(e.attachRef?this.attach(e.attachRef,e.route):this.activateWith(e.route,e.injector))}get isActivated(){return!!this.activated}get component(){if(!this.activated)throw new E(4012,!1);return this.activated.instance}get activatedRoute(){if(!this.activated)throw new E(4012,!1);return this._activatedRoute}get activatedRouteData(){return this._activatedRoute?this._activatedRoute.snapshot.data:{}}detach(){if(!this.activated)throw new E(4012,!1);this.location.detach();let e=this.activated;return this.activated=null,this._activatedRoute=null,this.detachEvents.emit(e.instance),e}attach(e,r){this.activated=e,this._activatedRoute=r,this.location.insert(e.hostView),this.inputBinder?.bindActivatedRouteToOutletComponent(this),this.attachEvents.emit(e.instance)}deactivate(){if(this.activated){let e=this.component;this.activated.destroy(),this.activated=null,this._activatedRoute=null,this.deactivateEvents.emit(e)}}activateWith(e,r){if(this.isActivated)throw new E(4013,!1);this._activatedRoute=e;let i=this.location,o=e.snapshot.component,c=this.parentContexts.getOrCreateContext(this.name).children,a=new rr(e,c,i.injector);this.activated=i.createComponent(o,{index:i.length,injector:a,environmentInjector:r}),this.changeDetector.markForCheck(),this.inputBinder?.bindActivatedRouteToOutletComponent(this),this.activateEvents.emit(this.activated.instance)}static{this.\u0275fac=function(r){return new(r||t)}}static{this.\u0275dir=wt({type:t,selectors:[["router-outlet"]],inputs:{name:"name"},outputs:{activateEvents:"activate",deactivateEvents:"deactivate",attachEvents:"attach",detachEvents:"detach"},exportAs:["outlet"],standalone:!0,features:[Rt]})}}return t})(),rr=class t{__ngOutletInjector(n){return new t(this.route,this.childContexts,n)}constructor(n,e,r){this.route=n,this.childContexts=e,this.parent=r}get(n,e){return n===oe?this.route:n===dt?this.childContexts:this.parent.get(n,e)}},Qt=new C(""),ji=(()=>{class t{constructor(){this.outletDataSubscriptions=new Map}bindActivatedRouteToOutletComponent(e){this.unsubscribeFromRouteData(e),this.subscribeToRouteData(e)}unsubscribeFromRouteData(e){this.outletDataSubscriptions.get(e)?.unsubscribe(),this.outletDataSubscriptions.delete(e)}subscribeToRouteData(e){let{activatedRoute:r}=e,i=mt([r.queryParams,r.params,r.data]).pipe(L(([s,o,c],a)=>(c=f(f(f({},s),o),c),a===0?p(c):Promise.resolve(c)))).subscribe(s=>{if(!e.isActivated||!e.activatedComponentRef||e.activatedRoute!==r||r.component===null){this.unsubscribeFromRouteData(e);return}let o=ri(r.component);if(!o){this.unsubscribeFromRouteData(e);return}for(let{templateName:c}of o.inputs)e.activatedComponentRef.setInput(c,s[c])});this.outletDataSubscriptions.set(e,i)}static{this.\u0275fac=function(r){return new(r||t)}}static{this.\u0275prov=R({token:t,factory:t.\u0275fac})}}return t})();function ea(t,n,e){let r=it(t,n._root,e?e._root:void 0);return new Ht(r,n)}function it(t,n,e){if(e&&t.shouldReuseRoute(n.value,e.value.snapshot)){let r=e.value;r._futureSnapshot=n.value;let i=ta(t,n,e);return new k(r,i)}else{if(t.shouldAttach(n.value)){let s=t.retrieve(n.value);if(s!==null){let o=s.route;return o.value._futureSnapshot=n.value,o.children=n.children.map(c=>it(t,c)),o}}let r=na(n.value),i=n.children.map(s=>it(t,s));return new k(r,i)}}function ta(t,n,e){return n.children.map(r=>{for(let i of e.children)if(t.shouldReuseRoute(r.value,i.value.snapshot))return it(t,r,i);return it(t,r)})}function na(t){return new oe(new _(t.url),new _(t.params),new _(t.queryParams),new _(t.fragment),new _(t.data),t.outlet,t.component,t)}var st=class{constructor(n,e){this.redirectTo=n,this.navigationBehaviorOptions=e}},as="ngNavigationCancelingError";function Zt(t,n){let{redirectTo:e,navigationBehaviorOptions:r}=ge(n)?{redirectTo:n,navigationBehaviorOptions:void 0}:n,i=cs(!1,j.Redirect);return i.url=e,i.navigationBehaviorOptions=r,i}function cs(t,n){let e=new Error(`NavigationCancelingError: ${t||""}`);return e[as]=!0,e.cancellationCode=n,e}function ra(t){return us(t)&&ge(t.url)}function us(t){return!!t&&t[as]}var ia=(t,n,e,r)=>S(i=>(new ir(n,i.targetRouterState,i.currentRouterState,e,r).activate(t),i)),ir=class{constructor(n,e,r,i,s){this.routeReuseStrategy=n,this.futureState=e,this.currState=r,this.forwardEvent=i,this.inputBindingEnabled=s}activate(n){let e=this.futureState._root,r=this.currState?this.currState._root:null;this.deactivateChildRoutes(e,r,n),kn(this.futureState.root),this.activateChildRoutes(e,r,n)}deactivateChildRoutes(n,e,r){let i=Te(e);n.children.forEach(s=>{let o=s.value.outlet;this.deactivateRoutes(s,i[o],r),delete i[o]}),Object.values(i).forEach(s=>{this.deactivateRouteAndItsChildren(s,r)})}deactivateRoutes(n,e,r){let i=n.value,s=e?e.value:null;if(i===s)if(i.component){let o=r.getContext(i.outlet);o&&this.deactivateChildRoutes(n,e,o.children)}else this.deactivateChildRoutes(n,e,r);else s&&this.deactivateRouteAndItsChildren(e,r)}deactivateRouteAndItsChildren(n,e){n.value.component&&this.routeReuseStrategy.shouldDetach(n.value.snapshot)?this.detachAndStoreRouteSubtree(n,e):this.deactivateRouteAndOutlet(n,e)}detachAndStoreRouteSubtree(n,e){let r=e.getContext(n.value.outlet),i=r&&n.value.component?r.children:e,s=Te(n);for(let o of Object.values(s))this.deactivateRouteAndItsChildren(o,i);if(r&&r.outlet){let o=r.outlet.detach(),c=r.children.onOutletDeactivated();this.routeReuseStrategy.store(n.value.snapshot,{componentRef:o,route:n,contexts:c})}}deactivateRouteAndOutlet(n,e){let r=e.getContext(n.value.outlet),i=r&&n.value.component?r.children:e,s=Te(n);for(let o of Object.values(s))this.deactivateRouteAndItsChildren(o,i);r&&(r.outlet&&(r.outlet.deactivate(),r.children.onOutletDeactivated()),r.attachRef=null,r.route=null)}activateChildRoutes(n,e,r){let i=Te(e);n.children.forEach(s=>{this.activateRoutes(s,i[s.value.outlet],r),this.forwardEvent(new Yn(s.value.snapshot))}),n.children.length&&this.forwardEvent(new Zn(n.value.snapshot))}activateRoutes(n,e,r){let i=n.value,s=e?e.value:null;if(kn(i),i===s)if(i.component){let o=r.getOrCreateContext(i.outlet);this.activateChildRoutes(n,e,o.children)}else this.activateChildRoutes(n,e,r);else if(i.component){let o=r.getOrCreateContext(i.outlet);if(this.routeReuseStrategy.shouldAttach(i.snapshot)){let c=this.routeReuseStrategy.retrieve(i.snapshot);this.routeReuseStrategy.store(i.snapshot,null),o.children.onOutletReAttached(c.contexts),o.attachRef=c.componentRef,o.route=c.route.value,o.outlet&&o.outlet.attach(c.componentRef,c.route.value),kn(c.route.value),this.activateChildRoutes(n,null,o.children)}else o.attachRef=null,o.route=i,o.outlet&&o.outlet.activateWith(i,o.injector),this.activateChildRoutes(n,null,o.children)}else this.activateChildRoutes(n,null,r)}},Kt=class{constructor(n){this.path=n,this.route=this.path[this.path.length-1]}},Ee=class{constructor(n,e){this.component=n,this.route=e}};function sa(t,n,e){let r=t._root,i=n?n._root:null;return Ze(r,i,e,[r.value])}function oa(t){let n=t.routeConfig?t.routeConfig.canActivateChild:null;return!n||n.length===0?null:{node:t,guards:n}}function Pe(t,n){let e=Symbol(),r=n.get(t,e);return r===e?typeof t=="function"&&!Mr(t)?t:n.get(t):r}function Ze(t,n,e,r,i={canDeactivateChecks:[],canActivateChecks:[]}){let s=Te(n);return t.children.forEach(o=>{aa(o,s[o.value.outlet],e,r.concat([o.value]),i),delete s[o.value.outlet]}),Object.entries(s).forEach(([o,c])=>et(c,e.getContext(o),i)),i}function aa(t,n,e,r,i={canDeactivateChecks:[],canActivateChecks:[]}){let s=t.value,o=n?n.value:null,c=e?e.getContext(t.value.outlet):null;if(o&&s.routeConfig===o.routeConfig){let a=ca(o,s,s.routeConfig.runGuardsAndResolvers);a?i.canActivateChecks.push(new Kt(r)):(s.data=o.data,s._resolvedData=o._resolvedData),s.component?Ze(t,n,c?c.children:null,r,i):Ze(t,n,e,r,i),a&&c&&c.outlet&&c.outlet.isActivated&&i.canDeactivateChecks.push(new Ee(c.outlet.component,o))}else o&&et(n,c,i),i.canActivateChecks.push(new Kt(r)),s.component?Ze(t,null,c?c.children:null,r,i):Ze(t,null,e,r,i);return i}function ca(t,n,e){if(typeof e=="function")return e(t,n);switch(e){case"pathParamsChange":return!pe(t.url,n.url);case"pathParamsOrQueryParamsChange":return!pe(t.url,n.url)||!G(t.queryParams,n.queryParams);case"always":return!0;case"paramsOrQueryParamsChange":return!nr(t,n)||!G(t.queryParams,n.queryParams);case"paramsChange":default:return!nr(t,n)}}function et(t,n,e){let r=Te(t),i=t.value;Object.entries(r).forEach(([s,o])=>{i.component?n?et(o,n.children.getContext(s),e):et(o,null,e):et(o,n,e)}),i.component?n&&n.outlet&&n.outlet.isActivated?e.canDeactivateChecks.push(new Ee(n.outlet.component,i)):e.canDeactivateChecks.push(new Ee(null,i)):e.canDeactivateChecks.push(new Ee(null,i))}function ft(t){return typeof t=="function"}function ua(t){return typeof t=="boolean"}function la(t){return t&&ft(t.canLoad)}function ha(t){return t&&ft(t.canActivate)}function da(t){return t&&ft(t.canActivateChild)}function fa(t){return t&&ft(t.canDeactivate)}function pa(t){return t&&ft(t.canMatch)}function ls(t){return t instanceof Rr||t?.name==="EmptyError"}var jt=Symbol("INITIAL_VALUE");function Oe(){return L(t=>mt(t.map(n=>n.pipe(ve(1),Er(jt)))).pipe(S(n=>{for(let e of n)if(e!==!0){if(e===jt)return jt;if(e===!1||ga(e))return e}return!0}),H(n=>n!==jt),ve(1)))}function ga(t){return ge(t)||t instanceof st}function ma(t,n){return U(e=>{let{targetSnapshot:r,currentSnapshot:i,guards:{canActivateChecks:s,canDeactivateChecks:o}}=e;return o.length===0&&s.length===0?p(P(f({},e),{guardsResult:!0})):va(o,r,i,t).pipe(U(c=>c&&ua(c)?ya(r,s,t,n):p(c)),S(c=>P(f({},e),{guardsResult:c})))})}function va(t,n,e,r){return O(t).pipe(U(i=>ba(i.component,i.route,e,n,r)),te(i=>i!==!0,!0))}function ya(t,n,e,r){return O(n).pipe(ee(i=>Sr(Ra(i.route.parent,r),wa(i.route,r),Ta(t,i.path,e),Sa(t,i.route,e))),te(i=>i!==!0,!0))}function wa(t,n){return t!==null&&n&&n(new Kn(t)),p(!0)}function Ra(t,n){return t!==null&&n&&n(new Jn(t)),p(!0)}function Sa(t,n,e){let r=n.routeConfig?n.routeConfig.canActivate:null;if(!r||r.length===0)return p(!0);let i=r.map(s=>on(()=>{let o=ht(n)??e,c=Pe(s,o),a=ha(c)?c.canActivate(n,t):F(o,()=>c(n,t));return ae(a).pipe(te())}));return p(i).pipe(Oe())}function Ta(t,n,e){let r=n[n.length-1],s=n.slice(0,n.length-1).reverse().map(o=>oa(o)).filter(o=>o!==null).map(o=>on(()=>{let c=o.guards.map(a=>{let u=ht(o.node)??e,l=Pe(a,u),h=da(l)?l.canActivateChild(r,t):F(u,()=>l(r,t));return ae(h).pipe(te())});return p(c).pipe(Oe())}));return p(s).pipe(Oe())}function ba(t,n,e,r,i){let s=n&&n.routeConfig?n.routeConfig.canDeactivate:null;if(!s||s.length===0)return p(!0);let o=s.map(c=>{let a=ht(n)??i,u=Pe(c,a),l=fa(u)?u.canDeactivate(t,n,e,r):F(a,()=>u(t,n,e,r));return ae(l).pipe(te())});return p(o).pipe(Oe())}function Ca(t,n,e,r){let i=n.canLoad;if(i===void 0||i.length===0)return p(!0);let s=i.map(o=>{let c=Pe(o,t),a=la(c)?c.canLoad(n,e):F(t,()=>c(n,e));return ae(a)});return p(s).pipe(Oe(),hs(r))}function hs(t){return yr(D(n=>{if(typeof n!="boolean")throw Zt(t,n)}),S(n=>n===!0))}function Ea(t,n,e,r){let i=n.canMatch;if(!i||i.length===0)return p(!0);let s=i.map(o=>{let c=Pe(o,t),a=pa(c)?c.canMatch(n,e):F(t,()=>c(n,e));return ae(a)});return p(s).pipe(Oe(),hs(r))}var ot=class{constructor(n){this.segmentGroup=n||null}},at=class extends Error{constructor(n){super(),this.urlTree=n}};function Se(t){return Ue(new ot(t))}function Ia(t){return Ue(new E(4e3,!1))}function Ma(t){return Ue(cs(!1,j.GuardRejected))}var sr=class{constructor(n,e){this.urlSerializer=n,this.urlTree=e}lineralizeSegments(n,e){let r=[],i=e.root;for(;;){if(r=r.concat(i.segments),i.numberOfChildren===0)return p(r);if(i.numberOfChildren>1||!i.children[g])return Ia(`${n.redirectTo}`);i=i.children[g]}}applyRedirectCommands(n,e,r,i,s){if(typeof e!="string"){let c=e,{queryParams:a,fragment:u,routeConfig:l,url:h,outlet:y,params:T,data:M,title:w}=i,v=F(s,()=>c({params:T,data:M,queryParams:a,fragment:u,routeConfig:l,url:h,outlet:y,title:w}));if(v instanceof Z)throw new at(v);e=v}let o=this.applyRedirectCreateUrlTree(e,this.urlSerializer.parse(e),n,r);if(e[0]==="/")throw new at(o);return o}applyRedirectCreateUrlTree(n,e,r,i){let s=this.createSegmentGroup(n,e.root,r,i);return new Z(s,this.createQueryParams(e.queryParams,this.urlTree.queryParams),e.fragment)}createQueryParams(n,e){let r={};return Object.entries(n).forEach(([i,s])=>{if(typeof s=="string"&&s[0]===":"){let c=s.substring(1);r[i]=e[c]}else r[i]=s}),r}createSegmentGroup(n,e,r,i){let s=this.createSegments(n,e.segments,r,i),o={};return Object.entries(e.children).forEach(([c,a])=>{o[c]=this.createSegmentGroup(n,a,r,i)}),new b(s,o)}createSegments(n,e,r,i){return e.map(s=>s.path[0]===":"?this.findPosParam(n,s,i):this.findOrReturn(s,r))}findPosParam(n,e,r){let i=r[e.path.substring(1)];if(!i)throw new E(4001,!1);return i}findOrReturn(n,e){let r=0;for(let i of e){if(i.path===n.path)return e.splice(r),i;r++}return n}},or={matched:!1,consumedSegments:[],remainingSegments:[],parameters:{},positionalParamSegments:{}};function Aa(t,n,e,r,i){let s=ds(t,n,e);return s.matched?(r=Zo(n,r),Ea(r,n,e,i).pipe(S(o=>o===!0?s:f({},or)))):p(s)}function ds(t,n,e){if(n.path==="**")return Da(e);if(n.path==="")return n.pathMatch==="full"&&(t.hasChildren()||e.length>0)?f({},or):{matched:!0,consumedSegments:[],remainingSegments:e,parameters:{},positionalParamSegments:{}};let i=(n.matcher||Co)(e,t,n);if(!i)return f({},or);let s={};Object.entries(i.posParams??{}).forEach(([c,a])=>{s[c]=a.path});let o=i.consumed.length>0?f(f({},s),i.consumed[i.consumed.length-1].parameters):s;return{matched:!0,consumedSegments:i.consumed,remainingSegments:e.slice(i.consumed.length),parameters:o,positionalParamSegments:i.posParams??{}}}function Da(t){return{matched:!0,parameters:t.length>0?Gi(t).parameters:{},consumedSegments:t,remainingSegments:[],positionalParamSegments:{}}}function _i(t,n,e,r){return e.length>0&&Na(t,e,r)?{segmentGroup:new b(n,Pa(r,new b(e,t.children))),slicedSegments:[]}:e.length===0&&xa(t,e,r)?{segmentGroup:new b(t.segments,Oa(t,e,r,t.children)),slicedSegments:e}:{segmentGroup:new b(t.segments,t.children),slicedSegments:e}}function Oa(t,n,e,r){let i={};for(let s of e)if(en(t,n,s)&&!r[B(s)]){let o=new b([],{});i[B(s)]=o}return f(f({},r),i)}function Pa(t,n){let e={};e[g]=n;for(let r of t)if(r.path===""&&B(r)!==g){let i=new b([],{});e[B(r)]=i}return e}function Na(t,n,e){return e.some(r=>en(t,n,r)&&B(r)!==g)}function xa(t,n,e){return e.some(r=>en(t,n,r))}function en(t,n,e){return(t.hasChildren()||n.length>0)&&e.pathMatch==="full"?!1:e.path===""}function Ua(t,n,e){return n.length===0&&!t.children[e]}var ar=class{};function La(t,n,e,r,i,s,o="emptyOnly"){return new cr(t,n,e,r,i,o,s).recognize()}var ka=31,cr=class{constructor(n,e,r,i,s,o,c){this.injector=n,this.configLoader=e,this.rootComponentType=r,this.config=i,this.urlTree=s,this.paramsInheritanceStrategy=o,this.urlSerializer=c,this.applyRedirects=new sr(this.urlSerializer,this.urlTree),this.absoluteRedirectCount=0,this.allowRedirects=!0}noMatchError(n){return new E(4002,`'${n.segmentGroup}'`)}recognize(){let n=_i(this.urlTree.root,[],[],this.config).segmentGroup;return this.match(n).pipe(S(({children:e,rootSnapshot:r})=>{let i=new k(r,e),s=new Jt("",i),o=Vo(r,[],this.urlTree.queryParams,this.urlTree.fragment);return o.queryParams=this.urlTree.queryParams,s.url=this.urlSerializer.serialize(o),{state:s,tree:o}}))}match(n){let e=new Ce([],Object.freeze({}),Object.freeze(f({},this.urlTree.queryParams)),this.urlTree.fragment,Object.freeze({}),g,this.rootComponentType,null,{});return this.processSegmentGroup(this.injector,this.config,n,g,e).pipe(S(r=>({children:r,rootSnapshot:e})),me(r=>{if(r instanceof at)return this.urlTree=r.urlTree,this.match(r.urlTree.root);throw r instanceof ot?this.noMatchError(r):r}))}processSegmentGroup(n,e,r,i,s){return r.segments.length===0&&r.hasChildren()?this.processChildren(n,e,r,s):this.processSegment(n,e,r,r.segments,i,!0,s).pipe(S(o=>o instanceof k?[o]:[]))}processChildren(n,e,r,i){let s=[];for(let o of Object.keys(r.children))o==="primary"?s.unshift(o):s.push(o);return O(s).pipe(ee(o=>{let c=r.children[o],a=Ko(e,o);return this.processSegmentGroup(n,a,c,o,i)}),Cr((o,c)=>(o.push(...c),o)),an(null),br(),U(o=>{if(o===null)return Se(r);let c=fs(o);return ja(c),p(c)}))}processSegment(n,e,r,i,s,o,c){return O(e).pipe(ee(a=>this.processSegmentAgainstRoute(a._injector??n,e,a,r,i,s,o,c).pipe(me(u=>{if(u instanceof ot)return p(null);throw u}))),te(a=>!!a),me(a=>{if(ls(a))return Ua(r,i,s)?p(new ar):Se(r);throw a}))}processSegmentAgainstRoute(n,e,r,i,s,o,c,a){return B(r)!==o&&(o===g||!en(i,s,r))?Se(i):r.redirectTo===void 0?this.matchSegmentAgainstRoute(n,i,r,s,o,a):this.allowRedirects&&c?this.expandSegmentAgainstRouteUsingRedirect(n,i,e,r,s,o,a):Se(i)}expandSegmentAgainstRouteUsingRedirect(n,e,r,i,s,o,c){let{matched:a,parameters:u,consumedSegments:l,positionalParamSegments:h,remainingSegments:y}=ds(e,i,s);if(!a)return Se(e);typeof i.redirectTo=="string"&&i.redirectTo[0]==="/"&&(this.absoluteRedirectCount++,this.absoluteRedirectCount>ka&&(this.allowRedirects=!1));let T=new Ce(s,u,Object.freeze(f({},this.urlTree.queryParams)),this.urlTree.fragment,Fi(i),B(i),i.component??i._loadedComponent??null,i,$i(i)),M=Xt(T,c,this.paramsInheritanceStrategy);T.params=Object.freeze(M.params),T.data=Object.freeze(M.data);let w=this.applyRedirects.applyRedirectCommands(l,i.redirectTo,h,T,n);return this.applyRedirects.lineralizeSegments(i,w).pipe(U(v=>this.processSegment(n,r,e,v.concat(y),o,!1,c)))}matchSegmentAgainstRoute(n,e,r,i,s,o){let c=Aa(e,r,i,n,this.urlSerializer);return r.path==="**"&&(e.children={}),c.pipe(L(a=>a.matched?(n=r._injector??n,this.getChildConfig(n,r,i).pipe(L(({routes:u})=>{let l=r._loadedInjector??n,{parameters:h,consumedSegments:y,remainingSegments:T}=a,M=new Ce(y,h,Object.freeze(f({},this.urlTree.queryParams)),this.urlTree.fragment,Fi(r),B(r),r.component??r._loadedComponent??null,r,$i(r)),w=Xt(M,o,this.paramsInheritanceStrategy);M.params=Object.freeze(w.params),M.data=Object.freeze(w.data);let{segmentGroup:v,slicedSegments:N}=_i(e,y,T,u);if(N.length===0&&v.hasChildren())return this.processChildren(l,u,v,M).pipe(S(I=>new k(M,I)));if(u.length===0&&N.length===0)return p(new k(M,[]));let K=B(r)===s;return this.processSegment(l,u,v,N,K?g:s,!0,M).pipe(S(I=>new k(M,I instanceof k?[I]:[])))}))):Se(e)))}getChildConfig(n,e,r){return e.children?p({routes:e.children,injector:n}):e.loadChildren?e._loadedRoutes!==void 0?p({routes:e._loadedRoutes,injector:e._loadedInjector}):Ca(n,e,r,this.urlSerializer).pipe(U(i=>i?this.configLoader.loadChildren(n,e).pipe(D(s=>{e._loadedRoutes=s.routes,e._loadedInjector=s.injector})):Ma(e))):p({routes:[],injector:n})}};function ja(t){t.sort((n,e)=>n.value.outlet===g?-1:e.value.outlet===g?1:n.value.outlet.localeCompare(e.value.outlet))}function _a(t){let n=t.value.routeConfig;return n&&n.path===""}function fs(t){let n=[],e=new Set;for(let r of t){if(!_a(r)){n.push(r);continue}let i=n.find(s=>r.value.routeConfig===s.value.routeConfig);i!==void 0?(i.children.push(...r.children),e.add(i)):n.push(r)}for(let r of e){let i=fs(r.children);n.push(new k(r.value,i))}return n.filter(r=>!e.has(r))}function Fi(t){return t.data||{}}function $i(t){return t.resolve||{}}function Fa(t,n,e,r,i,s){return U(o=>La(t,n,e,r,o.extractedUrl,i,s).pipe(S(({state:c,tree:a})=>P(f({},o),{targetSnapshot:c,urlAfterRedirects:a}))))}function $a(t,n){return U(e=>{let{targetSnapshot:r,guards:{canActivateChecks:i}}=e;if(!i.length)return p(e);let s=new Set(i.map(a=>a.route)),o=new Set;for(let a of s)if(!o.has(a))for(let u of ps(a))o.add(u);let c=0;return O(o).pipe(ee(a=>s.has(a)?za(a,r,t,n):(a.data=Xt(a,a.parent,t).resolve,p(void 0))),D(()=>c++),cn(1),U(a=>c===o.size?p(e):Q))})}function ps(t){let n=t.children.map(e=>ps(e)).flat();return[t,...n]}function za(t,n,e,r){let i=t.routeConfig,s=t._resolve;return i?.title!==void 0&&!os(i)&&(s[ut]=i.title),Ba(s,t,n,r).pipe(S(o=>(t._resolvedData=o,t.data=Xt(t,t.parent,e).resolve,null)))}function Ba(t,n,e,r){let i=Fn(t);if(i.length===0)return p({});let s={};return O(i).pipe(U(o=>Va(t[o],n,e,r).pipe(te(),D(c=>{if(c instanceof st)throw Zt(new Me,c);s[o]=c}))),cn(1),Tr(s),me(o=>ls(o)?Q:Ue(o)))}function Va(t,n,e,r){let i=ht(n)??r,s=Pe(t,i),o=s.resolve?s.resolve(n,e):F(i,()=>s(n,e));return ae(o)}function jn(t){return L(n=>{let e=t(n);return e?O(e).pipe(S(()=>n)):p(n)})}var gs=(()=>{class t{buildTitle(e){let r,i=e.root;for(;i!==void 0;)r=this.getResolvedTitleForRoute(i)??r,i=i.children.find(s=>s.outlet===g);return r}getResolvedTitleForRoute(e){return e.data[ut]}static{this.\u0275fac=function(r){return new(r||t)}}static{this.\u0275prov=R({token:t,factory:()=>d(qa),providedIn:"root"})}}return t})(),qa=(()=>{class t extends gs{constructor(e){super(),this.title=e}updateTitle(e){let r=this.buildTitle(e);r!==void 0&&this.title.setTitle(r)}static{this.\u0275fac=function(r){return new(r||t)(m(Ni))}}static{this.\u0275prov=R({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})(),pt=new C("",{providedIn:"root",factory:()=>({})}),Ga=(()=>{class t{static{this.\u0275fac=function(r){return new(r||t)}}static{this.\u0275cmp=Dr({type:t,selectors:[["ng-component"]],standalone:!0,features:[ei],decls:1,vars:0,template:function(r,i){r&1&&Jr(0,"router-outlet")},dependencies:[Qo],encapsulation:2})}}return t})();function hr(t){let n=t.children&&t.children.map(hr),e=n?P(f({},t),{children:n}):f({},t);return!e.component&&!e.loadComponent&&(n||e.loadChildren)&&e.outlet&&e.outlet!==g&&(e.component=Ga),e}var ct=new C(""),dr=(()=>{class t{constructor(){this.componentLoaders=new WeakMap,this.childrenLoaders=new WeakMap,this.compiler=d(Ct)}loadComponent(e){if(this.componentLoaders.get(e))return this.componentLoaders.get(e);if(e._loadedComponent)return p(e._loadedComponent);this.onLoadStartListener&&this.onLoadStartListener(e);let r=ae(e.loadComponent()).pipe(S(ms),D(s=>{this.onLoadEndListener&&this.onLoadEndListener(e),e._loadedComponent=s}),ue(()=>{this.componentLoaders.delete(e)})),i=new sn(r,()=>new Y).pipe(rn());return this.componentLoaders.set(e,i),i}loadChildren(e,r){if(this.childrenLoaders.get(r))return this.childrenLoaders.get(r);if(r._loadedRoutes)return p({routes:r._loadedRoutes,injector:r._loadedInjector});this.onLoadStartListener&&this.onLoadStartListener(r);let s=Wa(r,this.compiler,e,this.onLoadEndListener).pipe(ue(()=>{this.childrenLoaders.delete(r)})),o=new sn(s,()=>new Y).pipe(rn());return this.childrenLoaders.set(r,o),o}static{this.\u0275fac=function(r){return new(r||t)}}static{this.\u0275prov=R({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();function Wa(t,n,e,r){return ae(t.loadChildren()).pipe(S(ms),U(i=>i instanceof Wr||Array.isArray(i)?p(i):O(n.compileModuleAsync(i))),S(i=>{r&&r(t);let s,o,c=!1;return Array.isArray(i)?(o=i,c=!0):(s=i.create(e).injector,o=s.get(ct,[],{optional:!0,self:!0}).flat()),{routes:o.map(hr),injector:s}}))}function Ha(t){return t&&typeof t=="object"&&"default"in t}function ms(t){return Ha(t)?t.default:t}var fr=(()=>{class t{static{this.\u0275fac=function(r){return new(r||t)}}static{this.\u0275prov=R({token:t,factory:()=>d(Xa),providedIn:"root"})}}return t})(),Xa=(()=>{class t{shouldProcessUrl(e){return!0}extract(e){return e}merge(e,r){return e}static{this.\u0275fac=function(r){return new(r||t)}}static{this.\u0275prov=R({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})(),vs=new C(""),ys=new C("");function Ja(t,n,e){let r=t.get(ys),i=t.get(x);return t.get(q).runOutsideAngular(()=>{if(!i.startViewTransition||r.skipNextTransition)return r.skipNextTransition=!1,new Promise(u=>setTimeout(u));let s,o=new Promise(u=>{s=u}),c=i.startViewTransition(()=>(s(),Za(t))),{onViewTransitionCreated:a}=r;return a&&F(t,()=>a({transition:c,from:n,to:e})),o})}function Za(t){return new Promise(n=>{Hr({read:()=>setTimeout(n)},{injector:t})})}var Ka=new C(""),pr=(()=>{class t{get hasRequestedNavigation(){return this.navigationId!==0}constructor(){this.currentNavigation=null,this.currentTransition=null,this.lastSuccessfulNavigation=null,this.events=new Y,this.transitionAbortSubject=new Y,this.configLoader=d(dr),this.environmentInjector=d(le),this.urlSerializer=d(lt),this.rootContexts=d(dt),this.location=d(ze),this.inputBindingEnabled=d(Qt,{optional:!0})!==null,this.titleStrategy=d(gs),this.options=d(pt,{optional:!0})||{},this.paramsInheritanceStrategy=this.options.paramsInheritanceStrategy||"emptyOnly",this.urlHandlingStrategy=d(fr),this.createViewTransition=d(vs,{optional:!0}),this.navigationErrorHandler=d(Ka,{optional:!0}),this.navigationId=0,this.afterPreactivation=()=>p(void 0),this.rootComponentType=null;let e=i=>this.events.next(new Hn(i)),r=i=>this.events.next(new Xn(i));this.configLoader.onLoadEndListener=r,this.configLoader.onLoadStartListener=e}complete(){this.transitions?.complete()}handleNavigationRequest(e){let r=++this.navigationId;this.transitions?.next(P(f(f({},this.transitions.value),e),{id:r}))}setupNavigations(e,r,i){return this.transitions=new _({id:0,currentUrlTree:r,currentRawUrl:r,extractedUrl:this.urlHandlingStrategy.extract(r),urlAfterRedirects:this.urlHandlingStrategy.extract(r),rawUrl:r,extras:{},resolve:()=>{},reject:()=>{},promise:Promise.resolve(!0),source:Qe,restoredState:null,currentSnapshot:i.snapshot,targetSnapshot:null,currentRouterState:i,targetRouterState:null,guards:{canActivateChecks:[],canDeactivateChecks:[]},guardsResult:null}),this.transitions.pipe(H(s=>s.id!==0),S(s=>P(f({},s),{extractedUrl:this.urlHandlingStrategy.extract(s.rawUrl)})),L(s=>{let o=!1,c=!1;return p(s).pipe(L(a=>{if(this.navigationId>s.id)return this.cancelNavigationTransition(s,"",j.SupersededByNewNavigation),Q;this.currentTransition=s,this.currentNavigation={id:a.id,initialUrl:a.rawUrl,extractedUrl:a.extractedUrl,targetBrowserUrl:typeof a.extras.browserUrl=="string"?this.urlSerializer.parse(a.extras.browserUrl):a.extras.browserUrl,trigger:a.source,extras:a.extras,previousNavigation:this.lastSuccessfulNavigation?P(f({},this.lastSuccessfulNavigation),{previousNavigation:null}):null};let u=!e.navigated||this.isUpdatingInternalState()||this.isUpdatedBrowserUrl(),l=a.extras.onSameUrlNavigation??e.onSameUrlNavigation;if(!u&&l!=="reload"){let h="";return this.events.next(new se(a.id,this.urlSerializer.serialize(a.rawUrl),h,Vt.IgnoredSameUrlNavigation)),a.resolve(!1),Q}if(this.urlHandlingStrategy.shouldProcessUrl(a.rawUrl))return p(a).pipe(L(h=>{let y=this.transitions?.getValue();return this.events.next(new Ae(h.id,this.urlSerializer.serialize(h.extractedUrl),h.source,h.restoredState)),y!==this.transitions?.getValue()?Q:Promise.resolve(h)}),Fa(this.environmentInjector,this.configLoader,this.rootComponentType,e.config,this.urlSerializer,this.paramsInheritanceStrategy),D(h=>{s.targetSnapshot=h.targetSnapshot,s.urlAfterRedirects=h.urlAfterRedirects,this.currentNavigation=P(f({},this.currentNavigation),{finalUrl:h.urlAfterRedirects});let y=new qt(h.id,this.urlSerializer.serialize(h.extractedUrl),this.urlSerializer.serialize(h.urlAfterRedirects),h.targetSnapshot);this.events.next(y)}));if(u&&this.urlHandlingStrategy.shouldProcessUrl(a.currentRawUrl)){let{id:h,extractedUrl:y,source:T,restoredState:M,extras:w}=a,v=new Ae(h,this.urlSerializer.serialize(y),T,M);this.events.next(v);let N=is(this.rootComponentType).snapshot;return this.currentTransition=s=P(f({},a),{targetSnapshot:N,urlAfterRedirects:y,extras:P(f({},w),{skipLocationChange:!1,replaceUrl:!1})}),this.currentNavigation.finalUrl=y,p(s)}else{let h="";return this.events.next(new se(a.id,this.urlSerializer.serialize(a.extractedUrl),h,Vt.IgnoredByUrlHandlingStrategy)),a.resolve(!1),Q}}),D(a=>{let u=new Vn(a.id,this.urlSerializer.serialize(a.extractedUrl),this.urlSerializer.serialize(a.urlAfterRedirects),a.targetSnapshot);this.events.next(u)}),S(a=>(this.currentTransition=s=P(f({},a),{guards:sa(a.targetSnapshot,a.currentSnapshot,this.rootContexts)}),s)),ma(this.environmentInjector,a=>this.events.next(a)),D(a=>{if(s.guardsResult=a.guardsResult,a.guardsResult&&typeof a.guardsResult!="boolean")throw Zt(this.urlSerializer,a.guardsResult);let u=new qn(a.id,this.urlSerializer.serialize(a.extractedUrl),this.urlSerializer.serialize(a.urlAfterRedirects),a.targetSnapshot,!!a.guardsResult);this.events.next(u)}),H(a=>a.guardsResult?!0:(this.cancelNavigationTransition(a,"",j.GuardRejected),!1)),jn(a=>{if(a.guards.canActivateChecks.length)return p(a).pipe(D(u=>{let l=new Gn(u.id,this.urlSerializer.serialize(u.extractedUrl),this.urlSerializer.serialize(u.urlAfterRedirects),u.targetSnapshot);this.events.next(l)}),L(u=>{let l=!1;return p(u).pipe($a(this.paramsInheritanceStrategy,this.environmentInjector),D({next:()=>l=!0,complete:()=>{l||this.cancelNavigationTransition(u,"",j.NoDataFromResolver)}}))}),D(u=>{let l=new Wn(u.id,this.urlSerializer.serialize(u.extractedUrl),this.urlSerializer.serialize(u.urlAfterRedirects),u.targetSnapshot);this.events.next(l)}))}),jn(a=>{let u=l=>{let h=[];l.routeConfig?.loadComponent&&!l.routeConfig._loadedComponent&&h.push(this.configLoader.loadComponent(l.routeConfig).pipe(D(y=>{l.component=y}),S(()=>{})));for(let y of l.children)h.push(...u(y));return h};return mt(u(a.targetSnapshot.root)).pipe(an(null),ve(1))}),jn(()=>this.afterPreactivation()),L(()=>{let{currentSnapshot:a,targetSnapshot:u}=s,l=this.createViewTransition?.(this.environmentInjector,a.root,u.root);return l?O(l).pipe(S(()=>s)):p(s)}),S(a=>{let u=ea(e.routeReuseStrategy,a.targetSnapshot,a.currentRouterState);return this.currentTransition=s=P(f({},a),{targetRouterState:u}),this.currentNavigation.targetRouterState=u,s}),D(()=>{this.events.next(new rt)}),ia(this.rootContexts,e.routeReuseStrategy,a=>this.events.next(a),this.inputBindingEnabled),ve(1),D({next:a=>{o=!0,this.lastSuccessfulNavigation=this.currentNavigation,this.events.next(new V(a.id,this.urlSerializer.serialize(a.extractedUrl),this.urlSerializer.serialize(a.urlAfterRedirects))),this.titleStrategy?.updateTitle(a.targetRouterState.snapshot),a.resolve(!0)},complete:()=>{o=!0}}),Ir(this.transitionAbortSubject.pipe(D(a=>{throw a}))),ue(()=>{!o&&!c&&this.cancelNavigationTransition(s,"",j.SupersededByNewNavigation),this.currentTransition?.id===s.id&&(this.currentNavigation=null,this.currentTransition=null)}),me(a=>{if(c=!0,us(a))this.events.next(new J(s.id,this.urlSerializer.serialize(s.extractedUrl),a.message,a.cancellationCode)),ra(a)?this.events.next(new De(a.url,a.navigationBehaviorOptions)):s.resolve(!1);else{let u=new nt(s.id,this.urlSerializer.serialize(s.extractedUrl),a,s.targetSnapshot??void 0);try{let l=F(this.environmentInjector,()=>this.navigationErrorHandler?.(u));if(l instanceof st){let{message:h,cancellationCode:y}=Zt(this.urlSerializer,l);this.events.next(new J(s.id,this.urlSerializer.serialize(s.extractedUrl),h,y)),this.events.next(new De(l.redirectTo,l.navigationBehaviorOptions))}else{this.events.next(u);let h=e.errorHandler(a);s.resolve(!!h)}}catch(l){this.options.resolveNavigationPromiseOnError?s.resolve(!1):s.reject(l)}}return Q}))}))}cancelNavigationTransition(e,r,i){let s=new J(e.id,this.urlSerializer.serialize(e.extractedUrl),r,i);this.events.next(s),e.resolve(!1)}isUpdatingInternalState(){return this.currentTransition?.extractedUrl.toString()!==this.currentTransition?.currentUrlTree.toString()}isUpdatedBrowserUrl(){let e=this.urlHandlingStrategy.extract(this.urlSerializer.parse(this.location.path(!0))),r=this.currentNavigation?.targetBrowserUrl??this.currentNavigation?.extractedUrl;return e.toString()!==r?.toString()&&!this.currentNavigation?.extras.skipLocationChange}static{this.\u0275fac=function(r){return new(r||t)}}static{this.\u0275prov=R({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();function Ya(t){return t!==Qe}var Qa=(()=>{class t{static{this.\u0275fac=function(r){return new(r||t)}}static{this.\u0275prov=R({token:t,factory:()=>d(ec),providedIn:"root"})}}return t})(),ur=class{shouldDetach(n){return!1}store(n,e){}shouldAttach(n){return!1}retrieve(n){return null}shouldReuseRoute(n,e){return n.routeConfig===e.routeConfig}},ec=(()=>{class t extends ur{static{this.\u0275fac=(()=>{let e;return function(i){return(e||(e=hn(t)))(i||t)}})()}static{this.\u0275prov=R({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})(),ws=(()=>{class t{static{this.\u0275fac=function(r){return new(r||t)}}static{this.\u0275prov=R({token:t,factory:()=>d(tc),providedIn:"root"})}}return t})(),tc=(()=>{class t extends ws{constructor(){super(...arguments),this.location=d(ze),this.urlSerializer=d(lt),this.options=d(pt,{optional:!0})||{},this.canceledNavigationResolution=this.options.canceledNavigationResolution||"replace",this.urlHandlingStrategy=d(fr),this.urlUpdateStrategy=this.options.urlUpdateStrategy||"deferred",this.currentUrlTree=new Z,this.rawUrlTree=this.currentUrlTree,this.currentPageId=0,this.lastSuccessfulId=-1,this.routerState=is(null),this.stateMemento=this.createStateMemento()}getCurrentUrlTree(){return this.currentUrlTree}getRawUrlTree(){return this.rawUrlTree}restoredState(){return this.location.getState()}get browserPageId(){return this.canceledNavigationResolution!=="computed"?this.currentPageId:this.restoredState()?.\u0275routerPageId??this.currentPageId}getRouterState(){return this.routerState}createStateMemento(){return{rawUrlTree:this.rawUrlTree,currentUrlTree:this.currentUrlTree,routerState:this.routerState}}registerNonRouterCurrentEntryChangeListener(e){return this.location.subscribe(r=>{r.type==="popstate"&&e(r.url,r.state)})}handleRouterEvent(e,r){if(e instanceof Ae)this.stateMemento=this.createStateMemento();else if(e instanceof se)this.rawUrlTree=r.initialUrl;else if(e instanceof qt){if(this.urlUpdateStrategy==="eager"&&!r.extras.skipLocationChange){let i=this.urlHandlingStrategy.merge(r.finalUrl,r.initialUrl);this.setBrowserUrl(r.targetBrowserUrl??i,r)}}else e instanceof rt?(this.currentUrlTree=r.finalUrl,this.rawUrlTree=this.urlHandlingStrategy.merge(r.finalUrl,r.initialUrl),this.routerState=r.targetRouterState,this.urlUpdateStrategy==="deferred"&&!r.extras.skipLocationChange&&this.setBrowserUrl(r.targetBrowserUrl??this.rawUrlTree,r)):e instanceof J&&(e.code===j.GuardRejected||e.code===j.NoDataFromResolver)?this.restoreHistory(r):e instanceof nt?this.restoreHistory(r,!0):e instanceof V&&(this.lastSuccessfulId=e.id,this.currentPageId=this.browserPageId)}setBrowserUrl(e,r){let i=e instanceof Z?this.urlSerializer.serialize(e):e;if(this.location.isCurrentPathEqualTo(i)||r.extras.replaceUrl){let s=this.browserPageId,o=f(f({},r.extras.state),this.generateNgRouterState(r.id,s));this.location.replaceState(i,"",o)}else{let s=f(f({},r.extras.state),this.generateNgRouterState(r.id,this.browserPageId+1));this.location.go(i,"",s)}}restoreHistory(e,r=!1){if(this.canceledNavigationResolution==="computed"){let i=this.browserPageId,s=this.currentPageId-i;s!==0?this.location.historyGo(s):this.currentUrlTree===e.finalUrl&&s===0&&(this.resetState(e),this.resetUrlToCurrentUrlTree())}else this.canceledNavigationResolution==="replace"&&(r&&this.resetState(e),this.resetUrlToCurrentUrlTree())}resetState(e){this.routerState=this.stateMemento.routerState,this.currentUrlTree=this.stateMemento.currentUrlTree,this.rawUrlTree=this.urlHandlingStrategy.merge(this.currentUrlTree,e.finalUrl??this.rawUrlTree)}resetUrlToCurrentUrlTree(){this.location.replaceState(this.urlSerializer.serialize(this.rawUrlTree),"",this.generateNgRouterState(this.lastSuccessfulId,this.currentPageId))}generateNgRouterState(e,r){return this.canceledNavigationResolution==="computed"?{navigationId:e,\u0275routerPageId:r}:{navigationId:e}}static{this.\u0275fac=(()=>{let e;return function(i){return(e||(e=hn(t)))(i||t)}})()}static{this.\u0275prov=R({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})(),Ke=function(t){return t[t.COMPLETE=0]="COMPLETE",t[t.FAILED=1]="FAILED",t[t.REDIRECTING=2]="REDIRECTING",t}(Ke||{});function Rs(t,n){t.events.pipe(H(e=>e instanceof V||e instanceof J||e instanceof nt||e instanceof se),S(e=>e instanceof V||e instanceof se?Ke.COMPLETE:(e instanceof J?e.code===j.Redirect||e.code===j.SupersededByNewNavigation:!1)?Ke.REDIRECTING:Ke.FAILED),H(e=>e!==Ke.REDIRECTING),ve(1)).subscribe(()=>{n()})}function nc(t){throw t}var rc={paths:"exact",fragment:"ignored",matrixParams:"ignored",queryParams:"exact"},ic={paths:"subset",fragment:"ignored",matrixParams:"ignored",queryParams:"subset"},W=(()=>{class t{get currentUrlTree(){return this.stateManager.getCurrentUrlTree()}get rawUrlTree(){return this.stateManager.getRawUrlTree()}get events(){return this._events}get routerState(){return this.stateManager.getRouterState()}constructor(){this.disposed=!1,this.console=d(St),this.stateManager=d(ws),this.options=d(pt,{optional:!0})||{},this.pendingTasks=d(_e),this.urlUpdateStrategy=this.options.urlUpdateStrategy||"deferred",this.navigationTransitions=d(pr),this.urlSerializer=d(lt),this.location=d(ze),this.urlHandlingStrategy=d(fr),this._events=new Y,this.errorHandler=this.options.errorHandler||nc,this.navigated=!1,this.routeReuseStrategy=d(Qa),this.onSameUrlNavigation=this.options.onSameUrlNavigation||"ignore",this.config=d(ct,{optional:!0})?.flat()??[],this.componentInputBindingEnabled=!!d(Qt,{optional:!0}),this.eventsSubscription=new vr,this.resetConfig(this.config),this.navigationTransitions.setupNavigations(this,this.currentUrlTree,this.routerState).subscribe({error:e=>{this.console.warn(e)}}),this.subscribeToNavigationEvents()}subscribeToNavigationEvents(){let e=this.navigationTransitions.events.subscribe(r=>{try{let i=this.navigationTransitions.currentTransition,s=this.navigationTransitions.currentNavigation;if(i!==null&&s!==null){if(this.stateManager.handleRouterEvent(r,s),r instanceof J&&r.code!==j.Redirect&&r.code!==j.SupersededByNewNavigation)this.navigated=!0;else if(r instanceof V)this.navigated=!0;else if(r instanceof De){let o=r.navigationBehaviorOptions,c=this.urlHandlingStrategy.merge(r.url,i.currentRawUrl),a=f({browserUrl:i.extras.browserUrl,info:i.extras.info,skipLocationChange:i.extras.skipLocationChange,replaceUrl:i.extras.replaceUrl||this.urlUpdateStrategy==="eager"||Ya(i.source)},o);this.scheduleNavigation(c,Qe,null,a,{resolve:i.resolve,reject:i.reject,promise:i.promise})}}oc(r)&&this._events.next(r)}catch(i){this.navigationTransitions.transitionAbortSubject.next(i)}});this.eventsSubscription.add(e)}resetRootComponentType(e){this.routerState.root.component=e,this.navigationTransitions.rootComponentType=e}initialNavigation(){this.setUpLocationChangeListener(),this.navigationTransitions.hasRequestedNavigation||this.navigateToSyncWithBrowser(this.location.path(!0),Qe,this.stateManager.restoredState())}setUpLocationChangeListener(){this.nonRouterCurrentEntryChangeSubscription??=this.stateManager.registerNonRouterCurrentEntryChangeListener((e,r)=>{setTimeout(()=>{this.navigateToSyncWithBrowser(e,"popstate",r)},0)})}navigateToSyncWithBrowser(e,r,i){let s={replaceUrl:!0},o=i?.navigationId?i:null;if(i){let a=f({},i);delete a.navigationId,delete a.\u0275routerPageId,Object.keys(a).length!==0&&(s.state=a)}let c=this.parseUrl(e);this.scheduleNavigation(c,r,o,s)}get url(){return this.serializeUrl(this.currentUrlTree)}getCurrentNavigation(){return this.navigationTransitions.currentNavigation}get lastSuccessfulNavigation(){return this.navigationTransitions.lastSuccessfulNavigation}resetConfig(e){this.config=e.map(hr),this.navigated=!1}ngOnDestroy(){this.dispose()}dispose(){this.navigationTransitions.complete(),this.nonRouterCurrentEntryChangeSubscription&&(this.nonRouterCurrentEntryChangeSubscription.unsubscribe(),this.nonRouterCurrentEntryChangeSubscription=void 0),this.disposed=!0,this.eventsSubscription.unsubscribe()}createUrlTree(e,r={}){let{relativeTo:i,queryParams:s,fragment:o,queryParamsHandling:c,preserveFragment:a}=r,u=a?this.currentUrlTree.fragment:o,l=null;switch(c??this.options.defaultQueryParamsHandling){case"merge":l=f(f({},this.currentUrlTree.queryParams),s);break;case"preserve":l=this.currentUrlTree.queryParams;break;default:l=s||null}l!==null&&(l=this.removeEmptyProps(l));let h;try{let y=i?i.snapshot:this.routerState.snapshot.root;h=es(y)}catch{(typeof e[0]!="string"||e[0][0]!=="/")&&(e=[]),h=this.currentUrlTree.root}return ts(h,e,l,u??null)}navigateByUrl(e,r={skipLocationChange:!1}){let i=ge(e)?e:this.parseUrl(e),s=this.urlHandlingStrategy.merge(i,this.rawUrlTree);return this.scheduleNavigation(s,Qe,null,r)}navigate(e,r={skipLocationChange:!1}){return sc(e),this.navigateByUrl(this.createUrlTree(e,r),r)}serializeUrl(e){return this.urlSerializer.serialize(e)}parseUrl(e){try{return this.urlSerializer.parse(e)}catch{return this.urlSerializer.parse("/")}}isActive(e,r){let i;if(r===!0?i=f({},rc):r===!1?i=f({},ic):i=r,ge(e))return xi(this.currentUrlTree,e,i);let s=this.parseUrl(e);return xi(this.currentUrlTree,s,i)}removeEmptyProps(e){return Object.entries(e).reduce((r,[i,s])=>(s!=null&&(r[i]=s),r),{})}scheduleNavigation(e,r,i,s,o){if(this.disposed)return Promise.resolve(!1);let c,a,u;o?(c=o.resolve,a=o.reject,u=o.promise):u=new Promise((h,y)=>{c=h,a=y});let l=this.pendingTasks.add();return Rs(this,()=>{queueMicrotask(()=>this.pendingTasks.remove(l))}),this.navigationTransitions.handleNavigationRequest({source:r,restoredState:i,currentUrlTree:this.currentUrlTree,currentRawUrl:this.currentUrlTree,rawUrl:e,extras:s,resolve:c,reject:a,promise:u,currentSnapshot:this.routerState.snapshot,currentRouterState:this.routerState}),u.catch(h=>Promise.reject(h))}static{this.\u0275fac=function(r){return new(r||t)}}static{this.\u0275prov=R({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();function sc(t){for(let n=0;n{class t{constructor(e,r,i,s,o,c){this.router=e,this.route=r,this.tabIndexAttribute=i,this.renderer=s,this.el=o,this.locationStrategy=c,this.href=null,this.onChanges=new Y,this.preserveFragment=!1,this.skipLocationChange=!1,this.replaceUrl=!1,this.routerLinkInput=null;let a=o.nativeElement.tagName?.toLowerCase();this.isAnchorElement=a==="a"||a==="area",this.isAnchorElement?this.subscription=e.events.subscribe(u=>{u instanceof V&&this.updateHref()}):this.setTabIndexIfNotOnNativeEl("0")}setTabIndexIfNotOnNativeEl(e){this.tabIndexAttribute!=null||this.isAnchorElement||this.applyAttributeValue("tabindex",e)}ngOnChanges(e){this.isAnchorElement&&this.updateHref(),this.onChanges.next(this)}set routerLink(e){e==null?(this.routerLinkInput=null,this.setTabIndexIfNotOnNativeEl(null)):(ge(e)?this.routerLinkInput=e:this.routerLinkInput=Array.isArray(e)?e:[e],this.setTabIndexIfNotOnNativeEl("0"))}onClick(e,r,i,s,o){let c=this.urlTree;if(c===null||this.isAnchorElement&&(e!==0||r||i||s||o||typeof this.target=="string"&&this.target!="_self"))return!0;let a={skipLocationChange:this.skipLocationChange,replaceUrl:this.replaceUrl,state:this.state,info:this.info};return this.router.navigateByUrl(c,a),!this.isAnchorElement}ngOnDestroy(){this.subscription?.unsubscribe()}updateHref(){let e=this.urlTree;this.href=e!==null&&this.locationStrategy?this.locationStrategy?.prepareExternalUrl(this.router.serializeUrl(e)):null;let r=this.href===null?null:zr(this.href,this.el.nativeElement.tagName.toLowerCase(),"href");this.applyAttributeValue("href",r)}applyAttributeValue(e,r){let i=this.renderer,s=this.el.nativeElement;r!==null?i.setAttribute(s,e,r):i.removeAttribute(s,e)}get urlTree(){return this.routerLinkInput===null?null:ge(this.routerLinkInput)?this.routerLinkInput:this.router.createUrlTree(this.routerLinkInput,{relativeTo:this.relativeTo!==void 0?this.relativeTo:this.route,queryParams:this.queryParams,fragment:this.fragment,queryParamsHandling:this.queryParamsHandling,preserveFragment:this.preserveFragment})}static{this.\u0275fac=function(r){return new(r||t)(z(W),z(oe),Pr("tabindex"),z(vn),z(pn),z($e))}}static{this.\u0275dir=wt({type:t,selectors:[["","routerLink",""]],hostVars:1,hostBindings:function(r,i){r&1&&Zr("click",function(o){return i.onClick(o.button,o.ctrlKey,o.shiftKey,o.altKey,o.metaKey)}),r&2&&Xr("target",i.target)},inputs:{target:"target",queryParams:"queryParams",fragment:"fragment",queryParamsHandling:"queryParamsHandling",state:"state",info:"info",relativeTo:"relativeTo",preserveFragment:[2,"preserveFragment","preserveFragment",It],skipLocationChange:[2,"skipLocationChange","skipLocationChange",It],replaceUrl:[2,"replaceUrl","replaceUrl",It],routerLink:"routerLink"},standalone:!0,features:[Gr,Rt]})}}return t})(),Iu=(()=>{class t{get isActive(){return this._isActive}constructor(e,r,i,s,o){this.router=e,this.element=r,this.renderer=i,this.cdr=s,this.link=o,this.classes=[],this._isActive=!1,this.routerLinkActiveOptions={exact:!1},this.isActiveChange=new ye,this.routerEventsSubscription=e.events.subscribe(c=>{c instanceof V&&this.update()})}ngAfterContentInit(){p(this.links.changes,p(null)).pipe(Le()).subscribe(e=>{this.update(),this.subscribeToEachLinkOnChanges()})}subscribeToEachLinkOnChanges(){this.linkInputChangesSubscription?.unsubscribe();let e=[...this.links.toArray(),this.link].filter(r=>!!r).map(r=>r.onChanges);this.linkInputChangesSubscription=O(e).pipe(Le()).subscribe(r=>{this._isActive!==this.isLinkActive(this.router)(r)&&this.update()})}set routerLinkActive(e){let r=Array.isArray(e)?e:e.split(" ");this.classes=r.filter(i=>!!i)}ngOnChanges(e){this.update()}ngOnDestroy(){this.routerEventsSubscription.unsubscribe(),this.linkInputChangesSubscription?.unsubscribe()}update(){!this.links||!this.router.navigated||queueMicrotask(()=>{let e=this.hasActiveLinks();this.classes.forEach(r=>{e?this.renderer.addClass(this.element.nativeElement,r):this.renderer.removeClass(this.element.nativeElement,r)}),e&&this.ariaCurrentWhenActive!==void 0?this.renderer.setAttribute(this.element.nativeElement,"aria-current",this.ariaCurrentWhenActive.toString()):this.renderer.removeAttribute(this.element.nativeElement,"aria-current"),this._isActive!==e&&(this._isActive=e,this.cdr.markForCheck(),this.isActiveChange.emit(e))})}isLinkActive(e){let r=ac(this.routerLinkActiveOptions)?this.routerLinkActiveOptions:this.routerLinkActiveOptions.exact||!1;return i=>{let s=i.urlTree;return s?e.isActive(s,r):!1}}hasActiveLinks(){let e=this.isLinkActive(this.router);return this.link&&e(this.link)||this.links.some(e)}static{this.\u0275fac=function(r){return new(r||t)(z(W),z(pn),z(vn),z(Et),z(zi,8))}}static{this.\u0275dir=wt({type:t,selectors:[["","routerLinkActive",""]],contentQueries:function(r,i,s){if(r&1&&Kr(s,zi,5),r&2){let o;Yr(o=Qr())&&(i.links=o)}},inputs:{routerLinkActiveOptions:"routerLinkActiveOptions",ariaCurrentWhenActive:"ariaCurrentWhenActive",routerLinkActive:"routerLinkActive"},outputs:{isActiveChange:"isActiveChange"},exportAs:["routerLinkActive"],standalone:!0,features:[Rt]})}}return t})();function ac(t){return!!t.paths}var Yt=class{};var cc=(()=>{class t{constructor(e,r,i,s,o){this.router=e,this.injector=i,this.preloadingStrategy=s,this.loader=o}setUpPreloading(){this.subscription=this.router.events.pipe(H(e=>e instanceof V),ee(()=>this.preload())).subscribe(()=>{})}preload(){return this.processRoutes(this.injector,this.router.config)}ngOnDestroy(){this.subscription&&this.subscription.unsubscribe()}processRoutes(e,r){let i=[];for(let s of r){s.providers&&!s._injector&&(s._injector=yn(s.providers,e,`Route: ${s.path}`));let o=s._injector??e,c=s._loadedInjector??o;(s.loadChildren&&!s._loadedRoutes&&s.canLoad===void 0||s.loadComponent&&!s._loadedComponent)&&i.push(this.preloadConfig(o,s)),(s.children||s._loadedRoutes)&&i.push(this.processRoutes(c,s.children??s._loadedRoutes))}return O(i).pipe(Le())}preloadConfig(e,r){return this.preloadingStrategy.preload(r,()=>{let i;r.loadChildren&&r.canLoad===void 0?i=this.loader.loadChildren(e,r):i=p(null);let s=i.pipe(U(o=>o===null?p(void 0):(r._loadedRoutes=o.routes,r._loadedInjector=o.injector,this.processRoutes(o.injector??e,o.routes))));if(r.loadComponent&&!r._loadedComponent){let o=this.loader.loadComponent(r);return O([s,o]).pipe(Le())}else return s})}static{this.\u0275fac=function(r){return new(r||t)(m(W),m(Ct),m(le),m(Yt),m(dr))}}static{this.\u0275prov=R({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})(),Ss=new C(""),uc=(()=>{class t{constructor(e,r,i,s,o={}){this.urlSerializer=e,this.transitions=r,this.viewportScroller=i,this.zone=s,this.options=o,this.lastId=0,this.lastSource="imperative",this.restoredId=0,this.store={},o.scrollPositionRestoration||="disabled",o.anchorScrolling||="disabled"}init(){this.options.scrollPositionRestoration!=="disabled"&&this.viewportScroller.setHistoryScrollRestoration("manual"),this.routerEventsSubscription=this.createScrollEvents(),this.scrollEventsSubscription=this.consumeScrollEvents()}createScrollEvents(){return this.transitions.events.subscribe(e=>{e instanceof Ae?(this.store[this.lastId]=this.viewportScroller.getScrollPosition(),this.lastSource=e.navigationTrigger,this.restoredId=e.restoredState?e.restoredState.navigationId:0):e instanceof V?(this.lastId=e.id,this.scheduleScrollEvent(e,this.urlSerializer.parse(e.urlAfterRedirects).fragment)):e instanceof se&&e.code===Vt.IgnoredSameUrlNavigation&&(this.lastSource=void 0,this.restoredId=0,this.scheduleScrollEvent(e,this.urlSerializer.parse(e.url).fragment))})}consumeScrollEvents(){return this.transitions.events.subscribe(e=>{e instanceof Gt&&(e.position?this.options.scrollPositionRestoration==="top"?this.viewportScroller.scrollToPosition([0,0]):this.options.scrollPositionRestoration==="enabled"&&this.viewportScroller.scrollToPosition(e.position):e.anchor&&this.options.anchorScrolling==="enabled"?this.viewportScroller.scrollToAnchor(e.anchor):this.options.scrollPositionRestoration!=="disabled"&&this.viewportScroller.scrollToPosition([0,0]))})}scheduleScrollEvent(e,r){this.zone.runOutsideAngular(()=>{setTimeout(()=>{this.zone.run(()=>{this.transitions.events.next(new Gt(e,this.lastSource==="popstate"?this.store[this.restoredId]:null,r))})},0)})}ngOnDestroy(){this.routerEventsSubscription?.unsubscribe(),this.scrollEventsSubscription?.unsubscribe()}static{this.\u0275fac=function(r){Br()}}static{this.\u0275prov=R({token:t,factory:t.\u0275fac})}}return t})();function Mu(t,...n){return je([{provide:ct,multi:!0,useValue:t},[],{provide:oe,useFactory:Ts,deps:[W]},{provide:Tt,multi:!0,useFactory:bs},n.map(e=>e.\u0275providers)])}function Ts(t){return t.routerState.root}function gt(t,n){return{\u0275kind:t,\u0275providers:n}}function bs(){let t=d(dn);return n=>{let e=t.get(bt);if(n!==e.components[0])return;let r=t.get(W),i=t.get(Cs);t.get(gr)===1&&r.initialNavigation(),t.get(Es,null,un.Optional)?.setUpPreloading(),t.get(Ss,null,un.Optional)?.init(),r.resetRootComponentType(e.componentTypes[0]),i.closed||(i.next(),i.complete(),i.unsubscribe())}}var Cs=new C("",{factory:()=>new Y}),gr=new C("",{providedIn:"root",factory:()=>1});function lc(){return gt(2,[{provide:gr,useValue:0},{provide:wn,multi:!0,deps:[dn],useFactory:n=>{let e=n.get(oi,Promise.resolve());return()=>e.then(()=>new Promise(r=>{let i=n.get(W),s=n.get(Cs);Rs(i,()=>{r(!0)}),n.get(pr).afterPreactivation=()=>(r(!0),s.closed?p(void 0):s),i.initialNavigation()}))}}])}function hc(){return gt(3,[{provide:wn,multi:!0,useFactory:()=>{let n=d(W);return()=>{n.setUpLocationChangeListener()}}},{provide:gr,useValue:2}])}var Es=new C("");function dc(t){return gt(0,[{provide:Es,useExisting:cc},{provide:Yt,useExisting:t}])}function fc(){return gt(8,[ji,{provide:Qt,useExisting:ji}])}function pc(t){let n=[{provide:vs,useValue:Ja},{provide:ys,useValue:f({skipNextTransition:!!t?.skipInitialTransition},t)}];return gt(9,n)}var Bi=new C("ROUTER_FORROOT_GUARD"),gc=[ze,{provide:lt,useClass:Me},W,dt,{provide:oe,useFactory:Ts,deps:[W]},dr,[]],Au=(()=>{class t{constructor(e){}static forRoot(e,r){return{ngModule:t,providers:[gc,[],{provide:ct,multi:!0,useValue:e},{provide:Bi,useFactory:wc,deps:[[W,new ln,new Ar]]},{provide:pt,useValue:r||{}},r?.useHash?vc():yc(),mc(),r?.preloadingStrategy?dc(r.preloadingStrategy).\u0275providers:[],r?.initialNavigation?Rc(r):[],r?.bindToComponentInputs?fc().\u0275providers:[],r?.enableViewTransitions?pc().\u0275providers:[],Sc()]}}static forChild(e){return{ngModule:t,providers:[{provide:ct,multi:!0,useValue:e}]}}static{this.\u0275fac=function(r){return new(r||t)(m(Bi,8))}}static{this.\u0275mod=yt({type:t})}static{this.\u0275inj=vt({})}}return t})();function mc(){return{provide:Ss,useFactory:()=>{let t=d(li),n=d(q),e=d(pt),r=d(pr),i=d(lt);return e.scrollOffset&&t.setOffset(e.scrollOffset),new uc(i,r,t,n,e)}}}function vc(){return{provide:$e,useClass:ci}}function yc(){return{provide:$e,useClass:ai}}function wc(t){return"guarded"}function Rc(t){return[t.initialNavigation==="disabled"?hc().\u0275providers:[],t.initialNavigation==="enabledBlocking"?lc().\u0275providers:[]]}var Vi=new C("");function Sc(){return[{provide:Vi,useFactory:bs},{provide:Tt,multi:!0,useExisting:Vi}]}export{X as a,Us as b,kc as c,jc as d,Ei as e,au as f,Ni as g,So as h,A as i,oe as j,Qo as k,W as l,zi as m,Iu as n,Mu as o,fc as p,Au as q}; diff --git a/webui/dist/bitmagnet/browser/chunk-IMLYIOTE.js b/webui/dist/bitmagnet/browser/chunk-IMLYIOTE.js new file mode 100644 index 0000000..58f40e8 --- /dev/null +++ b/webui/dist/bitmagnet/browser/chunk-IMLYIOTE.js @@ -0,0 +1 @@ +import{g as J,j as A}from"./chunk-6OKZFKY7.js";import{A as z,J as H,P as k,R as K,Ua as q,b as T,ba as M,ca as N,da as W,fa as I,ga as V,ha as y,i as w,o as P,p as L,wa as R,z as Y}from"./chunk-4NEHCUZ2.js";import"./chunk-6XXA7HXI.js";import"./chunk-FKMTSCBK.js";import{$b as a,B as F,Cb as x,Ea as m,Fa as _,Hb as g,Mb as Q,N as $,Nb as B,Ob as O,Pb as G,Qb as s,Rb as r,Sb as S,Tb as D,Ub as E,Wb as h,Zb as d,kb as o,kc as c,lc as p,mc as C,nc as U,o as j,pc as v,qa as f,ua as b}from"./chunk-3DR3CJRN.js";function ce(n,u){if(n&1){let e=h();s(0,"section")(1,"mat-checkbox",4),d("change",function(i){m(e);let l=a(2);return l.localSearchDisabled=!i.checked,_(l.apisDisabled=l.localSearchDisabled?!0:l.apisDisabled)}),c(2),r(),s(3,"mat-checkbox",4),d("change",function(i){m(e);let l=a(2);return l.apisDisabled=!i.checked,_(l.localSearchDisabled=l.apisDisabled?l.localSearchDisabled:!0)}),c(4),r(),s(5,"mat-checkbox",4),d("change",function(i){m(e);let l=a(2);return _(l.classifierRematch=i.checked)}),c(6),r(),s(7,"mat-checkbox",4),d("change",function(i){m(e);let l=a(2);return _(l.orphans=i.checked)}),c(8),r()()}if(n&2){let e=a().$implicit,t=a();o(),g("checked",!t.apisDisabled),o(),p(e("dashboard.queues.match_content_by_local_search")),o(),g("checked",!t.apisDisabled),o(),p(e("dashboard.queues.match_content_by_external_api_search")),o(),g("checked",t.classifierRematch),o(),p(e("dashboard.queues.force_rematch")),o(),g("checked",t.orphans),o(),p(e("dashboard.queues.process_orphaned_torrents_only"))}}function le(n,u){n&1&&S(0,"mat-spinner")}function ue(n,u){if(n&1&&(s(0,"p"),c(1),r()),n&2){let e=a().$implicit;o(),p(e("dashboard.queues.jobs_enqueued"))}}function me(n,u){if(n&1){let e=h();D(0),s(1,"mat-card")(2,"h2",1),c(3),r(),s(4,"mat-dialog-content"),x(5,ce,9,8,"section")(6,le,1,0,"mat-spinner")(7,ue,2,1,"p"),r(),s(8,"mat-dialog-actions")(9,"button",2),d("click",function(){m(e);let i=a();return _(i.handleEnqueue())}),c(10),r(),s(11,"button",3),d("click",function(){m(e);let i=a();return _(i.dialogRef.close())}),c(12),r()()(),E()}if(n&2){let e=u.$implicit,t=a();o(3),C(" ",e("dashboard.queues.enqueue_torrent_processing_batch")," "),o(2),Q(t.stage==="PENDING"?5:t.stage==="REQUESTING"?6:t.stage==="DONE"?7:-1),o(4),g("disabled",t.stage!=="PENDING"),o(),C(" ",e("dashboard.queues.enqueue_jobs")," "),o(2),C(" ",e("general.dismiss")," ")}}var ne=(()=>{class n{constructor(){this.apollo=f(w),this.dialogRef=f(N),this.availableQueueNames=A,this.statusNames=J,this.stage="PENDING",this.apisDisabled=!0,this.localSearchDisabled=!0,this.classifierRematch=!1,this.orphans=!1}handleEnqueue(){this.stage==="PENDING"&&(this.stage="REQUESTING",this.apollo.mutate({mutation:Y,variables:{input:{apisDisabled:this.apisDisabled,localSearchDisabled:this.localSearchDisabled,classifierRematch:this.classifierRematch,contentTypes:this.contentTypes,orphans:this.orphans?!0:void 0}}}).subscribe(()=>{this.stage="DONE",this.data.onEnqueued?.()}))}static{this.\u0275fac=function(t){return new(t||n)}}static{this.\u0275cmp=b({type:n,selectors:[["app-queue-enqueue-reprocess-torrents-batch-dialog"]],standalone:!0,features:[v],decls:1,vars:0,consts:[[4,"transloco"],["mat-dialog-title",""],["mat-stroked-button","","color","warning",3,"click","disabled"],["mat-stroked-button","",3,"click"],[3,"change","checked"]],template:function(t,i){t&1&&x(0,me,13,5,"ng-container",0)},dependencies:[q,P,k,M,I,y,V,R,T],styles:["mat-dialog-content[_ngcontent-%COMP%]{min-height:240px;overflow:visible}mat-grid-tile[_ngcontent-%COMP%] mat-card[_ngcontent-%COMP%]{width:100%;height:100%}"]})}}return n})();function _e(n,u){if(n&1){let e=h();s(0,"mat-checkbox",6),d("change",function(i){m(e);let l=a(3);return _(l.handleQueueEvent(i))}),c(1),r()}if(n&2){let e=u.$implicit,t=a(3);g("value",e)("checked",t.queues==null?null:t.queues.includes(e)),o(),p(e)}}function de(n,u){if(n&1){let e=h();s(0,"mat-checkbox",6),d("change",function(i){m(e);let l=a(3);return _(l.handleStatusEvent(i))}),c(1),r()}if(n&2){let e=u.$implicit,t=a(3);g("value",e)("checked",t.statuses==null?null:t.statuses.includes(e)),o(),p(e)}}function pe(n,u){if(n&1){let e=h();s(0,"section")(1,"h4"),c(2),r(),s(3,"mat-checkbox",4),d("change",function(i){m(e);let l=a(2);return _(l.handleQueueEvent(i))}),c(4),r(),O(5,_e,2,3,"mat-checkbox",5,B),r(),s(7,"section")(8,"h4"),c(9,"Statuses:"),r(),s(10,"mat-checkbox",4),d("change",function(i){m(e);let l=a(2);return _(l.handleStatusEvent(i))}),c(11,"All"),r(),O(12,de,2,3,"mat-checkbox",5,B),r()}if(n&2){let e=a().$implicit,t=a();o(2),C("",e("dashboard.queues.queues"),":"),o(),g("checked",t.queues===void 0),o(),p(e("general.all")),o(),G(t.availableQueueNames),o(5),g("checked",t.statuses===void 0),o(2),G(t.statusNames)}}function ge(n,u){n&1&&S(0,"mat-spinner")}function he(n,u){if(n&1&&(s(0,"p"),c(1),r()),n&2){let e=a(2).$implicit,t=a();o(),U("",e("general.error"),": ",t.error.message,"")}}function xe(n,u){if(n&1&&(s(0,"p"),c(1),r()),n&2){let e=a(2).$implicit;o(),p(e("dashboard.queues.queue_purged"))}}function fe(n,u){if(n&1&&x(0,he,2,2,"p")(1,xe,2,1,"p"),n&2){let e=a(2);Q(e.error?0:1)}}function Ce(n,u){if(n&1){let e=h();D(0),s(1,"mat-card")(2,"h2",1),c(3,"Purge Queue Jobs"),r(),s(4,"mat-dialog-content"),x(5,pe,14,4)(6,ge,1,0,"mat-spinner")(7,fe,2,1),r(),s(8,"mat-dialog-actions")(9,"button",2),d("click",function(){m(e);let i=a();return _(i.handlePurgeJobs())}),c(10),r(),s(11,"button",3),d("click",function(){m(e);let i=a();return _(i.dialogRef.close())}),c(12),r()()(),E()}if(n&2){let e=u.$implicit,t=a();o(5),Q(t.stage==="PENDING"?5:t.stage==="REQUESTING"?6:t.stage==="DONE"?7:-1),o(4),g("disabled",t.stage!=="PENDING"),o(),C(" ",e("dashboard.queues.purge_jobs")," "),o(2),C(" ",e("general.dismiss")," ")}}var ie=(()=>{class n{constructor(){this.apollo=f(w),this.dialogRef=f(N),this.availableQueueNames=A,this.statusNames=J,this.stage="PENDING"}handleQueueEvent(e){if(e.source.value==="_all"){this.queues=void 0;return}if(e.checked){let t=this.queues??[];t.includes(e.source.value)||(t=[...t,e.source.value]),t.length===this.availableQueueNames.length?(e.source.checked=!1,this.queues=void 0):this.queues=t}else{let t=this.queues?.filter(i=>i!==e.source.value);t?.length?this.queues=t:this.queues=void 0}}handleStatusEvent(e){if(e.source.value==="_all"){this.statuses=void 0;return}if(e.checked){let t=this.statuses??[];t.includes(e.source.value)||(t=[...t,e.source.value]),t.length===this.statusNames.length?(e.source.checked=!1,this.statuses=void 0):this.statuses=t}else{let t=this.statuses?.filter(i=>i!==e.source.value);t?.length?this.statuses=t:this.statuses=void 0}}handlePurgeJobs(){this.stage==="PENDING"&&(this.stage="REQUESTING",this.apollo.mutate({mutation:z,variables:{input:{queues:this.queues,statuses:this.statuses}}}).pipe($(e=>(this.stage="DONE",this.error=e,j)),F(()=>{this.stage="DONE",this.data.onPurged?.()})).subscribe())}static{this.\u0275fac=function(t){return new(t||n)}}static{this.\u0275cmp=b({type:n,selectors:[["app-queue-purge-jobs-dialog"]],standalone:!0,features:[v],decls:1,vars:0,consts:[[4,"transloco"],["mat-dialog-title",""],["mat-stroked-button","","color","warning",3,"click","disabled"],["mat-stroked-button","",3,"click"],["value","_all",3,"change","checked"],[3,"value","checked"],[3,"change","value","checked"]],template:function(t,i){t&1&&x(0,Ce,13,4,"ng-container",0)},dependencies:[q,P,k,M,I,y,V,R,T,H],styles:["mat-dialog-content[_ngcontent-%COMP%]{min-height:240px;overflow:visible}mat-grid-tile[_ngcontent-%COMP%] mat-card[_ngcontent-%COMP%]{width:100%;height:100%}"]})}}return n})();function be(n,u){if(n&1){let e=h();D(0),s(1,"mat-card")(2,"mat-card-content")(3,"ul")(4,"li")(5,"a",1),d("click",function(){m(e);let i=a();return _(i.openDialogPurgeJobs())}),c(6),r()(),s(7,"li")(8,"a",1),d("click",function(){m(e);let i=a();return _(i.openDialogEnqueueReprocessTorrentsBatch())}),c(9),r()()()()(),E()}if(n&2){let e=u.$implicit;o(6),p(e("dashboard.queues.purge_queue_jobs")),o(3),p(e("dashboard.queues.enqueue_torrent_processing_batch"))}}var ze=(()=>{class n{constructor(){this.dialog=f(W)}openDialogPurgeJobs(){this.dialog.open(ie)}openDialogEnqueueReprocessTorrentsBatch(){this.dialog.open(ne)}static{this.\u0275fac=function(t){return new(t||n)}}static{this.\u0275cmp=b({type:n,selectors:[["app-queue-admin"]],standalone:!0,features:[v],decls:1,vars:0,consts:[[4,"transloco"],["mat-button","",3,"click"]],template:function(t,i){t&1&&x(0,be,10,2,"ng-container",0)},dependencies:[q,L,k,K,T],styles:["ul[_ngcontent-%COMP%]{list-style-type:none;padding-left:0}ul[_ngcontent-%COMP%] li[_ngcontent-%COMP%]{margin-bottom:6px}"]})}}return n})();export{ze as QueueAdminComponent}; diff --git a/webui/dist/bitmagnet/browser/chunk-KUHKEGBL.js b/webui/dist/bitmagnet/browser/chunk-KUHKEGBL.js new file mode 100644 index 0000000..bad3c23 --- /dev/null +++ b/webui/dist/bitmagnet/browser/chunk-KUHKEGBL.js @@ -0,0 +1 @@ +import{d as M,e as y,f as w,g as f,h as g,j as S,k as D,l as I,m as X}from"./chunk-3PIWRAOL.js";function h(t,e){let r=+f(t)-+f(e);return r<0?-1:r>0?1:r}function T(t){return w(t,Date.now())}function _(t,e,r){let[s,o]=D(r?.in,t,e),c=s.getFullYear()-o.getFullYear(),i=s.getMonth()-o.getMonth();return c*12+i}function F(t){return e=>{let s=(t?Math[t]:Math.trunc)(e);return s===0?0:s}}function Y(t,e){return+f(t)-+f(e)}function z(t,e){let r=f(t,e?.in);return r.setHours(23,59,59,999),r}function L(t,e){let r=f(t,e?.in),s=r.getMonth();return r.setFullYear(r.getFullYear(),s+1,0),r.setHours(23,59,59,999),r}function N(t,e){let r=f(t,e?.in);return+z(r,e)==+L(r,e)}function b(t,e,r){let[s,o,c]=D(r?.in,t,t,e),i=h(o,c),n=Math.abs(_(o,c));if(n<1)return 0;o.getMonth()===1&&o.getDate()>27&&o.setDate(30),o.setMonth(o.getMonth()-i*n);let m=h(o,c)===-i;N(s)&&n===1&&h(s,c)===1&&(m=!1);let u=i*(n-+m);return u===0?0:u}function A(t,e,r){let s=Y(t,e)/1e3;return F(r?.roundingMethod)(s)}function v(t,e,r){let s=g(),o=r?.locale??s.locale??I,c=2520,i=h(t,e);if(isNaN(i))throw new RangeError("Invalid time value");let n=Object.assign({},r,{addSuffix:r?.addSuffix,comparison:i}),[m,u]=D(r?.in,...i>0?[e,t]:[t,e]),l=A(u,m),x=(S(u)-S(m))/1e3,a=Math.round((l-x)/60),p;if(a<2)return r?.includeSeconds?l<5?o.formatDistance("lessThanXSeconds",5,n):l<10?o.formatDistance("lessThanXSeconds",10,n):l<20?o.formatDistance("lessThanXSeconds",20,n):l<40?o.formatDistance("halfAMinute",0,n):l<60?o.formatDistance("lessThanXMinutes",1,n):o.formatDistance("xMinutes",1,n):a===0?o.formatDistance("lessThanXMinutes",1,n):o.formatDistance("xMinutes",a,n);if(a<45)return o.formatDistance("xMinutes",a,n);if(a<90)return o.formatDistance("aboutXHours",1,n);if(a{let l=`x${u.replace(/(^.)/,a=>a.toUpperCase())}`,x=t[u];return x!==void 0&&(c||t[u])?m.concat(s.formatDistance(l,x)):m},[]).join(i):""}var _t=(t,e)=>H(t,{addSuffix:!0,locale:X(e)}),Ft=(t,e)=>k(t,{locale:X(e)});export{_t as a,Ft as b}; diff --git a/webui/dist/bitmagnet/browser/chunk-LACCEILM.js b/webui/dist/bitmagnet/browser/chunk-LACCEILM.js new file mode 100644 index 0000000..256f593 --- /dev/null +++ b/webui/dist/bitmagnet/browser/chunk-LACCEILM.js @@ -0,0 +1,3 @@ +import{c as Ft,d as Lt,e as Qt,f as jt}from"./chunk-ZVYX4MB3.js";import{b as Nt}from"./chunk-DKVITRV6.js";import{a as dt}from"./chunk-3PIWRAOL.js";import{a as R}from"./chunk-M3BEO55A.js";import{$ as vt,Da as kt,Ea as Mt,Fa as It,Ga as Et,Ha as At,I as pt,Ia as Pt,Ja as Ot,K as _t,Ka as Vt,La as Dt,M as ut,Ma as Bt,N as gt,Na as $t,O as xt,Oa as Rt,P as Ct,Pa as Ht,Qa as zt,R as ht,T as Tt,Ua as $,X as ft,Z as bt,aa as wt,b as V,ba as St,d as at,e as rt,f as lt,g as st,n as ct,o as mt,qa as D,va as yt,ya as B}from"./chunk-4NEHCUZ2.js";import{c as nt,d as it,g as Q,h as j,i as ot}from"./chunk-6XXA7HXI.js";import{j as tt,l as et}from"./chunk-FKMTSCBK.js";import{$b as s,Cb as d,Ea as _,Fa as u,Gb as Y,Hb as m,Kb as J,Mb as S,N as M,Na as E,Nb as H,Ob as z,Pb as F,Qb as l,Rb as r,Sb as h,Tb as T,Ub as f,Wb as b,Zb as g,_c as Z,cc as L,h as U,ha as y,hb as K,jc as N,kb as a,kc as c,l as q,lc as x,mc as w,nc as W,o as k,pc as A,qa as v,qc as X,ua as I,uc as P,vc as O}from"./chunk-3DR3CJRN.js";var Ee=(e,o)=>{let n=G(e,o)?.split(",").map(i=>i.trim()).filter(Boolean);return n?.length?Array.from(new Set(n)).sort():void 0},G=(e,o)=>typeof e[o]=="string"&&decodeURIComponent(e[o])||void 0,Ae=(e,o)=>{if(e&&e[o]&&/^\d+$/.test(e[o]))return parseInt(e[o])};function Yt(e,o){if(e&1&&(l(0,"span",7),c(1),r()),e&2){let t=s(2).$implicit;a(),x(t("torrents.copy"))}}function Jt(e,o){if(e&1&&(l(0,"mat-icon"),c(1,"content_copy"),r(),d(2,Yt,2,1,"span",7)),e&2){let t=s(2);a(2),S(t.breakpoints.sizeAtLeast("Medium")?2:-1)}}function Wt(e,o){if(e&1&&(l(0,"mat-card")(1,"mat-card-actions",8)(2,"button",9),h(3,"mat-icon",10),c(4),r(),l(5,"button",9)(6,"mat-icon"),c(7,"tag"),r(),c(8),r()()()),e&2){let t=s().$implicit,n=s();a(2),m("disabled",!n.selectedItems.length)("cdkCopyToClipboard",n.getSelectedMagnetLinks()),a(2),w("",t("torrents.magnet_links")," "),a(),m("disabled",!n.selectedItems.length)("cdkCopyToClipboard",n.getSelectedInfoHashes()),a(3),w("",t("torrents.info_hashes")," ")}}function Xt(e,o){if(e&1&&(l(0,"span",7),c(1),r()),e&2){let t=s(2).$implicit;a(),x(t("torrents.edit_tags"))}}function Zt(e,o){if(e&1&&(l(0,"mat-icon"),c(1,"sell"),r(),d(2,Xt,2,1,"span",7)),e&2){let t=s(2);a(2),S(t.breakpoints.sizeAtLeast("Medium")?2:-1)}}function te(e,o){if(e&1){let t=b();l(0,"mat-chip-row",20),g("edited",function(i){let p=_(t).$implicit,C=s(3);return u(C.renameTag(p,i.value))})("removed",function(){let i=_(t).$implicit,p=s(3);return u(p.deleteTag(i))}),c(1),l(2,"mat-icon",21),c(3,"cancel"),r()()}if(e&2){let t=o.$implicit;m("editable",!0)("aria-description","press enter to edit"),a(),w(" ",t," ")}}function ee(e,o){if(e&1&&(l(0,"mat-option",16),c(1),r()),e&2){let t=o.$implicit;m("value",t),a(),x(t)}}function ne(e,o){if(e&1){let t=b();l(0,"mat-card")(1,"mat-form-field",11)(2,"mat-chip-grid",12,0),z(4,te,4,3,"mat-chip-row",13,H),r(),l(6,"input",14),g("matChipInputTokenEnd",function(i){_(t);let p=s(2);return u(i.value&&p.addTag(i.value))}),r(),l(7,"mat-autocomplete",15,1),g("optionSelected",function(i){_(t);let p=s(2);return u(p.addTag(i.option.viewValue))}),z(9,ee,2,2,"mat-option",16,H),r()(),l(11,"mat-card-actions",8)(12,"button",17),g("click",function(){_(t);let i=s(2);return u(i.setTags())}),c(13," Set tags "),r(),l(14,"button",18),g("click",function(){_(t);let i=s(2);return u(i.putTags())}),c(15," Put tags "),r(),l(16,"button",19),g("click",function(){_(t);let i=s(2);return u(i.deleteTags())}),c(17," Delete tags "),r()()()}if(e&2){let t=N(3),n=N(8),i=s(2);a(4),F(i.editedTags),a(2),m("formControl",i.newTagCtrl)("matAutocomplete",n)("matChipInputFor",t)("matChipInputSeparatorKeyCodes",i.separatorKeysCodes)("value",i.newTagCtrl.value),a(3),F(i.suggestedTags),a(3),m("disabled",!i.selectedItems.length),a(2),m("disabled",!i.selectedItems.length||!i.editedTags.length&&!i.newTagCtrl.value),a(2),m("disabled",!i.selectedItems.length||!i.editedTags.length&&!i.newTagCtrl.value)}}function ie(e,o){if(e&1&&(l(0,"span",7),c(1),r()),e&2){let t=s(2).$implicit;a(),x(t("torrents.delete"))}}function oe(e,o){if(e&1&&(l(0,"mat-icon"),c(1,"delete_forever"),r(),d(2,ie,2,1,"span",7)),e&2){let t=s(2);a(2),S(t.breakpoints.sizeAtLeast("Medium")?2:-1)}}function ae(e,o){if(e&1){let t=b();l(0,"mat-card")(1,"mat-card-content")(2,"p")(3,"strong"),c(4,"Are you sure you want to delete the selected torrents?"),r(),h(5,"br"),c(6,"This action cannot be undone. "),r()(),l(7,"mat-card-actions",8)(8,"button",22),g("click",function(){_(t);let i=s(2);return u(i.deleteTorrents())}),l(9,"mat-icon"),c(10,"delete_forever"),r(),c(11,"Delete "),r()()()}if(e&2){let t=s(2);a(8),m("disabled",!t.selectedItems.length)}}function re(e,o){e&1&&(l(0,"mat-icon",23),c(1,"close"),r())}function le(e,o){e&1&&(l(0,"mat-tab"),d(1,re,2,0,"ng-template",5),r())}function se(e,o){if(e&1){let t=b();T(0),l(1,"mat-tab-group",3),g("focusChange",function(i){_(t);let p=s();return u(p.selectTab(i.index==4?0:i.index))}),h(2,"mat-tab",4),l(3,"mat-tab"),d(4,Jt,3,1,"ng-template",5)(5,Wt,9,6,"ng-template",6),r(),l(6,"mat-tab"),d(7,Zt,3,1,"ng-template",5)(8,ne,18,8,"ng-template",6),r(),l(9,"mat-tab"),d(10,oe,3,1,"ng-template",5)(11,ae,12,1,"ng-template",6),r(),d(12,le,2,0,"mat-tab"),r(),f()}if(e&2){let t=s();a(),m("selectedIndex",t.selectedTabIndex)("mat-stretch-tabs",!1),a(),m("aria-labelledby","hidden"),a(10),S(t.selectedTabIndex>0?12:-1)}}var Ze=(()=>{class e{constructor(){this.graphQLService=v(pt),this.errorsService=v(dt),this.breakpoints=v(R),this.selectedItems$=new U,this.updated=new E,this.separatorKeysCodes=[13,188],this.selectedTabIndex=0,this.newTagCtrl=new lt(""),this.editedTags=Array(),this.suggestedTags=Array(),this.selectedItems=new Array}ngOnInit(){this.selectedItems$.subscribe(t=>{this.selectedItems=t})}selectTab(t){this.selectedTabIndex=t}getSelectedMagnetLinks(){return this.selectedItems.map(t=>t.torrent.magnetUri).join(` +`)}getSelectedInfoHashes(){return this.selectedItems.map(t=>t.infoHash).join(` +`)}addTag(t){this.editedTags.includes(t)||this.editedTags.push(t),this.newTagCtrl.reset(),this.updateSuggestedTags()}deleteTag(t){this.editedTags=this.editedTags.filter(n=>n!==t),this.updateSuggestedTags()}renameTag(t,n){this.editedTags=this.editedTags.map(i=>i===t?n:i),this.updateSuggestedTags()}putTags(){let t=this.selectedItems.map(({infoHash:n})=>n);if(t.length)return this.newTagCtrl.value&&this.addTag(this.newTagCtrl.value),this.graphQLService.torrentPutTags({infoHashes:t,tagNames:this.editedTags}).pipe(M(n=>(this.errorsService.addError(`Error putting tags: ${n.message}`),k))).pipe(y(()=>{this.updated.emit()})).subscribe()}setTags(){let t=this.selectedItems.map(({infoHash:n})=>n);if(t.length)return this.newTagCtrl.value&&this.addTag(this.newTagCtrl.value),this.graphQLService.torrentSetTags({infoHashes:t,tagNames:this.editedTags}).pipe(M(n=>(this.errorsService.addError(`Error setting tags: ${n.message}`),k))).pipe(y(()=>{this.updated.emit()})).subscribe()}deleteTags(){let t=this.selectedItems.map(({infoHash:n})=>n);if(t.length)return this.newTagCtrl.value&&this.addTag(this.newTagCtrl.value),this.graphQLService.torrentDeleteTags({infoHashes:t,tagNames:this.editedTags}).pipe(M(n=>(this.errorsService.addError(`Error deleting tags: ${n.message}`),k))).pipe(y(()=>{this.updated.emit()})).subscribe()}updateSuggestedTags(){return this.graphQLService.torrentSuggestTags({input:{prefix:this.newTagCtrl.value,exclusions:this.editedTags}}).pipe(y(t=>{this.suggestedTags.splice(0,this.suggestedTags.length,...t.suggestions.map(n=>n.name))})).subscribe()}deleteTorrents(){let t=this.selectedItems.map(({infoHash:n})=>n);this.graphQLService.torrentDelete({infoHashes:t}).pipe(M(n=>(this.errorsService.addError(`Error deleting torrents: ${n.message}`),k))).pipe(y(()=>{this.updated.emit()})).subscribe()}static{this.\u0275fac=function(n){return new(n||e)}}static{this.\u0275cmp=I({type:e,selectors:[["app-torrents-bulk-actions"]],inputs:{selectedItems$:"selectedItems$"},outputs:{updated:"updated"},standalone:!0,features:[A],decls:1,vars:0,consts:[["chipGrid",""],["auto","matAutocomplete"],[4,"transloco"],["animationDuration","0",1,"tab-group-bulk-actions",3,"focusChange","selectedIndex","mat-stretch-tabs"],[1,"bulk-tab-placeholder",3,"aria-labelledby"],["mat-tab-label",""],["matTabContent",""],[1,"label"],[1,"button-row"],["mat-stroked-button","",3,"disabled","cdkCopyToClipboard"],["svgIcon","magnet"],["subscriptSizing","dynamic",1,"form-edit-tags"],["aria-label","Enter tags"],[3,"editable","aria-description"],["placeholder","Tag...",3,"matChipInputTokenEnd","formControl","matAutocomplete","matChipInputFor","matChipInputSeparatorKeyCodes","value"],[3,"optionSelected"],[3,"value"],["mat-stroked-button","","color","primary","matTooltip","Replace tags of the selected torrents",3,"click","disabled"],["mat-stroked-button","","color","primary","matTooltip","Add tags to the selected torrents",3,"click","disabled"],["mat-stroked-button","","color","primary","matTooltip","Remove tags from the selected torrents",3,"click","disabled"],[3,"edited","removed","editable","aria-description"],["matChipRemove",""],["mat-stroked-button","","color","warn",3,"click","disabled"],[2,"margin-right","0"]],template:function(n,i){n&1&&d(0,se,13,4,"ng-container",2)},dependencies:[$,_t,gt,ct,xt,mt,Ct,Tt,ht,vt,wt,ft,bt,ut,D,$t,Rt,Ht,zt,B,at,rt,st,V],styles:["mat-tab-group[_ngcontent-%COMP%]{padding-left:10px}button[_ngcontent-%COMP%]{margin-right:10px}p[_ngcontent-%COMP%]{margin-top:0} .mdc-tab[aria-labelledby=hidden]{display:none}"]})}}return e})();var ce=()=>["expandedDetail"];function me(e,o){if(e&1){let t=b();l(0,"th",19)(1,"mat-checkbox",20),g("change",function(){_(t);let i=s(2);return u(i.toggleAllRows())}),r()()}if(e&2){let t=s().$implicit,n=s();a(),m("checked",n.selection.hasValue()&&n.isAllSelected())("indeterminate",n.selection.hasValue()&&!n.isAllSelected())("matTooltip",n.isAllSelected()?t("torrents.deselect_all"):t("torrents.select_all"))}}function de(e,o){if(e&1){let t=b();l(0,"td",21)(1,"mat-checkbox",22),g("click",function(i){return _(t),u(i.stopPropagation())})("change",function(i){let p=_(t).$implicit,C=s(2);return u(i?C.selection.toggle(C.item(p).infoHash):null)}),r()()}if(e&2){let t=o.$implicit,n=s(2);a(),m("checked",n.selection.isSelected(n.item(t).infoHash))}}function pe(e,o){if(e&1&&(l(0,"th",19),c(1),r()),e&2){let t=s().$implicit;a(),x(t("torrents.summary"))}}function _e(e,o){if(e&1&&(l(0,"p",26),c(1),r()),e&2){let t=s().$implicit,n=s(2);a(),x(n.item(t).torrent.name)}}function ue(e,o){if(e&1){let t=b();l(0,"td",23),g("click",function(i){let p=_(t).$implicit;return s(2).toggleTorrentContentId(p.id),u(i.stopPropagation())}),l(1,"mat-icon",24),c(2),r(),l(3,"span",25),c(4),r(),d(5,_e,2,1,"p",26),h(6,"app-torrent-chips",27),r()}if(e&2){let t,n,i=o.$implicit,p=s().$implicit,C=s();a(),m("matTooltip",p("content_types.singular."+((t=C.item(i).contentType)!==null&&t!==void 0?t:"null"))),a(),x((n=(n=C.contentTypeInfo(C.item(i).contentType))==null?null:n.icon)!==null&&n!==void 0?n:"question_mark"),a(2),x(C.item(i).title),a(),S(C.item(i).title!==C.item(i).torrent.name?5:-1),a(),m("torrentContent",i)}}function ge(e,o){if(e&1&&(l(0,"th",19),c(1),r()),e&2){let t=s().$implicit;a(),x(t("torrents.size"))}}function xe(e,o){if(e&1&&(l(0,"td",21),c(1),P(2,"filesize"),r()),e&2){let t=o.$implicit,n=s(2);a(),w(" ",O(2,1,n.item(t).torrent.size)," ")}}function Ce(e,o){if(e&1&&(l(0,"th",19),c(1),r()),e&2){let t=s().$implicit;a(),x(t("torrents.published"))}}function he(e,o){if(e&1&&(l(0,"td",28)(1,"abbr",29),c(2),P(3,"timeAgo"),r()()),e&2){let t=o.$implicit,n=s(2);a(),L("matTooltip",n.item(t).publishedAt),a(),w(" ",O(3,2,n.item(t).publishedAt)," ")}}function Te(e,o){if(e&1&&(l(0,"th",19)(1,"abbr",24),c(2),r()()),e&2){let t=s().$implicit;a(),m("matTooltip",t("torrents.seeders")+" / "+t("torrents.leechers")),a(),x(t("torrents.s_l"))}}function fe(e,o){if(e&1&&(l(0,"td",21),c(1),r()),e&2){let t,n=o.$implicit,i=s(2);a(),W(" ",(t=i.item(n).seeders)!==null&&t!==void 0?t:"?"," / ",(t=i.item(n).leechers)!==null&&t!==void 0?t:"?"," ")}}function be(e,o){if(e&1&&(l(0,"th",30),c(1),r()),e&2){let t=s().$implicit;a(),w(" ",t("torrents.magnet")," ")}}function ve(e,o){if(e&1&&(l(0,"td",21)(1,"a",31),h(2,"mat-icon",32),r()()),e&2){let t=o.$implicit,n=s(2);a(),L("href",n.item(t).torrent.magnetUri,K)}}function we(e,o){if(e&1){let t=b();l(0,"td",21)(1,"div",33)(2,"app-torrent-content",34),g("updated",function(){let i=_(t).$implicit,p=s(2);return u(p.updated.emit(p.item(i).infoHash))}),r()()()}if(e&2){let t=o.$implicit,n=s(2);Y("colspan",n.displayedColumns.length),a(),m("@detailExpand",n.expandedId.getValue()===t.id?"expanded":"collapsed"),a(),m("torrentContent",t)("size",!1)("published",n.breakpoints.sizeAtLeast("Medium"))("peers",n.breakpoints.sizeAtLeast("Medium"))}}function Se(e,o){e&1&&h(0,"tr",35)}function ye(e,o){if(e&1&&h(0,"tr",36),e&2){let t=o.$implicit,n=s(2);J("summary-row "+(t.id===n.expandedId.getValue()?"expanded":"collapsed"))}}function ke(e,o){e&1&&h(0,"tr",37)}function Me(e,o){if(e&1&&(T(0),l(1,"div",1),h(2,"mat-progress-bar",2),P(3,"async"),r(),l(4,"table",3),T(5,4),d(6,me,2,3,"th",5)(7,de,2,1,"td",6),f(),T(8,7),d(9,pe,2,1,"th",5)(10,ue,7,5,"td",8),f(),T(11,9),d(12,ge,2,1,"th",5)(13,xe,3,3,"td",6),f(),T(14,10),d(15,Ce,2,1,"th",5)(16,he,4,4,"td",11),f(),T(17,12),d(18,Te,3,2,"th",5)(19,fe,2,2,"td",6),f(),T(20,13),d(21,be,2,1,"th",14)(22,ve,3,1,"td",6),f(),T(23,15),d(24,we,3,6,"td",6),f(),d(25,Se,1,0,"tr",16)(26,ye,1,2,"tr",17)(27,ke,1,0,"tr",18),r(),f()),e&2){let t=s();a(2),m("mode",O(3,7,t.dataSource.loading$)?"indeterminate":"determinate")("value",0),a(2),m("dataSource",t.dataSource)("multiTemplateDataRows",!0),a(21),m("matHeaderRowDef",t.displayedColumns),a(),m("matRowDefColumns",t.displayedColumns),a(),m("matRowDefColumns",X(9,ce))}}var bn=(()=>{class e{constructor(){this.route=v(tt),this.router=v(et),this.breakpoints=v(R),this.contentTypeInfo=Ft,this.displayedColumns=Ie,this.updated=new E,this.items=Array(),this.expandedId=new q(null)}ngOnInit(){this.dataSource.items$.subscribe(t=>{this.items=t}),this.route.queryParams.subscribe(t=>{let n=this.expandedId.getValue()??void 0,i=G(t,"expanded");n!==i&&this.expandedId.next(i??null)}),this.expandedId.subscribe(t=>{this.router.navigate([],{relativeTo:this.route,queryParams:{expanded:t?encodeURIComponent(t):void 0},queryParamsHandling:"merge"})})}isAllSelected(){return this.items.every(t=>this.selection.isSelected(t.infoHash))}toggleAllRows(){if(this.isAllSelected()){this.selection.clear();return}this.selection.select(...this.items.map(t=>t.infoHash))}toggleTorrentContentId(t){this.expandedId.getValue()===t?this.expandedId.next(null):this.expandedId.next(t)}item(t){return t}static{this.\u0275fac=function(n){return new(n||e)}}static{this.\u0275cmp=I({type:e,selectors:[["app-torrents-table"]],inputs:{dataSource:"dataSource",selection:"selection",displayedColumns:"displayedColumns"},outputs:{updated:"updated"},standalone:!0,features:[A],decls:1,vars:0,consts:[[4,"transloco"],[1,"progress-bar-container"],[3,"mode","value"],["mat-table","",1,"table-torrents",3,"dataSource","multiTemplateDataRows"],["matColumnDef","select"],["mat-header-cell","",4,"matHeaderCellDef"],["mat-cell","",4,"matCellDef"],["matColumnDef","summary"],["mat-cell","",3,"click",4,"matCellDef"],["matColumnDef","size"],["matColumnDef","publishedAt"],["class","td-published-at","mat-cell","",4,"matCellDef"],["matColumnDef","peers"],["matColumnDef","magnet"],["mat-header-cell","","style","text-align: center",4,"matHeaderCellDef"],["matColumnDef","expandedDetail"],["mat-header-row","",4,"matHeaderRowDef"],["mat-row","",3,"class",4,"matRowDef","matRowDefColumns"],["mat-row","","class","expanded-detail-row",4,"matRowDef","matRowDefColumns"],["mat-header-cell",""],[3,"change","checked","indeterminate","matTooltip"],["mat-cell",""],[3,"click","change","checked"],["mat-cell","",3,"click"],[3,"matTooltip"],[1,"title"],[1,"original-name"],[3,"torrentContent"],["mat-cell","",1,"td-published-at"],["matTooltipClass","tooltip-published-at",3,"matTooltip"],["mat-header-cell","",2,"text-align","center"],[3,"href"],["svgIcon","magnet"],[1,"item-detail"],[3,"updated","torrentContent","size","published","peers"],["mat-header-row",""],["mat-row",""],["mat-row","",1,"expanded-detail-row"]],template:function(n,i){n&1&&d(0,Me,28,10,"ng-container",0)},dependencies:[$,St,D,yt,kt,It,Ot,Et,Mt,Vt,At,Pt,Dt,Bt,B,V,Z,Lt,Nt,Qt,jt],styles:[".progress-bar-container[_ngcontent-%COMP%]{height:10px}tr.expanded-detail-row[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{border-bottom-width:0}tr.expanded[_ngcontent-%COMP%] + tr.expanded-detail-row[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{border-bottom-width:1px}th.cdk-column-select[_ngcontent-%COMP%], td.cdk-column-select[_ngcontent-%COMP%]{padding-right:0}td.mat-column-summary[_ngcontent-%COMP%]{vertical-align:middle;cursor:pointer;white-space:pre-wrap;padding-top:8px;padding-bottom:8px}td.mat-column-summary[_ngcontent-%COMP%] .title[_ngcontent-%COMP%]{line-height:30px;overflow:hidden;margin-right:20px;font-weight:700}td.mat-column-summary[_ngcontent-%COMP%] .original-name[_ngcontent-%COMP%]{margin:2px 0 8px 34px}td.mat-column-summary[_ngcontent-%COMP%] .title[_ngcontent-%COMP%], td.mat-column-summary[_ngcontent-%COMP%] .original-name[_ngcontent-%COMP%]{white-space:pre-wrap;word-break:break-word;overflow-wrap:break-word}td.mat-column-summary[_ngcontent-%COMP%] > .mat-icon[_ngcontent-%COMP%]{display:inline-block;position:relative;top:6px;margin-right:10px}td.mat-column-summary[_ngcontent-%COMP%] mat-chip-set[_ngcontent-%COMP%]{display:inline-block;margin-left:10px}td.mat-column-summary[_ngcontent-%COMP%] mat-chip-set[_ngcontent-%COMP%] mat-chip[_ngcontent-%COMP%]{margin:2px 10px 2px 0}tr.expanded-detail-row[_ngcontent-%COMP%]{height:0}tr.mat-mdc-row.expanded[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{border-bottom:0}tr.mat-mdc-row.expanded[_ngcontent-%COMP%] + .expanded-detail-row[_ngcontent-%COMP%] > td[_ngcontent-%COMP%]{padding-bottom:10px}.mat-column-magnet[_ngcontent-%COMP%]{text-align:center}.mat-column-magnet[_ngcontent-%COMP%] .mat-icon[_ngcontent-%COMP%]{position:relative;top:3px}.item-detail[_ngcontent-%COMP%]{width:100%;overflow:hidden}.td-published-at[_ngcontent-%COMP%] abbr[_ngcontent-%COMP%]{cursor:default;text-decoration:underline;text-decoration-style:dotted}.cdk-column-peers[_ngcontent-%COMP%]{white-space:nowrap}"],data:{animation:[nt("detailExpand",[j("collapsed,void",Q({height:"0px",minHeight:"0"})),j("expanded",Q({height:"*"})),ot("expanded <=> collapsed",it("225ms cubic-bezier(0.4, 0.0, 0.2, 1)"))])]}})}}return e})(),Ie=["select","summary","size","publishedAt","peers","magnet"],vn=["select","summary","size","magnet"];export{Ee as a,G as b,Ae as c,Ze as d,bn as e,Ie as f,vn as g}; diff --git a/webui/dist/bitmagnet/browser/chunk-M3BEO55A.js b/webui/dist/bitmagnet/browser/chunk-M3BEO55A.js new file mode 100644 index 0000000..38c53c8 --- /dev/null +++ b/webui/dist/bitmagnet/browser/chunk-M3BEO55A.js @@ -0,0 +1 @@ +import{k as m,l as t}from"./chunk-4NEHCUZ2.js";import{B as s,ba as o,ka as n,qa as p}from"./chunk-3DR3CJRN.js";var a=["XSmall","Small","Medium","Large","XLarge"],d=(()=>{class i{constructor(){this.breakpointObserver=p(m),this.state=this.breakpointObserver.observe([t.XSmall,t.Small,t.Medium,t.Large,t.XLarge]).pipe(s(e=>e.breakpoints),o()),this.size$=this.state.pipe(s(e=>a.find(r=>e[t[r]])??"Medium")),this.size="Medium",this.size$.subscribe(e=>{this.size=e})}sizeAtLeast(e){return a.indexOf(e)<=a.indexOf(this.size)}static{this.\u0275fac=function(r){return new(r||i)}}static{this.\u0275prov=n({token:i,factory:i.\u0275fac,providedIn:"root"})}}return i})();export{d as a}; diff --git a/webui/dist/bitmagnet/browser/chunk-ML52OCX4.js b/webui/dist/bitmagnet/browser/chunk-ML52OCX4.js new file mode 100644 index 0000000..335fd35 --- /dev/null +++ b/webui/dist/bitmagnet/browser/chunk-ML52OCX4.js @@ -0,0 +1 @@ +import{b as D,d as H}from"./chunk-7OATZ42U.js";import{P as f,R as M,U as _,Ua as P,b as C,ja as u,na as b,oa as x,qa as v,xa as O}from"./chunk-4NEHCUZ2.js";import"./chunk-6XXA7HXI.js";import"./chunk-FKMTSCBK.js";import{Cb as p,Hb as c,Qb as e,Rb as n,Sb as r,Tb as s,Ub as l,kb as i,kc as m,lc as h,pc as g,ua as d}from"./chunk-3DR3CJRN.js";function y(t,w){if(t&1&&(s(0),e(1,"mat-card",1)(2,"mat-card-header")(3,"mat-toolbar")(4,"h2")(5,"mat-icon"),m(6,"dashboard"),n(),m(7),n()()(),e(8,"mat-card-content"),r(9,"mat-divider"),e(10,"div",2)(11,"mat-grid-list",3)(12,"mat-grid-tile",4),r(13,"app-health-card"),n()()()()(),l()),t&2){let a=w.$implicit;i(7),h(a("routes.dashboard")),i(5),c("colspan",1)("rowspan",1)}}var q=(()=>{class t{static{this.\u0275fac=function(o){return new(o||t)}}static{this.\u0275cmp=d({type:t,selectors:[["app-dashboard"]],standalone:!0,features:[g],decls:1,vars:0,consts:[[4,"transloco"],[1,"dashboard-card"],[1,"grid-container"],["cols","1","rowHeight","500px"],[3,"colspan","rowspan"]],template:function(o,S){o&1&&p(0,y,14,3,"ng-container",0)},dependencies:[P,f,M,_,u,x,b,v,O,C,H,D],styles:[".grid-container[_ngcontent-%COMP%]{margin:20px}.more-button[_ngcontent-%COMP%]{position:absolute;top:5px;right:10px}app-health-card[_ngcontent-%COMP%]{width:100%;height:100%}app-health-card[_ngcontent-%COMP%] mat-card[_ngcontent-%COMP%]{height:100%}mat-grid-tile[_ngcontent-%COMP%] mat-card[_ngcontent-%COMP%]{width:100%}mat-toolbar[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{position:relative;top:3px;margin-right:14px;margin-left:32px}"]})}}return t})();export{q as DashboardHomeComponent}; diff --git a/webui/dist/bitmagnet/browser/chunk-O2AXX42O.js b/webui/dist/bitmagnet/browser/chunk-O2AXX42O.js new file mode 100644 index 0000000..3167980 --- /dev/null +++ b/webui/dist/bitmagnet/browser/chunk-O2AXX42O.js @@ -0,0 +1 @@ +import{a as D,b as N,c as z,d as Ae,e as Ne,f as ze,g as Qe}from"./chunk-LACCEILM.js";import{a as Re,b as De}from"./chunk-ZVYX4MB3.js";import{a as qe}from"./chunk-DKVITRV6.js";import"./chunk-KUHKEGBL.js";import{a as Ce}from"./chunk-3PIWRAOL.js";import{a as Le}from"./chunk-M3BEO55A.js";import{Aa as Fe,Ba as Ve,Ca as Be,E as ye,J as ve,L as Se,M as be,Ua as je,a as se,b as le,ba as Te,d as pe,e as ue,f as me,g as de,h as _e,i as ge,ja as we,ka as Me,la as Oe,ma as Pe,n as fe,q as he,qa as ke,r as xe,ra as Ie,ya as Ee,za as $e}from"./chunk-4NEHCUZ2.js";import"./chunk-6XXA7HXI.js";import{j as ae,l as ce}from"./chunk-FKMTSCBK.js";import{$ as X,$b as s,$c as re,B as M,Cb as x,Ea as _,Fa as g,Gb as ee,Hb as f,Kb as L,Mb as v,N as W,O as Y,Ob as k,Pb as I,Q as K,Qb as p,Rb as u,Sb as A,Tb as te,Ub as ne,Wb as P,Zb as h,_c as oe,a,b as l,jc as R,kb as c,kc as m,l as y,lc as E,mc as S,nc as $,o as G,pc as ie,qa as O,ua as Z,uc as b,vc as T}from"./chunk-3DR3CJRN.js";var Q={items:[],totalCount:0,totalCountIsEstimate:!1,aggregations:{}},V=class{constructor(n,e,o){this.apollo=n,this.errorsService=e,this.currentRequest=new y(0),this.loadingSubject=new y(!1),this.loading$=this.loadingSubject.asObservable(),this.result=Q,this.resultSubject=new y(this.result),this.result$=this.resultSubject.asObservable(),this.items$=this.resultSubject.pipe(M(i=>i.items)),this.overallTotalCount$=this.resultSubject.pipe(M(i=>{let r=0,d=!1;for(let w of i.aggregations.contentType??[])r+=w.count,d=d||w.isEstimate;return{count:r,isEstimate:d}})),this.availableContentTypes$=this.resultSubject.pipe(X((i,r)=>Array.from(new Set([...i,...(r.aggregations.contentType??[]).flatMap(d=>d.value?[d.value]:[])])),[])),this.contentTypeCounts$=this.resultSubject.pipe(M(i=>Object.fromEntries((i.aggregations.contentType??[]).map(r=>[r.value,{count:r.count,isEstimate:r.isEstimate}])))),o.subscribe(i=>{this.input=i.input,this.loadResult({input:l(a({},i.input),{cached:!0})})}),this.resultSubject.subscribe(i=>{this.result=i})}connect({}){return this.items$}disconnect(){this.resultSubject.complete()}refresh(){this.loadResult({input:l(a({},this.input),{cached:!1})})}loadResult(n){this.currentSubscription&&(this.currentSubscription.unsubscribe(),this.currentSubscription=void 0),this.loadingSubject.next(!0);let e=this.currentRequest.getValue()+1;this.currentRequest.next(e);let o=this.apollo.query({query:ye,variables:n,fetchPolicy:"no-cache"}).pipe(M(i=>i.data.torrentContent.search)).pipe(W(i=>(this.errorsService.addError(`Error loading item results: ${i.message}`),G)));this.currentSubscription=o.subscribe(i=>{e===this.currentRequest.getValue()&&(this.loadingSubject.next(!1),this.resultSubject.next(i))})}};var He=t=>({input:{queryString:t.queryString,limit:t.limit,page:t.page,totalCount:!0,hasNextPage:!0,orderBy:[t.orderBy],facets:{contentType:{aggregate:!0,filter:t.contentType?[t.contentType==="null"?null:t.contentType]:void 0},genre:t.facets.genre.active?{aggregate:!0,filter:t.facets.genre.filter}:void 0,language:t.facets.language.active?{aggregate:t.facets.language.active,filter:t.facets.language.filter}:void 0,torrentFileType:t.facets.fileType.active?{aggregate:!0,filter:t.facets.fileType.filter}:void 0,torrentSource:t.facets.torrentSource.active?{aggregate:!0,filter:t.facets.torrentSource.filter}:void 0,torrentTag:t.facets.torrentTag.active?{aggregate:!0,filter:t.facets.torrentTag.filter}:void 0,videoResolution:t.facets.videoResolution.active?{aggregate:!0,filter:t.facets.videoResolution.filter}:void 0,videoSource:t.facets.videoSource.active?{aggregate:!0,filter:t.facets.videoSource.filter}:void 0}}}),C={active:!1},B=class{constructor(n){this.controlsSubject=new y(n),this.controls$=this.controlsSubject.asObservable(),this.paramsSubject=new y(He(n)),this.params$=this.paramsSubject.asObservable(),this.controls$.pipe(K(100)).subscribe(e=>{let o=this.paramsSubject.getValue(),i=He(e);JSON.stringify(o)!==JSON.stringify(i)&&this.paramsSubject.next(i)})}update(n){let e=this.controlsSubject.getValue(),o=n(e);JSON.stringify(e)!==JSON.stringify(o)&&this.controlsSubject.next(o)}selectLanguage(n){this.update(e=>l(a({},e),{language:n}))}selectContentType(n){this.update(e=>l(a({},e),{contentType:n,page:1,facets:l(a({},e.facets),{genre:H(n,Je.contentTypes)?e.facets.genre:C,videoResolution:H(n,Ue.contentTypes)?e.facets.videoResolution:C,videoSource:H(n,Ge.contentTypes)?e.facets.videoSource:C})}))}activateFacet(n){this.update(e=>l(a({},e),{facets:n.patchInput(e.facets,l(a({},n.extractInput(e.facets)),{active:!0}))}))}deactivateFacet(n){this.update(e=>{let o=n.extractInput(e.facets);return l(a({},e),{page:o.filter?1:e.page,facets:n.patchInput(e.facets,l(a({},o),{active:!1,filter:void 0}))})})}activateFilter(n,e){this.update(o=>{let i=n.extractInput(o.facets);return l(a({},o),{page:1,facets:n.patchInput(o.facets,l(a({},i),{filter:Array.from(new Set([...i.filter??[],e])).sort()}))})})}deactivateFilter(n,e){this.update(o=>{let i=n.extractInput(o.facets),r=i.filter?.filter(d=>d!==e);return l(a({},o),{page:1,facets:n.patchInput(o.facets,l(a({},i),{filter:r?.length?r:void 0}))})})}setQueryString(n){n=n||void 0,this.update(e=>{let o=e.orderBy;return n?n!==e.queryString&&(o=U):o.field==="relevance"&&(o=F),l(a({},e),{queryString:n,orderBy:o,page:n===e.queryString?e.page:1})})}selectOrderBy(n){let e={field:n,descending:J.find(o=>o.field===n)?.descending??!1};this.update(o=>l(a({},o),{orderBy:e.field!=="relevance"||o.queryString?e:F,page:1}))}toggleOrderByDirection(){this.update(n=>l(a({},n),{orderBy:l(a({},n.orderBy),{descending:!n.orderBy.descending}),page:1}))}handlePageEvent(n){this.update(e=>l(a({},e),{limit:n.pageSize,page:n.page}))}},et={key:"torrent_source",icon:"mediation",allowNull:!1,extractInput:t=>t.torrentSource,patchInput:(t,n)=>l(a({},t),{torrentSource:n}),extractAggregations:t=>t.torrentSource??[],resolveLabel:t=>t.label},tt={key:"torrent_tag",icon:"sell",allowNull:!1,extractInput:t=>t.torrentTag,patchInput:(t,n)=>l(a({},t),{torrentTag:n}),extractAggregations:t=>t.torrentTag??[],resolveLabel:t=>t.value},nt={key:"file_type",icon:"file_present",allowNull:!1,extractInput:t=>t.fileType,patchInput:(t,n)=>l(a({},t),{fileType:n}),extractAggregations:t=>t.torrentFileType??[],resolveLabel:(t,n)=>n.translate(`file_types.${t.value}`)},it={key:"language",icon:"translate",allowNull:!1,extractInput:t=>t.language,patchInput:(t,n)=>l(a({},t),{language:n}),extractAggregations:t=>t.language??[],resolveLabel:(t,n)=>n.translate(`languages.${t.value}`)},Je={key:"genre",icon:"theater_comedy",allowNull:!1,contentTypes:["movie","tv_show"],extractInput:t=>t.genre,patchInput:(t,n)=>l(a({},t),{genre:n}),extractAggregations:t=>t.genre??[],resolveLabel:t=>t.label},Ue={key:"video_resolution",icon:"aspect_ratio",allowNull:!0,contentTypes:["movie","tv_show","xxx"],extractInput:t=>t.videoResolution,patchInput:(t,n)=>l(a({},t),{videoResolution:n}),extractAggregations:t=>(t.videoResolution??[]).map(n=>l(a({},n),{value:n.value??null})),resolveLabel:t=>t.value?.slice(1)??"?"},Ge={key:"video_source",icon:"album",allowNull:!0,contentTypes:["movie","tv_show","xxx"],extractInput:t=>t.videoSource,patchInput:(t,n)=>l(a({},t),{videoSource:n}),extractAggregations:t=>(t.videoSource??[]).map(n=>l(a({},n),{value:n.value??null})),resolveLabel:t=>t.value??"?"},j=[et,tt,nt,it,Je,Ue,Ge],J=[{field:"relevance",descending:!0},{field:"published_at",descending:!0},{field:"updated_at",descending:!0},{field:"size",descending:!0},{field:"files_count",descending:!0},{field:"seeders",descending:!0},{field:"leechers",descending:!0},{field:"name",descending:!1}],F={field:"published_at",descending:!0},U={field:"relevance",descending:!0},H=(t,n)=>!n||t&&n.includes(t);var We=(t,n)=>n.key,ot=(t,n)=>n.field,Ye=(t,n)=>n.value;function rt(t,n){if(t&1&&(p(0,"small"),m(1),b(2,"number"),u()),t&2){let e=n;c(),$("",e.isEstimate?"~":"","",T(2,2,e.count),"")}}function at(t,n){if(t&1&&(p(0,"small"),m(1),b(2,"number"),u()),t&2){let e=n;c(),$("",e.isEstimate?"~":"","",T(2,2,e.count),"")}}function ct(t,n){t&1&&(p(0,"small"),m(1,"0"),u())}function st(t,n){if(t&1){let e=P();p(0,"li",5),h("click",function(){_(e);let i=s().$implicit,r=s(2);return g(r.controller.selectContentType(i.key))}),p(1,"mat-icon"),m(2),u(),m(3),x(4,at,3,4,"small"),b(5,"async"),x(6,ct,2,0,"small"),u()}if(t&2){let e,o=s().$implicit,i=s().$implicit,r=s();L(r.controls.contentType===o.key?"active":""),c(2),E(o.icon),c(),S(" ",i("content_types.plural."+o.key)," "),c(),v((e=(e=T(5,5,r.dataSource.contentTypeCounts$))==null?null:e[o.key])?4:6,e)}}function lt(t,n){if(t&1&&(x(0,st,7,7,"li",23),b(1,"async")),t&2){let e,o=n.$implicit,i=s(2);v(o.key==="null"||(e=T(1,1,i.dataSource.availableContentTypes$))!=null&&e.includes(o.key)?0:-1)}}function pt(t,n){if(t&1){let e=P();p(0,"mat-checkbox",29),h("change",function(i){let r=_(e).$implicit,d=s(3).$implicit,w=s(2);return g(i.checked?w.controller.activateFilter(d,r.value):w.controller.deactivateFilter(d,r.value))}),m(1),p(2,"small"),m(3),b(4,"number"),u()()}if(t&2){let e=n.$implicit,o=s(3).$implicit;f("checked",o.filter==null?null:o.filter.includes(e.value)),c(),S(" ",e.label," "),c(2),$("",e.isEstimate?"~":"","",T(4,4,e.count),"")}}function ut(t,n){if(t&1&&(p(0,"section",26),k(1,pt,5,6,"mat-checkbox",28,Ye),u()),t&2){let e=s(2).$implicit;c(),I(e.aggregations)}}function mt(t,n){if(t&1){let e=P();p(0,"mat-checkbox",31),h("change",function(){let i=_(e).$implicit,r=s(4).$implicit,d=s(2);return g(d.controller.activateFilter(r,i.value))}),m(1),p(2,"small"),m(3),b(4,"number"),u()()}if(t&2){let e=n.$implicit;c(),S(" ",e.label," "),c(2),$("",e.isEstimate?"~":"","",T(4,3,e.count),"")}}function dt(t,n){if(t&1&&k(0,mt,5,5,"mat-checkbox",30,Ye),t&2){let e=s(3).$implicit;I(e.aggregations)}}function _t(t,n){if(t&1&&m(0),t&2){let e=s(4).$implicit;S(" ",e("general.none")," ")}}function gt(t,n){if(t&1&&(p(0,"section",27),x(1,dt,2,0)(2,_t,1,1),u()),t&2){let e=s(2).$implicit;c(),v(e.aggregations.length?1:2)}}function ft(t,n){if(t&1){let e=P();p(0,"mat-expansion-panel",25),h("opened",function(){_(e);let i=s().$implicit,r=s(2);return g(r.controller.activateFacet(i))})("closed",function(){_(e);let i=s().$implicit,r=s(2);return g(r.controller.deactivateFacet(i))}),p(1,"mat-expansion-panel-header")(2,"mat-panel-title")(3,"mat-icon"),m(4),u(),m(5),u()(),x(6,ut,3,0,"section",26)(7,gt,3,1,"section",27),u()}if(t&2){let e=s().$implicit,o=s().$implicit;f("expanded",e.active),c(4),E(e.icon),c(),S(" ",o("facets."+e.key)," "),c(),v(e.filter!=null&&e.filter.length?6:7)}}function ht(t,n){if(t&1&&x(0,ft,8,4,"mat-expansion-panel",24),t&2){let e=n.$implicit;v(e.relevant?0:-1)}}function xt(t,n){if(t&1){let e=P();p(0,"button",17),h("click",function(){_(e);let i=s(2);return i.queryString.reset(),g(i.controller.setQueryString(null))}),p(1,"mat-icon"),m(2,"close"),u()()}if(t&2){let e=s().$implicit;f("matTooltip",e("torrents.clear_search"))}}function Ct(t,n){if(t&1&&(p(0,"mat-option",32),m(1),u()),t&2){let e=s().$implicit,o=s().$implicit;f("value",e.field),c(),S(" ",o("torrents.ordering."+e.field)," ")}}function yt(t,n){if(t&1&&x(0,Ct,2,2,"mat-option",32),t&2){let e=n.$implicit,o=s(2);v(e.field!="relevance"||o.queryString.value?0:-1)}}function vt(t,n){if(t&1){let e=P();te(0),p(1,"mat-drawer-container",2)(2,"mat-drawer",3,0)(4,"mat-expansion-panel",4)(5,"mat-expansion-panel-header")(6,"mat-panel-title")(7,"mat-icon"),m(8,"interests"),u(),m(9),u()(),p(10,"section")(11,"nav")(12,"ul")(13,"li",5),h("click",function(){_(e);let i=s();return g(i.controller.selectContentType(null))}),p(14,"mat-icon",6),m(15,"emergency"),u(),m(16),x(17,rt,3,4,"small"),b(18,"async"),u(),k(19,lt,2,3,null,null,We),u()()()(),k(21,ht,1,1,null,null,We),b(23,"async"),u(),p(24,"mat-drawer-content")(25,"div",7)(26,"div",8)(27,"button",9),h("click",function(){_(e);let i=R(3);return g(i.toggle())}),p(28,"mat-icon",10),m(29),u()()(),p(30,"div",11)(31,"mat-form-field",12)(32,"input",13),h("keyup.enter",function(){_(e);let i=s();return g(i.controller.setQueryString(i.queryString.value))}),u(),x(33,xt,3,1,"button",14),u()(),p(34,"div",15)(35,"mat-form-field",12)(36,"mat-label"),m(37),u(),p(38,"mat-select",16),h("valueChange",function(i){_(e);let r=s();return g(r.controller.selectOrderBy(i))}),k(39,yt,1,1,null,null,ot),u()(),p(41,"button",17),h("click",function(){_(e);let i=s();return g(i.controller.toggleOrderByDirection())}),p(42,"mat-icon"),m(43),u()()(),p(44,"div",18)(45,"button",19),h("click",function(){_(e);let i=s();return g(i.dataSource.refresh())}),p(46,"mat-icon"),m(47,"sync"),u()()()(),A(48,"mat-divider"),p(49,"app-torrents-bulk-actions",20),h("updated",function(){_(e);let i=s();return g(i.dataSource.refresh())}),u(),A(50,"mat-divider"),p(51,"app-torrents-table",21),h("updated",function(){_(e);let i=s();return g(i.dataSource.refresh())}),u(),p(52,"app-paginator",22),h("paging",function(i){_(e);let r=s();return g(r.controller.handlePageEvent(i))}),u()()(),ne()}if(t&2){let e,o=n.$implicit,i=R(3),r=s();c(2),f("mode",r.breakpoints.sizeAtLeast("Medium")?"side":"over")("opened",r.breakpoints.sizeAtLeast("Medium")),ee("role",r.breakpoints.sizeAtLeast("Medium")?"navigation":"dialog"),c(2),f("expanded",r.breakpoints.sizeAtLeast("Medium")),c(5),S(" ",o("facets.content_type")," "),c(4),L(r.controls.contentType===null?"active":""),c(3),S("",o("content_types.plural.all")," "),c(),v((e=T(18,29,r.dataSource.overallTotalCount$))?17:-1,e),c(2),I(r.contentTypes),c(2),I(T(23,31,r.facets$)),c(6),f("matTooltip",o("torrents.toggle_drawer")),c(2),E(i.opened?"arrow_circle_left":"arrow_circle_right"),c(3),f("placeholder",o("torrents.search"))("formControl",r.queryString),c(),v(r.queryString.value?33:-1),c(4),E(o("torrents.order_by")),c(),f("value",r.controls.orderBy.field),c(),I(r.orderByOptions),c(2),f("matTooltip",o("torrents.order_direction_toggle")),c(2),E(r.controls.orderBy.descending?"arrow_downward":"arrow_upward"),c(2),f("matTooltip",o("torrents.refresh")),c(4),f("selectedItems$",r.selectedItems$),c(2),f("dataSource",r.dataSource)("displayedColumns",r.breakpoints.sizeAtLeast("Medium")?r.allColumns:r.compactColumns)("selection",r.selection),c(),f("page",r.controls.page)("pageSize",r.controls.limit)("pageLength",r.dataSource.result.items.length)("totalLength",r.dataSource.result.totalCount)("totalIsEstimate",r.dataSource.result.totalCountIsEstimate)("hasNextPage",r.dataSource.result.hasNextPage)}}var fn=(()=>{class t{constructor(){this.route=O(ae),this.router=O(ce),this.apollo=O(ge),this.errorsService=O(Ce),this.transloco=O(se),this.breakpoints=O(Le),this.contentTypes=De,this.orderByOptions=J,this.allColumns=ze,this.compactColumns=Qe,this.queryString=new me(""),this.result=Q,this.selection=new _e(!0,[]),this.selectedItemsSubject=new y([]),this.selectedItems$=this.selectedItemsSubject.asObservable(),this.subscriptions=Array(),this.controls=l(a({},St),{language:this.transloco.getActiveLang()}),this.controller=new B(this.controls),this.dataSource=new V(this.apollo,this.errorsService,this.controller.params$),this.subscriptions.push(this.controller.controls$.subscribe(e=>{this.controls=e})),this.facets$=this.controller.controls$.pipe(Y(this.dataSource.result$),M(([e,o])=>j.map(i=>l(a(a({},i),i.extractInput(e.facets)),{relevant:!i.contentTypes||!!(e.contentType&&e.contentType!=="null"&&i.contentTypes.includes(e.contentType)),aggregations:i.extractAggregations(o.aggregations).map(r=>l(a({},r),{label:i.resolveLabel(r,this.transloco)}))})))),this.subscriptions.push(this.dataSource.result$.subscribe(e=>{this.result=e;let o=new Set(e.items.map(({infoHash:i})=>i));this.selection.deselect(...this.selection.selected.filter(i=>!o.has(i)))}))}ngOnInit(){this.subscriptions.push(this.route.queryParams.subscribe(e=>{let o=N(e,"query");this.queryString.setValue(o??null),this.controller.update(i=>{let r=D(e,"facets"),d=i.orderBy;return o?o!==i.queryString&&(d=U):d.field==="relevance"&&(d=F),l(a({},i),{queryString:o,orderBy:d,contentType:bt(e,"content_type"),limit:z(e,"limit")??i.limit,page:z(e,"page")??i.page,facets:j.reduce((w,q)=>{let Xe=r?.includes(q.key)??!1,Ze=D(e,q.key);return q.patchInput(w,{active:Xe,filter:Ze})},i.facets)})})}),this.controller.controls$.subscribe(e=>{let o=e.page,i=e.limit;o===1&&(o=void 0),i===Ke&&(i=void 0),this.router.navigate([],{relativeTo:this.route,queryParams:a({query:e.queryString?encodeURIComponent(e.queryString):void 0,page:o,limit:i,content_type:e.contentType},Tt(e.facets)),queryParamsHandling:"merge"})}),this.selection.changed.subscribe(e=>{let o=new Set(e.source.selected);this.selectedItemsSubject.next(this.result.items.filter(i=>o.has(i.infoHash)))}))}ngOnDestroy(){this.subscriptions.forEach(e=>e.unsubscribe()),this.subscriptions=new Array}static{this.\u0275fac=function(o){return new(o||t)}}static{this.\u0275cmp=Z({type:t,selectors:[["app-torrents-search"]],standalone:!0,features:[ie],decls:1,vars:0,consts:[["drawer",""],[4,"transloco"],[1,"drawer-container"],[1,"drawer",3,"mode","opened"],[1,"panel-content-type",3,"expanded"],[3,"click"],["fontSet","material-icons"],[1,"search-form"],[1,"form-field-container","button-container","button-container-toggle-drawer"],["type","button","mat-icon-button","",1,"button-toggle-drawer",3,"click","matTooltip"],["aria-label","Side nav toggle icon","fontSet","material-icons"],[1,"form-field-container","form-field-container-search-query"],["subscriptSizing","dynamic"],["matInput","","autocapitalize","none",3,"keyup.enter","placeholder","formControl"],["mat-icon-button","",3,"matTooltip"],[1,"form-field-container","form-field-container-order-by"],[3,"valueChange","value"],["mat-icon-button","",3,"click","matTooltip"],[1,"form-field-container","button-container","button-container-refresh"],["mat-mini-fab","","color","primary",3,"click","matTooltip"],[3,"updated","selectedItems$"],[3,"updated","dataSource","displayedColumns","selection"],[3,"paging","page","pageSize","pageLength","totalLength","totalIsEstimate","hasNextPage"],[3,"class"],[3,"expanded"],[3,"opened","closed","expanded"],[1,"filtered"],[1,"unfiltered"],[3,"checked"],[3,"change","checked"],["checked","true"],["checked","true",3,"change"],[3,"value"]],template:function(o,i){o&1&&x(0,vt,53,33,"ng-container",1)},dependencies:[je,fe,xe,he,Te,we,Me,Oe,Pe,be,Se,ke,Ie,$e,Ve,Be,Fe,Ee,pe,ue,de,le,oe,re,ve,qe,Ae,Ne],styles:[".mat-expansion-panel[_ngcontent-%COMP%]{margin-top:14px;margin-right:14px}.mat-expansion-panel[_ngcontent-%COMP%] section[_ngcontent-%COMP%]{margin-left:-10px}.mat-expansion-panel.panel-content-type[_ngcontent-%COMP%]{margin-top:20px}.mat-expansion-panel.panel-content-type[_ngcontent-%COMP%] section[_ngcontent-%COMP%]{margin-left:0}.mat-expansion-panel[_ngcontent-%COMP%] ul[_ngcontent-%COMP%]{list-style:none;padding-left:0;margin:0}.mat-expansion-panel[_ngcontent-%COMP%] mat-panel-title[_ngcontent-%COMP%], .mat-expansion-panel[_ngcontent-%COMP%] li[_ngcontent-%COMP%]{position:relative;line-height:40px;padding-left:40px}.mat-expansion-panel[_ngcontent-%COMP%] mat-panel-title[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%], .mat-expansion-panel[_ngcontent-%COMP%] li[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{position:absolute;left:0;top:8px}.mat-expansion-panel[_ngcontent-%COMP%] li[_ngcontent-%COMP%]{cursor:pointer}.mat-expansion-panel[_ngcontent-%COMP%] li[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{top:6px}.mat-expansion-panel[_ngcontent-%COMP%] li[_ngcontent-%COMP%] small[_ngcontent-%COMP%]{float:right;font-size:.8rem}.mat-expansion-panel[_ngcontent-%COMP%] mat-checkbox[_ngcontent-%COMP%]{display:block}.mat-expansion-panel[_ngcontent-%COMP%] mat-checkbox[_ngcontent-%COMP%] label{min-width:220px}.mat-expansion-panel[_ngcontent-%COMP%] mat-checkbox[_ngcontent-%COMP%] small[_ngcontent-%COMP%]{margin-left:10px;position:absolute;right:0}.search-form[_ngcontent-%COMP%]{padding-top:20px;padding-bottom:10px;position:relative;clear:both;display:flex;flex-wrap:wrap}.search-form[_ngcontent-%COMP%] .form-field-container[_ngcontent-%COMP%]{display:inline-flex;flex-direction:column;position:relative;margin-left:20px;padding-bottom:20px}.search-form[_ngcontent-%COMP%] .form-field-container[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{top:8px}.search-form[_ngcontent-%COMP%] .form-field-container.form-field-container-order-by[_ngcontent-%COMP%]{padding-right:40px}.search-form[_ngcontent-%COMP%] .form-field-container.form-field-container-order-by[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{position:absolute;right:0}.search-form[_ngcontent-%COMP%] .form-field-container.form-field-container-search-query[_ngcontent-%COMP%]{width:300px}.search-form[_ngcontent-%COMP%] .form-field-container.form-field-container-search-query[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{position:absolute;right:0}.search-form[_ngcontent-%COMP%] .form-field-container.form-field-container-search-query[_ngcontent-%COMP%] .mat-mdc-form-field-infix{padding-right:50px}.search-form[_ngcontent-%COMP%] .button-container-toggle-direction[_ngcontent-%COMP%]{margin-left:4px}app-paginator[_ngcontent-%COMP%]{float:right;padding-top:14px;padding-bottom:20px}"],changeDetection:0})}}return t})(),Ke=20,St={language:"en",page:1,limit:Ke,contentType:null,orderBy:F,facets:{genre:C,language:C,fileType:C,torrentSource:C,torrentTag:C,videoResolution:C,videoSource:C}},bt=(t,n)=>{let e=N(t,n);return e&&e in Re?e:null},Tt=t=>{let[n,e]=j.reduce((o,i)=>{let r=i.extractInput(t);return r.active?[[...o[0],i.key],r.filter?l(a({},o[1]),{[i.key]:r.filter}):o[1]]:o},[[],{}]);return a({facets:n.length?n.join(","):void 0},Object.fromEntries(Object.entries(e).map(([o,i])=>[o,encodeURIComponent(i.join(","))])))};export{fn as TorrentsSearchComponent}; diff --git a/webui/dist/bitmagnet/browser/chunk-OMQU4L7V.js b/webui/dist/bitmagnet/browser/chunk-OMQU4L7V.js new file mode 100644 index 0000000..7879673 --- /dev/null +++ b/webui/dist/bitmagnet/browser/chunk-OMQU4L7V.js @@ -0,0 +1 @@ +import{k as s}from"./chunk-FKMTSCBK.js";import{Sb as n,pc as r,ua as o}from"./chunk-3DR3CJRN.js";var m=(()=>{class e{static{this.\u0275fac=function(t){return new(t||e)}}static{this.\u0275cmp=o({type:e,selectors:[["app-torrents"]],standalone:!0,features:[r],decls:2,vars:0,consts:[["outlet",""]],template:function(t,a){t&1&&n(0,"router-outlet",null,0)},dependencies:[s]})}}return e})();export{m as TorrentsComponent}; diff --git a/webui/dist/bitmagnet/browser/chunk-OYPFZA36.js b/webui/dist/bitmagnet/browser/chunk-OYPFZA36.js new file mode 100644 index 0000000..6bea2e9 --- /dev/null +++ b/webui/dist/bitmagnet/browser/chunk-OYPFZA36.js @@ -0,0 +1 @@ +import{c as H,e as _}from"./chunk-AV47NZN7.js";import{b as y,c as G,f as d,g as s,h as O,i as l,j as T,k as Q,l as L}from"./chunk-3PIWRAOL.js";import{a as N}from"./chunk-4NEHCUZ2.js";import{Hb as F,Sb as q,a as S,b as C,h as E,pc as I,qa as W,ua as v}from"./chunk-3DR3CJRN.js";var Yt=(()=>{class r{constructor(){this.themeInfo=W(_),this.transloco=W(N),this.$data=new E,this.width=500,this.height=500}ngOnInit(){this.updateChart(),this.$data.subscribe(e=>{this.data=e,this.updateChart()}),this.themeInfo.info$.subscribe(()=>{this.updateChart()}),this.transloco.langChanges$.subscribe(()=>{this.updateChart()})}updateChart(){this.chartConfig=this.adapter.create(this.data)}static{this.\u0275fac=function(n){return new(n||r)}}static{this.\u0275cmp=v({type:r,selectors:[["app-chart"]],inputs:{$data:"$data",adapter:"adapter",width:"width",height:"height"},standalone:!0,features:[I],decls:1,vars:5,consts:[["baseChart","",3,"data","options","type","height","width"]],template:function(n,a){n&1&&q(0,"canvas",0),n&2&&F("data",a.chartConfig.data)("options",a.chartConfig.options)("type",a.chartConfig.type)("height",a.height)("width",a.width)},dependencies:[H]})}}return r})();function M(r,t){let e=s(r,t?.in);return e.setHours(0,0,0,0),e}function $(r,t,e){let[n,a]=Q(e?.in,r,t),o=M(n),c=M(a),m=+o-T(o),h=+c-T(c);return Math.round((m-h)/G)}function B(r,t){let e=s(r,t?.in);return e.setFullYear(e.getFullYear(),0,1),e.setHours(0,0,0,0),e}function X(r,t){let e=s(r,t?.in);return $(e,B(e))+1}function p(r,t){return l(r,C(S({},t),{weekStartsOn:1}))}function b(r,t){let e=s(r,t?.in),n=e.getFullYear(),a=d(e,0);a.setFullYear(n+1,0,4),a.setHours(0,0,0,0);let o=p(a),c=d(e,0);c.setFullYear(n,0,4),c.setHours(0,0,0,0);let m=p(c);return e.getTime()>=o.getTime()?n+1:e.getTime()>=m.getTime()?n:n-1}function R(r,t){let e=b(r,t),n=d(t?.in||r,0);return n.setFullYear(e,0,4),n.setHours(0,0,0,0),p(n)}function j(r,t){let e=s(r,t?.in),n=+p(e)-+R(e);return Math.round(n/y)+1}function k(r,t){let e=s(r,t?.in),n=e.getFullYear(),a=O(),o=t?.firstWeekContainsDate??t?.locale?.options?.firstWeekContainsDate??a.firstWeekContainsDate??a.locale?.options?.firstWeekContainsDate??1,c=d(t?.in||r,0);c.setFullYear(n+1,0,o),c.setHours(0,0,0,0);let m=l(c,t),h=d(t?.in||r,0);h.setFullYear(n,0,o),h.setHours(0,0,0,0);let D=l(h,t);return+e>=+m?n+1:+e>=+D?n:n-1}function V(r,t){let e=O(),n=t?.firstWeekContainsDate??t?.locale?.options?.firstWeekContainsDate??e.firstWeekContainsDate??e.locale?.options?.firstWeekContainsDate??1,a=k(r,t),o=d(t?.in||r,0);return o.setFullYear(a,0,n),o.setHours(0,0,0,0),l(o,t)}function Z(r,t){let e=s(r,t?.in),n=+l(e,t)-+V(e,t);return Math.round(n/y)+1}function i(r,t){let e=r<0?"-":"",n=Math.abs(r).toString().padStart(t,"0");return e+n}var g={y(r,t){let e=r.getFullYear(),n=e>0?e:1-e;return i(t==="yy"?n%100:n,t.length)},M(r,t){let e=r.getMonth();return t==="M"?String(e+1):i(e+1,2)},d(r,t){return i(r.getDate(),t.length)},a(r,t){let e=r.getHours()/12>=1?"pm":"am";switch(t){case"a":case"aa":return e.toUpperCase();case"aaa":return e;case"aaaaa":return e[0];case"aaaa":default:return e==="am"?"a.m.":"p.m."}},h(r,t){return i(r.getHours()%12||12,t.length)},H(r,t){return i(r.getHours(),t.length)},m(r,t){return i(r.getMinutes(),t.length)},s(r,t){return i(r.getSeconds(),t.length)},S(r,t){let e=t.length,n=r.getMilliseconds(),a=Math.trunc(n*Math.pow(10,e-3));return i(a,t.length)}};var x={am:"am",pm:"pm",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},P={G:function(r,t,e){let n=r.getFullYear()>0?1:0;switch(t){case"G":case"GG":case"GGG":return e.era(n,{width:"abbreviated"});case"GGGGG":return e.era(n,{width:"narrow"});case"GGGG":default:return e.era(n,{width:"wide"})}},y:function(r,t,e){if(t==="yo"){let n=r.getFullYear(),a=n>0?n:1-n;return e.ordinalNumber(a,{unit:"year"})}return g.y(r,t)},Y:function(r,t,e,n){let a=k(r,n),o=a>0?a:1-a;if(t==="YY"){let c=o%100;return i(c,2)}return t==="Yo"?e.ordinalNumber(o,{unit:"year"}):i(o,t.length)},R:function(r,t){let e=b(r);return i(e,t.length)},u:function(r,t){let e=r.getFullYear();return i(e,t.length)},Q:function(r,t,e){let n=Math.ceil((r.getMonth()+1)/3);switch(t){case"Q":return String(n);case"QQ":return i(n,2);case"Qo":return e.ordinalNumber(n,{unit:"quarter"});case"QQQ":return e.quarter(n,{width:"abbreviated",context:"formatting"});case"QQQQQ":return e.quarter(n,{width:"narrow",context:"formatting"});case"QQQQ":default:return e.quarter(n,{width:"wide",context:"formatting"})}},q:function(r,t,e){let n=Math.ceil((r.getMonth()+1)/3);switch(t){case"q":return String(n);case"qq":return i(n,2);case"qo":return e.ordinalNumber(n,{unit:"quarter"});case"qqq":return e.quarter(n,{width:"abbreviated",context:"standalone"});case"qqqqq":return e.quarter(n,{width:"narrow",context:"standalone"});case"qqqq":default:return e.quarter(n,{width:"wide",context:"standalone"})}},M:function(r,t,e){let n=r.getMonth();switch(t){case"M":case"MM":return g.M(r,t);case"Mo":return e.ordinalNumber(n+1,{unit:"month"});case"MMM":return e.month(n,{width:"abbreviated",context:"formatting"});case"MMMMM":return e.month(n,{width:"narrow",context:"formatting"});case"MMMM":default:return e.month(n,{width:"wide",context:"formatting"})}},L:function(r,t,e){let n=r.getMonth();switch(t){case"L":return String(n+1);case"LL":return i(n+1,2);case"Lo":return e.ordinalNumber(n+1,{unit:"month"});case"LLL":return e.month(n,{width:"abbreviated",context:"standalone"});case"LLLLL":return e.month(n,{width:"narrow",context:"standalone"});case"LLLL":default:return e.month(n,{width:"wide",context:"standalone"})}},w:function(r,t,e,n){let a=Z(r,n);return t==="wo"?e.ordinalNumber(a,{unit:"week"}):i(a,t.length)},I:function(r,t,e){let n=j(r);return t==="Io"?e.ordinalNumber(n,{unit:"week"}):i(n,t.length)},d:function(r,t,e){return t==="do"?e.ordinalNumber(r.getDate(),{unit:"date"}):g.d(r,t)},D:function(r,t,e){let n=X(r);return t==="Do"?e.ordinalNumber(n,{unit:"dayOfYear"}):i(n,t.length)},E:function(r,t,e){let n=r.getDay();switch(t){case"E":case"EE":case"EEE":return e.day(n,{width:"abbreviated",context:"formatting"});case"EEEEE":return e.day(n,{width:"narrow",context:"formatting"});case"EEEEEE":return e.day(n,{width:"short",context:"formatting"});case"EEEE":default:return e.day(n,{width:"wide",context:"formatting"})}},e:function(r,t,e,n){let a=r.getDay(),o=(a-n.weekStartsOn+8)%7||7;switch(t){case"e":return String(o);case"ee":return i(o,2);case"eo":return e.ordinalNumber(o,{unit:"day"});case"eee":return e.day(a,{width:"abbreviated",context:"formatting"});case"eeeee":return e.day(a,{width:"narrow",context:"formatting"});case"eeeeee":return e.day(a,{width:"short",context:"formatting"});case"eeee":default:return e.day(a,{width:"wide",context:"formatting"})}},c:function(r,t,e,n){let a=r.getDay(),o=(a-n.weekStartsOn+8)%7||7;switch(t){case"c":return String(o);case"cc":return i(o,t.length);case"co":return e.ordinalNumber(o,{unit:"day"});case"ccc":return e.day(a,{width:"abbreviated",context:"standalone"});case"ccccc":return e.day(a,{width:"narrow",context:"standalone"});case"cccccc":return e.day(a,{width:"short",context:"standalone"});case"cccc":default:return e.day(a,{width:"wide",context:"standalone"})}},i:function(r,t,e){let n=r.getDay(),a=n===0?7:n;switch(t){case"i":return String(a);case"ii":return i(a,t.length);case"io":return e.ordinalNumber(a,{unit:"day"});case"iii":return e.day(n,{width:"abbreviated",context:"formatting"});case"iiiii":return e.day(n,{width:"narrow",context:"formatting"});case"iiiiii":return e.day(n,{width:"short",context:"formatting"});case"iiii":default:return e.day(n,{width:"wide",context:"formatting"})}},a:function(r,t,e){let a=r.getHours()/12>=1?"pm":"am";switch(t){case"a":case"aa":return e.dayPeriod(a,{width:"abbreviated",context:"formatting"});case"aaa":return e.dayPeriod(a,{width:"abbreviated",context:"formatting"}).toLowerCase();case"aaaaa":return e.dayPeriod(a,{width:"narrow",context:"formatting"});case"aaaa":default:return e.dayPeriod(a,{width:"wide",context:"formatting"})}},b:function(r,t,e){let n=r.getHours(),a;switch(n===12?a=x.noon:n===0?a=x.midnight:a=n/12>=1?"pm":"am",t){case"b":case"bb":return e.dayPeriod(a,{width:"abbreviated",context:"formatting"});case"bbb":return e.dayPeriod(a,{width:"abbreviated",context:"formatting"}).toLowerCase();case"bbbbb":return e.dayPeriod(a,{width:"narrow",context:"formatting"});case"bbbb":default:return e.dayPeriod(a,{width:"wide",context:"formatting"})}},B:function(r,t,e){let n=r.getHours(),a;switch(n>=17?a=x.evening:n>=12?a=x.afternoon:n>=4?a=x.morning:a=x.night,t){case"B":case"BB":case"BBB":return e.dayPeriod(a,{width:"abbreviated",context:"formatting"});case"BBBBB":return e.dayPeriod(a,{width:"narrow",context:"formatting"});case"BBBB":default:return e.dayPeriod(a,{width:"wide",context:"formatting"})}},h:function(r,t,e){if(t==="ho"){let n=r.getHours()%12;return n===0&&(n=12),e.ordinalNumber(n,{unit:"hour"})}return g.h(r,t)},H:function(r,t,e){return t==="Ho"?e.ordinalNumber(r.getHours(),{unit:"hour"}):g.H(r,t)},K:function(r,t,e){let n=r.getHours()%12;return t==="Ko"?e.ordinalNumber(n,{unit:"hour"}):i(n,t.length)},k:function(r,t,e){let n=r.getHours();return n===0&&(n=24),t==="ko"?e.ordinalNumber(n,{unit:"hour"}):i(n,t.length)},m:function(r,t,e){return t==="mo"?e.ordinalNumber(r.getMinutes(),{unit:"minute"}):g.m(r,t)},s:function(r,t,e){return t==="so"?e.ordinalNumber(r.getSeconds(),{unit:"second"}):g.s(r,t)},S:function(r,t){return g.S(r,t)},X:function(r,t,e){let n=r.getTimezoneOffset();if(n===0)return"Z";switch(t){case"X":return J(n);case"XXXX":case"XX":return w(n);case"XXXXX":case"XXX":default:return w(n,":")}},x:function(r,t,e){let n=r.getTimezoneOffset();switch(t){case"x":return J(n);case"xxxx":case"xx":return w(n);case"xxxxx":case"xxx":default:return w(n,":")}},O:function(r,t,e){let n=r.getTimezoneOffset();switch(t){case"O":case"OO":case"OOO":return"GMT"+A(n,":");case"OOOO":default:return"GMT"+w(n,":")}},z:function(r,t,e){let n=r.getTimezoneOffset();switch(t){case"z":case"zz":case"zzz":return"GMT"+A(n,":");case"zzzz":default:return"GMT"+w(n,":")}},t:function(r,t,e){let n=Math.trunc(+r/1e3);return i(n,t.length)},T:function(r,t,e){return i(+r,t.length)}};function A(r,t=""){let e=r>0?"-":"+",n=Math.abs(r),a=Math.trunc(n/60),o=n%60;return o===0?e+String(a):e+String(a)+t+i(o,2)}function J(r,t){return r%60===0?(r>0?"-":"+")+i(Math.abs(r)/60,2):w(r,t)}function w(r,t=""){let e=r>0?"-":"+",n=Math.abs(r),a=i(Math.trunc(n/60),2),o=i(n%60,2);return e+a+t+o}var K=(r,t)=>{switch(r){case"P":return t.date({width:"short"});case"PP":return t.date({width:"medium"});case"PPP":return t.date({width:"long"});case"PPPP":default:return t.date({width:"full"})}},U=(r,t)=>{switch(r){case"p":return t.time({width:"short"});case"pp":return t.time({width:"medium"});case"ppp":return t.time({width:"long"});case"pppp":default:return t.time({width:"full"})}},ot=(r,t)=>{let e=r.match(/(P+)(p+)?/)||[],n=e[1],a=e[2];if(!a)return K(r,t);let o;switch(n){case"P":o=t.dateTime({width:"short"});break;case"PP":o=t.dateTime({width:"medium"});break;case"PPP":o=t.dateTime({width:"long"});break;case"PPPP":default:o=t.dateTime({width:"full"});break}return o.replace("{{date}}",K(n,t)).replace("{{time}}",U(a,t))},z={p:U,P:ot};var it=/^D+$/,st=/^Y+$/,ct=["D","DD","YY","YYYY"];function tt(r){return it.test(r)}function et(r){return st.test(r)}function rt(r,t,e){let n=ut(r,t,e);if(console.warn(n),ct.includes(r))throw new RangeError(n)}function ut(r,t,e){let n=r[0]==="Y"?"years":"days of the month";return`Use \`${r.toLowerCase()}\` instead of \`${r}\` (in \`${t}\`) for formatting ${n} to the input \`${e}\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`}function nt(r){return r instanceof Date||typeof r=="object"&&Object.prototype.toString.call(r)==="[object Date]"}function at(r){return!(!nt(r)&&typeof r!="number"||isNaN(+s(r)))}var ft=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,dt=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,mt=/^'([^]*?)'?$/,ht=/''/g,lt=/[a-zA-Z]/;function Le(r,t,e){let n=O(),a=e?.locale??n.locale??L,o=e?.firstWeekContainsDate??e?.locale?.options?.firstWeekContainsDate??n.firstWeekContainsDate??n.locale?.options?.firstWeekContainsDate??1,c=e?.weekStartsOn??e?.locale?.options?.weekStartsOn??n.weekStartsOn??n.locale?.options?.weekStartsOn??0,m=s(r,e?.in);if(!at(m))throw new RangeError("Invalid time value");let h=t.match(dt).map(f=>{let u=f[0];if(u==="p"||u==="P"){let Y=z[u];return Y(f,a.formatLong)}return f}).join("").match(ft).map(f=>{if(f==="''")return{isToken:!1,value:"'"};let u=f[0];if(u==="'")return{isToken:!1,value:gt(f)};if(P[u])return{isToken:!0,value:f};if(u.match(lt))throw new RangeError("Format string contains an unescaped latin alphabet character `"+u+"`");return{isToken:!1,value:f}});a.localize.preprocessor&&(h=a.localize.preprocessor(m,h));let D={firstWeekContainsDate:o,weekStartsOn:c,locale:a};return h.map(f=>{if(!f.isToken)return f.value;let u=f.value;(!e?.useAdditionalWeekYearTokens&&et(u)||!e?.useAdditionalDayOfYearTokens&&tt(u))&&rt(u,t,String(r));let Y=P[u[0]];return Y(m,u,a.localize,D)}).join("")}function gt(r){let t=r.match(mt);return t?t[1].replace(ht,"'"):r}var $e=(r,t)=>`${r}-${t}`;export{Le as a,Yt as b,$e as c}; diff --git a/webui/dist/bitmagnet/browser/chunk-RHLI3WJ3.js b/webui/dist/bitmagnet/browser/chunk-RHLI3WJ3.js new file mode 100644 index 0000000..5bd70db --- /dev/null +++ b/webui/dist/bitmagnet/browser/chunk-RHLI3WJ3.js @@ -0,0 +1 @@ +import{a as Fe,b as He,c as Z,d as Ue,e as Ge,f as ee,g as Ke,h as Ye,i as D,j as Je,k as We,l as Xe}from"./chunk-6OKZFKY7.js";import{a as je,b as Re,c as O}from"./chunk-OYPFZA36.js";import{e as X}from"./chunk-AV47NZN7.js";import{b as $e}from"./chunk-KUHKEGBL.js";import{a as Se,m as Le}from"./chunk-3PIWRAOL.js";import{a as De}from"./chunk-M3BEO55A.js";import{D as we,J as G,M as Te,P as K,Q as qe,R as Ve,U as Y,Ua as Ae,a as H,b as ve,i as xe,ia as Be,n as Me,na as J,o as ye,oa as Ee,qa as W,r as U,ra as Oe,sa as Ie,ta as ze,va as Ne,ya as Pe,za as Qe}from"./chunk-4NEHCUZ2.js";import"./chunk-6XXA7HXI.js";import"./chunk-FKMTSCBK.js";import{$b as _,B as ce,Cb as de,Ea as g,Fa as C,Hb as u,Kb as I,N as le,Nb as z,Ob as N,Pb as P,Q as ne,Qb as o,Rb as l,Sb as F,Tb as fe,Ub as _e,Wb as re,Zb as k,_c as ke,a as M,b as y,ka as R,kb as c,kc as p,l as A,la as ue,lc as S,mc as he,o as se,pc as be,qa as T,ua as me,uc as ge,va as pe,vc as Ce}from"./chunk-3DR3CJRN.js";var Ze=(()=>{class n{static{this.\u0275fac=function(i){return new(i||n)}}static{this.\u0275mod=pe({type:n})}static{this.\u0275inj=ue({imports:[G,W,Be,ye,U,K,Y,J,ze,Ie]})}}return n})();var lt={pending:"primary",processed:"success",failed:"error",retry:"caution"},et=(()=>{class n{constructor(){this.themeInfo=T(X),this.transloco=T(H)}create(e){let{colors:i}=this.themeInfo.info,t=Array(),a=[];if(e&&Array.from(new Set(e.queues.flatMap(v=>v.events?[v.events.earliestBucket,v.events.latestBucket]:[]))).sort().length){let v=e.queues.filter(h=>!h.isEmpty);t.push(...v.map(h=>h.queue));let x=Array();switch(e.params.event){case"created":x.push("pending");break;case"processed":x.push("processed");break;case"failed":x.push("retry","failed");break;default:x.push(...Ke);break}a.push(...x.map(h=>({label:this.transloco.translate("dashboard.queues."+h),data:v.map(d=>d.statusCounts[h]),backgroundColor:i[O(lt[h],50)]})))}return{type:"bar",options:{animation:!1,scales:{x:{ticks:{callback:r=>parseInt(r).toLocaleString(this.transloco.getActiveLang())}},y:{}},indexAxis:"y",plugins:{legend:{display:!0}}},data:{labels:t,datasets:a}}}static{this.\u0275fac=function(i){return new(i||n)}}static{this.\u0275prov=R({token:n,factory:n.\u0275fac,providedIn:"root"})}}return n})();var j="\\d+",oe="".concat(j,"(?:[\\.,]").concat(j,")?"),ut="(".concat(j,"Y)?(").concat(j,"M)?(").concat(j,"W)?(").concat(j,"D)?"),mt="T(".concat(oe,"H)?(").concat(oe,"M)?(").concat(oe,"S)?"),pt="P(?:".concat(ut,"(?:").concat(mt,")?)"),dt=["years","months","weeks","days","hours","minutes","seconds"],tt={years:0,months:0,weeks:0,days:0,hours:0,minutes:0,seconds:0},ft=new RegExp(pt),it=function(n){let s=n.replace(/,/g,".").match(ft);if(!s)throw new RangeError("invalid duration: ".concat(n));let e=s.slice(1);if(e.filter(function(i){return i!=null}).length===0)throw new RangeError("invalid duration: ".concat(n));if(e.filter(function(i){return/\./.test(i||"")}).length>1)throw new RangeError("only the smallest unit can be fractional");return e.reduce(function(i,t,a){return Object.assign(i,{[dt[a]]:parseFloat(t||"0")||0}),i},{})},_t=function(n,s){s||(s=new Date);let e=Object.assign({},tt,n),i=s.getTime(),t=new Date(i);t.setFullYear(t.getFullYear()+e.years),t.setMonth(t.getMonth()+e.months),t.setDate(t.getDate()+e.days);let a=e.hours*3600*1e3,r=e.minutes*60*1e3;return t.setMilliseconds(t.getMilliseconds()+e.seconds*1e3+a+r),t.setDate(t.getDate()+e.weeks*7),t},nt=function(n,s){s||(s=new Date);let e=Object.assign({},tt,n),i=s.getTime(),t=new Date(i),a=_t(e,t),r=s.getTimezoneOffset(),v=a.getTimezoneOffset(),x=(r-v)*60;return(a.getTime()-t.getTime())/1e3+x};var te=class{constructor(s,e=Ue,i){this.apollo=s,this.errorsService=i,this.rawResultSubject=new A({queue:{metrics:{buckets:[]}}}),this.resultSubject=new A(Ge),this.result$=this.resultSubject.asObservable(),this.loadingSubject=new A(!1),this.paramsSubject=new A(e),this.params$=this.paramsSubject.asObservable(),this.variablesSubject=new A(rt(e)),this.paramsSubject.pipe(ne(50)).subscribe(t=>{let a=this.variablesSubject.getValue(),r=rt(t);JSON.stringify(a)!==JSON.stringify(r)?this.variablesSubject.next(r):this.resultSubject.next(ot(t,this.rawResultSubject.getValue()))}),this.variablesSubject.pipe(ne(50)).subscribe(t=>this.request(t)),this.rawResultSubject.subscribe(t=>{let a=this.paramsSubject.getValue();this.resultSubject.next(ot(a,t)),this.setInterval(a.autoRefresh)})}setInterval(s){clearTimeout(this.refreshTimeout);let e=Xe[s??this.params.autoRefresh];e&&(this.refreshTimeout=setTimeout(()=>{this.refresh()},e*1e3))}get params(){return this.paramsSubject.getValue()}get bucketDuration(){let s=this.params.buckets.duration;return s==="AUTO"?"hour":s}get bucketMultiplier(){return this.resultSubject.getValue().params.buckets.multiplier??this.params.buckets.multiplier}get loading(){return this.loadingSubject.getValue()}setTimeframe(s){this.updateParams(e=>y(M({},e),{buckets:y(M({},e.buckets),{timeframe:s})}))}setQueue(s){this.updateParams(e=>y(M({},e),{queue:s??void 0}))}setBucketDuration(s,e){this.updateParams(i=>y(M({},i),{buckets:y(M({},i.buckets),{duration:s,multiplier:e??"AUTO"})}))}setBucketMultiplier(s){this.updateParams(e=>y(M({},e),{buckets:y(M({},e.buckets),{multiplier:s})}))}setEvent(s){this.updateParams(e=>y(M({},e),{event:s??void 0}))}setAutoRefreshInterval(s){this.updateParams(e=>y(M({},e),{autoRefresh:s}))}updateParams(s){this.paramsSubject.next(s(this.params))}refresh(){this.variablesSubject.next(this.variablesSubject.getValue())}request(s){return clearTimeout(this.refreshTimeout),this.loadingSubject.next(!0),this.apollo.query({query:we,variables:s,fetchPolicy:"no-cache"}).pipe(ce(e=>{e&&(this.loadingSubject.next(!1),this.rawResultSubject.next(e.data))})).pipe(le(e=>(this.errorsService.addError(`Failed to load queue metrics: ${e.message}`),this.loadingSubject.next(!1),this.setInterval(),se))).subscribe()}},rt=n=>({input:{bucketDuration:n.buckets.duration==="AUTO"?"hour":n.buckets.duration,queues:n.queue?[n.queue]:void 0,startTime:n.buckets.timeframe==="all"?void 0:new Date(new Date().getTime()-1e3*D[n.buckets.timeframe]).toISOString()}}),at=n=>Object.fromEntries(n),ot=(n,s)=>{let{bucketParams:e,earliestBucket:i,latestBucket:t}=ht(n,s),a=Object.entries(s.queue.metrics.buckets.reduce((h,d)=>{if(d.queue!==(n.queue??d.queue))return h;let f,m;if((n.event??!0)&&(f=q(d.createdAtBucket,e),i&&i.index>f.index&&(f=void 0)),d.ranAtBucket&&n.event!=="created"&&(m=q(d.ranAtBucket,e),m&&(t.indexm.index)&&(m=void 0)),d.queue!==n.queue&&!f&&(!m||d.status==="pending"))return h;let[V,b]=h[d.queue]??[Fe,[]],w=d.latency?nt(it(d.latency)):void 0;return y(M({},h),{[d.queue]:[(d.status==="pending"?f:m)?y(M({},V),{[d.status]:d.count+V[d.status]}):V,{created:f?y(M({},b.created),{[f.key]:{count:d.count+(b.created?.[f.key]?.count??0),latency:0,startTime:f.start}}):b.created,processed:m&&d.status==="processed"&&(n.event??!0)?y(M({},b.processed),{[m.key]:{count:d.count+(b.processed?.[m.key]?.count??0),latency:(b.processed?.[m.key]?.latency??0)+(w??0),startTime:m.start}}):b.processed,failed:m&&d.status==="failed"&&(n.event??!0)?y(M({},b.failed),{[m.key]:{count:d.count+(b.failed?.[m.key]?.count??0),latency:(b.failed?.[m.key]?.latency??0)+(w??0),startTime:m.start}}):b.failed}]})},{})).map(([h,[d,f]])=>{let m;if(Object.keys(f).length){let V=Array(),b=at(Array("created","processed","failed").flatMap(w=>{let B=at(Object.entries(f[w]??{}).filter(([,ie])=>ie?.count).sort(([ie],[ct])=>parseInt(ie)h.events?[h.events.earliestBucket]:[]).sort()[0],x=a.flatMap(h=>h.events?[h.events.latestBucket]:[]).sort().reverse()[0];return v&&x&&(r={earliestBucket:v,latestBucket:x}),{params:y(M({},n),{buckets:e}),queues:a,bucketSpan:r}},ht=(n,s)=>{let e=n.buckets.duration==="AUTO"?"hour":n.buckets.duration,i=n.buckets.multiplier==="AUTO"?1:n.buckets.multiplier,t=n.buckets.timeframe,a=new Date,r=q(a,{duration:e,multiplier:i}),v=t==="all"?void 0:q(a.getTime()-1e3*D[t],{duration:e,multiplier:i}),x=[...v?[v]:[],...s.queue.metrics.buckets.flatMap(f=>[q(f.createdAtBucket,{duration:e,multiplier:i}),...f.ranAtBucket?[q(f.ranAtBucket,{duration:e,multiplier:i})]:[]]),r].filter(f=>!v||f.index>=v.index).sort((f,m)=>f.index-m.index),h=x[0],d=x[x.length-1];if(n.buckets.multiplier==="AUTO"){let m=d.index-h.index;i=Math.min(60,Math.max(Math.floor(m/(20*5))*5,1))}return{bucketParams:{duration:e,multiplier:i,timeframe:t},earliestBucket:t==="all"?void 0:q(a.getTime()-1e3*D[t],{duration:e,multiplier:i}),latestBucket:q(Math.max(a.getTime(),d.start.getTime()),{duration:e,multiplier:i})}},q=(n,s)=>{let e=new Date(n),i=1e3*Z[s.duration]*s.multiplier,t=Math.floor(e.getTime()/i);return{key:`${t}`,index:t,start:new Date(t*i)}};var L={created:"primary",processed:"success",failed:"error"},st=(()=>{class n{constructor(){this.themeInfo=T(X),this.transloco=T(H)}create(e){let{colors:i}=this.themeInfo.info,t=Array(),a=[];if(e){let r=e.queues.filter(f=>!f.isEmpty),v=Array.from(new Set(r.flatMap(f=>f.events?[f.events.earliestBucket,f.events.latestBucket]:[]))).sort(),x=new Date,h=e.params.buckets.timeframe==="all"?v[0]:Math.min(v[0],q(x.getTime()-1e3*D[e.params.buckets.timeframe],e.params.buckets).index),d=Math.max(v[v.length-1],q(x,e.params.buckets).index);if(v.length){for(let m=h;m<=d;m++)t.push(this.formatBucketKey(e.params.buckets,m));let f=ee.filter(m=>(e.params.event??m)===m);for(let m of r){for(let b of f){let w=Array();for(let B=h;B<=d;B++)w.push(m.events?.eventBuckets?.[b]?.entries?.[`${B}`]?.count??0);a.push({yAxisID:"yCount",label:m.queue+": "+this.transloco.translate("dashboard.queues."+b),data:w,borderColor:i[O(L[b],50)],pointBackgroundColor:i[O(L[b],20)],pointBorderColor:i[O(L[b],80)],pointHoverBackgroundColor:i[O(L[b],40)],pointHoverBorderColor:i[O(L[b],60)]})}if(["processed","failed"].filter(b=>f.includes(b)).length){let b=Array();for(let w=h;w<=d;w++){let B=["processed","failed"].filter(E=>f.includes(E)).reduce((E,$)=>{let Q=m.events?.eventBuckets?.[$]?.entries?.[`${w}`];return Q?.count?[(E?.[0]??0)+Q.latency,(E?.[1]??0)+Q.count]:E},null);b.push(B?B[0]/B[1]:null)}a.push({yAxisID:"yLatency",label:m.queue+": "+this.transloco.translate("dashboard.queues.latency"),data:b,borderColor:i["tertiary-50"],pointHoverBackgroundColor:i["tertiary-80"],pointHoverBorderColor:i["tertiary-20"]})}}}}return{type:"line",options:{animation:!1,elements:{line:{tension:.5}},scales:{yCount:{position:"left",ticks:{callback:r=>parseInt(r).toLocaleString(this.transloco.getActiveLang())}},yLatency:{position:"right",ticks:{callback:this.formatDuration.bind(this)}}},plugins:{legend:{display:!0},decimation:{enabled:!0}}},data:{labels:t,datasets:a}}}formatBucketKey(e,i){let t;switch(e.duration){case"day":t="d LLL";break;case"hour":t="d LLL H:00";break;case"minute":t="H:mm";break}return je(1e3*Z[e.duration]*e.multiplier*i,t,{locale:Le(this.transloco.getActiveLang())})}formatDuration(e){if(typeof e=="string"&&(e=parseInt(e)),e===0)return"0";let i=e,t=0,a=0,r=0;return i>=60&&(t=Math.floor(i/60),i=i%60,t>=5&&(i=0,t>=60&&(a=Math.floor(t/60),t=t%60,a>=5&&(t=0,a>=24&&(r=Math.floor(a/24),a=a%24))))),$e({days:r,hours:a,minutes:t,seconds:i},this.transloco.getActiveLang())}static{this.\u0275fac=function(i){return new(i||n)}}static{this.\u0275prov=R({token:n,factory:n.\u0275fac,providedIn:"root"})}}return n})();function bt(n,s){if(n&1&&(o(0,"mat-option",6),p(1),l()),n&2){let e=s.$implicit,i=_().$implicit;u("value",e),c(),S(i("dashboard.interval."+e))}}function gt(n,s){if(n&1&&(o(0,"mat-option",6),p(1),l()),n&2){let e=s.$implicit,i=_().$implicit;u("value",e),c(),S(i("dashboard.interval."+e+"s"))}}function Ct(n,s){if(n&1&&(o(0,"mat-option",6),p(1),l()),n&2){let e=s.$implicit;u("value",e),c(),S(e)}}function kt(n,s){if(n&1){let e=re();o(0,"button",16),k("click",function(){let t=g(e).$implicit,a=_(2);return C(a.queueMetricsController.params.queue===t||a.queueMetricsController.setQueue(t))}),o(1,"mat-icon"),p(2),l()()}if(n&2){let e=s.$implicit,i=_(2);I(i.queueMetricsController.params.queue===e?"selected":"deselected"),u("matTooltip",e),c(2),S(i.queueMetricsController.params.queue===e?"radio_button_checked":"radio_button_unchecked")}}function vt(n,s){if(n&1&&(o(0,"mat-option",6),p(1),l()),n&2){let e=s.$implicit,i=_().$implicit;u("value",e),c(),S(i("dashboard.event."+e))}}function xt(n,s){if(n&1&&(o(0,"mat-option",6),p(1),l()),n&2){let e=s.$implicit,i=_().$implicit;u("value",e),c(),S(i("dashboard.interval."+e))}}function Mt(n,s){if(n&1){let e=re();fe(0),o(1,"mat-card")(2,"mat-card-content")(3,"mat-grid-list",1)(4,"mat-grid-tile",2)(5,"mat-card",3)(6,"mat-card-header")(7,"mat-card-title")(8,"h4"),p(9),l()()(),o(10,"mat-card-content")(11,"mat-form-field",4)(12,"mat-select",5),k("valueChange",function(t){g(e);let a=_();return C(a.queueMetricsController.setTimeframe(t))}),N(13,bt,2,2,"mat-option",6,z),l()(),o(15,"div",7)(16,"button",8),k("click",function(){g(e);let t=_();return C(t.queueMetricsController.setTimeframe(t.timeframeNames[0]))}),o(17,"mat-icon"),p(18,"first_page"),l()(),o(19,"button",8),k("click",function(){g(e);let t=_();return C(t.queueMetricsController.setTimeframe(t.timeframeNames[t.timeframeNames.indexOf(t.queueMetricsController.params.buckets.timeframe)-1]))}),o(20,"mat-icon"),p(21,"navigate_before"),l()(),o(22,"button",8),k("click",function(){g(e);let t=_();return C(t.queueMetricsController.setTimeframe(t.timeframeNames[t.timeframeNames.indexOf(t.queueMetricsController.params.buckets.timeframe)+1]))}),o(23,"mat-icon"),p(24,"navigate_next"),l()(),o(25,"button",8),k("click",function(){g(e);let t=_();return C(t.queueMetricsController.setTimeframe(t.timeframeNames[t.timeframeNames.length-1]))}),o(26,"mat-icon"),p(27,"last_page"),l()()()()()(),o(28,"mat-grid-tile",2)(29,"mat-card",9)(30,"mat-card-header")(31,"mat-card-title")(32,"h4"),p(33),l()()(),o(34,"mat-card-content")(35,"mat-form-field",10)(36,"input",11),ge(37,"async"),k("change",function(t){g(e);let a=_();return C(a.handleMultiplierEvent(t))}),l()(),o(38,"mat-form-field",12)(39,"mat-select",5),k("valueChange",function(t){g(e);let a=_();return C(a.queueMetricsController.setBucketDuration(t))}),N(40,gt,2,2,"mat-option",6,z),l()(),o(42,"div",7)(43,"button",8),k("click",function(){g(e);let t=_();return C(t.queueMetricsController.setBucketMultiplier(t.queueMetricsController.bucketMultiplier-1))}),o(44,"mat-icon"),p(45,"remove"),l()(),o(46,"button",13),k("click",function(){g(e);let t=_();return C(t.queueMetricsController.setBucketMultiplier(t.queueMetricsController.bucketMultiplier+1))}),o(47,"mat-icon"),p(48,"add"),l()(),o(49,"button",8),k("click",function(){g(e);let t=_();return C(t.queueMetricsController.setBucketDuration(t.resolutionNames[0]))}),o(50,"mat-icon"),p(51,"first_page"),l()(),o(52,"button",8),k("click",function(){g(e);let t=_();return C(t.queueMetricsController.setBucketDuration(t.resolutionNames[t.resolutionNames.indexOf(t.queueMetricsController.bucketDuration)-1]))}),o(53,"mat-icon"),p(54,"navigate_before"),l()(),o(55,"button",8),k("click",function(){g(e);let t=_();return C(t.queueMetricsController.setBucketDuration(t.resolutionNames[t.resolutionNames.indexOf(t.queueMetricsController.bucketDuration)+1]))}),o(56,"mat-icon"),p(57,"navigate_next"),l()(),o(58,"button",8),k("click",function(){g(e);let t=_();return C(t.queueMetricsController.setBucketDuration(t.resolutionNames[t.resolutionNames.length-1]))}),o(59,"mat-icon"),p(60,"last_page"),l()()()()()(),o(61,"mat-grid-tile",2)(62,"mat-card")(63,"mat-card-header")(64,"mat-card-title")(65,"h4"),p(66),l()()(),o(67,"mat-card-content")(68,"mat-form-field",4)(69,"mat-select",5),k("valueChange",function(t){g(e);let a=_();return C(a.queueMetricsController.setQueue(t==="_all"?null:t))}),o(70,"mat-option",14),p(71),l(),N(72,Ct,2,2,"mat-option",6,z),l()(),o(74,"div",15)(75,"button",16),k("click",function(){g(e);let t=_();return C(t.queueMetricsController.setQueue(null))}),o(76,"mat-icon",17),p(77,"workspaces"),l()(),N(78,kt,3,4,"button",18,z),l()()()(),o(80,"mat-grid-tile",2)(81,"mat-card")(82,"mat-card-header")(83,"mat-card-title")(84,"h4"),p(85),l()()(),o(86,"mat-card-content")(87,"mat-form-field",4)(88,"mat-select",5),k("valueChange",function(t){g(e);let a=_();return C(a.queueMetricsController.setEvent(t==="_all"?null:t))}),o(89,"mat-option",14),p(90,"All"),l(),N(91,vt,2,2,"mat-option",6,z),l()(),o(93,"div",15)(94,"button",16),k("click",function(){g(e);let t=_();return C(t.queueMetricsController.setEvent(null))}),o(95,"mat-icon",17),p(96,"radio_button_checked"),l()(),o(97,"button",16),k("click",function(){g(e);let t=_();return C(t.queueMetricsController.params.event==="created"||t.queueMetricsController.setEvent("created"))}),o(98,"mat-icon"),p(99,"add_circle"),l()(),o(100,"button",16),k("click",function(){g(e);let t=_();return C(t.queueMetricsController.params.event==="processed"||t.queueMetricsController.setEvent("processed"))}),o(101,"mat-icon"),p(102,"check_circle"),l()(),o(103,"button",16),k("click",function(){g(e);let t=_();return C(t.queueMetricsController.params.event==="failed"||t.queueMetricsController.setEvent("failed"))}),o(104,"mat-icon"),p(105,"error"),l()()()()()(),o(106,"mat-grid-tile",2)(107,"mat-card",19)(108,"mat-card-header")(109,"mat-card-title")(110,"h4"),p(111),l()()(),o(112,"mat-card-content")(113,"mat-form-field",4)(114,"mat-select",5),k("valueChange",function(t){g(e);let a=_();return C(a.queueMetricsController.setAutoRefreshInterval(t))}),N(115,xt,2,2,"mat-option",6,z),l()(),o(117,"div",15)(118,"button",16),k("click",function(){g(e);let t=_();return C(t.queueMetricsController.refresh())}),o(119,"mat-icon"),p(120,"sync"),l()()()()()()(),o(121,"div",20),F(122,"mat-progress-bar",21),l(),o(123,"mat-grid-list",1)(124,"mat-grid-tile",2)(125,"mat-card")(126,"mat-card-header")(127,"mat-card-title")(128,"h4"),p(129),l()()(),o(130,"mat-card-content"),F(131,"app-chart",22),l()()(),o(132,"mat-grid-tile",2)(133,"mat-card")(134,"mat-card-header")(135,"mat-card-title")(136,"h4"),p(137),l()()(),o(138,"mat-card-content"),F(139,"app-chart",22),l()()()()()(),_e()}if(n&2){let e,i,t,a=s.$implicit,r=_();c(3),u("cols",r.breakpoints.sizeAtLeast("Large")?5:r.breakpoints.sizeAtLeast("Medium")?3:r.breakpoints.sizeAtLeast("Small")?2:1),c(),u("colspan",1)("rowspan",2),c(5),S(a("dashboard.metrics.timeframe")),c(3),u("value",r.queueMetricsController.params.buckets.timeframe),c(),P(r.timeframeNames),c(3),u("disabled",r.timeframeNames.indexOf(r.queueMetricsController.params.buckets.timeframe)<=0),c(3),u("disabled",r.timeframeNames.indexOf(r.queueMetricsController.params.buckets.timeframe)<=0),c(3),u("disabled",r.timeframeNames.indexOf(r.queueMetricsController.params.buckets.timeframe)>=r.timeframeNames.length-1),c(3),u("disabled",r.timeframeNames.indexOf(r.queueMetricsController.params.buckets.timeframe)>=r.timeframeNames.length-1),c(3),u("colspan",1)("rowspan",2),c(5),he(" ",a("dashboard.metrics.resolution")," "),c(3),u("placeholder",(e=(e=Ce(37,66,r.queueMetricsController.result$))==null||e.params==null||e.params.buckets==null||e.params.buckets.multiplier==null?null:e.params.buckets.multiplier.toString())!==null&&e!==void 0?e:"")("value",r.queueMetricsController.params.buckets.multiplier),c(3),u("value",r.queueMetricsController.bucketDuration),c(),P(r.resolutionNames),c(3),u("disabled",r.queueMetricsController.bucketMultiplier===1),c(6),u("disabled",r.resolutionNames.indexOf(r.queueMetricsController.bucketDuration)<=0),c(3),u("disabled",r.resolutionNames.indexOf(r.queueMetricsController.bucketDuration)<=0),c(3),u("disabled",r.resolutionNames.indexOf(r.queueMetricsController.bucketDuration)>=r.resolutionNames.length-1),c(3),u("disabled",r.resolutionNames.indexOf(r.queueMetricsController.bucketDuration)>=r.resolutionNames.length-1),c(3),u("colspan",1)("rowspan",2),c(5),S(a("dashboard.queues.queue")),c(3),u("value",(i=r.queueMetricsController.params.queue)!==null&&i!==void 0?i:"_all"),c(2),S(a("general.all")),c(),P(r.availableQueueNames),c(3),I(r.queueMetricsController.params.queue?"deselected":"selected"),u("matTooltip",a("general.all")),c(3),P(r.availableQueueNames),c(2),u("colspan",1)("rowspan",2),c(5),S(a("dashboard.metrics.event")),c(3),u("value",(t=r.queueMetricsController.params.event)!==null&&t!==void 0?t:"_all"),c(3),P(r.eventNames),c(3),I(r.queueMetricsController.params.event?"deselected":"selected"),u("matTooltip",a("general.all")),c(3),I(r.queueMetricsController.params.event==="created"?"selected":"deselected"),u("matTooltip",a("dashboard.queues.created")),c(3),I(r.queueMetricsController.params.event==="processed"?"selected":"deselected"),u("matTooltip",a("dashboard.queues.processed")),c(3),I(r.queueMetricsController.params.event==="failed"?"selected":"deselected"),u("matTooltip",a("dashboard.queues.failed")),c(3),u("colspan",1)("rowspan",2),c(5),S(a("general.refresh")),c(3),u("value",r.queueMetricsController.params.autoRefresh),c(),P(r.autoRefreshIntervalNames),c(3),u("matTooltip",a("general.refresh")),c(4),u("mode",r.queueMetricsController.loading?"indeterminate":"determinate")("value",0),c(),u("cols",r.breakpoints.sizeAtLeast("Large")?2:1),c(),u("colspan",1)("rowspan",5),c(5),S(a("dashboard.queues.total_counts_by_status")),c(2),u("adapter",r.totals)("$data",r.queueMetricsController.result$)("height",400)("width",550),c(),u("colspan",1)("rowspan",5),c(5),S(a("dashboard.metrics.throughput")),c(2),u("adapter",r.timeline)("$data",r.queueMetricsController.result$)("height",400)("width",550)}}var zi=(()=>{class n{constructor(){this.breakpoints=T(De),this.apollo=T(xe),this.queueMetricsController=new te(this.apollo,{buckets:{duration:"AUTO",multiplier:"AUTO",timeframe:"all"},autoRefresh:"seconds_30"},T(Se)),this.timeline=T(st),this.totals=T(et),this.resolutionNames=He,this.timeframeNames=Ye,this.availableQueueNames=Je,this.autoRefreshIntervalNames=We,this.eventNames=ee}ngOnInit(){this.queueMetricsController.result$.subscribe(e=>{if(this.queueMetricsController.params.buckets.timeframe==="all"&&this.queueMetricsController.params.buckets.duration==="AUTO"&&e.params.buckets.duration==="hour"){let i=e.bucketSpan;i&&i.latestBucket-i.earliestBucket<12&&this.queueMetricsController.setBucketDuration("minute")}})}ngOnDestroy(){this.queueMetricsController.setAutoRefreshInterval("off")}handleMultiplierEvent(e){let i=e.currentTarget.value;this.queueMetricsController.setBucketMultiplier(/^\d+$/.test(i)?parseInt(i):"AUTO")}static{this.\u0275fac=function(i){return new(i||n)}}static{this.\u0275cmp=me({type:n,selectors:[["app-queue-visualize"]],standalone:!0,features:[be],decls:1,vars:0,consts:[[4,"transloco"],["rowHeight","100px",3,"cols"],[3,"colspan","rowspan"],[1,"form-timeframe"],["subscriptSizing","dynamic"],[3,"valueChange","value"],[3,"value"],[1,"paginator","actions"],["mat-icon-button","",3,"click","disabled"],[1,"form-resolution"],["subscriptSizing","dynamic",1,"form-input-multiplier"],["type","number","matInput","","min","1","step","1",3,"change","placeholder","value"],["subscriptSizing","dynamic",1,"form-select-duration"],["mat-icon-button","",3,"click"],["value","_all"],[1,"actions"],["mat-icon-button","",3,"click","matTooltip"],["fontSet","material-icons"],["mat-icon-button","",3,"class","matTooltip"],[1,"form-refresh"],[1,"progress-bar-container"],[3,"mode","value"],[3,"adapter","$data","height","width"]],template:function(i,t){i&1&&de(0,Mt,140,68,"ng-container",0)},dependencies:[Ae,Me,U,K,Ve,Y,qe,Te,Ee,J,W,Oe,Ne,Qe,Pe,ve,ke,Re,G,Ze],styles:[".actions[_ngcontent-%COMP%]{width:210px;padding-top:12px;--mdc-icon-button-state-layer-size: 32px}.actions[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:22px}.actions[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{margin-right:0}.progress-bar-container[_ngcontent-%COMP%]{width:100%;height:10px}mat-grid-tile[_ngcontent-%COMP%] mat-card[_ngcontent-%COMP%]{width:100%}mat-grid-tile[_ngcontent-%COMP%] mat-card[_ngcontent-%COMP%] mat-card-content[_ngcontent-%COMP%]{min-width:190px}mat-grid-tile[_ngcontent-%COMP%] mat-card[_ngcontent-%COMP%] h4[_ngcontent-%COMP%]{margin-bottom:16px;font-size:18px}mat-form-field[_ngcontent-%COMP%]{width:186px}.form-resolution[_ngcontent-%COMP%] .actions[_ngcontent-%COMP%]{margin-left:-2px}.form-resolution[_ngcontent-%COMP%] .form-input-multiplier[_ngcontent-%COMP%]{width:60px;margin-right:10px}.form-resolution[_ngcontent-%COMP%] .form-input-multiplier[_ngcontent-%COMP%] input[_ngcontent-%COMP%]::-webkit-outer-spin-button, .form-resolution[_ngcontent-%COMP%] .form-input-multiplier[_ngcontent-%COMP%] input[_ngcontent-%COMP%]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.form-resolution[_ngcontent-%COMP%] .form-input-multiplier[_ngcontent-%COMP%] input[type=number][_ngcontent-%COMP%]{-moz-appearance:textfield}.form-resolution[_ngcontent-%COMP%] .form-select-duration[_ngcontent-%COMP%]{width:116px}"]})}}return n})();export{zi as QueueVisualizeComponent}; diff --git a/webui/dist/bitmagnet/browser/chunk-V3XZ7MUW.js b/webui/dist/bitmagnet/browser/chunk-V3XZ7MUW.js new file mode 100644 index 0000000..4baca37 --- /dev/null +++ b/webui/dist/bitmagnet/browser/chunk-V3XZ7MUW.js @@ -0,0 +1 @@ +import{a as Be,b as je}from"./chunk-DKVITRV6.js";import"./chunk-KUHKEGBL.js";import{a as me}from"./chunk-3PIWRAOL.js";import{a as Fe}from"./chunk-M3BEO55A.js";import{Aa as we,Ba as Me,C as ue,Ca as Je,Da as Ie,Ea as Ee,Fa as Pe,Ga as $e,Ha as Qe,Ia as ke,Ja as Oe,K as _e,Ka as Ve,L as ge,La as De,M as xe,Ma as qe,P as fe,Q as be,R as Ce,U as he,Ua as A,a as B,b as F,ba as ve,h as le,i as ce,n as se,q as pe,qa as ye,r as de,va as Se,ya as j,za as Te}from"./chunk-4NEHCUZ2.js";import{c as oe,d as re,g as N,h as W,i as ae}from"./chunk-6XXA7HXI.js";import"./chunk-FKMTSCBK.js";import{$b as l,$c as q,B as P,Cb as u,Ea as _,Fa as g,Gb as O,Hb as d,Kb as H,Mb as E,N as U,Na as ee,O as X,Ob as $,Pb as Q,Q as Z,Qb as a,Rb as c,Sb as I,Tb as h,Ub as v,Wb as y,Zb as x,_c as D,a as f,ad as ne,b,jc as z,kb as r,kc as p,l as w,lc as S,mc as m,o as K,pc as V,qa as J,qc as te,ua as k,uc as T,vc as M,wc as ie}from"./chunk-3DR3CJRN.js";var Ge=()=>["expandedDetail"];function Ke(t,n){t&1&&(a(0,"th",18),p(1,"ID"),c())}function Ue(t,n){if(t&1){let e=y();a(0,"td",19),x("click",function(o){let s=_(e).$implicit;return l(2).toggleQueueJobId(s.id),g(o.stopPropagation())}),p(1),c()}if(t&2){let e=n.$implicit,i=l(2);r(),m(" ",i.item(e).id," ")}}function Xe(t,n){if(t&1&&(a(0,"th",18),p(1),c()),t&2){let e=l().$implicit;r(),m(" ",e("dashboard.queues.queue")," ")}}function Ze(t,n){if(t&1){let e=y();a(0,"td",19),x("click",function(o){let s=_(e).$implicit;return l(2).toggleQueueJobId(s.id),g(o.stopPropagation())}),p(1),c()}if(t&2){let e=n.$implicit,i=l(2);r(),m(" ",i.item(e).queue," ")}}function et(t,n){if(t&1&&(a(0,"th",18),p(1),c()),t&2){let e=l().$implicit;r(),m(" ",e("dashboard.queues.priority")," ")}}function tt(t,n){if(t&1){let e=y();a(0,"td",19),x("click",function(o){let s=_(e).$implicit;return l(2).toggleQueueJobId(s.id),g(o.stopPropagation())}),p(1),T(2,"number"),c()}if(t&2){let e=n.$implicit,i=l(2);r(),m(" ",M(2,1,i.item(e).priority)," ")}}function it(t,n){if(t&1&&(a(0,"th",18),p(1),c()),t&2){let e=l().$implicit;r(),m(" ",e("general.status")," ")}}function nt(t,n){if(t&1){let e=y();a(0,"td",19),x("click",function(o){let s=_(e).$implicit;return l(2).toggleQueueJobId(s.id),g(o.stopPropagation())}),p(1),c()}if(t&2){let e=n.$implicit,i=l(2);r(),m(" ",i.item(e).status," ")}}function ot(t,n){if(t&1&&(a(0,"th",18),p(1),c()),t&2){let e=l().$implicit;r(),S(e("general.error"))}}function rt(t,n){if(t&1&&(p(0),T(1,"slice")),t&2){let e=l().$implicit,i=l(2);m(" ",ie(1,1,i.item(e).error,0,20)+"..."," ")}}function at(t,n){if(t&1){let e=y();a(0,"td",19),x("click",function(o){let s=_(e).$implicit;return l(2).toggleQueueJobId(s.id),g(o.stopPropagation())}),u(1,rt,2,5),c()}if(t&2){let e=n.$implicit;r(),E(e.error?1:-1)}}function lt(t,n){if(t&1&&(a(0,"th",20),p(1),c()),t&2){let e=l().$implicit;r(),m(" ",e("dashboard.queues.created_at")," ")}}function ct(t,n){if(t&1){let e=y();a(0,"td",19),x("click",function(o){let s=_(e).$implicit;return l(2).toggleQueueJobId(s.id),g(o.stopPropagation())}),p(1),T(2,"timeAgo"),c()}if(t&2){let e=n.$implicit,i=l(2);r(),m(" ",M(2,1,i.item(e).createdAt)," ")}}function st(t,n){if(t&1&&(a(0,"th",20),p(1),c()),t&2){let e=l().$implicit;r(),m(" ",e("dashboard.queues.ran_at")," ")}}function pt(t,n){t&1&&(p(0),T(1,"timeAgo")),t&2&&m(" ",M(1,1,n)," ")}function dt(t,n){if(t&1){let e=y();a(0,"td",19),x("click",function(o){let s=_(e).$implicit;return l(2).toggleQueueJobId(s.id),g(o.stopPropagation())}),u(1,pt,2,3),c()}if(t&2){let e,i=n.$implicit;r(),E((e=i.ranAt)?1:-1,e)}}function mt(t,n){if(t&1&&(a(0,"h5")(1,"span",23),p(2),c()(),a(3,"pre",24),p(4),c()),t&2){let e=n,i=l(2).$implicit;r(),d("matTooltip",i("torrents.copy_to_clipboard"))("cdkCopyToClipboard",e),r(),m("",i("general.error"),":"),r(2),S(e)}}function ut(t,n){if(t&1&&(a(0,"td",21)(1,"div",22)(2,"p")(3,"strong"),p(4,"ID:"),c(),p(5,"\xA0"),a(6,"span",23),p(7),c()(),a(8,"h5")(9,"span",23),p(10),c()(),a(11,"pre",24),p(12),c(),u(13,mt,5,4),c()()),t&2){let e,i=n.$implicit,o=l().$implicit,s=l();O("colspan",s.displayedColumns.length),r(),d("@detailExpand",s.expandedId.getValue()===i.id?"expanded":"collapsed"),r(5),d("matTooltip",o("torrents.copy_to_clipboard"))("cdkCopyToClipboard",s.item(i).id),r(),S(s.item(i).id),r(2),d("matTooltip",o("torrents.copy_to_clipboard"))("cdkCopyToClipboard",s.item(i).payload),r(),m("",o("dashboard.queues.payload"),":"),r(2),S(s.beautifyPayload(s.item(i).payload)),r(),E((e=s.item(i).error)?13:-1,e)}}function _t(t,n){t&1&&I(0,"tr",25)}function gt(t,n){if(t&1&&I(0,"tr",26),t&2){let e=n.$implicit,i=l(2);H("summary-row "+(e.id===i.expandedId.getValue()?"expanded":"collapsed"))}}function xt(t,n){if(t&1&&I(0,"tr",26),t&2){let e=n.$implicit,i=l(2);H("expanded-detail-row "+(e.id===i.expandedId.getValue()?"expanded":"collapsed"))}}function ft(t,n){if(t&1&&(h(0),a(1,"div",1),I(2,"mat-progress-bar",2),T(3,"async"),c(),a(4,"table",3),h(5,4),u(6,Ke,2,0,"th",5)(7,Ue,2,1,"td",6),v(),h(8,7),u(9,Xe,2,1,"th",5)(10,Ze,2,1,"td",6),v(),h(11,8),u(12,et,2,1,"th",5)(13,tt,3,3,"td",6),v(),h(14,9),u(15,it,2,1,"th",5)(16,nt,2,1,"td",6),v(),h(17,10),u(18,ot,2,1,"th",5)(19,at,2,1,"td",6),v(),h(20,11),u(21,lt,2,1,"th",12)(22,ct,3,3,"td",6),v(),h(23,13),u(24,st,2,1,"th",12)(25,dt,2,1,"td",6),v(),h(26,14),u(27,ut,14,10,"td",15),v(),u(28,_t,1,0,"tr",16)(29,gt,1,2,"tr",17)(30,xt,1,2,"tr",17),c(),v()),t&2){let e=l();r(2),d("mode",M(3,7,e.dataSource.loading$)?"indeterminate":"determinate")("value",0),r(2),d("dataSource",e.dataSource)("multiTemplateDataRows",!0),r(24),d("matHeaderRowDef",e.displayedColumns),r(),d("matRowDefColumns",e.displayedColumns),r(),d("matRowDefColumns",te(9,Ge))}}var Ae=(()=>{class t{constructor(){this.transloco=J(B),this.displayedColumns=bt,this.updated=new ee,this.expandedId=new w(null),this.items=Array()}ngOnInit(){this.dataSource.items$.subscribe(e=>{if(this.items=e,e.length){let i=this.expandedId.getValue();i&&!e.some(({id:o})=>o===i)&&this.expandedId.next(null)}})}isAllSelected(){return this.items.every(e=>this.selection.isSelected(e.id))}toggleAllRows(){if(this.isAllSelected()){this.selection.clear();return}this.selection.select(...this.items.map(e=>e.id))}toggleQueueJobId(e){this.expandedId.getValue()===e?this.expandedId.next(null):this.expandedId.next(e)}item(e){return e}beautifyPayload(e){try{return JSON.stringify(JSON.parse(e),null,2)}catch{return e}}static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275cmp=k({type:t,selectors:[["app-queue-jobs-table"]],inputs:{dataSource:"dataSource",selection:"selection",displayedColumns:"displayedColumns"},outputs:{updated:"updated"},standalone:!0,features:[V],decls:1,vars:0,consts:[[4,"transloco"],[1,"progress-bar-container"],[3,"mode","value"],["mat-table","",1,"table-results",3,"dataSource","multiTemplateDataRows"],["matColumnDef","id"],["mat-header-cell","",4,"matHeaderCellDef"],["mat-cell","",3,"click",4,"matCellDef"],["matColumnDef","queue"],["matColumnDef","priority"],["matColumnDef","status"],["matColumnDef","error"],["matColumnDef","createdAt"],["mat-header-cell","","style","text-align: center",4,"matHeaderCellDef"],["matColumnDef","ranAt"],["matColumnDef","expandedDetail"],["mat-cell","",4,"matCellDef"],["mat-header-row","",4,"matHeaderRowDef"],["mat-row","",3,"class",4,"matRowDef","matRowDefColumns"],["mat-header-cell",""],["mat-cell","",3,"click"],["mat-header-cell","",2,"text-align","center"],["mat-cell",""],[1,"item-detail"],[1,"copy",3,"matTooltip","cdkCopyToClipboard"],[1,"payload"],["mat-header-row",""],["mat-row",""]],template:function(i,o){i&1&&u(0,ft,31,10,"ng-container",0)},dependencies:[A,_e,Se,Ie,Pe,Oe,$e,Ee,Ve,Qe,ke,De,qe,j,F,D,ne,q,je],styles:[".item-detail[_ngcontent-%COMP%] > [_ngcontent-%COMP%]:first-child{padding-top:20px}.item-detail[_ngcontent-%COMP%] > [_ngcontent-%COMP%]:last-child{margin-bottom:20px}tr[_ngcontent-%COMP%]:not(.expanded-detail-row) td[_ngcontent-%COMP%]{cursor:pointer}tr.expanded-detail-row[_ngcontent-%COMP%]{height:0}tr.expanded-detail-row[_ngcontent-%COMP%] h5[_ngcontent-%COMP%]{margin:0;padding-top:8px}tr.expanded-detail-row[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{margin:0;padding-top:8px;padding-bottom:4px}tr.expanded-detail-row[_ngcontent-%COMP%] span.copy[_ngcontent-%COMP%]{cursor:crosshair;text-decoration:underline;text-decoration-style:dotted}pre[_ngcontent-%COMP%]{opacity:0;max-height:200px;max-width:100px;overflow:scroll;background:#7773;padding:10px}.expanded-detail-row.expanded[_ngcontent-%COMP%] pre[_ngcontent-%COMP%]{opacity:1;max-width:1200px}"],data:{animation:[oe("detailExpand",[W("collapsed,void",N({height:"0px",minHeight:"0"})),W("expanded",N({height:"*"})),ae("expanded <=> collapsed",re("225ms cubic-bezier(0.4, 0.0, 0.2, 1)"))])]}})}}return t})(),bt=["id","queue","priority","status","error","createdAt","ranAt"];var Ct={items:[],hasNextPage:!1,totalCount:0,aggregations:{queue:[],status:[]}},R=class{constructor(n,e,i){this.apollo=n,this.errorsService=e,this.currentRequest=new w(0),this.loadingSubject=new w(!1),this.loading$=this.loadingSubject.asObservable(),this.result=Ct,this.resultSubject=new w(this.result),this.result$=this.resultSubject.asObservable(),this.items$=this.resultSubject.pipe(P(o=>o.items)),i.subscribe(o=>{this.variables=o,this.loadResult(o)}),this.resultSubject.subscribe(o=>{this.result=o})}connect({}){return this.items$}disconnect(){this.resultSubject.complete()}refresh(){this.variables&&this.loadResult(this.variables)}loadResult(n){this.currentSubscription&&(this.currentSubscription.unsubscribe(),this.currentSubscription=void 0),this.loadingSubject.next(!0);let e=this.currentRequest.getValue()+1;this.currentRequest.next(e);let i=this.apollo.query({query:ue,variables:n,fetchPolicy:"no-cache"}).pipe(P(o=>o.data.queue.jobs)).pipe(U(o=>(this.errorsService.addError(`Error loading item results: ${o.message}`),K)));this.currentSubscription=i.subscribe(o=>{e===this.currentRequest.getValue()&&(this.loadingSubject.next(!1),this.resultSubject.next(o))})}};var L=class{constructor(n=ht){this.controlsSubject=new w(n),this.controls$=this.controlsSubject.asObservable(),this.variablesSubject=new w(Re(n)),this.variables$=this.variablesSubject.asObservable(),this.controls$.pipe(Z(100)).subscribe(e=>{let i=this.variablesSubject.getValue(),o=Re(e);JSON.stringify(i)!==JSON.stringify(o)&&this.variablesSubject.next(o)})}update(n){let e=this.controlsSubject.getValue(),i=n(e);JSON.stringify(e)!==JSON.stringify(i)&&this.controlsSubject.next(i)}activateFilter(n,e){this.update(i=>{let o=n.extractInput(i.facets);return b(f({},i),{page:1,facets:n.patchInput(i.facets,b(f({},o),{filter:Array.from(new Set([...o.filter??[],e])).sort()}))})})}deactivateFilter(n,e){this.update(i=>{let o=n.extractInput(i.facets),s=o.filter?.filter(C=>C!==e);return b(f({},i),{page:1,facets:n.patchInput(i.facets,b(f({},o),{filter:s?.length?s:void 0}))})})}selectOrderBy(n){let e={field:n,descending:Y.find(i=>i.field===n)?.descending??!1};this.update(i=>b(f({},i),{orderBy:e,page:1}))}toggleOrderByDirection(){this.update(n=>b(f({},n),{orderBy:b(f({},n.orderBy),{descending:!n.orderBy.descending}),page:1}))}handlePageEvent(n){this.update(e=>b(f({},e),{limit:n.pageSize,page:n.page}))}},Re=t=>({input:{limit:t.limit,page:t.page,totalCount:!0,orderBy:[t.orderBy,...t.orderBy.field!=="created_at"?[{field:"created_at",descending:t.orderBy.descending}]:[]],queues:t.queues,statuses:t.statuses,facets:{queue:{aggregate:!0,filter:t.facets.queue.filter},status:{aggregate:!0,filter:t.facets.status.filter}}}}),Y=[{field:"created_at",descending:!0},{field:"ran_at",descending:!0},{field:"priority",descending:!1}],ht={limit:20,page:1,orderBy:{field:"ran_at",descending:!0},facets:{queue:{},status:{}}},vt={key:"queue",extractInput:t=>t.queue,patchInput:(t,n)=>b(f({},t),{queue:n}),extractAggregations:t=>t.queue??[],resolveLabel:t=>t.label},yt={key:"status",extractInput:t=>t.status,patchInput:(t,n)=>b(f({},t),{status:n}),extractAggregations:t=>t.status??[],resolveLabel:(t,n)=>n.translate("dashboard.queues."+t.label)},Le=[vt,yt];var St=(t,n)=>n.key,Tt=(t,n)=>n.field,He=(t,n)=>n.value;function wt(t,n){if(t&1){let e=y();a(0,"mat-checkbox",20),x("change",function(o){let s=_(e).$implicit,C=l(2).$implicit,G=l(2);return g(o.checked?G.controller.activateFilter(C,s.value):G.controller.deactivateFilter(C,s.value))}),p(1),a(2,"small"),p(3),T(4,"number"),c()()}if(t&2){let e=n.$implicit,i=l(2).$implicit;d("checked",i.filter==null?null:i.filter.includes(e.value)),r(),m(" ",e.label," "),r(2),S(M(4,3,e.count))}}function Mt(t,n){if(t&1&&(a(0,"mat-card-content",17),$(1,wt,5,5,"mat-checkbox",19,He),c()),t&2){let e=l().$implicit;r(),Q(e.aggregations)}}function Jt(t,n){if(t&1){let e=y();a(0,"mat-checkbox",22),x("change",function(){let o=_(e).$implicit,s=l(2).$implicit,C=l(2);return g(C.controller.activateFilter(s,o.value))}),p(1),a(2,"small"),p(3),T(4,"number"),c()()}if(t&2){let e=n.$implicit;r(),m(" ",e.label," "),r(2),S(M(4,2,e.count))}}function It(t,n){if(t&1&&(a(0,"mat-card-content",18),$(1,Jt,5,4,"mat-checkbox",21,He),c()),t&2){let e=l().$implicit;r(),Q(e.aggregations)}}function Et(t,n){if(t&1&&(a(0,"mat-card")(1,"mat-card-header")(2,"mat-card-title"),p(3),c()(),u(4,Mt,3,0,"mat-card-content",17)(5,It,3,0,"mat-card-content",18),c()),t&2){let e=n.$implicit,i=l().$implicit;r(3),m(" ",i("facets."+e.key)," "),r(),E(e.filter!=null&&e.filter.length?4:5)}}function Pt(t,n){if(t&1&&(a(0,"mat-option",11),p(1),c()),t&2){let e=n.$implicit,i=l().$implicit;d("value",e.field),r(),m(" ",i("dashboard.queues."+e.field)," ")}}function $t(t,n){if(t&1){let e=y();h(0),a(1,"mat-drawer-container",2)(2,"mat-drawer",3,0),$(4,Et,6,2,"mat-card",null,St),T(6,"async"),c(),a(7,"mat-drawer-content")(8,"div",4)(9,"div",5)(10,"button",6),x("click",function(){_(e);let o=z(3);return g(o.toggle())}),a(11,"mat-icon",7),p(12),c()()(),a(13,"div",8)(14,"mat-form-field",9)(15,"mat-label"),p(16),c(),a(17,"mat-select",10),x("valueChange",function(o){_(e);let s=l();return g(s.controller.selectOrderBy(o))}),$(18,Pt,2,2,"mat-option",11,Tt),c()(),a(20,"button",12),x("click",function(){_(e);let o=l();return g(o.controller.toggleOrderByDirection())}),a(21,"mat-icon"),p(22),c()()(),a(23,"div",13)(24,"button",14),x("click",function(){_(e);let o=l();return g(o.dataSource.refresh())}),a(25,"mat-icon"),p(26,"sync"),c()()()(),I(27,"app-queue-jobs-table",15),a(28,"app-paginator",16),x("paging",function(o){_(e);let s=l();return g(s.controller.handlePageEvent(o))}),c()()(),v()}if(t&2){let e=n.$implicit,i=z(3),o=l();r(2),d("mode",o.breakpoints.sizeAtLeast("Medium")?"side":"over")("opened",o.breakpoints.sizeAtLeast("Medium")),O("role",o.breakpoints.sizeAtLeast("Medium")?"navigation":"dialog"),r(2),Q(M(6,18,o.facets$)),r(6),d("matTooltip",e("torrents.toggle_drawer")),r(2),S(i.opened?"arrow_circle_left":"arrow_circle_right"),r(4),S(e("torrents.order_by")),r(),d("value",o.controls.orderBy.field),r(),Q(o.orderByOptions),r(2),d("matTooltip",e("torrents.order_direction_toggle")),r(2),S(o.controls.orderBy.descending?"arrow_downward":"arrow_upward"),r(2),d("matTooltip",e("torrents.refresh")),r(3),d("dataSource",o.dataSource)("selection",o.selection),r(),d("page",o.controls.page)("pageSize",o.controls.limit)("pageLength",o.dataSource.result.items.length)("totalLength",o.dataSource.result.totalCount)("totalIsEstimate",!1)("showLastPage",!0)}}var hi=(()=>{class t{constructor(){this.apollo=J(ce),this.errorsService=J(me),this.breakpoints=J(Fe),this.transloco=J(B),this.controller=new L,this.dataSource=new R(this.apollo,this.errorsService,this.controller.variables$),this.selection=new le,this.orderByOptions=Y,this.facets$=this.controller.controls$.pipe(X(this.dataSource.result$),P(([e,i])=>Le.map(o=>b(f(f({},o),o.extractInput(e.facets)),{aggregations:o.extractAggregations(i.aggregations).map(s=>b(f({},s),{label:o.resolveLabel(s,this.transloco)}))})))),this.controller.controls$.subscribe(e=>{this.controls=e})}static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275cmp=k({type:t,selectors:[["app-queue-jobs"]],standalone:!0,features:[V],decls:1,vars:0,consts:[["drawer",""],[4,"transloco"],[1,"drawer-container"],[1,"drawer",3,"mode","opened"],[1,"query-form"],[1,"form-field-container","button-container","button-container-toggle-drawer"],["type","button","mat-icon-button","",1,"button-toggle-drawer",3,"click","matTooltip"],["fontSet","material-icons"],[1,"form-field-container","form-field-container-order-by"],["subscriptSizing","dynamic"],[3,"valueChange","value"],[3,"value"],["mat-icon-button","",3,"click","matTooltip"],[1,"form-field-container","button-container","button-container-refresh"],["mat-mini-fab","","color","primary",3,"click","matTooltip"],[3,"dataSource","selection"],[3,"paging","page","pageSize","pageLength","totalLength","totalIsEstimate","showLastPage"],[1,"filtered"],[1,"unfiltered"],[3,"checked"],[3,"change","checked"],["checked","true"],["checked","true",3,"change"]],template:function(i,o){i&1&&u(0,$t,29,20,"ng-container",1)},dependencies:[A,se,de,pe,fe,Ce,he,be,ve,xe,ge,ye,Te,Me,Je,we,j,F,D,q,Be,Ae],styles:[".drawer[_ngcontent-%COMP%]{width:220px}.query-form[_ngcontent-%COMP%]{padding-top:20px;padding-bottom:10px;position:relative;clear:both;display:flex;flex-wrap:wrap}.query-form[_ngcontent-%COMP%] .form-field-container[_ngcontent-%COMP%]{display:inline-flex;flex-direction:column;position:relative;margin-left:20px;padding-bottom:20px}.query-form[_ngcontent-%COMP%] .form-field-container[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{top:8px}.query-form[_ngcontent-%COMP%] .form-field-container.form-field-container-order-by[_ngcontent-%COMP%]{padding-right:40px}.query-form[_ngcontent-%COMP%] .form-field-container.form-field-container-order-by[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{position:absolute;right:0}.query-form[_ngcontent-%COMP%] .form-field-container.button-container-toggle-drawer[_ngcontent-%COMP%]{margin-left:5px}.query-form[_ngcontent-%COMP%] .button-container-toggle-direction[_ngcontent-%COMP%]{margin-left:4px}app-paginator[_ngcontent-%COMP%]{float:right;padding-top:14px;padding-bottom:20px}"]})}}return t})();export{hi as QueueJobsComponent}; diff --git a/webui/dist/bitmagnet/browser/chunk-W4X5IQAZ.js b/webui/dist/bitmagnet/browser/chunk-W4X5IQAZ.js new file mode 100644 index 0000000..65c2181 --- /dev/null +++ b/webui/dist/bitmagnet/browser/chunk-W4X5IQAZ.js @@ -0,0 +1 @@ +import{c as U,e as j,f as B}from"./chunk-ZVYX4MB3.js";import"./chunk-DKVITRV6.js";import"./chunk-KUHKEGBL.js";import"./chunk-3PIWRAOL.js";import"./chunk-M3BEO55A.js";import{E as b,J as O,P as S,Q as I,R as w,S as E,U as A,Ua as F,V as z,b as P,i as y,qa as D,va as q,ya as H}from"./chunk-4NEHCUZ2.js";import"./chunk-6XXA7HXI.js";import{j as k}from"./chunk-FKMTSCBK.js";import{$b as c,Cb as C,Hb as l,Mb as h,Qb as i,Rb as a,Sb as p,Tb as x,Ub as M,cc as T,hb as _,kb as o,kc as d,lc as g,pc as v,qa as f,ua as u}from"./chunk-3DR3CJRN.js";function G(t,s){t&1&&p(0,"mat-progress-bar",1)}function L(t,s){t&1&&(i(0,"p"),d(1,"Not found!"),a())}function N(t,s){if(t&1&&(i(0,"mat-card",2)(1,"mat-card-header")(2,"mat-icon",3),d(3),a(),i(4,"mat-card-title")(5,"h2"),d(6),a(),i(7,"a",4),p(8,"mat-icon",5),a()(),i(9,"mat-card-subtitle"),p(10,"app-torrent-chips",6),a()(),i(11,"mat-card-content"),p(12,"app-torrent-content",7),a()()),t&2){let n,e,m=c().$implicit,r=c();o(2),l("matTooltip",m("content_types.singular."+((n=r.torrentContent.contentType)!==null&&n!==void 0?n:"null"))),o(),g((e=(e=r.contentTypeInfo(r.torrentContent.contentType))==null?null:e.icon)!==null&&e!==void 0?e:"question_mark"),o(3),g(r.torrentContent.torrent.name),o(),T("href",r.torrentContent.torrent.magnetUri,_),o(3),l("torrentContent",r.torrentContent),o(2),l("torrentContent",r.torrentContent)("heading",!1)}}function Q(t,s){if(t&1&&(x(0),C(1,G,1,0,"mat-progress-bar",1)(2,L,2,0,"p")(3,N,13,7,"mat-card",2),M()),t&2){let n=c();o(),h(n.loading?1:n.found?3:2)}}var mt=(()=>{class t{constructor(){this.route=f(k),this.apollo=f(y),this.loading=!0,this.found=!1,this.contentTypeInfo=U}ngOnInit(){this.loading=!0,this.route.paramMap.subscribe(n=>{this.apollo.query({query:b,variables:{input:{infoHashes:[n.get("infoHash")]}},fetchPolicy:"no-cache"}).subscribe(e=>{let m=e.data.torrentContent.search.items;this.torrentContent=m[0],this.found=m.length>0,this.loading=!1})})}static{this.\u0275fac=function(e){return new(e||t)}}static{this.\u0275cmp=u({type:t,selectors:[["app-torrent-permalink"]],standalone:!0,features:[v],decls:1,vars:0,consts:[[4,"transloco"],["mode","indeterminate"],[1,"torrent-permalink"],["matCardAvatar","",3,"matTooltip"],[1,"magnet-link",3,"href"],["svgIcon","magnet"],[3,"torrentContent"],[3,"torrentContent","heading"]],template:function(e,m){e&1&&C(0,Q,4,1,"ng-container",0)},dependencies:[F,S,z,w,A,E,I,D,q,H,P,O,B,j],styles:[".torrent-permalink[_ngcontent-%COMP%]{max-width:900px;margin:20px auto}.torrent-permalink[_ngcontent-%COMP%] mat-card-title[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-size:24px;word-break:break-word;overflow-wrap:break-word;padding-right:80px}.torrent-permalink[_ngcontent-%COMP%] mat-card-title[_ngcontent-%COMP%] .magnet-link[_ngcontent-%COMP%]{position:absolute;right:20px;top:20px}.torrent-permalink[_ngcontent-%COMP%] .mat-mdc-card-avatar[_ngcontent-%COMP%]{font-size:44px;margin-top:-10px;border-radius:0;overflow:visible}.torrent-permalink[_ngcontent-%COMP%] mat-card-subtitle[_ngcontent-%COMP%]{margin:16px 0 14px -56px;font-size:6px}"]})}}return t})();export{mt as TorrentPermalinkComponent}; diff --git a/webui/dist/bitmagnet/browser/chunk-ZRBK6IMU.js b/webui/dist/bitmagnet/browser/chunk-ZRBK6IMU.js new file mode 100644 index 0000000..f207fb2 --- /dev/null +++ b/webui/dist/bitmagnet/browser/chunk-ZRBK6IMU.js @@ -0,0 +1 @@ +import{P as A,R as E,Ra as z,Sa as D,Ta as I,U as y,Ua as S,b as O,qa as L,xa as T}from"./chunk-4NEHCUZ2.js";import"./chunk-6XXA7HXI.js";import{i as C,j as M,k as x,l as _,m as k,n as P}from"./chunk-FKMTSCBK.js";import{Cb as h,Hb as c,Qb as r,Rb as e,Sb as l,Tb as b,Ub as g,jc as s,kb as i,kc as n,lc as m,o as u,pc as f,qa as d,ua as v}from"./chunk-3DR3CJRN.js";function q(a,R){if(a&1&&(b(0),r(1,"mat-card",6)(2,"mat-card-header")(3,"mat-toolbar")(4,"nav",7)(5,"h2"),l(6,"mat-icon",8),n(7),e(),r(8,"a",9,0)(10,"mat-icon"),n(11,"monitoring"),e(),n(12),e(),r(13,"a",10,1)(15,"mat-icon"),n(16,"toc"),e(),n(17),e(),r(18,"a",11,2)(20,"mat-icon"),n(21,"construction"),e(),n(22),e()(),l(23,"mat-tab-nav-panel",null,3),e()(),r(25,"mat-card-content"),l(26,"router-outlet",null,4),e()(),g()),a&2){let t=R.$implicit,o=s(9),p=s(14),w=s(19),V=s(24);i(4),c("tabPanel",V),i(3),m(t("routes.queues")),i(),c("active",o.isActive),i(4),m(t("routes.visualize")),i(),c("active",p.isActive),i(4),m(t("routes.jobs")),i(),c("active",w.isActive),i(4),m(t("routes.admin"))}}var W=(()=>{class a{constructor(){this.route=d(M),this.router=d(_),this.subscriptions=new Array}ngOnInit(){this.subscriptions.push(this.route.url.subscribe(()=>(this.route.firstChild||this.redirectVisualize(),u)),this.router.events.subscribe(t=>(t.type===C.NavigationEnd&&t.urlAfterRedirects==="/dashboard/queue"&&this.redirectVisualize(),u)))}redirectVisualize(){this.router.navigate(["visualize"],{relativeTo:this.route})}ngOnDestroy(){this.subscriptions.forEach(t=>t.unsubscribe()),this.subscriptions=new Array}static{this.\u0275fac=function(o){return new(o||a)}}static{this.\u0275cmp=v({type:a,selectors:[["app-queue-dashboard"]],standalone:!0,features:[f],decls:1,vars:0,consts:[["linkVisualize","routerLinkActive"],["linkJobs","routerLinkActive"],["linkAdmin","routerLinkActive"],["tabPanel",""],["outlet",""],[4,"transloco"],[1,"dashboard-card"],["mat-tab-nav-bar","","mat-stretch-tabs","false","mat-align-tabs","start",3,"tabPanel"],["svgIcon","queue"],["mat-tab-link","","routerLink","visualize","routerLinkActive","",3,"active"],["mat-tab-link","","routerLink","jobs","routerLinkActive","",3,"active"],["mat-tab-link","","routerLink","admin","routerLinkActive","",3,"active"]],template:function(o,p){o&1&&h(0,q,28,8,"ng-container",5)},dependencies:[S,A,E,y,L,z,I,D,T,x,k,P,O],styles:["mat-card-header[_ngcontent-%COMP%]{flex-wrap:wrap}mat-card-header[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{font-size:18px;margin:0 60px 0 48px;height:48px;line-height:48px}mat-card-header[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{position:relative;top:6px;margin-right:14px;line-height:1.25rem}mat-card-header[_ngcontent-%COMP%] nav[_ngcontent-%COMP%]{flex:0 0 100%}mat-card-header[_ngcontent-%COMP%] nav[_ngcontent-%COMP%] a[_ngcontent-%COMP%]{margin-top:2px}mat-card-header[_ngcontent-%COMP%] nav[_ngcontent-%COMP%] a[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{margin-right:12px}"]})}}return a})();export{W as QueueDashboardComponent}; diff --git a/webui/dist/bitmagnet/browser/chunk-ZVYX4MB3.js b/webui/dist/bitmagnet/browser/chunk-ZVYX4MB3.js new file mode 100644 index 0000000..d0edc68 --- /dev/null +++ b/webui/dist/bitmagnet/browser/chunk-ZVYX4MB3.js @@ -0,0 +1 @@ +import{a as ge,b as he}from"./chunk-DKVITRV6.js";import{a as Q}from"./chunk-3PIWRAOL.js";import{a as fe}from"./chunk-M3BEO55A.js";import{$ as Qt,Da as ie,Ea as oe,F as Nt,Fa as re,Ga as ae,Ha as le,I as Rt,Ia as se,Ja as ce,K as jt,Ka as pe,La as me,M as Lt,Ma as _e,N as Vt,Na as de,O as Ht,Oa as ue,P as Gt,Pa as Ce,Qa as xe,R as Yt,T as Kt,Ua as L,W as qt,X as Ut,Y as Xt,Z as Jt,_ as Zt,a as R,aa as Wt,b as j,d as Pt,e as At,f as Ft,g as Bt,i as Dt,ja as te,n as Ot,o as zt,qa as W,va as ee,ya as ne}from"./chunk-4NEHCUZ2.js";import{m as kt}from"./chunk-FKMTSCBK.js";import{$b as c,$c as Z,B as at,Cb as C,Ea as M,Fa as $,Hb as f,Mb as d,N as Y,Na as St,Nb as K,Ob as k,Pb as P,Q as bt,Qb as s,Rb as r,Sb as h,Tb as T,Ub as b,Wb as B,Zb as A,_c as Mt,a as X,b as Tt,ha as J,hb as Et,hd as $t,jc as st,kb as o,kc as l,l as S,lb as lt,lc as g,mc as m,nc as wt,o as G,pc as N,qa as y,rc as It,sc as yt,ua as z,uc as E,vc as w,xa as vt}from"./chunk-3DR3CJRN.js";var Te={movie:{singular:"Movie",plural:"Movies",icon:"movie"},tv_show:{singular:"TV Show",plural:"TV Shows",icon:"live_tv"},music:{singular:"Music",plural:"Music",icon:"music_note"},ebook:{singular:"E-Book",plural:"E-Books",icon:"auto_stories"},comic:{singular:"Comic",plural:"Comics",icon:"comic_bubble"},audiobook:{singular:"Audiobook",plural:"Audiobooks",icon:"mic"},software:{singular:"Software",plural:"Software",icon:"desktop_windows"},game:{singular:"Game",plural:"Games",icon:"sports_esports"},xxx:{singular:"XXX",plural:"XXX",icon:"18_up_rating"},null:{singular:"Unknown",plural:"Unknown",icon:"question_mark"}},pi=Object.entries(Te).map(([t,n])=>X({key:t},n)),mi=t=>t?Te[t]:void 0;var ze=(t,n)=>n.id;function Ne(t,n){if(t&1&&(s(0,"mat-chip",1)(1,"mat-icon",2),l(2,"sell"),r(),l(3),r()),t&2){let e=n.$implicit;o(3),m(" ",e," ")}}function Re(t,n){if(t&1&&l(0),t&2){let e=n.$implicit,i=n.$index,a=c(),p=c().$implicit;m(" ",p("languages."+e.id)+(i{class t{static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275cmp=z({type:t,selectors:[["app-torrent-chips"]],inputs:{torrentContent:"torrentContent"},standalone:!0,features:[N],decls:1,vars:0,consts:[[4,"transloco"],[1,"chip-primary"],["matChipAvatar",""],["matChipAvatar","","svgIcon","binary"]],template:function(i,a){i&1&&C(0,Ke,10,6,"ng-container",0)},dependencies:[L,Xt,qt,Zt,W,j],styles:["mat-chip-set[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{position:relative;left:4px}"]})}}return t})();var qe="array",Ue="bit",ve="bits",Xe="byte",Se="bytes",V="",Je="exponent",Ze="function",Ee="iec",Qe="Invalid number",We="Invalid rounding method",pt="jedec",tn="object",we=".",en="round",nn="s",on="si",rn="kbit",an="kB",ln=" ",sn="string",cn="0",mt={symbol:{iec:{bits:["bit","Kibit","Mibit","Gibit","Tibit","Pibit","Eibit","Zibit","Yibit"],bytes:["B","KiB","MiB","GiB","TiB","PiB","EiB","ZiB","YiB"]},jedec:{bits:["bit","Kbit","Mbit","Gbit","Tbit","Pbit","Ebit","Zbit","Ybit"],bytes:["B","KB","MB","GB","TB","PB","EB","ZB","YB"]}},fullform:{iec:["","kibi","mebi","gibi","tebi","pebi","exbi","zebi","yobi"],jedec:["","kilo","mega","giga","tera","peta","exa","zetta","yotta"]}};function Ie(t,{bits:n=!1,pad:e=!1,base:i=-1,round:a=2,locale:p=V,localeOptions:_={},separator:D=V,spacer:v=ln,symbols:ke={},standard:I=V,output:ot=sn,fullform:Pe=!1,fullforms:_t=[],exponent:dt=-1,roundingMethod:Ae=en,precision:q=0}={}){let x=dt,O=Number(t),u=[],F=0,rt=V;I===on?(i=10,I=pt):I===Ee||I===pt?i=2:i===2?I=Ee:(i=10,I=pt);let U=i===10?1e3:1024,Fe=Pe===!0,ut=O<0,Ct=Math[Ae];if(typeof t!="bigint"&&isNaN(t))throw new TypeError(Qe);if(typeof Ct!==Ze)throw new TypeError(We);if(ut&&(O=-O),(x===-1||isNaN(x))&&(x=Math.floor(Math.log(O)/Math.log(U)),x<0&&(x=0)),x>8&&(q>0&&(q+=8-x),x=8),ot===Je)return x;if(O===0)u[0]=0,rt=u[1]=mt.symbol[I][n?ve:Se][x];else{F=O/(i===2?Math.pow(2,x*10):Math.pow(1e3,x)),n&&(F=F*8,F>=U&&x<8&&(F=F/U,x++));let H=Math.pow(10,x>0?a:0);u[0]=Ct(F*H)/H,u[0]===U&&x<8&&dt===-1&&(u[0]=1,x++),rt=u[1]=i===10&&x===1?n?rn:an:mt.symbol[I][n?ve:Se][x]}if(ut&&(u[0]=-u[0]),q>0&&(u[0]=u[0].toPrecision(q)),u[1]=ke[u[1]]||u[1],p===!0?u[0]=u[0].toLocaleString():p.length>0?u[0]=u[0].toLocaleString(p,_):D.length>0&&(u[0]=u[0].toString().replace(we,D)),e&&a>0){let H=u[0].toString(),xt=D||(H.match(/(\D)/g)||[]).pop()||we,gt=H.toString().split(xt),ft=gt[1]||V,ht=ft.length,Be=a-ht;u[0]=`${gt[0]}${xt}${ft.padEnd(ht+Be,cn)}`}return Fe&&(u[1]=_t[x]?_t[x]:mt.fullform[I][x]+(n?Ue:Xe)+(u[0]===1?V:nn)),ot===qe?u:ot===tn?{value:u[0],symbol:u[1],exponent:x,unit:rt}:u.join(v)}var tt=(()=>{class t{constructor(){this.transloco=y(R)}transform(e){return Ie(e,{locale:this.transloco.getActiveLang(),base:2})}static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275pipe=vt({name:"filesize",type:t,pure:!1,standalone:!0})}}return t})();var pn=t=>t.toLowerCase().replaceAll(/[^a-z0-9\-]/g,"-").replace(/^-+/,"").replaceAll(/-+/g,"-"),ye=pn;var mn={items:[],hasNextPage:!1,totalCount:0,aggregations:{queue:[],status:[]}},et=class{constructor(n,e,i){this.apollo=n,this.errorsService=e,this.currentRequest=new S(0),this.loadingSubject=new S(!1),this.loading$=this.loadingSubject.asObservable(),this.result=mn,this.resultSubject=new S(this.result),this.result$=this.resultSubject.asObservable(),this.items$=this.resultSubject.pipe(at(a=>a.items)),i.subscribe(a=>{this.loadResult(a)}),this.resultSubject.subscribe(a=>{this.result=a})}connect({}){return this.items$}disconnect(){this.resultSubject.complete()}loadResult(n){this.currentSubscription&&(this.currentSubscription.unsubscribe(),this.currentSubscription=void 0),this.loadingSubject.next(!0);let e=this.currentRequest.getValue()+1;this.currentRequest.next(e);let i=this.apollo.query({query:Nt,variables:n,fetchPolicy:"no-cache"}).pipe(at(a=>a.data.torrent.files)).pipe(Y(a=>(this.errorsService.addError(`Error loading item results: ${a.message}`),G)));this.currentSubscription=i.subscribe(a=>{e===this.currentRequest.getValue()&&(this.loadingSubject.next(!1),this.resultSubject.next(a))})}},nt=class{constructor(n){this.torrent=n,this.loading$=new S(!1).asObservable(),this.file={infoHash:n.infoHash,index:0,path:n.name,size:n.size,fileType:n.fileType,extension:n.extension,createdAt:n.createdAt,updatedAt:n.updatedAt},this.result={hasNextPage:!1,items:[this.file],totalCount:1},this.result$=new S(this.result).asObservable(),this.items$=new S([this.file]).asObservable()}connect({}){return this.items$}disconnect(){}};var it=class{constructor(n){let e={infoHash:n,limit:10,page:1};this.controlsSubject=new S(e),this.controls$=this.controlsSubject.asObservable(),this.controls$.pipe(bt(100)).subscribe(i=>{let a=this.variablesSubject.getValue(),p=Me(i);JSON.stringify(a)!==JSON.stringify(p)&&this.variablesSubject.next(p)}),this.variablesSubject=new S(Me(e)),this.variables$=this.variablesSubject.asObservable()}update(n){let e=this.controlsSubject.getValue(),i=n(e);JSON.stringify(e)!==JSON.stringify(i)&&this.controlsSubject.next(i)}handlePageEvent(n){this.update(e=>Tt(X({},e),{limit:n.pageSize,page:n.page}))}},Me=t=>({input:{infoHashes:[t.infoHash],limit:t.limit,page:t.page,totalCount:!0,hasNextPage:!1}});var dn=(t,n)=>({x:t,y:n});function un(t,n){if(t&1&&(s(0,"p"),l(1),E(2,"number"),E(3,"number"),r()),t&2){let e=c().$implicit,i=c();o(),m(" ",e("torrents.showing_x_of_y_files",yt(5,dn,w(2,1,i.dataSource.result.totalCount),i.torrent.filesCount==null?"?":w(3,3,i.torrent.filesCount)))," ")}}function Cn(t,n){if(t&1&&(s(0,"th",13),l(1),r()),t&2){let e=c().$implicit;o(),g(e("torrents.file_index"))}}function xn(t,n){if(t&1&&(s(0,"td",14),l(1),r()),t&2){let e=n.$implicit,i=c(2);o(),m(" ",i.item(e).index," ")}}function gn(t,n){if(t&1&&(s(0,"th",13),l(1),r()),t&2){let e=c().$implicit;o(),g(e("torrents.file_path"))}}function fn(t,n){if(t&1&&(s(0,"td",14),l(1),r()),t&2){let e=n.$implicit,i=c(2);o(),m(" ",i.item(e).path," ")}}function hn(t,n){if(t&1&&(s(0,"th",13),l(1),r()),t&2){let e=c().$implicit;o(),g(e("torrents.file_type"))}}function Tn(t,n){if(t&1&&(s(0,"td",14),l(1),r()),t&2){let e,i=n.$implicit,a=c().$implicit,p=c();o(),m(" ",a("file_types."+((e=p.item(i).fileType)!==null&&e!==void 0?e:"unknown"))," ")}}function bn(t,n){if(t&1&&(s(0,"th",13),l(1),r()),t&2){let e=c().$implicit;o(),g(e("torrents.file_size"))}}function vn(t,n){if(t&1&&(s(0,"td",14),l(1),E(2,"filesize"),r()),t&2){let e=n.$implicit,i=c(2);o(),m(" ",w(2,1,i.item(e).size)," ")}}function Sn(t,n){t&1&&h(0,"tr",15)}function En(t,n){t&1&&h(0,"tr",16)}function wn(t,n){if(t&1){let e=B();s(0,"app-paginator",17),A("paging",function(a){M(e);let p=c(2);return $(p.controller.handlePageEvent(a))}),r()}if(t&2){let e=c(2);f("page",e.controls.page)("pageSize",e.controls.limit)("pageLength",e.dataSource.result.items.length)("totalLength",e.dataSource.result.totalCount)("totalIsEstimate",!1)("showLastPage",!0)}}function In(t,n){if(t&1&&(T(0),s(1,"div",1),h(2,"mat-progress-bar",2),E(3,"async"),r(),C(4,un,4,8,"p"),s(5,"table",3),T(6,4),C(7,Cn,2,1,"th",5)(8,xn,2,1,"td",6),b(),T(9,7),C(10,gn,2,1,"th",5)(11,fn,2,1,"td",6),b(),T(12,8),C(13,hn,2,1,"th",5)(14,Tn,2,1,"td",6),b(),T(15,9),C(16,bn,2,1,"th",5)(17,vn,3,3,"td",6),b(),C(18,Sn,1,0,"tr",10)(19,En,1,0,"tr",11),r(),C(20,wn,1,6,"app-paginator",12),b()),t&2){let e=c();o(2),f("mode",w(3,8,e.dataSource.loading$)?"indeterminate":"determinate")("value",0),o(2),d(e.torrent.filesStatus==="over_threshold"?4:-1),o(),f("dataSource",e.dataSource)("multiTemplateDataRows",!0),o(13),f("matHeaderRowDef",e.displayedColumns),o(),f("matRowDefColumns",e.displayedColumns),o(),d(e.dataSource.result.totalCount>10?20:-1)}}var $e=(()=>{class t{constructor(){this.apollo=y(Dt),this.errorsService=y(Q),this.transloco=y(R),this.displayedColumns=["index","path","type","size"]}ngOnInit(){this.controller=new it(this.torrent.infoHash),this.dataSource=this.torrent.filesStatus==="single"?new nt(this.torrent):new et(this.apollo,this.errorsService,this.controller.variables$),this.controller.controls$.subscribe(e=>{this.controls=e})}item(e){return e}static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275cmp=z({type:t,selectors:[["app-torrent-files-table"]],inputs:{torrent:"torrent"},standalone:!0,features:[N],decls:1,vars:0,consts:[[4,"transloco"],[1,"progress-bar-container"],[3,"mode","value"],["mat-table","",1,"table-results",3,"dataSource","multiTemplateDataRows"],["matColumnDef","index"],["mat-header-cell","",4,"matHeaderCellDef"],["mat-cell","",4,"matCellDef"],["matColumnDef","path"],["matColumnDef","type"],["matColumnDef","size"],["mat-header-row","",4,"matHeaderRowDef"],["mat-row","",4,"matRowDef","matRowDefColumns"],[3,"page","pageSize","pageLength","totalLength","totalIsEstimate","showLastPage"],["mat-header-cell",""],["mat-cell",""],["mat-header-row",""],["mat-row",""],[3,"paging","page","pageSize","pageLength","totalLength","totalIsEstimate","showLastPage"]],template:function(i,a){i&1&&C(0,In,21,10,"ng-container",0)},dependencies:[L,ee,ie,re,ce,ae,oe,pe,le,se,me,_e,j,Mt,Z,tt,ge]})}}return t})();var yn=(t,n)=>n.key,Mn=(t,n)=>n.id,$n=(t,n)=>n.metadataSource.key,kn=t=>({count:t});function Pn(t,n){if(t&1&&h(0,"img",3),t&2){let e=c().$implicit,i=c();f("ngSrc","https://image.tmdb.org/t/p/w300/"+n)("alt",e("torrents.poster"))("width",i.breakpoints.sizeAtLeast("Medium")?300:150)("height",i.breakpoints.sizeAtLeast("Medium")?450:225)}}function An(t,n){if(t&1&&(s(0,"h2")(1,"a",14),l(2),r()()),t&2){let e=c().$implicit,i=c();o(),f("routerLink","permalink/"+i.torrentContent.infoHash)("matTooltip",e("torrents.permalink")),o(),g(i.torrentContent.torrent.name)}}function Fn(t,n){if(t&1&&(s(0,"p",4)(1,"strong"),l(2),r(),l(3),E(4,"filesize"),r()),t&2){let e=c().$implicit,i=c();o(2),m("",e("torrents.size"),":"),o(),m(" ",w(4,2,i.torrentContent.torrent.size)," ")}}function Bn(t,n){if(t&1&&(s(0,"p",5)(1,"strong"),l(2),r(),l(3),E(4,"timeAgo"),r()),t&2){let e=c().$implicit,i=c();o(2),g(e("torrents.published")),o(),m(" ",w(4,2,i.torrentContent.publishedAt)," ")}}function Dn(t,n){if(t&1&&(s(0,"p",6)(1,"strong"),l(2),r(),l(3),r()),t&2){let e,i=c().$implicit,a=c();o(2),m("",i("torrents.s_l"),":"),o(),wt(" ",(e=a.torrentContent.seeders)!==null&&e!==void 0?e:"?"," / ",(e=a.torrentContent.leechers)!==null&&e!==void 0?e:"?"," ")}}function On(t,n){if(t&1&&(s(0,"span"),l(1),r()),t&2){let e=n.$implicit,i=n.$index;o(),g((i>0?", ":"")+e.name)}}function zn(t,n){if(t&1&&(s(0,"p")(1,"strong"),l(2),r(),l(3),r()),t&2){let e=c().$implicit,i=c();o(2),m("",e("torrents.title"),":"),o(),m(" ",i.torrentContent.content.title," ")}}function Nn(t,n){if(t&1&&l(0),t&2){let e=n.$implicit,i=n.$index,a=c(3);m(" ",(i>0?", ":"")+e.name+(e.id===(a.torrentContent.content==null||a.torrentContent.content.originalLanguage==null?null:a.torrentContent.content.originalLanguage.id)?" (original)":"")," ")}}function Rn(t,n){if(t&1&&(s(0,"p")(1,"strong"),l(2),r(),l(3,"\xA0 "),k(4,Nn,1,1,null,null,Mn),r()),t&2){let e=c().$implicit,i=c();o(2),m("",e("torrents.languages"),":"),o(2),P(i.torrentContent.languages)}}function jn(t,n){if(t&1&&(s(0,"p")(1,"strong"),l(2),r(),l(3),r()),t&2){let e,i=c().$implicit,a=c();o(2),m("",i("torrents.original_release_date"),":"),o(),m(" ",(e=a.torrentContent.content==null?null:a.torrentContent.content.releaseDate)!==null&&e!==void 0?e:a.torrentContent.content==null?null:a.torrentContent.content.releaseYear," ")}}function Ln(t,n){if(t&1&&(s(0,"p")(1,"strong"),l(2),r(),l(3),r()),t&2){let e=c().$implicit,i=c();o(2),m("",e("torrents.episodes"),":"),o(),m(" ",i.torrentContent.episodes.label," ")}}function Vn(t,n){if(t&1&&(s(0,"p"),l(1),r()),t&2){let e=c(2);o(),m(" ",e.torrentContent.content.overview," ")}}function Hn(t,n){if(t&1&&(T(0),s(1,"p")(2,"strong"),l(3),r(),l(4),r(),b()),t&2){let e=c().$implicit;o(3),m("",e("torrents.genres"),":"),o(),m(" ",n.join(", ")," ")}}function Gn(t,n){if(t&1&&(T(0),l(1),E(2,"number"),b()),t&2){let e=c(2).$implicit,i=c();o(),m("(",e("torrents.votes_count_n",It(3,kn,w(2,1,i.torrentContent.content==null?null:i.torrentContent.content.voteCount))),")")}}function Yn(t,n){if(t&1&&(s(0,"p")(1,"strong"),l(2),r(),l(3),C(4,Gn,3,5,"ng-container"),r()),t&2){let e=c().$implicit,i=c();o(2),m("",e("torrents.rating"),":"),o(),m(" ",i.torrentContent.content==null?null:i.torrentContent.content.voteAverage," / 10 "),o(),d((i.torrentContent.content==null?null:i.torrentContent.content.voteCount)!=null?4:-1)}}function Kn(t,n){if(t&1&&(l(0),s(1,"a",15),l(2),r()),t&2){let e=n.$implicit,i=n.$index;m(" ",i>0?", ":"",""),o(),f("href",e.url,Et),o(),g(e.metadataSource.name)}}function qn(t,n){if(t&1&&(s(0,"p")(1,"strong"),l(2),r(),l(3,"\xA0 "),k(4,Kn,3,3,"a",15,$n),r()),t&2){let e=c().$implicit;o(2),m("",e("torrents.external_links"),":"),o(2),P(n)}}function Un(t,n){if(t&1&&(s(0,"span",16),l(1),r()),t&2){let e=c(2).$implicit;o(),g(e("torrents.files"))}}function Xn(t,n){t&1&&(s(0,"span",17),l(1),E(2,"number"),r()),t&2&&(o(),m("(",w(2,1,n),")"))}function Jn(t,n){if(t&1&&(s(0,"mat-icon"),l(1,"file_present"),r(),C(2,Un,2,1,"span",16)(3,Xn,3,3,"span",17)),t&2){let e,i=c(2);o(2),d(i.breakpoints.sizeAtLeast("Medium")?2:-1),o(),d((e=i.filesCount())?3:-1,e)}}function Zn(t,n){if(t&1&&(s(0,"p"),l(1),r()),t&2){let e=c(2).$implicit;o(),g(e("torrents.files_no_info"))}}function Qn(t,n){if(t&1&&(s(0,"mat-card",18),C(1,Zn,2,1,"p"),h(2,"app-torrent-files-table",19),r()),t&2){let e=c(2);o(),d(e.torrentContent.torrent.filesStatus==="no_info"?1:-1),o(),f("torrent",e.torrentContent.torrent)}}function Wn(t,n){if(t&1&&(s(0,"span",16),l(1),r()),t&2){let e=c(2).$implicit;o(),g(e("torrents.edit_tags"))}}function ti(t,n){if(t&1&&(s(0,"mat-icon"),l(1,"sell"),r(),C(2,Wn,2,1,"span",16)),t&2){let e=c(2);o(2),d(e.breakpoints.sizeAtLeast("Medium")?2:-1)}}function ei(t,n){if(t&1){let e=B();s(0,"mat-chip-row",25),A("edited",function(a){let p=M(e).$implicit,_=c(3);return $(_.renameTag(p,a.value))})("removed",function(){let a=M(e).$implicit,p=c(3);return $(p.deleteTag(a))}),l(1),s(2,"mat-icon",26),l(3,"cancel"),r()()}if(t&2){let e=n.$implicit;f("editable",!0),o(),m(" ",e," ")}}function ni(t,n){if(t&1&&(s(0,"mat-option",24),l(1),r()),t&2){let e=n.$implicit;f("value",e),o(),g(e)}}function ii(t,n){if(t&1){let e=B();s(0,"mat-card")(1,"mat-form-field",20)(2,"mat-chip-grid",null,0),k(4,ei,4,2,"mat-chip-row",21,K),r(),s(6,"input",22),A("matChipInputTokenEnd",function(a){M(e);let p=c(2);return $(a.value&&p.addTag(a.value))}),r(),s(7,"mat-autocomplete",23,1),A("optionSelected",function(a){M(e);let p=c(2);return $(p.addTag(a.option.viewValue))}),k(9,ni,2,2,"mat-option",24,K),r()()()}if(t&2){let e=st(3),i=st(8),a=c().$implicit,p=c();o(4),P(p.torrentContent.torrent.tagNames),o(2),f("placeholder",a("torrents.new_tag"))("formControl",p.newTagCtrl)("matAutocomplete",i)("matChipInputFor",e)("matChipInputSeparatorKeyCodes",p.separatorKeysCodes)("value",p.newTagCtrl.value),o(3),P(p.suggestedTags)}}function oi(t,n){if(t&1&&(s(0,"span",16),l(1),r()),t&2){let e=c(2).$implicit;o(),g(e("torrents.delete"))}}function ri(t,n){if(t&1&&(s(0,"mat-icon"),l(1,"delete_forever"),r(),C(2,oi,2,1,"span",16)),t&2){let e=c(2);o(2),d(e.breakpoints.sizeAtLeast("Medium")?2:-1)}}function ai(t,n){if(t&1){let e=B();s(0,"mat-card")(1,"mat-card-content",27)(2,"p")(3,"strong"),l(4),r(),h(5,"br"),l(6),r()(),s(7,"mat-card-actions",28)(8,"button",29),A("click",function(){M(e);let a=c(2);return $(a.delete())}),s(9,"mat-icon"),l(10,"delete_forever"),r(),l(11),r()()()}if(t&2){let e=c().$implicit;o(4),g(e("torrents.delete_are_you_sure")),o(2),m("",e("torrents.delete_action_cannot_be_undone")," "),o(5),m("",e("torrents.delete")," ")}}function li(t,n){t&1&&(s(0,"mat-icon",30),l(1,"close"),r())}function si(t,n){t&1&&(s(0,"mat-tab"),C(1,li,2,0,"ng-template",12),r())}function ci(t,n){if(t&1){let e=B();T(0),C(1,Pn,1,4,"img",3)(2,An,3,3,"h2")(3,Fn,5,4,"p",4)(4,Bn,5,4,"p",5)(5,Dn,4,3,"p",6),s(6,"p",7)(7,"strong"),l(8),r(),s(9,"span",8),l(10),r()(),s(11,"p")(12,"strong"),l(13),r(),l(14,"\xA0 "),k(15,On,2,1,"span",null,yn),r(),C(17,zn,4,2,"p")(18,Rn,6,1,"p")(19,jn,4,2,"p")(20,Ln,4,2,"p")(21,Vn,2,1,"p")(22,Hn,5,2,"ng-container")(23,Yn,5,3,"p")(24,qn,6,1,"p"),h(25,"mat-divider",9),s(26,"mat-tab-group",10),A("focusChange",function(a){M(e);let p=c();return $(p.selectTab(a.index==4?0:a.index))}),h(27,"mat-tab",11),s(28,"mat-tab"),C(29,Jn,4,2,"ng-template",12)(30,Qn,3,2,"ng-template",13),r(),s(31,"mat-tab"),C(32,ti,3,1,"ng-template",12)(33,ii,11,6,"ng-template",13),r(),s(34,"mat-tab"),C(35,ri,3,1,"ng-template",12)(36,ai,12,3,"ng-template",13),r(),C(37,si,2,0,"mat-tab"),r(),b()}if(t&2){let e,i,a,p=n.$implicit,_=c();o(),d((e=_.getAttribute("poster_path","tmdb"))?1:-1,e),o(),d(_.heading?2:-1),o(),d(_.size?3:-1),o(),d(_.published?4:-1),o(),d(_.peers?5:-1),o(3),m("",p("torrents.info_hash"),":"),o(),f("matTooltip",p("torrents.copy_to_clipboard"))("cdkCopyToClipboard",_.torrentContent.infoHash),o(),g(_.torrentContent.infoHash),o(3),m("",p("torrents.source"),":"),o(2),P(_.torrentContent.torrent.sources),o(2),d(_.torrentContent.content?17:-1),o(),d(_.torrentContent.languages!=null&&_.torrentContent.languages.length?18:-1),o(),d(_.torrentContent.content!=null&&_.torrentContent.content.releaseYear?19:-1),o(),d(_.torrentContent.episodes?20:-1),o(),d(_.torrentContent.content!=null&&_.torrentContent.content.overview?21:-1),o(),d((i=_.getCollections("genre"))?22:-1,i),o(),d((_.torrentContent.content==null?null:_.torrentContent.content.voteAverage)!=null?23:-1),o(),d((a=_.torrentContent.content==null?null:_.torrentContent.content.externalLinks)?24:-1,a),o(2),f("selectedIndex",_.selectedTabIndex)("mat-stretch-tabs",!1),o(11),d(_.selectedTabIndex>0?37:-1)}}var So=(()=>{class t{constructor(e,i){this.graphQLService=e,this.errorsService=i,this.breakpoints=y(fe),this.heading=!0,this.size=!0,this.peers=!0,this.published=!0,this.updated=new St,this.newTagCtrl=new Ft(""),this.editedTags=Array(),this.suggestedTags=Array(),this.selectedTabIndex=0,this.separatorKeysCodes=[13,188],this.transloco=y(R),this.newTagCtrl.valueChanges.subscribe(a=>(a&&(a=ye(a),this.newTagCtrl.setValue(a,{emitEvent:!1})),e.torrentSuggestTags({input:{prefix:a,exclusions:this.torrentContent.torrent.tagNames}}).pipe(J(p=>{this.suggestedTags.splice(0,this.suggestedTags.length,...p.suggestions.map(_=>_.name))})).subscribe()))}selectTab(e){this.selectedTabIndex=e}addTag(e){this.editTags(i=>[...i,e]),this.saveTags()}renameTag(e,i){this.editTags(a=>a.map(p=>p===e?i:p)),this.saveTags()}deleteTag(e){this.editTags(i=>i.filter(a=>a!==e)),this.saveTags()}editTags(e){this.editedTags=e(this.editedTags),this.newTagCtrl.reset()}saveTags(){this.graphQLService.torrentSetTags({infoHashes:[this.torrentContent.infoHash],tagNames:this.editedTags}).pipe(Y(e=>(this.errorsService.addError(`Error saving tags: ${e.message}`),G))).pipe(J(()=>{this.editedTags=[],this.updated.emit(null)})).subscribe()}delete(){this.graphQLService.torrentDelete({infoHashes:[this.torrentContent.infoHash]}).pipe(Y(e=>(this.errorsService.addError(`Error deleting torrent: ${e.message}`),G))).pipe(J(()=>{this.updated.emit(null)})).subscribe()}getAttribute(e,i){return this.torrentContent.content?.attributes?.find(a=>a.key===e&&(i===void 0||a.source===i))?.value}getCollections(e){let i=this.torrentContent.content?.collections?.filter(a=>a.type===e).map(a=>a.name);return i?.length?i.sort():void 0}filesCount(){return this.torrentContent.torrent.filesStatus==="single"?1:this.torrentContent.torrent.filesCount??void 0}static{this.\u0275fac=function(i){return new(i||t)(lt(Rt),lt(Q))}}static{this.\u0275cmp=z({type:t,selectors:[["app-torrent-content"]],inputs:{torrentContent:"torrentContent",heading:"heading",size:"size",peers:"peers",published:"published"},outputs:{updated:"updated"},standalone:!0,features:[N],decls:1,vars:0,consts:[["chipGrid",""],["auto","matAutocomplete"],[4,"transloco"],[1,"poster",3,"ngSrc","alt","width","height"],[1,"size"],[1,"published"],[1,"peers"],[1,"info-hash"],[3,"matTooltip","cdkCopyToClipboard"],[2,"clear","both"],["animationDuration","0",3,"focusChange","selectedIndex","mat-stretch-tabs"],["aria-labelledby","hidden"],["mat-tab-label",""],["matTabContent",""],[3,"routerLink","matTooltip"],["target","_blank",3,"href"],[1,"label"],[1,"files-count"],[1,"torrent-files"],[3,"torrent"],["subscriptSizing","dynamic",1,"form-edit-tags"],[3,"editable"],["autocapitalize","none",3,"matChipInputTokenEnd","placeholder","formControl","matAutocomplete","matChipInputFor","matChipInputSeparatorKeyCodes","value"],[3,"optionSelected"],[3,"value"],[3,"edited","removed","editable"],["matChipRemove",""],[2,"margin-top","10px"],[1,"button-row"],["mat-stroked-button","","color","warn",3,"click"],[2,"margin-right","0"]],template:function(i,a){i&1&&C(0,ci,38,21,"ng-container",2)},dependencies:[L,jt,Vt,Ot,Ht,zt,Gt,Kt,Yt,Qt,Wt,Ut,Jt,te,Lt,W,de,ue,Ce,xe,ne,Pt,At,Bt,kt,j,Z,tt,$t,he,$e],styles:["h2[_ngcontent-%COMP%]{margin-top:10px;max-width:900px;white-space:pre-wrap;word-break:break-all;overflow-wrap:break-word}.poster[_ngcontent-%COMP%]{float:right;margin:10px;border:1px solid currentColor}.info-hash[_ngcontent-%COMP%]{white-space:pre-wrap;word-break:break-all;overflow-wrap:break-word}.info-hash[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{padding-left:5px;cursor:crosshair;text-decoration:underline;text-decoration-style:dotted}.torrent-files[_ngcontent-%COMP%]{padding-top:10px;max-height:800px;overflow:scroll}.torrent-files[_ngcontent-%COMP%] table[_ngcontent-%COMP%]{margin-bottom:10px;width:800px}.torrent-files[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{padding-right:20px;border-bottom:1px solid rgba(0,0,0,.12)}.torrent-files[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:hover td[_ngcontent-%COMP%]{background-color:#f5f5f5}.form-edit-tags[_ngcontent-%COMP%] .mat-mdc-form-field-subscript-wrapper{display:none}.files-count[_ngcontent-%COMP%]{margin-left:4px}.mat-mdc-card-content[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{margin-top:0} .mdc-tab[aria-labelledby=hidden]{display:none} .mdc-tab[role=tab]{padding-left:15px;padding-right:15px} .mdc-tab .label, .mdc-tab .files-count{margin-left:8px}"]})}}return t})();export{Te as a,pi as b,mi as c,tt as d,Ci as e,So as f}; diff --git a/webui/dist/bitmagnet/browser/external-link.svg b/webui/dist/bitmagnet/browser/external-link.svg new file mode 100644 index 0000000..1a7bca2 --- /dev/null +++ b/webui/dist/bitmagnet/browser/external-link.svg @@ -0,0 +1,11 @@ + + + diff --git a/webui/dist/bitmagnet/favicon.png b/webui/dist/bitmagnet/browser/favicon.png similarity index 100% rename from webui/dist/bitmagnet/favicon.png rename to webui/dist/bitmagnet/browser/favicon.png diff --git a/webui/dist/bitmagnet/browser/index.html b/webui/dist/bitmagnet/browser/index.html new file mode 100644 index 0000000..d0733c8 --- /dev/null +++ b/webui/dist/bitmagnet/browser/index.html @@ -0,0 +1,13 @@ + + + + + bitmagnet + + + + + + + + diff --git a/webui/dist/bitmagnet/assets/magnet.svg b/webui/dist/bitmagnet/browser/magnet.svg similarity index 67% rename from webui/dist/bitmagnet/assets/magnet.svg rename to webui/dist/bitmagnet/browser/magnet.svg index f3eed8a..4ae3e61 100644 --- a/webui/dist/bitmagnet/assets/magnet.svg +++ b/webui/dist/bitmagnet/browser/magnet.svg @@ -1,4 +1,4 @@ - + diff --git a/webui/dist/bitmagnet/browser/main-7SDDIE6J.js b/webui/dist/bitmagnet/browser/main-7SDDIE6J.js new file mode 100644 index 0000000..38f2f12 --- /dev/null +++ b/webui/dist/bitmagnet/browser/main-7SDDIE6J.js @@ -0,0 +1 @@ +import{a as ze,b as Ae,d as Xe,e as Ue}from"./chunk-AV47NZN7.js";import{a as Oe}from"./chunk-M3BEO55A.js";import{a as Ge,c as Ne,d as Ke}from"./chunk-7OATZ42U.js";import{H as je,J as Ie,Ua as I,a as Ce,b as E,c as Me,i as Pe,p as qe,pa as Le,qa as Fe,r as De,s as Ee,sa as Be,ta as Re,ua as He,xa as Ve,ya as j}from"./chunk-4NEHCUZ2.js";import"./chunk-6XXA7HXI.js";import{c as X,d as pe,e as ge,f as fe,g as be,h as ye,k as ve,l as ke,m as xe,n as we,o as Te,p as Se}from"./chunk-FKMTSCBK.js";import{$b as _,B as ee,Cb as x,Ea as R,Ec as he,Fa as H,Hb as h,Kb as v,Mb as O,Nb as ce,Oa as re,Ob as S,Pb as C,Qb as s,Rb as n,Rc as D,Sb as d,Tb as w,Ub as T,Wa as ne,Wb as G,Zb as N,ac as de,bc as _e,d as Z,ec as M,fc as z,gc as A,ia as te,jc as k,ka as p,kb as i,kc as c,l as $,lb as V,lc as f,mb as se,mc as K,na as P,ob as ie,pa as ae,pc as b,qa as u,qb as le,qc as q,rc as me,tb as ue,ua as g,ya as oe}from"./chunk-3DR3CJRN.js";var xt="@",wt=(()=>{class t{constructor(e,a,r,l,m){this.doc=e,this.delegate=a,this.zone=r,this.animationType=l,this.moduleImpl=m,this._rendererFactoryPromise=null,this.scheduler=u(ie,{optional:!0}),this.loadingSchedulerFn=u(Tt,{optional:!0})}ngOnDestroy(){this._engine?.flush()}loadImpl(){let e=()=>this.moduleImpl??import("./chunk-E4ZH23H3.js").then(r=>r),a;return this.loadingSchedulerFn?a=this.loadingSchedulerFn(e):a=e(),a.catch(r=>{throw new te(5300,!1)}).then(({\u0275createEngine:r,\u0275AnimationRendererFactory:l})=>{this._engine=r(this.animationType,this.doc);let m=new l(this.delegate,this._engine,this.zone);return this.delegate=m,m})}createRenderer(e,a){let r=this.delegate.createRenderer(e,a);if(r.\u0275type===0)return r;typeof r.throwOnSyntheticProps=="boolean"&&(r.throwOnSyntheticProps=!1);let l=new U(r);return a?.data?.animation&&!this._rendererFactoryPromise&&(this._rendererFactoryPromise=this.loadImpl()),this._rendererFactoryPromise?.then(m=>{let kt=m.createRenderer(e,a);l.use(kt),this.scheduler?.notify(10)}).catch(m=>{l.use(r)}),l}begin(){this.delegate.begin?.()}end(){this.delegate.end?.()}whenRenderingDone(){return this.delegate.whenRenderingDone?.()??Promise.resolve()}static{this.\u0275fac=function(a){se()}}static{this.\u0275prov=p({token:t,factory:t.\u0275fac})}}return t})(),U=class{constructor(o){this.delegate=o,this.replay=[],this.\u0275type=1}use(o){if(this.delegate=o,this.replay!==null){for(let e of this.replay)e(o);this.replay=null}}get data(){return this.delegate.data}destroy(){this.replay=null,this.delegate.destroy()}createElement(o,e){return this.delegate.createElement(o,e)}createComment(o){return this.delegate.createComment(o)}createText(o){return this.delegate.createText(o)}get destroyNode(){return this.delegate.destroyNode}appendChild(o,e){this.delegate.appendChild(o,e)}insertBefore(o,e,a,r){this.delegate.insertBefore(o,e,a,r)}removeChild(o,e,a){this.delegate.removeChild(o,e,a)}selectRootElement(o,e){return this.delegate.selectRootElement(o,e)}parentNode(o){return this.delegate.parentNode(o)}nextSibling(o){return this.delegate.nextSibling(o)}setAttribute(o,e,a,r){this.delegate.setAttribute(o,e,a,r)}removeAttribute(o,e,a){this.delegate.removeAttribute(o,e,a)}addClass(o,e){this.delegate.addClass(o,e)}removeClass(o,e){this.delegate.removeClass(o,e)}setStyle(o,e,a,r){this.delegate.setStyle(o,e,a,r)}removeStyle(o,e,a){this.delegate.removeStyle(o,e,a)}setProperty(o,e,a){this.shouldReplay(e)&&this.replay.push(r=>r.setProperty(o,e,a)),this.delegate.setProperty(o,e,a)}setValue(o,e){this.delegate.setValue(o,e)}listen(o,e,a){return this.shouldReplay(e)&&this.replay.push(r=>r.listen(o,e,a)),this.delegate.listen(o,e,a)}shouldReplay(o){return this.replay!==null&&o.startsWith(xt)}},Tt=new P("");function We(t="animations"){return ue("NgAsyncAnimations"),oe([{provide:le,useFactory:(o,e,a)=>new wt(o,e,a,t),deps:[D,ge,re]},{provide:ne,useValue:t==="noop"?"NoopAnimations":"BrowserAnimations"}])}var Qe=[{path:"",pathMatch:"full",redirectTo:"torrents"},{path:"torrents",loadComponent:()=>import("./chunk-OMQU4L7V.js").then(t=>t.TorrentsComponent),children:[{path:"",loadComponent:()=>import("./chunk-O2AXX42O.js").then(t=>t.TorrentsSearchComponent)},{path:"permalink/:infoHash",loadComponent:()=>import("./chunk-W4X5IQAZ.js").then(t=>t.TorrentPermalinkComponent)}]},{path:"dashboard",loadComponent:()=>import("./chunk-5PLW2W3L.js").then(t=>t.DashboardComponent),children:[{path:"",loadComponent:()=>import("./chunk-ML52OCX4.js").then(t=>t.DashboardHomeComponent)},{path:"queues",loadComponent:()=>import("./chunk-ZRBK6IMU.js").then(t=>t.QueueDashboardComponent),children:[{path:"visualize",loadComponent:()=>import("./chunk-RHLI3WJ3.js").then(t=>t.QueueVisualizeComponent)},{path:"jobs",loadComponent:()=>import("./chunk-V3XZ7MUW.js").then(t=>t.QueueJobsComponent)},{path:"admin",loadComponent:()=>import("./chunk-IMLYIOTE.js").then(t=>t.QueueAdminComponent)}]},{path:"torrents",loadComponent:()=>import("./chunk-7Y5J4R45.js").then(t=>t.TorrentsDashboardComponent)}]}];var Ye={content_types:{plural:{all:"\u0627\u0644\u0643\u0644",audiobook:"\u0627\u0644\u0643\u062A\u0628 \u0627\u0644\u0635\u0648\u062A\u064A\u0629",comic:"\u0627\u0644\u0642\u0635\u0635 \u0627\u0644\u0645\u0635\u0648\u0631\u0629",ebook:"\u0627\u0644\u0643\u062A\u0628 \u0627\u0644\u0625\u0644\u0643\u062A\u0631\u0648\u0646\u064A\u0629",movie:"\u0627\u0644\u0623\u0641\u0644\u0627\u0645",music:"\u0627\u0644\u0645\u0648\u0633\u064A\u0642\u0649",null:"\u063A\u064A\u0631 \u0645\u0639\u0631\u0648\u0641",software:"\u0627\u0644\u0628\u0631\u0645\u062C\u064A\u0627\u062A",tv_show:"\u0628\u0631\u0627\u0645\u062C \u0627\u0644\u062A\u0644\u0641\u0627\u0632",xxx:"\u0627\u0644\u0625\u0628\u0627\u062D\u064A\u0629"},singular:{audiobook:"\u0643\u062A\u0627\u0628 \u0635\u0648\u062A\u064A",comic:"\u0642\u0635\u0629 \u0645\u0635\u0648\u0631\u0629",ebook:"\u0643\u062A\u0627\u0628 \u0625\u0644\u0643\u062A\u0631\u0648\u0646\u064A",movie:"\u0641\u064A\u0644\u0645",music:"\u0645\u0648\u0633\u064A\u0642\u0649",null:"\u063A\u064A\u0631 \u0645\u0639\u0631\u0648\u0641",software:"\u0628\u0631\u0645\u062C\u064A\u0627\u062A",tv_show:"\u0628\u0631\u0646\u0627\u0645\u062C \u062A\u0644\u0641\u0632\u064A\u0648\u0646\u064A",xxx:"\u0627\u0644\u0625\u0628\u0627\u062D\u064A\u0629"}},dashboard:{event:{created:"\u062A\u0645 \u0627\u0644\u0625\u0646\u0634\u0627\u0621",failed:"\u0641\u0634\u0644",processed:"\u062A\u0645\u062A \u0627\u0644\u0645\u0639\u0627\u0644\u062C\u0629",updated:"\u062A\u0645 \u0627\u0644\u062A\u062D\u062F\u064A\u062B"},interval:{all:"\u0627\u0644\u0643\u0644",days:"\u064A\u0648\u0645",days_1:"\u064A\u0648\u0645 \u0648\u0627\u062D\u062F",hours:"\u0633\u0627\u0639\u0629",hours_1:"\u0633\u0627\u0639\u0629 \u0648\u0627\u062D\u062F\u0629",hours_12:"12 \u0633\u0627\u0639\u0629",hours_6:"6 \u0633\u0627\u0639\u0629",minutes:"\u062F\u0642\u064A\u0642\u0629",minutes_1:"1 \u062F\u0642\u064A\u0642\u0629",minutes_15:"15 \u062F\u0642\u0627\u0626\u0642",minutes_30:"30 \u062F\u0642\u0627\u0626\u0642",minutes_5:"5 \u062F\u0642\u0627\u0626\u0642",off:"\u0625\u064A\u0642\u0627\u0641",seconds_10:"10 \u062B\u0648\u0627\u0646\u064A",seconds_30:"30 \u062B\u0627\u0646\u064A\u0629",weeks_1:"1 \u0623\u0633\u0628\u0648\u0639"},metrics:{event:"\u062D\u062F\u062B",resolution:"\u0627\u0644\u062F\u0642\u0629",throughput:"\u0645\u0639\u062F\u0644 \u0627\u0644\u0646\u0642\u0644",timeframe:"\u0627\u0644\u0625\u0637\u0627\u0631 \u0627\u0644\u0632\u0645\u0646\u064A"},queues:{created:"\u062A\u0645 \u0627\u0644\u0625\u0646\u0634\u0627\u0621",created_at:"\u062A\u0645 \u0627\u0644\u0625\u0646\u0634\u0627\u0621 \u0641\u064A",enqueue_jobs:"\u0625\u062F\u0631\u0627\u062C \u0627\u0644\u0648\u0638\u0627\u0626\u0641 \u0641\u064A \u0627\u0644\u0637\u0627\u0628\u0648\u0631",enqueue_torrent_processing_batch:"\u0625\u062F\u0631\u0627\u062C \u062F\u0641\u0639\u0629 \u0645\u0639\u0627\u0644\u062C\u0629 \u0627\u0644\u062A\u0648\u0631\u0646\u062A \u0641\u064A \u0627\u0644\u0637\u0627\u0628\u0648\u0631",failed:"\u0641\u0634\u0644",force_rematch:"\u0641\u0631\u0636 \u0625\u0639\u0627\u062F\u0629 \u0627\u0644\u0645\u0637\u0627\u0628\u0642\u0629 \u0644\u0644\u0645\u062D\u062A\u0648\u0649 \u0627\u0644\u0645\u0637\u0627\u0628\u0642 \u0628\u0627\u0644\u0641\u0639\u0644",jobs_enqueued:"\u0627\u0644\u0648\u0638\u0627\u0626\u0641 \u0627\u0644\u0645\u062F\u0631\u062C\u0629 \u0641\u064A \u0627\u0644\u0637\u0627\u0628\u0648\u0631",latency:"\u0627\u0644\u062A\u0623\u062E\u064A\u0631",match_content_by_external_api_search:"\u0645\u0637\u0627\u0628\u0642\u0629 \u0627\u0644\u0645\u062D\u062A\u0648\u0649 \u0645\u0646 \u062E\u0644\u0627\u0644 \u0627\u0644\u0628\u062D\u062B \u0641\u064A API \u0627\u0644\u062E\u0627\u0631\u062C\u064A\u0629",match_content_by_local_search:"\u0645\u0637\u0627\u0628\u0642\u0629 \u0627\u0644\u0645\u062D\u062A\u0648\u0649 \u0645\u0646 \u062E\u0644\u0627\u0644 \u0627\u0644\u0628\u062D\u062B \u0627\u0644\u0645\u062D\u0644\u064A",payload:"\u0627\u0644\u062D\u0645\u0648\u0644\u0629",pending:"\u0642\u064A\u062F \u0627\u0644\u0627\u0646\u062A\u0638\u0627\u0631",priority:"\u0627\u0644\u0623\u0648\u0644\u0648\u064A\u0629",process_orphaned_torrents_only:"\u0645\u0639\u0627\u0644\u062C\u0629 \u0627\u0644\u062A\u0648\u0631\u0646\u062A \u0627\u0644\u064A\u062A\u064A\u0645 \u0641\u0642\u0637",processed:"\u062A\u0645\u062A \u0627\u0644\u0645\u0639\u0627\u0644\u062C\u0629",purge_jobs:"\u062A\u0646\u0638\u064A\u0641 \u0627\u0644\u0648\u0638\u0627\u0626\u0641",purge_queue_jobs:"\u062A\u0646\u0638\u064A\u0641 \u0648\u0638\u0627\u0626\u0641 \u0627\u0644\u0637\u0627\u0628\u0648\u0631",queue:"\u0627\u0644\u0637\u0627\u0628\u0648\u0631",queue_purged:"\u062A\u0645 \u062A\u0646\u0638\u064A\u0641 \u0627\u0644\u0637\u0627\u0628\u0648\u0631",queues:"\u0627\u0644\u0637\u0648\u0627\u0628\u064A\u0631",ran_at:"\u062A\u0645 \u0627\u0644\u062A\u0634\u063A\u064A\u0644 \u0641\u064A",retry:"\u0625\u0639\u0627\u062F\u0629 \u0627\u0644\u0645\u062D\u0627\u0648\u0644\u0629",total_counts_by_status:"\u0625\u062C\u0645\u0627\u0644\u064A \u0627\u0644\u0639\u062F \u062D\u0633\u0628 \u0627\u0644\u062D\u0627\u0644\u0629"}},facets:{content_type:"\u0646\u0648\u0639 \u0627\u0644\u0645\u062D\u062A\u0648\u0649",file_type:"\u0646\u0648\u0639 \u0627\u0644\u0645\u0644\u0641",genre:"\u0627\u0644\u0646\u0648\u0639",language:"\u0627\u0644\u0644\u063A\u0629",queue:"\u0627\u0644\u0637\u0627\u0628\u0648\u0631",status:"\u0627\u0644\u062D\u0627\u0644\u0629",torrent_source:"\u0645\u0635\u062F\u0631 \u0627\u0644\u062A\u0648\u0631\u0646\u062A",torrent_tag:"\u0639\u0644\u0627\u0645\u0629 \u0627\u0644\u062A\u0648\u0631\u0646\u062A",video_resolution:"\u062F\u0642\u0629 \u0627\u0644\u0641\u064A\u062F\u064A\u0648",video_source:"\u0645\u0635\u062F\u0631 \u0627\u0644\u0641\u064A\u062F\u064A\u0648"},file_types:{archive:"\u0623\u0631\u0634\u064A\u0641",audio:"\u0635\u0648\u062A",data:"\u0628\u064A\u0627\u0646\u0627\u062A",document:"\u0648\u062B\u064A\u0642\u0629",image:"\u0635\u0648\u0631\u0629",software:"\u0628\u0631\u0645\u062C\u064A\u0627\u062A",subtitles:"\u062A\u0631\u062C\u0645\u0627\u062A",unknown:"\u063A\u064A\u0631 \u0645\u0639\u0631\u0648\u0641",video:"\u0641\u064A\u062F\u064A\u0648"},general:{all:"\u0627\u0644\u0643\u0644",dismiss:"\u0631\u0641\u0636",error:"\u062E\u0637\u0623",none:"\u0644\u0627 \u0634\u064A\u0621",refresh:"\u062A\u062D\u062F\u064A\u062B",status:"\u0627\u0644\u062D\u0627\u0644\u0629"},health:{bitmagnet_is_status:"bitmagnet \u0647\u0648 {{status}}",check_failed_with_error:"\u0641\u0634\u0644 \u0627\u0644\u062A\u062D\u0642\u0642 \u0645\u0639 \u062E\u0637\u0623",component:"\u0645\u0643\u0648\u0646",components:{dht:"DHT",postgres:"Postgres",tmdb:"TMDB"},dismiss:"\u0631\u0641\u0636",error:"\u062E\u0637\u0623",status:"\u0627\u0644\u062D\u0627\u0644\u0629",statuses:{degraded:"\u0645\u062A\u062F\u0647\u0648\u0631",down:"\u0645\u0639\u0637\u0644",error:"\u062E\u0637\u0623",inactive:"\u063A\u064A\u0631 \u0646\u0634\u0637",started:"\u0628\u062F\u0623",unknown:"\u0645\u0639\u0644\u0642",up:"\u0646\u0634\u0637"},summary:"\u0645\u0644\u062E\u0635 \u0627\u0644\u0635\u062D\u0629",worker:"\u0639\u0627\u0645\u0644",workers:{dht_crawler:"\u0632\u0627\u062D\u0641 DHT",http_server:"\u062E\u0627\u062F\u0645 HTTP",queue_server:"\u062E\u0627\u062F\u0645 \u0627\u0644\u0637\u0627\u0628\u0648\u0631"}},languages:{af:"\u0627\u0644\u0623\u0641\u0631\u064A\u0643\u0627\u0646\u064A\u0629",ar:"\u0627\u0644\u0639\u0631\u0628\u064A\u0629",az:"\u0627\u0644\u0623\u0630\u0631\u0628\u064A\u062C\u0627\u0646\u064A\u0629",be:"\u0627\u0644\u0628\u064A\u0644\u0627\u0631\u0648\u0633\u064A\u0629",bg:"\u0627\u0644\u0628\u0644\u063A\u0627\u0631\u064A\u0629",bs:"\u0627\u0644\u0628\u0648\u0633\u0646\u064A\u0629",ca:"\u0627\u0644\u0643\u0627\u062A\u0627\u0644\u0627\u0646\u064A\u0629",ce:"\u0627\u0644\u0634\u064A\u0634\u0627\u0646\u064A\u0629",co:"\u0627\u0644\u0643\u0648\u0631\u0633\u064A\u0643\u064A\u0629",cs:"\u0627\u0644\u062A\u0634\u064A\u0643\u064A\u0629",cy:"\u0627\u0644\u0648\u064A\u0644\u0632\u064A\u0629",da:"\u0627\u0644\u062F\u0627\u0646\u0645\u0627\u0631\u0643\u064A\u0629",de:"\u0627\u0644\u0623\u0644\u0645\u0627\u0646\u064A\u0629",el:"\u0627\u0644\u064A\u0648\u0646\u0627\u0646\u064A\u0629",en:"\u0627\u0644\u0625\u0646\u062C\u0644\u064A\u0632\u064A\u0629",es:"\u0627\u0644\u0625\u0633\u0628\u0627\u0646\u064A\u0629",et:"\u0627\u0644\u0625\u0633\u062A\u0648\u0646\u064A\u0629",eu:"\u0627\u0644\u0628\u0627\u0633\u0643\u064A\u0629",fa:"\u0627\u0644\u0641\u0627\u0631\u0633\u064A\u0629",fi:"\u0627\u0644\u0641\u0646\u0644\u0646\u062F\u064A\u0629",fr:"\u0627\u0644\u0641\u0631\u0646\u0633\u064A\u0629",he:"\u0627\u0644\u0639\u0628\u0631\u064A\u0629",hi:"\u0627\u0644\u0647\u0646\u062F\u064A\u0629",hr:"\u0627\u0644\u0643\u0631\u0648\u0627\u062A\u064A\u0629",hu:"\u0627\u0644\u0647\u0646\u063A\u0627\u0631\u064A\u0629",hy:"\u0627\u0644\u0623\u0631\u0645\u0646\u064A\u0629",id:"\u0627\u0644\u0625\u0646\u062F\u0648\u0646\u064A\u0633\u064A\u0629",is:"\u0627\u0644\u0623\u064A\u0633\u0644\u0646\u062F\u064A\u0629",it:"\u0627\u0644\u0625\u064A\u0637\u0627\u0644\u064A\u0629",ja:"\u0627\u0644\u064A\u0627\u0628\u0627\u0646\u064A\u0629",ka:"\u0627\u0644\u062C\u0648\u0631\u062C\u064A\u0629",ko:"\u0627\u0644\u0643\u0648\u0631\u064A\u0629",ku:"\u0627\u0644\u0643\u0631\u062F\u064A\u0629",lt:"\u0627\u0644\u0644\u064A\u062A\u0648\u0627\u0646\u064A\u0629",lv:"\u0627\u0644\u0644\u0627\u062A\u0641\u064A\u0629",mi:"\u0627\u0644\u0645\u0627\u0648\u0631\u064A\u0629",mk:"\u0627\u0644\u0645\u0642\u062F\u0648\u0646\u064A\u0629",ml:"\u0627\u0644\u0645\u0627\u0644\u0627\u064A\u0627\u0644\u0627\u0645\u064A\u0629",mn:"\u0627\u0644\u0645\u0646\u063A\u0648\u0644\u064A\u0629",ms:"\u0627\u0644\u0645\u0644\u0627\u064A\u0648\u064A\u0629",mt:"\u0627\u0644\u0645\u0627\u0644\u0637\u064A\u0629",nl:"\u0627\u0644\u0647\u0648\u0644\u0646\u062F\u064A\u0629",no:"\u0627\u0644\u0646\u0631\u0648\u064A\u062C\u064A\u0629",pl:"\u0627\u0644\u0628\u0648\u0644\u0646\u062F\u064A\u0629",pt:"\u0627\u0644\u0628\u0631\u062A\u063A\u0627\u0644\u064A\u0629",ro:"\u0627\u0644\u0631\u0648\u0645\u0627\u0646\u064A\u0629",ru:"\u0627\u0644\u0631\u0648\u0633\u064A\u0629",sa:"\u0627\u0644\u0633\u0646\u0633\u0643\u0631\u064A\u062A\u064A\u0629",sk:"\u0627\u0644\u0633\u0644\u0648\u0641\u0627\u0643\u064A\u0629",sl:"\u0627\u0644\u0633\u0644\u0648\u0641\u064A\u0646\u064A\u0629",sm:"\u0627\u0644\u0633\u0627\u0645\u0648\u064A\u0629",so:"\u0627\u0644\u0635\u0648\u0645\u0627\u0644\u064A\u0629",sr:"\u0627\u0644\u0635\u0631\u0628\u064A\u0629",sv:"\u0627\u0644\u0633\u0648\u064A\u062F\u064A\u0629",ta:"\u0627\u0644\u062A\u0627\u0645\u064A\u0644\u064A\u0629",th:"\u0627\u0644\u062A\u0627\u064A\u0644\u0627\u0646\u062F\u064A\u0629",tr:"\u0627\u0644\u062A\u0631\u0643\u064A\u0629",uk:"\u0627\u0644\u0623\u0648\u0643\u0631\u0627\u0646\u064A\u0629",vi:"\u0627\u0644\u0641\u064A\u062A\u0646\u0627\u0645\u064A\u0629",yi:"\u0627\u0644\u064A\u062F\u064A\u0634\u064A\u0629",zh:"\u0627\u0644\u0635\u064A\u0646\u064A\u0629",zu:"\u0627\u0644\u0632\u0648\u0644\u0648"},layout:{bitmagnet_on_service:"bitmagnet \u0639\u0644\u0649 {{service}}",change_theme:"\u062A\u063A\u064A\u064A\u0631 \u0627\u0644\u0633\u0645\u0629",external_links:"\u0631\u0648\u0627\u0628\u0637 \u062E\u0627\u0631\u062C\u064A\u0629",sponsor:"\u0627\u0644\u0631\u0627\u0639\u064A",support_bitmagnet:"\u062F\u0639\u0645 bitmagnet",translate:"\u062A\u0631\u062C\u0645\u0629"},paginator:{first_page:"\u0627\u0644\u0635\u0641\u062D\u0629 \u0627\u0644\u0623\u0648\u0644\u0649",items_per_page:"\u0627\u0644\u0639\u0646\u0627\u0635\u0631 \u0644\u0643\u0644 \u0635\u0641\u062D\u0629",last_page:"\u0627\u0644\u0635\u0641\u062D\u0629 \u0627\u0644\u0623\u062E\u064A\u0631\u0629",next_page:"\u0627\u0644\u0635\u0641\u062D\u0629 \u0627\u0644\u062A\u0627\u0644\u064A\u0629",previous_page:"\u0627\u0644\u0635\u0641\u062D\u0629 \u0627\u0644\u0633\u0627\u0628\u0642\u0629",x_to_y:"{{x}} \u0625\u0644\u0649 {{y}}",x_to_y_of_y:"__\u0645\u0641\u0642\u0648\u062F__",x_to_y_of_z:"{{x}} \u0625\u0644\u0649 {{y}} \u0645\u0646 {{z}}"},routes:{admin:"\u0627\u0644\u0645\u0633\u0624\u0648\u0644",dashboard:"\u0644\u0648\u062D\u0629 \u0627\u0644\u062A\u062D\u0643\u0645",home:"\u0627\u0644\u0635\u0641\u062D\u0629 \u0627\u0644\u0631\u0626\u064A\u0633\u064A\u0629",jobs:"\u0627\u0644\u0648\u0638\u0627\u0626\u0641",queues:"\u0627\u0644\u0637\u0648\u0627\u0628\u064A\u0631",torrents:"\u0627\u0644\u062A\u0648\u0631\u0646\u062A",visualize:"\u062A\u0635\u0648\u0631"},torrents:{clear_search:"\u0645\u0633\u062D \u0627\u0644\u0628\u062D\u062B",copy:"\u0646\u0633\u062E",copy_to_clipboard:"\u0646\u0633\u062E \u0625\u0644\u0649 \u0627\u0644\u062D\u0627\u0641\u0638\u0629",delete:"\u062D\u0630\u0641",delete_action_cannot_be_undone:"\u0644\u0627 \u064A\u0645\u0643\u0646 \u0627\u0644\u062A\u0631\u0627\u062C\u0639 \u0639\u0646 \u0647\u0630\u0627 \u0627\u0644\u0625\u062C\u0631\u0627\u0621",delete_are_you_sure:"\u0647\u0644 \u0623\u0646\u062A \u0645\u062A\u0623\u0643\u062F \u0623\u0646\u0643 \u062A\u0631\u064A\u062F \u062D\u0630\u0641 \u0647\u0630\u0627 \u0627\u0644\u062A\u0648\u0631\u0646\u062A\u061F",deselect_all:"\u0625\u0644\u063A\u0627\u0621 \u062A\u062D\u062F\u064A\u062F \u0627\u0644\u0643\u0644",edit_tags:"\u062A\u062D\u0631\u064A\u0631 \u0627\u0644\u0639\u0644\u0627\u0645\u0627\u062A",episodes:"\u0627\u0644\u062D\u0644\u0642\u0627\u062A",external_links:"\u0631\u0648\u0627\u0628\u0637 \u062E\u0627\u0631\u062C\u064A\u0629",file_index:"\u0641\u0647\u0631\u0633 \u0627\u0644\u0645\u0644\u0641\u0627\u062A",file_path:"\u0645\u0633\u0627\u0631 \u0627\u0644\u0645\u0644\u0641",file_size:"\u062D\u062C\u0645 \u0627\u0644\u0645\u0644\u0641",file_type:"\u0646\u0648\u0639 \u0627\u0644\u0645\u0644\u0641",files:"\u0627\u0644\u0645\u0644\u0641\u0627\u062A",files_count_n:"{{count}} \u0645\u0644\u0641\u0627\u062A",files_no_info:"\u0644\u0627 \u062A\u0648\u062C\u062F \u0645\u0639\u0644\u0648\u0645\u0627\u062A \u0639\u0646 \u0627\u0644\u0645\u0644\u0641\u0627\u062A",files_single:"\u0645\u0644\u0641 \u0648\u0627\u062D\u062F",genres:"\u0627\u0644\u0623\u0646\u0648\u0627\u0639",info_hash:"\u062A\u062C\u0632\u0626\u0629 \u0627\u0644\u0645\u0639\u0644\u0648\u0645\u0627\u062A",info_hashes:"\u062A\u062C\u0632\u0626\u0627\u062A \u0627\u0644\u0645\u0639\u0644\u0648\u0645\u0627\u062A",languages:"\u0627\u0644\u0644\u063A\u0627\u062A",leechers:"\u0627\u0644\u0645\u0633\u062A\u0641\u064A\u062F\u0648\u0646",magnet:"\u0645\u063A\u0646\u0627\u0637\u064A\u0633",magnet_links:"\u0631\u0648\u0627\u0628\u0637 \u0645\u063A\u0646\u0627\u0637\u064A\u0633\u064A\u0629",new_tag:"\u0639\u0644\u0627\u0645\u0629 \u062C\u062F\u064A\u062F\u0629",order_by:"\u062A\u0631\u062A\u064A\u0628 \u062D\u0633\u0628",order_direction_toggle:"\u062A\u0628\u062F\u064A\u0644 \u0627\u0644\u0627\u062A\u062C\u0627\u0647",ordering:{files_count:"\u0639\u062F\u062F \u0627\u0644\u0645\u0644\u0641\u0627\u062A",info_hash:"\u062A\u062C\u0632\u0626\u0629 \u0627\u0644\u0645\u0639\u0644\u0648\u0645\u0627\u062A",leechers:"\u0627\u0644\u0645\u0633\u062A\u0641\u064A\u062F\u0648\u0646",name:"\u0627\u0644\u0627\u0633\u0645",published_at:"\u0646\u0634\u0631 \u0641\u064A",relevance:"\u0627\u0644\u0635\u0644\u0629",seeders:"\u0627\u0644\u0645\u0632\u0627\u0631\u0639\u0648\u0646",size:"\u0627\u0644\u062D\u062C\u0645",updated_at:"\u062A\u0645 \u0627\u0644\u062A\u062D\u062F\u064A\u062B \u0641\u064A"},original_release_date:"\u062A\u0627\u0631\u064A\u062E \u0627\u0644\u0625\u0635\u062F\u0627\u0631 \u0627\u0644\u0623\u0635\u0644\u064A",permalink:"\u0631\u0627\u0628\u0637 \u062F\u0627\u0626\u0645",poster:"\u0645\u0644\u0635\u0642",published:"\u0645\u0646\u0634\u0648\u0631",rating:"\u0627\u0644\u062A\u0642\u064A\u064A\u0645",refresh:"\u062A\u062D\u062F\u064A\u062B \u0627\u0644\u0646\u062A\u0627\u0626\u062C",s_l:"S / L",search:"\u0628\u062D\u062B",seeders:"\u0627\u0644\u0628\u0627\u0630\u0631\u0648\u0646",select_all:"\u062A\u062D\u062F\u064A\u062F \u0627\u0644\u0643\u0644",showing_x_of_y_files:"\u0639\u0631\u0636 {{x}} \u0645\u0646 {{y}} \u0645\u0644\u0641\u0627\u062A",size:"\u0627\u0644\u062D\u062C\u0645",source:"\u0645\u0635\u062F\u0631 \u0627\u0644\u062A\u0648\u0631\u0646\u062A",summary:"\u0627\u0644\u0645\u0644\u062E\u0635",title:"\u0627\u0644\u0639\u0646\u0648\u0627\u0646",toggle_drawer:"\u062A\u0628\u062F\u064A\u0644 \u0627\u0644\u062F\u0631\u062C",votes_count_n:"{{count}} \u0623\u0635\u0648\u0627\u062A"},version:{bitmagnet_version:"\u0625\u0635\u062F\u0627\u0631 bitmagnet {{version}}",unknown:"\u063A\u064A\u0631 \u0645\u0639\u0631\u0648\u0641"}};var Je={content_types:{plural:{all:"Alle",audiobook:"H\xF6rb\xFCcher",comic:"Comics",ebook:"E-B\xFCcher",movie:"Filme",music:"Musik",null:"Unbekannt",software:"Software",tv_show:"TV-Shows",xxx:"XXX"},singular:{audiobook:"H\xF6rbuch",comic:"Comic",ebook:"E-Buch",movie:"Film",music:"Musik",null:"Unbekannt",software:"Software",tv_show:"TV-Show",xxx:"XXX"}},dashboard:{event:{created:"Erstellt",failed:"Fehlgeschlagen",processed:"Verarbeitet",updated:"Aktualisiert"},interval:{all:"Alle",days:"Tage",days_1:"1 Tag",hours:"Stunden",hours_1:"1 Stunde",hours_12:"12 Stunden",hours_6:"6 Stunden",minutes:"Minuten",minutes_1:"1 Minute",minutes_15:"15 Minuten",minutes_30:"30 Minuten",minutes_5:"5 Minuten",off:"Aus",seconds_10:"10 Sekunden",seconds_30:"30 Sekunden",weeks_1:"1 Woche"},metrics:{event:"Ereignis",resolution:"Aufl\xF6sung",throughput:"Durchsatz",timeframe:"Zeitrahmen"},queues:{created:"Erstellt",created_at:"Erstellt am",enqueue_jobs:"Jobs einreihen",enqueue_torrent_processing_batch:"Torrent-Verarbeitungsbatch einreihen",failed:"Fehlgeschlagen",force_rematch:"Erneutes Zuordnen von bereits zugeordneten Inhalten erzwingen",jobs_enqueued:"Jobs eingereiht",latency:"Latenz",match_content_by_external_api_search:"Inhalte durch externe API-Suche zuordnen",match_content_by_local_search:"Inhalte durch lokale Suche zuordnen",payload:"Nutzlast",pending:"Ausstehend",priority:"Priorit\xE4t",process_orphaned_torrents_only:"Nur verwaiste Torrents verarbeiten",processed:"Verarbeitet",purge_jobs:"Jobs bereinigen",purge_queue_jobs:"Warteschlangen-Jobs bereinigen",queue:"Warteschlange",queue_purged:"Warteschlange bereinigt",queues:"Warteschlangen",ran_at:"Ausgef\xFChrt am",retry:"Erneut versuchen",total_counts_by_status:"Gesamtanzahl nach Status"}},facets:{content_type:"Inhaltstyp",file_type:"Dateityp",genre:"Genre",language:"Sprache",queue:"Warteschlange",status:"Status",torrent_source:"Torrent-Quelle",torrent_tag:"Torrent-Tag",video_resolution:"Videoaufl\xF6sung",video_source:"Videoquelle"},file_types:{archive:"Archiv",audio:"Audio",data:"Daten",document:"Dokument",image:"Bild",software:"Software",subtitles:"Untertitel",unknown:"Unbekannt",video:"Video"},general:{all:"Alle",dismiss:"Verwerfen",error:"Fehler",none:"Keine",refresh:"Aktualisieren",status:"Status"},health:{bitmagnet_is_status:"bitmagnet ist {{status}}",check_failed_with_error:"\xDCberpr\xFCfung mit Fehler fehlgeschlagen",component:"Komponente",components:{dht:"DHT",postgres:"Postgres",tmdb:"TMDB"},dismiss:"Verwerfen",error:"Fehler",status:"Status",statuses:{degraded:"Verschlechtert",down:"Aus",error:"Fehler",inactive:"Inaktiv",started:"Gestartet",unknown:"Ausstehend",up:"An"},summary:"Gesundheits\xFCbersicht",worker:"Arbeiter",workers:{dht_crawler:"DHT-Crawler",http_server:"HTTP-Server",queue_server:"Warteschlangen-Server"}},languages:{af:"Afrikaans",ar:"Arabisch",az:"Aserbaidschanisch",be:"Wei\xDFrussisch",bg:"Bulgarisch",bs:"Bosnisch",ca:"Katalanisch",ce:"Tschetschenisch",co:"Korsisch",cs:"Tschechisch",cy:"Walisisch",da:"D\xE4nisch",de:"Deutsch",el:"Griechisch",en:"Englisch",es:"Spanisch",et:"Estnisch",eu:"Baskisch",fa:"Persisch",fi:"Finnisch",fr:"Franz\xF6sisch",he:"Hebr\xE4isch",hi:"Hindi",hr:"Kroatisch",hu:"Ungarisch",hy:"Armenisch",id:"Indonesisch",is:"Isl\xE4ndisch",it:"Italienisch",ja:"Japanisch",ka:"Georgisch",ko:"Koreanisch",ku:"Kurdisch",lt:"Litauisch",lv:"Lettisch",mi:"Maori",mk:"Mazedonisch",ml:"Malayalam",mn:"Mongolisch",ms:"Malaiisch",mt:"Maltesisch",nl:"Niederl\xE4ndisch",no:"Norwegisch",pl:"Polnisch",pt:"Portugiesisch",ro:"Rum\xE4nisch",ru:"Russisch",sa:"Sanskrit",sk:"Slowakisch",sl:"Slowenisch",sm:"Samoanisch",so:"Somalisch",sr:"Serbisch",sv:"Schwedisch",ta:"Tamil",th:"Thai",tr:"T\xFCrkisch",uk:"Ukrainisch",vi:"Vietnamesisch",yi:"Jiddisch",zh:"Chinesisch",zu:"Zulu"},layout:{bitmagnet_on_service:"bitmagnet auf {{service}}",change_theme:"Thema \xE4ndern",external_links:"Externe Links",sponsor:"Sponsor",support_bitmagnet:"bitmagnet unterst\xFCtzen",translate:"\xDCbersetzen"},paginator:{first_page:"Erste Seite",items_per_page:"Artikel pro Seite",last_page:"Letzte Seite",next_page:"N\xE4chste Seite",previous_page:"Vorherige Seite",x_to_y:"{{x}} bis {{y}}",x_to_y_of_y:"__fehlend__",x_to_y_of_z:"{{x}} bis {{y}} von {{z}}"},routes:{admin:"Admin",dashboard:"Dashboard",home:"Startseite",jobs:"Aufgaben",queues:"Warteschlangen",torrents:"Torrents",visualize:"Visualisieren"},torrents:{clear_search:"Suche l\xF6schen",copy:"Kopieren",copy_to_clipboard:"In die Zwischenablage kopieren",delete:"L\xF6schen",delete_action_cannot_be_undone:"Diese Aktion kann nicht r\xFCckg\xE4ngig gemacht werden",delete_are_you_sure:"Sind Sie sicher, dass Sie diesen Torrent l\xF6schen m\xF6chten?",deselect_all:"Alle abw\xE4hlen",edit_tags:"Tags bearbeiten",episodes:"Episoden",external_links:"Externe Links",file_index:"Dateiindex",file_path:"Dateipfad",file_size:"Dateigr\xF6\xDFe",file_type:"Dateityp",files:"Dateien",files_count_n:"{{count}} Dateien",files_no_info:"Keine Dateiinformationen verf\xFCgbar",files_single:"Einzelne Datei",genres:"Genres",info_hash:"Info-Hash",info_hashes:"Info-Hashes",languages:"Sprachen",leechers:"Leechers",magnet:"Magnet",magnet_links:"Magnet-Links",new_tag:"Neuer Tag",order_by:"Sortieren nach",order_direction_toggle:"Richtung umschalten",ordering:{files_count:"Dateienanzahl",info_hash:"Info-Hash",leechers:"Leechers",name:"Name",published_at:"Ver\xF6ffentlicht am",relevance:"Relevanz",seeders:"Seeders",size:"Gr\xF6\xDFe",updated_at:"Aktualisiert am"},original_release_date:"Originales Ver\xF6ffentlichungsdatum",permalink:"Permalink",poster:"Poster",published:"Ver\xF6ffentlicht",rating:"Bewertung",refresh:"Ergebnisse aktualisieren",s_l:"S / L",search:"Suche",seeders:"Seeders",select_all:"Alle ausw\xE4hlen",showing_x_of_y_files:"{{x}} von {{y}} Dateien anzeigen",size:"Gr\xF6\xDFe",source:"Torrent-Quelle",summary:"Zusammenfassung",title:"Titel",toggle_drawer:"Schublade umschalten",votes_count_n:"{{count}} Stimmen"},version:{bitmagnet_version:"bitmagnet Version {{version}}",unknown:"unbekannt"}};var Ze={content_types:{plural:{all:"All",audiobook:"Audiobooks",comic:"Comics",ebook:"E-Books",movie:"Movies",music:"Music",null:"Unknown",software:"Software",tv_show:"TV Shows",xxx:"XXX"},singular:{audiobook:"Audiobook",comic:"Comic",ebook:"E-Book",movie:"Movie",music:"Music",null:"Unknown",software:"Software",tv_show:"TV Show",xxx:"XXX"}},dashboard:{event:{created:"Created",failed:"Failed",processed:"Processed",updated:"Updated"},interval:{all:"All",days:"Days",days_1:"1 day",hours:"Hours",hours_1:"1 hour",hours_12:"12 hours",hours_6:"6 hours",minutes:"Minutes",minutes_1:"1 minute",minutes_15:"15 minutes",minutes_30:"30 minutes",minutes_5:"5 minutes",off:"Off",seconds_10:"10 seconds",seconds_30:"30 seconds",weeks_1:"1 week"},metrics:{event:"Event",resolution:"Resolution",throughput:"Throughput",timeframe:"Timeframe"},queues:{created:"Created",created_at:"Created at",enqueue_jobs:"Enqueue jobs",enqueue_torrent_processing_batch:"Enqueue Torrent Processing Batch",failed:"Failed",force_rematch:"Force rematch of already matched content",jobs_enqueued:"Jobs enqueued",latency:"Latency",match_content_by_external_api_search:"Match content by external API search",match_content_by_local_search:"Match content by local search",payload:"Payload",pending:"Pending",priority:"Priority",process_orphaned_torrents_only:"Process orphaned torrents only",processed:"Processed",purge_jobs:"Purge jobs",purge_queue_jobs:"Purge queue jobs",queue:"Queue",queue_purged:"Queue purged",queues:"Queues",ran_at:"Ran at",retry:"Retry",total_counts_by_status:"Total counts by status"}},facets:{content_type:"Content Type",file_type:"File Type",genre:"Genre",language:"Language",queue:"Queue",status:"Status",torrent_source:"Torrent Source",torrent_tag:"Torrent Tag",video_resolution:"Video Resolution",video_source:"Video Source"},file_types:{archive:"Archive",audio:"Audio",data:"Data",document:"Document",image:"Image",software:"Software",subtitles:"Subtitles",unknown:"Unknown",video:"Video"},general:{all:"All",dismiss:"Dismiss",error:"Error",none:"None",refresh:"Refresh",status:"Status"},health:{bitmagnet_is_status:"bitmagnet is {{status}}",check_failed_with_error:"Check failed with error",component:"Component",components:{dht:"DHT",postgres:"Postgres",tmdb:"TMDB"},dismiss:"Dismiss",error:"Error",status:"Status",statuses:{degraded:"Degraded",down:"Down",error:"Error",inactive:"Inactive",started:"Started",unknown:"Pending",up:"Up"},summary:"Health summary",worker:"Worker",workers:{dht_crawler:"DHT crawler",http_server:"HTTP server",queue_server:"Queue server"}},languages:{af:"Afrikaans",ar:"Arabic",az:"Azerbaijani",be:"Belarusian",bg:"Bulgarian",bs:"Bosnian",ca:"Catalan",ce:"Chechen",co:"Corsican",cs:"Czech",cy:"Welsh",da:"Danish",de:"German",el:"Greek",en:"English",es:"Spanish",et:"Estonian",eu:"Basque",fa:"Persian",fi:"Finnish",fr:"French",he:"Hebrew",hi:"Hindi",hr:"Croatian",hu:"Hungarian",hy:"Armenian",id:"Indonesian",is:"Icelandic",it:"Italian",ja:"Japanese",ka:"Georgian",ko:"Korean",ku:"Kurdish",lt:"Lithuanian",lv:"Latvian",mi:"Maori",mk:"Macedonian",ml:"Malayalam",mn:"Mongolian",ms:"Malay",mt:"Maltese",nl:"Dutch",no:"Norwegian",pl:"Polish",pt:"Portuguese",ro:"Romanian",ru:"Russian",sa:"Sanskrit",sk:"Slovak",sl:"Slovenian",sm:"Samoan",so:"Somali",sr:"Serbian",sv:"Swedish",ta:"Tamil",th:"Thai",tr:"Turkish",uk:"Ukrainian",vi:"Vietnamese",yi:"Yiddish",zh:"Chinese",zu:"Zulu"},layout:{bitmagnet_on_service:"bitmagnet on {{service}}",change_theme:"Change theme",external_links:"External links",sponsor:"Sponsor",support_bitmagnet:"Support bitmagnet",translate:"Translate"},paginator:{first_page:"First page",items_per_page:"Items per page",last_page:"Last page",next_page:"Next page",previous_page:"Previous page",x_to_y:"{{x}} to {{y}}",x_to_y_of_y:"__missing__",x_to_y_of_z:"{{x}} to {{y}} of {{z}}"},routes:{admin:"Admin",dashboard:"Dashboard",home:"Home",jobs:"Jobs",queues:"Queues",torrents:"Torrents",visualize:"Visualize"},torrents:{clear_search:"Clear Search",copy:"Copy",copy_to_clipboard:"Copy to clipboard",delete:"Delete",delete_action_cannot_be_undone:"This action cannot be undone",delete_are_you_sure:"Are you sure you want to delete this torrent?",deselect_all:"Deselect All",edit_tags:"Edit tags",episodes:"Episodes",external_links:"External links",file_index:"File index",file_path:"File path",file_size:"File size",file_type:"File type",files:"Files",files_count_n:"{{count}} files",files_no_info:"No files information available",files_single:"Single file",genres:"Genres",info_hash:"Info hash",info_hashes:"Info hashes",languages:"Languages",leechers:"Leechers",magnet:"Magnet",magnet_links:"Magnet links",new_tag:"New tag",order_by:"Order by",order_direction_toggle:"Toggle direction",ordering:{files_count:"Files count",info_hash:"Info hash",leechers:"Leechers",name:"Name",published_at:"Published at",relevance:"Relevance",seeders:"Seeders",size:"Size",updated_at:"Updated at"},original_release_date:"Original release date",permalink:"Permalink",poster:"Poster",published:"Published",rating:"Rating",refresh:"Refresh results",s_l:"S / L",search:"Search",seeders:"Seeders",select_all:"Select All",showing_x_of_y_files:"Showing {{x}} of {{y}} files",size:"Size",source:"Torrent Source",summary:"Summary",title:"Title",toggle_drawer:"Toggle Drawer",votes_count_n:"{{count}} votes"},version:{bitmagnet_version:"bitmagnet version {{version}}",unknown:"unknown"}};var $e={content_types:{plural:{all:"Todos",audiobook:"Audiolibros",comic:"C\xF3mics",ebook:"E-Libros",movie:"Pel\xEDculas",music:"M\xFAsica",null:"Desconocido",software:"Software",tv_show:"Programas de TV",xxx:"XXX"},singular:{audiobook:"Audiolibro",comic:"C\xF3mic",ebook:"E-Libro",movie:"Pel\xEDcula",music:"M\xFAsica",null:"Desconocido",software:"Software",tv_show:"Programa de TV",xxx:"XXX"}},dashboard:{event:{created:"Creado",failed:"Fallido",processed:"Procesado",updated:"Actualizado"},interval:{all:"Todos",days:"D\xEDas",days_1:"1 d\xEDa",hours:"Horas",hours_1:"1 hora",hours_12:"12 horas",hours_6:"6 horas",minutes:"Minutos",minutes_1:"1 minuto",minutes_15:"15 minutos",minutes_30:"30 minutos",minutes_5:"5 minutos",off:"Apagado",seconds_10:"10 segundos",seconds_30:"30 segundos",weeks_1:"1 semana"},metrics:{event:"Evento",resolution:"Resoluci\xF3n",throughput:"Rendimiento",timeframe:"Periodo de tiempo"},queues:{created:"Creado",created_at:"Creado en",enqueue_jobs:"Encolar trabajos",enqueue_torrent_processing_batch:"Encolar lote de procesamiento de torrents",failed:"Fallido",force_rematch:"Forzar nueva coincidencia de contenido ya coincidente",jobs_enqueued:"Trabajos encolados",latency:"Latencia",match_content_by_external_api_search:"Coincidir contenido por b\xFAsqueda de API externa",match_content_by_local_search:"Coincidir contenido por b\xFAsqueda local",payload:"Carga \xFAtil",pending:"Pendiente",priority:"Prioridad",process_orphaned_torrents_only:"Procesar solo torrents hu\xE9rfanos",processed:"Procesado",purge_jobs:"Purgar trabajos",purge_queue_jobs:"Purgar trabajos de la cola",queue:"Cola",queue_purged:"Cola purgada",queues:"Colas",ran_at:"Ejecutado en",retry:"Reintentar",total_counts_by_status:"Recuento total por estado"}},facets:{content_type:"Tipo de contenido",file_type:"Tipo de archivo",genre:"G\xE9nero",language:"Idioma",queue:"Cola",status:"Estado",torrent_source:"Fuente del torrent",torrent_tag:"Etiqueta del torrent",video_resolution:"Resoluci\xF3n de video",video_source:"Fuente de video"},file_types:{archive:"Archivo",audio:"Audio",data:"Datos",document:"Documento",image:"Imagen",software:"Software",subtitles:"Subt\xEDtulos",unknown:"Desconocido",video:"Video"},general:{all:"Todos",dismiss:"Descartar",error:"Error",none:"Ninguno",refresh:"Actualizar",status:"Estado"},health:{bitmagnet_is_status:"bitmagnet est\xE1 {{status}}",check_failed_with_error:"La verificaci\xF3n fall\xF3 con error",component:"Componente",components:{dht:"DHT",postgres:"Postgres",tmdb:"TMDB"},dismiss:"Descartar",error:"Error",status:"Estado",statuses:{degraded:"Degradado",down:"Ca\xEDdo",error:"Error",inactive:"Inactivo",started:"Iniciado",unknown:"Pendiente",up:"Activo"},summary:"Resumen de salud",worker:"Trabajador",workers:{dht_crawler:"Rastreador DHT",http_server:"Servidor HTTP",queue_server:"Servidor de colas"}},languages:{af:"Afrik\xE1ans",ar:"\xC1rabe",az:"Azerbaiyano",be:"Bielorruso",bg:"B\xFAlgaro",bs:"Bosnio",ca:"Catal\xE1n",ce:"Checheno",co:"Corso",cs:"Checo",cy:"Gal\xE9s",da:"Dan\xE9s",de:"Alem\xE1n",el:"Griego",en:"Ingl\xE9s",es:"Espa\xF1ol",et:"Estonio",eu:"Vasco",fa:"Persa",fi:"Finland\xE9s",fr:"Franc\xE9s",he:"Hebreo",hi:"Hindi",hr:"Croata",hu:"H\xFAngaro",hy:"Armenio",id:"Indonesio",is:"Island\xE9s",it:"Italiano",ja:"Japon\xE9s",ka:"Georgiano",ko:"Coreano",ku:"Kurdo",lt:"Lituano",lv:"Let\xF3n",mi:"Maor\xED",mk:"Macedonio",ml:"Malayalam",mn:"Mongol",ms:"Malayo",mt:"Malt\xE9s",nl:"Neerland\xE9s",no:"Noruego",pl:"Polaco",pt:"Portugu\xE9s",ro:"Rumano",ru:"Ruso",sa:"S\xE1nscrito",sk:"Eslovaco",sl:"Esloveno",sm:"Samoano",so:"Somal\xED",sr:"Serbio",sv:"Sueco",ta:"Tamil",th:"Tailand\xE9s",tr:"Turco",uk:"Ucraniano",vi:"Vietnamita",yi:"Yidis",zh:"Chino",zu:"Zul\xFA"},layout:{bitmagnet_on_service:"bitmagnet en {{service}}",change_theme:"Cambiar tema",external_links:"Enlaces externos",sponsor:"Patrocinador",support_bitmagnet:"Apoyar bitmagnet",translate:"Traducir"},paginator:{first_page:"Primera p\xE1gina",items_per_page:"Elementos por p\xE1gina",last_page:"\xDAltima p\xE1gina",next_page:"P\xE1gina siguiente",previous_page:"P\xE1gina anterior",x_to_y:"{{x}} a {{y}}",x_to_y_of_y:"__faltante__",x_to_y_of_z:"{{x}} a {{y}} de {{z}}"},routes:{admin:"Admin",dashboard:"Tablero",home:"Inicio",jobs:"Trabajos",queues:"Colas",torrents:"Torrents",visualize:"Visualizar"},torrents:{clear_search:"Borrar b\xFAsqueda",copy:"Copiar",copy_to_clipboard:"Copiar al portapapeles",delete:"Eliminar",delete_action_cannot_be_undone:"Esta acci\xF3n no se puede deshacer",delete_are_you_sure:"\xBFEst\xE1 seguro de que desea eliminar este torrent?",deselect_all:"Deseleccionar todo",edit_tags:"Editar etiquetas",episodes:"Episodios",external_links:"Enlaces externos",file_index:"\xCDndice de archivos",file_path:"Ruta del archivo",file_size:"Tama\xF1o del archivo",file_type:"Tipo de archivo",files:"Archivos",files_count_n:"{{count}} archivos",files_no_info:"No hay informaci\xF3n de archivos disponible",files_single:"Archivo \xFAnico",genres:"G\xE9neros",info_hash:"Hash de informaci\xF3n",info_hashes:"Hashes de informaci\xF3n",languages:"Idiomas",leechers:"Leechers",magnet:"Magnet",magnet_links:"Enlaces Magnet",new_tag:"Nueva etiqueta",order_by:"Ordenar por",order_direction_toggle:"Alternar direcci\xF3n",ordering:{files_count:"Recuento de archivos",info_hash:"Hash de informaci\xF3n",leechers:"Leechers",name:"Nombre",published_at:"Publicado en",relevance:"Relevancia",seeders:"Seeders",size:"Tama\xF1o",updated_at:"Actualizado en"},original_release_date:"Fecha de lanzamiento original",permalink:"Enlace permanente",poster:"P\xF3ster",published:"Publicado",rating:"Calificaci\xF3n",refresh:"Actualizar resultados",s_l:"S / L",search:"Buscar",seeders:"Seeders",select_all:"Seleccionar todo",showing_x_of_y_files:"Mostrando {{x}} de {{y}} archivos",size:"Tama\xF1o",source:"Fuente del torrent",summary:"Resumen",title:"T\xEDtulo",toggle_drawer:"Alternar caj\xF3n",votes_count_n:"{{count}} votos"},version:{bitmagnet_version:"versi\xF3n de bitmagnet {{version}}",unknown:"desconocido"}};var et={content_types:{plural:{all:"Tous",audiobook:"Livres audio",comic:"Bandes dessin\xE9es",ebook:"E-livres",movie:"Films",music:"Musique",null:"Inconnu",software:"Logiciels",tv_show:"S\xE9ries TV",xxx:"XXX"},singular:{audiobook:"Livre audio",comic:"Bande dessin\xE9e",ebook:"E-livre",movie:"Film",music:"Musique",null:"Inconnu",software:"Logiciel",tv_show:"S\xE9rie TV",xxx:"XXX"}},dashboard:{event:{created:"Cr\xE9\xE9",failed:"\xC9chou\xE9",processed:"Trait\xE9",updated:"Mis \xE0 jour"},interval:{all:"Tous",days:"Jours",days_1:"1 jour",hours:"Heures",hours_1:"1 heure",hours_12:"12 heures",hours_6:"6 heures",minutes:"Minutes",minutes_1:"1 minute",minutes_15:"15 minutes",minutes_30:"30 minutes",minutes_5:"5 minutes",off:"D\xE9sactiv\xE9",seconds_10:"10 secondes",seconds_30:"30 secondes",weeks_1:"1 semaine"},metrics:{event:"\xC9v\xE9nement",resolution:"R\xE9solution",throughput:"D\xE9bit",timeframe:"P\xE9riode"},queues:{created:"Cr\xE9\xE9",created_at:"Cr\xE9\xE9 \xE0",enqueue_jobs:"Enfilez les t\xE2ches",enqueue_torrent_processing_batch:"Enfilez le traitement des torrents",failed:"\xC9chou\xE9",force_rematch:"Forcer le rematch du contenu d\xE9j\xE0 appari\xE9",jobs_enqueued:"T\xE2ches enfil\xE9es",latency:"Latence",match_content_by_external_api_search:"Apparier le contenu par recherche API externe",match_content_by_local_search:"Apparier le contenu par recherche locale",payload:"Charge utile",pending:"En attente",priority:"Priorit\xE9",process_orphaned_torrents_only:"Traiter uniquement les torrents orphelins",processed:"Trait\xE9",purge_jobs:"Purger les t\xE2ches",purge_queue_jobs:"Purger les t\xE2ches de la file d'attente",queue:"File d'attente",queue_purged:"File d'attente purg\xE9e",queues:"Files d'attente",ran_at:"Ex\xE9cut\xE9 \xE0",retry:"R\xE9essayer",total_counts_by_status:"Totaux par statut"}},facets:{content_type:"Type de contenu",file_type:"Type de fichier",genre:"Genre",language:"Langue",queue:"File d'attente",status:"Statut",torrent_source:"Source du torrent",torrent_tag:"Tag du torrent",video_resolution:"R\xE9solution vid\xE9o",video_source:"Source vid\xE9o"},file_types:{archive:"Archive",audio:"Audio",data:"Donn\xE9es",document:"Document",image:"Image",software:"Logiciel",subtitles:"Sous-titres",unknown:"Inconnu",video:"Vid\xE9o"},general:{all:"Tous",dismiss:"Rejeter",error:"Erreur",none:"Aucun",refresh:"Rafra\xEEchir",status:"Statut"},health:{bitmagnet_is_status:"bitmagnet est {{status}}",check_failed_with_error:"V\xE9rification \xE9chou\xE9e avec erreur",component:"Composant",components:{dht:"DHT",postgres:"Postgres",tmdb:"TMDB"},dismiss:"Rejeter",error:"Erreur",status:"Statut",statuses:{degraded:"D\xE9grad\xE9",down:"Hors ligne",error:"Erreur",inactive:"Inactif",started:"D\xE9marr\xE9",unknown:"En attente",up:"En ligne"},summary:"R\xE9sum\xE9 de la sant\xE9",worker:"Travailleur",workers:{dht_crawler:"Explorateur DHT",http_server:"Serveur HTTP",queue_server:"Serveur de file d'attente"}},languages:{af:"Afrikaans",ar:"Arabe",az:"Azerba\xEFdjanais",be:"Bi\xE9lorusse",bg:"Bulgare",bs:"Bosniaque",ca:"Catalan",ce:"Tch\xE9tch\xE8ne",co:"Corse",cs:"Tch\xE8que",cy:"Gallois",da:"Danois",de:"Allemand",el:"Grec",en:"Anglais",es:"Espagnol",et:"Estonien",eu:"Basque",fa:"Persan",fi:"Finnois",fr:"Fran\xE7ais",he:"H\xE9breu",hi:"Hindi",hr:"Croate",hu:"Hongrois",hy:"Arm\xE9nien",id:"Indon\xE9sien",is:"Islandais",it:"Italien",ja:"Japonais",ka:"G\xE9orgien",ko:"Cor\xE9en",ku:"Kurde",lt:"Lituanien",lv:"Letton",mi:"Maori",mk:"Mac\xE9donien",ml:"Malayalam",mn:"Mongol",ms:"Malais",mt:"Maltais",nl:"N\xE9erlandais",no:"Norv\xE9gien",pl:"Polonais",pt:"Portugais",ro:"Roumain",ru:"Russe",sa:"Sanskrit",sk:"Slovaque",sl:"Slov\xE8ne",sm:"Samoan",so:"Somali",sr:"Serbe",sv:"Su\xE9dois",ta:"Tamoul",th:"Tha\xEF",tr:"Turc",uk:"Ukrainien",vi:"Vietnamien",yi:"Yiddish",zh:"Chinois",zu:"Zoulou"},layout:{bitmagnet_on_service:"bitmagnet sur {{service}}",change_theme:"Changer de th\xE8me",external_links:"Liens externes",sponsor:"Sponsor",support_bitmagnet:"Soutenir bitmagnet",translate:"Traduire"},paginator:{first_page:"Premi\xE8re page",items_per_page:"Articles par page",last_page:"Derni\xE8re page",next_page:"Page suivante",previous_page:"Page pr\xE9c\xE9dente",x_to_y:"{{x}} \xE0 {{y}}",x_to_y_of_y:"__manquant__",x_to_y_of_z:"{{x}} \xE0 {{y}} de {{z}}"},routes:{admin:"Admin",dashboard:"Tableau de bord",home:"Accueil",jobs:"T\xE2ches",queues:"Files d'attente",torrents:"Torrents",visualize:"Visualiser"},torrents:{clear_search:"Effacer la recherche",copy:"Copier",copy_to_clipboard:"Copier dans le presse-papiers",delete:"Supprimer",delete_action_cannot_be_undone:"Cette action ne peut pas \xEAtre annul\xE9e",delete_are_you_sure:"\xCAtes-vous s\xFBr de vouloir supprimer ce torrent?",deselect_all:"Tout d\xE9s\xE9lectionner",edit_tags:"Modifier les tags",episodes:"\xC9pisodes",external_links:"Liens externes",file_index:"Index de fichier",file_path:"Chemin de fichier",file_size:"Taille de fichier",file_type:"Type de fichier",files:"Fichiers",files_count_n:"{{count}} fichiers",files_no_info:"Aucune information sur les fichiers disponible",files_single:"Fichier unique",genres:"Genres",info_hash:"Hash d'info",info_hashes:"Hashes d'info",languages:"Langues",leechers:"Leechers",magnet:"Magnet",magnet_links:"Liens Magnet",new_tag:"Nouveau tag",order_by:"Trier par",order_direction_toggle:"Basculer la direction",ordering:{files_count:"Nombre de fichiers",info_hash:"Hash d'info",leechers:"Leechers",name:"Nom",published_at:"Publi\xE9 \xE0",relevance:"Pertinence",seeders:"Seeders",size:"Taille",updated_at:"Mis \xE0 jour \xE0"},original_release_date:"Date de sortie originale",permalink:"Permalien",poster:"Affiche",published:"Publi\xE9",rating:"\xC9valuation",refresh:"Rafra\xEEchir les r\xE9sultats",s_l:"S / L",search:"Rechercher",seeders:"Seeders",select_all:"Tout s\xE9lectionner",showing_x_of_y_files:"Affichage de {{x}} sur {{y}} fichiers",size:"Taille",source:"Source du torrent",summary:"R\xE9sum\xE9",title:"Titre",toggle_drawer:"Basculer le tiroir",votes_count_n:"{{count}} votes"},version:{bitmagnet_version:"version bitmagnet {{version}}",unknown:"inconnu"}};var tt={content_types:{plural:{all:"\u0938\u092D\u0940",audiobook:"\u0911\u0921\u093F\u092F\u094B\u092C\u0941\u0915\u094D\u0938",comic:"\u0915\u0949\u092E\u093F\u0915\u094D\u0938",ebook:"\u0908-\u092C\u0941\u0915\u094D\u0938",movie:"\u092B\u093C\u093F\u0932\u094D\u092E\u0947\u0902",music:"\u0938\u0902\u0917\u0940\u0924",null:"\u0905\u091C\u094D\u091E\u093E\u0924",software:"\u0938\u0949\u092B\u093C\u094D\u091F\u0935\u0947\u092F\u0930",tv_show:"\u091F\u0940\u0935\u0940 \u0936\u094B",xxx:"XXX"},singular:{audiobook:"\u0911\u0921\u093F\u092F\u094B\u092C\u0941\u0915",comic:"\u0915\u0949\u092E\u093F\u0915",ebook:"\u0908-\u092C\u0941\u0915",movie:"\u092B\u093C\u093F\u0932\u094D\u092E",music:"\u0938\u0902\u0917\u0940\u0924",null:"\u0905\u091C\u094D\u091E\u093E\u0924",software:"\u0938\u0949\u092B\u093C\u094D\u091F\u0935\u0947\u092F\u0930",tv_show:"\u091F\u0940\u0935\u0940 \u0936\u094B",xxx:"XXX"}},dashboard:{event:{created:"\u092C\u0928\u093E\u092F\u093E \u0917\u092F\u093E",failed:"\u0905\u0938\u092B\u0932",processed:"\u092A\u094D\u0930\u0938\u0902\u0938\u094D\u0915\u0943\u0924",updated:"\u0905\u092A\u0921\u0947\u091F \u0915\u093F\u092F\u093E \u0917\u092F\u093E"},interval:{all:"\u0938\u092D\u0940",days:"\u0926\u093F\u0928",days_1:"1 \u0926\u093F\u0928",hours:"\u0918\u0902\u091F\u0947",hours_1:"1 \u0918\u0902\u091F\u093E",hours_12:"12 \u0918\u0902\u091F\u0947",hours_6:"6 \u0918\u0902\u091F\u0947",minutes:"\u092E\u093F\u0928\u091F",minutes_1:"1 \u092E\u093F\u0928\u091F",minutes_15:"15 \u092E\u093F\u0928\u091F",minutes_30:"30 \u092E\u093F\u0928\u091F",minutes_5:"5 \u092E\u093F\u0928\u091F",off:"\u092C\u0902\u0926",seconds_10:"10 \u0938\u0947\u0915\u0902\u0921",seconds_30:"30 \u0938\u0947\u0915\u0902\u0921",weeks_1:"1 \u0938\u092A\u094D\u0924\u093E\u0939"},metrics:{event:"\u0918\u091F\u0928\u093E",resolution:"\u0930\u093F\u091C\u093C\u0949\u0932\u094D\u092F\u0942\u0936\u0928",throughput:"\u0925\u094D\u0930\u0942\u092A\u0941\u091F",timeframe:"\u0938\u092E\u092F \u0938\u0940\u092E\u093E"},queues:{created:"\u092C\u0928\u093E\u092F\u093E \u0917\u092F\u093E",created_at:"\u092C\u0928\u093E\u092F\u093E \u0917\u092F\u093E \u0938\u092E\u092F",enqueue_jobs:"\u091C\u0949\u092C\u094D\u0938 \u0915\u094B \u0915\u0924\u093E\u0930 \u092E\u0947\u0902 \u0932\u0917\u093E\u090F\u0902",enqueue_torrent_processing_batch:"\u091F\u094B\u0930\u0947\u0902\u091F \u092A\u094D\u0930\u094B\u0938\u0947\u0938\u093F\u0902\u0917 \u092C\u0948\u091A \u0915\u0924\u093E\u0930 \u092E\u0947\u0902 \u0932\u0917\u093E\u090F\u0902",failed:"\u0905\u0938\u092B\u0932",force_rematch:"\u092A\u0939\u0932\u0947 \u0938\u0947 \u092E\u0947\u0932 \u0916\u093E\u0908 \u0938\u093E\u092E\u0917\u094D\u0930\u0940 \u0915\u094B \u092B\u093F\u0930 \u0938\u0947 \u092E\u093F\u0932\u093E\u090F\u0902",jobs_enqueued:"\u091C\u0949\u092C\u094D\u0938 \u0915\u0924\u093E\u0930 \u092E\u0947\u0902 \u0932\u0917\u093E\u0908 \u0917\u0908\u0902",latency:"\u0932\u0947\u091F\u0947\u0902\u0938\u0940",match_content_by_external_api_search:"\u092C\u093E\u0939\u0930\u0940 API \u0916\u094B\u091C \u0938\u0947 \u0938\u093E\u092E\u0917\u094D\u0930\u0940 \u0915\u093E \u092E\u093F\u0932\u093E\u0928 \u0915\u0930\u0947\u0902",match_content_by_local_search:"\u0938\u094D\u0925\u093E\u0928\u0940\u092F \u0916\u094B\u091C \u0938\u0947 \u0938\u093E\u092E\u0917\u094D\u0930\u0940 \u0915\u093E \u092E\u093F\u0932\u093E\u0928 \u0915\u0930\u0947\u0902",payload:"\u092A\u0947\u0932\u094B\u0921",pending:"\u092C\u0915\u093E\u092F\u093E",priority:"\u092A\u094D\u0930\u093E\u0925\u092E\u093F\u0915\u0924\u093E",process_orphaned_torrents_only:"\u0915\u0947\u0935\u0932 \u0905\u0928\u093E\u0925 \u091F\u094B\u0930\u0947\u0902\u091F\u094D\u0938 \u0915\u094B \u092A\u094D\u0930\u094B\u0938\u0947\u0938 \u0915\u0930\u0947\u0902",processed:"\u092A\u094D\u0930\u0938\u0902\u0938\u094D\u0915\u0943\u0924",purge_jobs:"\u091C\u0949\u092C\u094D\u0938 \u0915\u094B \u0938\u093E\u092B\u093C \u0915\u0930\u0947\u0902",purge_queue_jobs:"\u0915\u0924\u093E\u0930 \u0915\u0947 \u091C\u0949\u092C\u094D\u0938 \u0915\u094B \u0938\u093E\u092B\u093C \u0915\u0930\u0947\u0902",queue:"\u0915\u0924\u093E\u0930",queue_purged:"\u0915\u0924\u093E\u0930 \u0915\u094B \u0938\u093E\u092B\u093C \u0915\u093F\u092F\u093E \u0917\u092F\u093E",queues:"\u0915\u0924\u093E\u0930\u0947\u0902",ran_at:"\u091A\u0932\u093E\u092F\u093E \u0917\u092F\u093E \u0938\u092E\u092F",retry:"\u092A\u0941\u0928\u0903 \u092A\u094D\u0930\u092F\u093E\u0938 \u0915\u0930\u0947\u0902",total_counts_by_status:"\u0938\u094D\u0925\u093F\u0924\u093F \u0926\u094D\u0935\u093E\u0930\u093E \u0915\u0941\u0932 \u0917\u0923\u0928\u093E"}},facets:{content_type:"\u0938\u093E\u092E\u0917\u094D\u0930\u0940 \u092A\u094D\u0930\u0915\u093E\u0930",file_type:"\u092B\u093C\u093E\u0907\u0932 \u092A\u094D\u0930\u0915\u093E\u0930",genre:"\u0936\u0948\u0932\u0940",language:"\u092D\u093E\u0937\u093E",queue:"\u0915\u0924\u093E\u0930",status:"\u0938\u094D\u0925\u093F\u0924\u093F",torrent_source:"\u091F\u094B\u0930\u0947\u0902\u091F \u0938\u094D\u0930\u094B\u0924",torrent_tag:"\u091F\u094B\u0930\u0947\u0902\u091F \u091F\u0948\u0917",video_resolution:"\u0935\u0940\u0921\u093F\u092F\u094B \u0930\u093F\u091C\u093C\u0949\u0932\u094D\u092F\u0942\u0936\u0928",video_source:"\u0935\u0940\u0921\u093F\u092F\u094B \u0938\u094D\u0930\u094B\u0924"},file_types:{archive:"\u0906\u0930\u094D\u0915\u093E\u0907\u0935",audio:"\u0911\u0921\u093F\u092F\u094B",data:"\u0921\u0947\u091F\u093E",document:"\u0926\u0938\u094D\u0924\u093E\u0935\u0947\u091C\u093C",image:"\u091B\u0935\u093F",software:"\u0938\u0949\u092B\u093C\u094D\u091F\u0935\u0947\u092F\u0930",subtitles:"\u0909\u092A\u0936\u0940\u0930\u094D\u0937\u0915",unknown:"\u0905\u091C\u094D\u091E\u093E\u0924",video:"\u0935\u0940\u0921\u093F\u092F\u094B"},general:{all:"\u0938\u092D\u0940",dismiss:"\u0916\u093E\u0930\u093F\u091C \u0915\u0930\u0947\u0902",error:"\u0924\u094D\u0930\u0941\u091F\u093F",none:"\u0915\u094B\u0908 \u0928\u0939\u0940\u0902",refresh:"\u0924\u093E\u091C\u093C\u093E \u0915\u0930\u0947\u0902",status:"\u0938\u094D\u0925\u093F\u0924\u093F"},health:{bitmagnet_is_status:"bitmagnet {{status}} \u0939\u0948",check_failed_with_error:"\u0924\u094D\u0930\u0941\u091F\u093F \u0915\u0947 \u0938\u093E\u0925 \u091C\u093E\u0902\u091A \u0935\u093F\u092B\u0932",component:"\u0918\u091F\u0915",components:{dht:"DHT",postgres:"Postgres",tmdb:"TMDB"},dismiss:"\u0916\u093E\u0930\u093F\u091C \u0915\u0930\u0947\u0902",error:"\u0924\u094D\u0930\u0941\u091F\u093F",status:"\u0938\u094D\u0925\u093F\u0924\u093F",statuses:{degraded:"\u0915\u094D\u0937\u0940\u0923",down:"\u092C\u0902\u0926",error:"\u0924\u094D\u0930\u0941\u091F\u093F",inactive:"\u0928\u093F\u0937\u094D\u0915\u094D\u0930\u093F\u092F",started:"\u0936\u0941\u0930\u0942 \u0915\u093F\u092F\u093E \u0917\u092F\u093E",unknown:"\u0932\u0902\u092C\u093F\u0924",up:"\u091A\u093E\u0932\u0942"},summary:"\u0938\u094D\u0935\u093E\u0938\u094D\u0925\u094D\u092F \u0938\u093E\u0930\u093E\u0902\u0936",worker:"\u0915\u093E\u0930\u094D\u092F\u0915\u0930\u094D\u0924\u093E",workers:{dht_crawler:"DHT \u0915\u094D\u0930\u0949\u0932\u0930",http_server:"HTTP \u0938\u0930\u094D\u0935\u0930",queue_server:"\u0915\u0924\u093E\u0930 \u0938\u0930\u094D\u0935\u0930"}},languages:{af:"\u0905\u092B\u094D\u0930\u0940\u0915\u0940",ar:"\u0905\u0930\u092C\u0940",az:"\u0905\u091C\u093C\u0947\u0930\u0940",be:"\u092C\u0947\u0932\u093E\u0930\u0942\u0938\u0940",bg:"\u092C\u0941\u0932\u094D\u0917\u093E\u0930\u093F\u092F\u093E\u0908",bs:"\u092C\u094B\u0938\u094D\u0928\u093F\u092F\u093E\u0908",ca:"\u0915\u0948\u091F\u0932\u0928",ce:"\u091A\u0947\u091A\u0947\u0928",co:"\u0915\u094B\u0930\u094D\u0938\u093F\u0915\u0928",cs:"\u091A\u0947\u0915",cy:"\u0935\u0947\u0932\u094D\u0936",da:"\u0921\u0947\u0928\u093F\u0936",de:"\u091C\u0930\u094D\u092E\u0928",el:"\u0917\u094D\u0930\u0940\u0915",en:"\u0905\u0902\u0917\u094D\u0930\u0947\u091C\u0940",es:"\u0938\u094D\u092A\u0948\u0928\u093F\u0936",et:"\u090F\u0938\u094D\u0924\u094B\u0928\u093F\u092F\u093E\u0908",eu:"\u092C\u093E\u0938\u094D\u0915",fa:"\u092B\u093E\u0930\u0938\u0940",fi:"\u092B\u093C\u093F\u0928\u093F\u0936",fr:"\u092B\u094D\u0930\u0947\u0902\u091A",he:"\u0939\u093F\u092C\u094D\u0930\u0942",hi:"\u0939\u093F\u0902\u0926\u0940",hr:"\u0915\u094D\u0930\u094B\u090F\u0936\u093F\u092F\u093E\u0908",hu:"\u0939\u0902\u0917\u0947\u0930\u093F\u092F\u0928",hy:"\u0906\u0930\u094D\u092E\u0947\u0928\u093F\u092F\u093E\u0908",id:"\u0907\u0902\u0921\u094B\u0928\u0947\u0936\u093F\u092F\u093E\u0908",is:"\u0906\u0907\u0938\u0932\u0948\u0902\u0921\u093F\u0915",it:"\u0907\u0924\u093E\u0932\u0935\u0940",ja:"\u091C\u093E\u092A\u093E\u0928\u0940",ka:"\u091C\u0949\u0930\u094D\u091C\u093F\u092F\u093E\u0908",ko:"\u0915\u094B\u0930\u093F\u092F\u093E\u0908",ku:"\u0915\u0941\u0930\u094D\u0926\u0940",lt:"\u0932\u093F\u0925\u0941\u0906\u0928\u093F\u092F\u093E\u0908",lv:"\u0932\u093E\u0924\u0935\u093F\u092F\u093E\u0908",mi:"\u092E\u093E\u0913\u0930\u0940",mk:"\u092E\u0948\u0938\u093F\u0921\u094B\u0928\u093F\u092F\u093E\u0908",ml:"\u092E\u0932\u092F\u093E\u0932\u092E",mn:"\u092E\u0902\u0917\u094B\u0932\u093F\u092F\u093E\u0908",ms:"\u092E\u0932\u092F",mt:"\u092E\u093E\u0932\u094D\u091F\u0940\u091C\u093C",nl:"\u0921\u091A",no:"\u0928\u0949\u0930\u094D\u0935\u0947\u091C\u093F\u092F\u0928",pl:"\u092A\u094B\u0932\u093F\u0936",pt:"\u092A\u0941\u0930\u094D\u0924\u0917\u093E\u0932\u0940",ro:"\u0930\u094B\u092E\u093E\u0928\u093F\u092F\u093E\u0908",ru:"\u0930\u0942\u0938\u0940",sa:"\u0938\u0902\u0938\u094D\u0915\u0943\u0924",sk:"\u0938\u094D\u0932\u094B\u0935\u093E\u0915",sl:"\u0938\u094D\u0932\u094B\u0935\u0947\u0928\u093F\u092F\u093E\u0908",sm:"\u0938\u093E\u092E\u094B\u0928",so:"\u0938\u094B\u092E\u093E\u0932\u0940",sr:"\u0938\u0930\u094D\u092C\u093F\u092F\u093E\u0908",sv:"\u0938\u094D\u0935\u0940\u0921\u093F\u0936",ta:"\u0924\u092E\u093F\u0932",th:"\u0925\u093E\u0908",tr:"\u0924\u0941\u0930\u094D\u0915\u0940",uk:"\u092F\u0942\u0915\u094D\u0930\u0947\u0928\u0940",vi:"\u0935\u093F\u092F\u0924\u0928\u093E\u092E\u0940",yi:"\u092F\u093F\u0926\u094D\u0926\u093F\u0936",zh:"\u091A\u0940\u0928\u0940",zu:"\u091C\u093C\u0941\u0932\u0941"},layout:{bitmagnet_on_service:"{{service}} \u092A\u0930 bitmagnet",change_theme:"\u0925\u0940\u092E \u092C\u0926\u0932\u0947\u0902",external_links:"\u092C\u093E\u0939\u0930\u0940 \u0932\u093F\u0902\u0915",sponsor:"\u092A\u094D\u0930\u093E\u092F\u094B\u091C\u0915",support_bitmagnet:"bitmagnet \u0915\u094B \u0938\u092E\u0930\u094D\u0925\u0928 \u0926\u0947\u0902",translate:"\u0905\u0928\u0941\u0935\u093E\u0926 \u0915\u0930\u0947\u0902"},paginator:{first_page:"\u092A\u0939\u0932\u093E \u092A\u0943\u0937\u094D\u0920",items_per_page:"\u092A\u094D\u0930\u0924\u093F \u092A\u0943\u0937\u094D\u0920 \u0906\u0907\u091F\u092E",last_page:"\u0905\u0902\u0924\u093F\u092E \u092A\u0943\u0937\u094D\u0920",next_page:"\u0905\u0917\u0932\u093E \u092A\u0943\u0937\u094D\u0920",previous_page:"\u092A\u093F\u091B\u0932\u093E \u092A\u0943\u0937\u094D\u0920",x_to_y:"{{x}} \u0938\u0947 {{y}} \u0924\u0915",x_to_y_of_z:"{{x}} \u0938\u0947 {{y}} \u0924\u0915 {{z}} \u092E\u0947\u0902"},routes:{admin:"\u092A\u094D\u0930\u0936\u093E\u0938\u0915",dashboard:"\u0921\u0948\u0936\u092C\u094B\u0930\u094D\u0921",home:"\u0939\u094B\u092E",jobs:"\u0928\u094C\u0915\u0930\u093F\u092F\u093E\u0902",queues:"\u0915\u0924\u093E\u0930\u0947\u0902",torrents:"\u091F\u094B\u0930\u0947\u0902\u091F\u094D\u0938",visualize:"\u0926\u0943\u0936\u094D\u092F \u0915\u0930\u0947\u0902"},torrents:{clear_search:"\u0916\u094B\u091C \u0938\u093E\u092B\u093C \u0915\u0930\u0947\u0902",copy:"\u0915\u0949\u092A\u0940 \u0915\u0930\u0947\u0902",copy_to_clipboard:"\u0915\u094D\u0932\u093F\u092A\u092C\u094B\u0930\u094D\u0921 \u092E\u0947\u0902 \u0915\u0949\u092A\u0940 \u0915\u0930\u0947\u0902",delete:"\u0939\u091F\u093E\u090F\u0902",delete_action_cannot_be_undone:"\u092F\u0939 \u0915\u094D\u0930\u093F\u092F\u093E \u092A\u0942\u0930\u094D\u0935\u0935\u0924 \u0928\u0939\u0940\u0902 \u0915\u0940 \u091C\u093E \u0938\u0915\u0924\u0940",delete_are_you_sure:"\u0915\u094D\u092F\u093E \u0906\u092A \u0935\u093E\u0915\u0908 \u0907\u0938 \u091F\u094B\u0930\u0947\u0902\u091F \u0915\u094B \u0939\u091F\u093E\u0928\u093E \u091A\u093E\u0939\u0924\u0947 \u0939\u0948\u0902?",deselect_all:"\u0938\u092D\u0940 \u0915\u094B \u0905\u091A\u092F\u0928\u093F\u0924 \u0915\u0930\u0947\u0902",edit_tags:"\u091F\u0948\u0917 \u0938\u0902\u092A\u093E\u0926\u093F\u0924 \u0915\u0930\u0947\u0902",episodes:"\u090F\u092A\u093F\u0938\u094B\u0921\u094D\u0938",external_links:"\u092C\u093E\u0939\u0930\u0940 \u0932\u093F\u0902\u0915",file_index:"\u092B\u093C\u093E\u0907\u0932 \u0938\u0942\u091A\u0915\u093E\u0902\u0915",file_path:"\u092B\u093C\u093E\u0907\u0932 \u092A\u0925",file_size:"\u092B\u093C\u093E\u0907\u0932 \u0906\u0915\u093E\u0930",file_type:"\u092B\u093C\u093E\u0907\u0932 \u092A\u094D\u0930\u0915\u093E\u0930",files:"\u092B\u093C\u093E\u0907\u0932\u0947\u0902",files_count_n:"{{count}} \u092B\u093C\u093E\u0907\u0932\u0947\u0902",files_no_info:"\u0915\u094B\u0908 \u092B\u093C\u093E\u0907\u0932 \u091C\u093E\u0928\u0915\u093E\u0930\u0940 \u0909\u092A\u0932\u092C\u094D\u0927 \u0928\u0939\u0940\u0902 \u0939\u0948",files_single:"\u090F\u0915\u0932 \u092B\u093C\u093E\u0907\u0932",genres:"\u0936\u0948\u0932\u093F\u092F\u093E\u0901",info_hash:"\u0938\u0942\u091A\u0928\u093E \u0939\u0948\u0936",info_hashes:"\u0938\u0942\u091A\u0928\u093E \u0939\u0948\u0936\u0947\u091C",languages:"\u092D\u093E\u0937\u093E\u090F\u0901",leechers:"\u0932\u0940\u091A\u0930\u094D\u0938",magnet:"\u092E\u0948\u0917\u094D\u0928\u0947\u091F",magnet_links:"\u092E\u0948\u0917\u094D\u0928\u0947\u091F \u0932\u093F\u0902\u0915",new_tag:"\u0928\u092F\u093E \u091F\u0948\u0917",order_by:"\u0915\u094D\u0930\u092E\u092C\u0926\u094D\u0927 \u0915\u0930\u0947\u0902",order_direction_toggle:"\u0926\u093F\u0936\u093E \u092C\u0926\u0932\u0947\u0902",ordering:{files_count:"\u092B\u093C\u093E\u0907\u0932\u094B\u0902 \u0915\u0940 \u0938\u0902\u0916\u094D\u092F\u093E",info_hash:"\u0938\u0942\u091A\u0928\u093E \u0939\u0948\u0936",leechers:"\u0932\u0940\u091A\u0930\u094D\u0938",name:"\u0928\u093E\u092E",published_at:"\u092A\u094D\u0930\u0915\u093E\u0936\u093F\u0924 \u0938\u092E\u092F",relevance:"\u092A\u094D\u0930\u093E\u0938\u0902\u0917\u093F\u0915\u0924\u093E",seeders:"\u0938\u0940\u0921\u0930\u094D\u0938",size:"\u0906\u0915\u093E\u0930",updated_at:"\u0905\u092A\u0921\u0947\u091F \u0938\u092E\u092F"},original_release_date:"\u092E\u0942\u0932 \u0930\u093F\u0932\u0940\u091C\u093C \u0924\u093F\u0925\u093F",permalink:"\u0938\u094D\u0925\u093E\u092F\u0940 \u0932\u093F\u0902\u0915",poster:"\u092A\u094B\u0938\u094D\u091F\u0930",published:"\u092A\u094D\u0930\u0915\u093E\u0936\u093F\u0924",rating:"\u0930\u0947\u091F\u093F\u0902\u0917",refresh:"\u092A\u0930\u093F\u0923\u093E\u092E \u0924\u093E\u091C\u093C\u093E \u0915\u0930\u0947\u0902",s_l:"S / L",search:"\u0916\u094B\u091C",seeders:"\u0938\u0940\u0921\u0930\u094D\u0938",select_all:"\u0938\u092D\u0940 \u0915\u093E \u091A\u092F\u0928 \u0915\u0930\u0947\u0902",showing_x_of_y_files:"{{x}} \u092E\u0947\u0902 \u0938\u0947 {{y}} \u092B\u093C\u093E\u0907\u0932\u0947\u0902 \u0926\u093F\u0916\u093E \u0930\u0939\u093E \u0939\u0948",size:"\u0906\u0915\u093E\u0930",source:"\u091F\u094B\u0930\u0947\u0902\u091F \u0938\u094D\u0930\u094B\u0924",summary:"\u0938\u093E\u0930\u093E\u0902\u0936",title:"\u0936\u0940\u0930\u094D\u0937\u0915",toggle_drawer:"\u0921\u094D\u0930\u0949\u0905\u0930 \u092C\u0926\u0932\u0947\u0902",votes_count_n:"{{count}} \u0935\u094B\u091F"},version:{bitmagnet_version:"bitmagnet \u0938\u0902\u0938\u094D\u0915\u0930\u0923 {{version}}",unknown:"\u0905\u091C\u094D\u091E\u093E\u0924"}};var at={content_types:{plural:{all:"\u3059\u3079\u3066",audiobook:"\u30AA\u30FC\u30C7\u30A3\u30AA\u30D6\u30C3\u30AF",comic:"\u30B3\u30DF\u30C3\u30AF",ebook:"\u96FB\u5B50\u66F8\u7C4D",movie:"\u6620\u753B",music:"\u97F3\u697D",null:"\u4E0D\u660E",software:"\u30BD\u30D5\u30C8\u30A6\u30A7\u30A2",tv_show:"\u30C6\u30EC\u30D3\u756A\u7D44",xxx:"\u30DD\u30EB\u30CE"},singular:{audiobook:"\u30AA\u30FC\u30C7\u30A3\u30AA\u30D6\u30C3\u30AF",comic:"\u30B3\u30DF\u30C3\u30AF",ebook:"\u96FB\u5B50\u66F8\u7C4D",movie:"\u6620\u753B",music:"\u97F3\u697D",null:"\u4E0D\u660E",software:"\u30BD\u30D5\u30C8\u30A6\u30A7\u30A2",tv_show:"\u30C6\u30EC\u30D3\u756A\u7D44",xxx:"\u30DD\u30EB\u30CE"}},dashboard:{event:{created:"\u4F5C\u6210\u6E08\u307F",failed:"\u5931\u6557",processed:"\u51E6\u7406\u6E08\u307F",updated:"\u66F4\u65B0\u6E08\u307F"},interval:{all:"\u3059\u3079\u3066",days:"\u65E5",days_1:"1\u65E5",hours:"\u6642\u9593",hours_1:"1\u6642\u9593",hours_12:"12\u6642\u9593",hours_6:"6\u6642\u9593",minutes:"\u5206",minutes_1:"1\u5206",minutes_15:"15\u5206",minutes_30:"30\u5206",minutes_5:"5\u5206",off:"\u30AA\u30D5",seconds_10:"10\u79D2",seconds_30:"30\u79D2",weeks_1:"1\u9031\u9593"},metrics:{event:"\u30A4\u30D9\u30F3\u30C8",resolution:"\u89E3\u50CF\u5EA6",throughput:"\u30B9\u30EB\u30FC\u30D7\u30C3\u30C8",timeframe:"\u671F\u9593"},queues:{created:"\u4F5C\u6210\u6E08\u307F",created_at:"\u4F5C\u6210\u65E5\u6642",enqueue_jobs:"\u30B8\u30E7\u30D6\u3092\u30AD\u30E5\u30FC\u306B\u5165\u308C\u308B",enqueue_torrent_processing_batch:"\u30C8\u30EC\u30F3\u30C8\u51E6\u7406\u30D0\u30C3\u30C1\u3092\u30AD\u30E5\u30FC\u306B\u5165\u308C\u308B",failed:"\u5931\u6557",force_rematch:"\u65E2\u306B\u4E00\u81F4\u3057\u305F\u30B3\u30F3\u30C6\u30F3\u30C4\u3092\u5F37\u5236\u7684\u306B\u518D\u4E00\u81F4\u3055\u305B\u308B",jobs_enqueued:"\u30AD\u30E5\u30FC\u306B\u8FFD\u52A0\u3055\u308C\u305F\u30B8\u30E7\u30D6",latency:"\u30EC\u30A4\u30C6\u30F3\u30B7",match_content_by_external_api_search:"\u5916\u90E8API\u691C\u7D22\u3067\u30B3\u30F3\u30C6\u30F3\u30C4\u3092\u4E00\u81F4\u3055\u305B\u308B",match_content_by_local_search:"\u30ED\u30FC\u30AB\u30EB\u691C\u7D22\u3067\u30B3\u30F3\u30C6\u30F3\u30C4\u3092\u4E00\u81F4\u3055\u305B\u308B",payload:"\u30DA\u30A4\u30ED\u30FC\u30C9",pending:"\u4FDD\u7559\u4E2D",priority:"\u512A\u5148\u9806\u4F4D",process_orphaned_torrents_only:"\u5B64\u7ACB\u3057\u305F\u30C8\u30EC\u30F3\u30C8\u306E\u307F\u51E6\u7406\u3059\u308B",processed:"\u51E6\u7406\u6E08\u307F",purge_jobs:"\u30B8\u30E7\u30D6\u3092\u524A\u9664",purge_queue_jobs:"\u30AD\u30E5\u30FC\u5185\u306E\u30B8\u30E7\u30D6\u3092\u524A\u9664",queue:"\u30AD\u30E5\u30FC",queue_purged:"\u30AD\u30E5\u30FC\u304C\u30AF\u30EA\u30A2\u3055\u308C\u307E\u3057\u305F",queues:"\u30AD\u30E5\u30FC",ran_at:"\u5B9F\u884C\u6642\u523B",retry:"\u518D\u8A66\u884C",total_counts_by_status:"\u30B9\u30C6\u30FC\u30BF\u30B9\u3054\u3068\u306E\u7DCF\u6570"}},facets:{content_type:"\u30B3\u30F3\u30C6\u30F3\u30C4\u30BF\u30A4\u30D7",file_type:"\u30D5\u30A1\u30A4\u30EB\u30BF\u30A4\u30D7",genre:"\u30B8\u30E3\u30F3\u30EB",language:"\u8A00\u8A9E",queue:"\u30AD\u30E5\u30FC",status:"\u30B9\u30C6\u30FC\u30BF\u30B9",torrent_source:"\u30C8\u30EC\u30F3\u30C8\u30BD\u30FC\u30B9",torrent_tag:"\u30C8\u30EC\u30F3\u30C8\u30BF\u30B0",video_resolution:"\u30D3\u30C7\u30AA\u89E3\u50CF\u5EA6",video_source:"\u30D3\u30C7\u30AA\u30BD\u30FC\u30B9"},file_types:{archive:"\u30A2\u30FC\u30AB\u30A4\u30D6",audio:"\u30AA\u30FC\u30C7\u30A3\u30AA",data:"\u30C7\u30FC\u30BF",document:"\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8",image:"\u753B\u50CF",software:"\u30BD\u30D5\u30C8\u30A6\u30A7\u30A2",subtitles:"\u5B57\u5E55",unknown:"\u4E0D\u660E",video:"\u30D3\u30C7\u30AA"},general:{all:"\u3059\u3079\u3066",dismiss:"\u9589\u3058\u308B",error:"\u30A8\u30E9\u30FC",none:"\u306A\u3057",refresh:"\u66F4\u65B0",status:"\u30B9\u30C6\u30FC\u30BF\u30B9"},health:{bitmagnet_is_status:"bitmagnet\u306F{{status}}\u3067\u3059",check_failed_with_error:"\u30A8\u30E9\u30FC\u3067\u30C1\u30A7\u30C3\u30AF\u306B\u5931\u6557\u3057\u307E\u3057\u305F",component:"\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8",components:{dht:"DHT",postgres:"Postgres",tmdb:"TMDB"},dismiss:"\u9589\u3058\u308B",error:"\u30A8\u30E9\u30FC",status:"\u30B9\u30C6\u30FC\u30BF\u30B9",statuses:{degraded:"\u4F4E\u4E0B",down:"\u505C\u6B62",error:"\u30A8\u30E9\u30FC",inactive:"\u975E\u30A2\u30AF\u30C6\u30A3\u30D6",started:"\u958B\u59CB",unknown:"\u4FDD\u7559\u4E2D",up:"\u7A3C\u50CD\u4E2D"},summary:"\u5065\u5EB7\u72B6\u614B\u306E\u6982\u8981",worker:"\u30EF\u30FC\u30AB\u30FC",workers:{dht_crawler:"DHT\u30AF\u30ED\u30FC\u30E9\u30FC",http_server:"HTTP\u30B5\u30FC\u30D0\u30FC",queue_server:"\u30AD\u30E5\u30FC\u30B5\u30FC\u30D0\u30FC"}},languages:{af:"\u30A2\u30D5\u30EA\u30AB\u30FC\u30F3\u30B9\u8A9E",ar:"\u30A2\u30E9\u30D3\u30A2\u8A9E",az:"\u30A2\u30BC\u30EB\u30D0\u30A4\u30B8\u30E3\u30F3\u8A9E",be:"\u30D9\u30E9\u30EB\u30FC\u30B7\u8A9E",bg:"\u30D6\u30EB\u30AC\u30EA\u30A2\u8A9E",bs:"\u30DC\u30B9\u30CB\u30A2\u8A9E",ca:"\u30AB\u30BF\u30EB\u30FC\u30CB\u30E3\u8A9E",ce:"\u30C1\u30A7\u30C1\u30A7\u30F3\u8A9E",co:"\u30B3\u30EB\u30B7\u30AB\u8A9E",cs:"\u30C1\u30A7\u30B3\u8A9E",cy:"\u30A6\u30A7\u30FC\u30EB\u30BA\u8A9E",da:"\u30C7\u30F3\u30DE\u30FC\u30AF\u8A9E",de:"\u30C9\u30A4\u30C4\u8A9E",el:"\u30AE\u30EA\u30B7\u30E3\u8A9E",en:"\u82F1\u8A9E",es:"\u30B9\u30DA\u30A4\u30F3\u8A9E",et:"\u30A8\u30B9\u30C8\u30CB\u30A2\u8A9E",eu:"\u30D0\u30B9\u30AF\u8A9E",fa:"\u30DA\u30EB\u30B7\u30E3\u8A9E",fi:"\u30D5\u30A3\u30F3\u30E9\u30F3\u30C9\u8A9E",fr:"\u30D5\u30E9\u30F3\u30B9\u8A9E",he:"\u30D8\u30D6\u30E9\u30A4\u8A9E",hi:"\u30D2\u30F3\u30C7\u30A3\u30FC\u8A9E",hr:"\u30AF\u30ED\u30A2\u30C1\u30A2\u8A9E",hu:"\u30CF\u30F3\u30AC\u30EA\u30FC\u8A9E",hy:"\u30A2\u30EB\u30E1\u30CB\u30A2\u8A9E",id:"\u30A4\u30F3\u30C9\u30CD\u30B7\u30A2\u8A9E",is:"\u30A2\u30A4\u30B9\u30E9\u30F3\u30C9\u8A9E",it:"\u30A4\u30BF\u30EA\u30A2\u8A9E",ja:"\u65E5\u672C\u8A9E",ka:"\u30B0\u30EB\u30B8\u30A2\u8A9E",ko:"\u97D3\u56FD\u8A9E",ku:"\u30AF\u30EB\u30C9\u8A9E",lt:"\u30EA\u30C8\u30A2\u30CB\u30A2\u8A9E",lv:"\u30E9\u30C8\u30D3\u30A2\u8A9E",mi:"\u30DE\u30AA\u30EA\u8A9E",mk:"\u30DE\u30B1\u30C9\u30CB\u30A2\u8A9E",ml:"\u30DE\u30E9\u30E4\u30FC\u30E9\u30E0\u8A9E",mn:"\u30E2\u30F3\u30B4\u30EB\u8A9E",ms:"\u30DE\u30EC\u30FC\u8A9E",mt:"\u30DE\u30EB\u30BF\u8A9E",nl:"\u30AA\u30E9\u30F3\u30C0\u8A9E",no:"\u30CE\u30EB\u30A6\u30A7\u30FC\u8A9E",pl:"\u30DD\u30FC\u30E9\u30F3\u30C9\u8A9E",pt:"\u30DD\u30EB\u30C8\u30AC\u30EB\u8A9E",ro:"\u30EB\u30FC\u30DE\u30CB\u30A2\u8A9E",ru:"\u30ED\u30B7\u30A2\u8A9E",sa:"\u30B5\u30F3\u30B9\u30AF\u30EA\u30C3\u30C8",sk:"\u30B9\u30ED\u30D0\u30AD\u30A2\u8A9E",sl:"\u30B9\u30ED\u30D9\u30CB\u30A2\u8A9E",sm:"\u30B5\u30E2\u30A2\u8A9E",so:"\u30BD\u30DE\u30EA\u8A9E",sr:"\u30BB\u30EB\u30D3\u30A2\u8A9E",sv:"\u30B9\u30A6\u30A7\u30FC\u30C7\u30F3\u8A9E",ta:"\u30BF\u30DF\u30EB\u8A9E",th:"\u30BF\u30A4\u8A9E",tr:"\u30C8\u30EB\u30B3\u8A9E",uk:"\u30A6\u30AF\u30E9\u30A4\u30CA\u8A9E",vi:"\u30D9\u30C8\u30CA\u30E0\u8A9E",yi:"\u30A4\u30C7\u30A3\u30C3\u30B7\u30E5\u8A9E",zh:"\u4E2D\u56FD\u8A9E",zu:"\u30BA\u30FC\u30EB\u30FC\u8A9E"},layout:{bitmagnet_on_service:"{{service}}\u306Ebitmagnet",change_theme:"\u30C6\u30FC\u30DE\u3092\u5909\u66F4",external_links:"\u5916\u90E8\u30EA\u30F3\u30AF",sponsor:"\u30B9\u30DD\u30F3\u30B5\u30FC",support_bitmagnet:"bitmagnet\u3092\u30B5\u30DD\u30FC\u30C8",translate:"\u7FFB\u8A33\u3059\u308B"},paginator:{first_page:"\u6700\u521D\u306E\u30DA\u30FC\u30B8",items_per_page:"\u30DA\u30FC\u30B8\u3042\u305F\u308A\u306E\u9805\u76EE\u6570",last_page:"\u6700\u5F8C\u306E\u30DA\u30FC\u30B8",next_page:"\u6B21\u306E\u30DA\u30FC\u30B8",previous_page:"\u524D\u306E\u30DA\u30FC\u30B8",x_to_y:"{{x}} \u304B\u3089 {{y}} \u307E\u3067",x_to_y_of_z:"{{x}} \u304B\u3089 {{y}} \u307E\u3067\u306E {{z}}"},routes:{admin:"\u7BA1\u7406\u8005",dashboard:"\u30C0\u30C3\u30B7\u30E5\u30DC\u30FC\u30C9",home:"\u30DB\u30FC\u30E0",jobs:"\u30B8\u30E7\u30D6",queues:"\u30AD\u30E5\u30FC",torrents:"\u30C8\u30EC\u30F3\u30C8",visualize:"\u53EF\u8996\u5316"},torrents:{clear_search:"\u691C\u7D22\u3092\u30AF\u30EA\u30A2",copy:"\u30B3\u30D4\u30FC",copy_to_clipboard:"\u30AF\u30EA\u30C3\u30D7\u30DC\u30FC\u30C9\u306B\u30B3\u30D4\u30FC",delete:"\u524A\u9664",delete_action_cannot_be_undone:"\u3053\u306E\u64CD\u4F5C\u306F\u5143\u306B\u623B\u305B\u307E\u305B\u3093",delete_are_you_sure:"\u3053\u306E\u30C8\u30EC\u30F3\u30C8\u3092\u524A\u9664\u3057\u3066\u3082\u3088\u308D\u3057\u3044\u3067\u3059\u304B\uFF1F",deselect_all:"\u3059\u3079\u3066\u306E\u9078\u629E\u3092\u89E3\u9664",edit_tags:"\u30BF\u30B0\u3092\u7DE8\u96C6",episodes:"\u30A8\u30D4\u30BD\u30FC\u30C9",external_links:"\u5916\u90E8\u30EA\u30F3\u30AF",file_index:"\u30D5\u30A1\u30A4\u30EB\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9",file_path:"\u30D5\u30A1\u30A4\u30EB\u30D1\u30B9",file_size:"\u30D5\u30A1\u30A4\u30EB\u30B5\u30A4\u30BA",file_type:"\u30D5\u30A1\u30A4\u30EB\u30BF\u30A4\u30D7",files:"\u30D5\u30A1\u30A4\u30EB",files_count_n:"{{count}} \u4EF6\u306E\u30D5\u30A1\u30A4\u30EB",files_no_info:"\u30D5\u30A1\u30A4\u30EB\u60C5\u5831\u306F\u3042\u308A\u307E\u305B\u3093",files_single:"\u5358\u4E00\u30D5\u30A1\u30A4\u30EB",genres:"\u30B8\u30E3\u30F3\u30EB",info_hash:"\u60C5\u5831\u30CF\u30C3\u30B7\u30E5",info_hashes:"\u60C5\u5831\u30CF\u30C3\u30B7\u30E5",languages:"\u8A00\u8A9E",leechers:"\u30EA\u30FC\u30C1\u30E3\u30FC",magnet:"\u30DE\u30B0\u30CD\u30C3\u30C8",magnet_links:"\u30DE\u30B0\u30CD\u30C3\u30C8\u30EA\u30F3\u30AF",new_tag:"\u65B0\u3057\u3044\u30BF\u30B0",order_by:"\u4E26\u3073\u66FF\u3048",order_direction_toggle:"\u4E26\u3073\u9806\u3092\u5207\u308A\u66FF\u3048",ordering:{files_count:"\u30D5\u30A1\u30A4\u30EB\u6570",info_hash:"\u60C5\u5831\u30CF\u30C3\u30B7\u30E5",leechers:"\u30EA\u30FC\u30C1\u30E3\u30FC",name:"\u540D\u524D",published_at:"\u516C\u958B\u65E5\u6642",relevance:"\u95A2\u9023\u6027",seeders:"\u30B7\u30FC\u30C0\u30FC",size:"\u30B5\u30A4\u30BA",updated_at:"\u66F4\u65B0\u65E5\u6642"},original_release_date:"\u30AA\u30EA\u30B8\u30CA\u30EB\u306E\u767A\u58F2\u65E5",permalink:"\u30D1\u30FC\u30DE\u30EA\u30F3\u30AF",poster:"\u30DD\u30B9\u30BF\u30FC",published:"\u516C\u958B\u6E08\u307F",rating:"\u8A55\u4FA1",refresh:"\u7D50\u679C\u3092\u66F4\u65B0",s_l:"S / L",search:"\u691C\u7D22",seeders:"\u30B7\u30FC\u30C0\u30FC",select_all:"\u3059\u3079\u3066\u9078\u629E",showing_x_of_y_files:"{{x}} \u4EF6\u4E2D {{y}} \u4EF6\u8868\u793A",size:"\u30B5\u30A4\u30BA",source:"\u30C8\u30EC\u30F3\u30C8\u30BD\u30FC\u30B9",summary:"\u6982\u8981",title:"\u30BF\u30A4\u30C8\u30EB",toggle_drawer:"\u5F15\u304D\u51FA\u3057\u3092\u5207\u308A\u66FF\u3048",votes_count_n:"{{count}} \u7968"},version:{bitmagnet_version:"bitmagnet\u30D0\u30FC\u30B8\u30E7\u30F3 {{version}}",unknown:"\u4E0D\u660E"}};var ot={content_types:{plural:{all:"Alle",audiobook:"Audioboeken",comic:"Strips",ebook:"E-Boeken",movie:"Films",music:"Muziek",null:"Onbekend",software:"Software",tv_show:"Tv-programma's",xxx:"XXX"},singular:{audiobook:"Audioboek",comic:"Strip",ebook:"E-Book",movie:"Film",music:"Muziek",null:"Onbekend",software:"Software",tv_show:"Tv-programma",xxx:"XXX"}},dashboard:{event:{created:"Gemaakt",failed:"Mislukt",processed:"Verwerkt",updated:"Bijgewerkt"},interval:{all:"Alle",days:"Dagen",days_1:"1 dag",hours:"Uren",hours_1:"1 uur",hours_12:"12 uur",hours_6:"6 uur",minutes:"Minuten",minutes_1:"1 minuut",minutes_15:"15 minuten",minutes_30:"30 minuten",minutes_5:"5 minuten",off:"Uit",seconds_10:"10 seconden",seconds_30:"30 seconden",weeks_1:"1 week"},metrics:{event:"Gebeurtenis",resolution:"Resolutie",throughput:"Doorvoer",timeframe:"Tijdsperiode"},queues:{created:"Gemaakt",created_at:"Gemaakt op",enqueue_jobs:"Voeg taken toe aan wachtrij",enqueue_torrent_processing_batch:"Torrentverwerkingsbatch toevoegen",failed:"Mislukt",force_rematch:"Forceer nieuwe match van al gematchte inhoud",jobs_enqueued:"Taken in wachtrij gezet",latency:"Latentie",match_content_by_external_api_search:"Match inhoud via externe API-zoekopdracht",match_content_by_local_search:"Match inhoud via lokale zoekopdracht",payload:"Inhoud",pending:"In afwachting",priority:"Prioriteit",process_orphaned_torrents_only:"Verwerk alleen verweesde torrents",processed:"Verwerkt",purge_jobs:"Wis taken",purge_queue_jobs:"Wis wachtrijtaken",queue:"Wachtrij",queue_purged:"Wachtrij gewist",queues:"Wachtrijen",ran_at:"Uitgevoerd op",retry:"Opnieuw proberen",total_counts_by_status:"Totaal aantal per status"}},facets:{content_type:"Inhoudstype",file_type:"Bestandstype",genre:"Genre",language:"Taal",queue:"Wachtrij",status:"Status",torrent_source:"Torrentbron",torrent_tag:"Torrenttag",video_resolution:"Videoresolutie",video_source:"Videobron"},file_types:{archive:"Archief",audio:"Audio",data:"Data",document:"Document",image:"Afbeelding",software:"Software",subtitles:"Ondertitels",unknown:"Onbekend",video:"Video"},general:{all:"Alle",dismiss:"Sluiten",error:"Fout",none:"Geen",refresh:"Verversen",status:"Status"},health:{bitmagnet_is_status:"bitmagnet is {{status}}",check_failed_with_error:"Controle mislukt met foutmelding",component:"Component",components:{dht:"DHT",postgres:"Postgres",tmdb:"TMDB"},dismiss:"Sluiten",error:"Fout",status:"Status",statuses:{degraded:"Verlaagd",down:"Niet beschikbaar",error:"Fout",inactive:"Inactief",started:"Gestart",unknown:"Onbekend",up:"Beschikbaar"},summary:"Gezondheidsrapport",worker:"Werker",workers:{dht_crawler:"DHT crawler",http_server:"HTTP server",queue_server:"Wachtrijserver"}},languages:{af:"Afrikaans",ar:"Arabisch",az:"Azerbeidzjaans",be:"Wit-Russisch",bg:"Bulgaars",bs:"Bosnisch",ca:"Catalaans",ce:"Tsjetsjeens",co:"Corsicaans",cs:"Tsjechisch",cy:"Welsh",da:"Deens",de:"Duits",el:"Grieks",en:"Engels",es:"Spaans",et:"Ests",eu:"Baskisch",fa:"Perzisch",fi:"Fins",fr:"Frans",he:"Hebreeuws",hi:"Hindi",hr:"Kroatisch",hu:"Hongaars",hy:"Armeens",id:"Indonesisch",is:"IJslands",it:"Italiaans",ja:"Japans",ka:"Georgisch",ko:"Koreaans",ku:"Koerdisch",lt:"Litouws",lv:"Lets",mi:"Maori",mk:"Macedonisch",ml:"Malayalam",mn:"Mongools",ms:"Maleis",mt:"Maltees",nl:"Nederlands",no:"Noors",pl:"Pools",pt:"Portugees",ro:"Roemeens",ru:"Russisch",sa:"Sanskriet",sk:"Slowaaks",sl:"Sloveens",sm:"Samoaans",so:"Somalisch",sr:"Servisch",sv:"Zweeds",ta:"Tamil",th:"Thais",tr:"Turks",uk:"Oekra\xEFens",vi:"Vietnamees",yi:"Jiddisch",zh:"Chinees",zu:"Zoeloe"},layout:{bitmagnet_on_service:"bitmagnet op {{service}}",change_theme:"Wijzig thema",external_links:"Externe links",sponsor:"Sponsor",support_bitmagnet:"Ondersteun bitmagnet",translate:"Vertalen"},paginator:{first_page:"Eerste pagina",items_per_page:"Items per pagina",last_page:"Laatste pagina",next_page:"Volgende pagina",previous_page:"Vorige pagina",x_to_y:"{{x}} tot {{y}}",x_to_y_of_z:"{{x}} tot {{y}} van {{z}}"},routes:{admin:"Beheerder",dashboard:"Dashboard",home:"Home",jobs:"Taken",queues:"Wachtrijen",torrents:"Torrents",visualize:"Visualiseren"},torrents:{clear_search:"Zoekopdracht wissen",copy:"Kopi\xEBren",copy_to_clipboard:"Kopi\xEBren naar klembord",delete:"Verwijderen",delete_action_cannot_be_undone:"Deze actie kan niet ongedaan worden gemaakt",delete_are_you_sure:"Weet u zeker dat u deze torrent wilt verwijderen?",deselect_all:"Deselecteer alles",edit_tags:"Tags bewerken",episodes:"Afleveringen",external_links:"Externe links",file_index:"Bestandsindex",file_path:"Bestandspad",file_size:"Bestandsgrootte",file_type:"Bestandstype",files:"Bestanden",files_count_n:"{{count}} bestanden",files_no_info:"Geen informatie over bestanden beschikbaar",files_single:"Enkel bestand",genres:"Genres",info_hash:"Info hash",info_hashes:"Info hashes",languages:"Talen",leechers:"Leechers",magnet:"Magnet",magnet_links:"Magnet-links",new_tag:"Nieuwe tag",order_by:"Sorteren op",order_direction_toggle:"Richting omkeren",ordering:{files_count:"Aantal bestanden",info_hash:"Info hash",leechers:"Leechers",name:"Naam",published_at:"Gepubliceerd op",relevance:"Relevantie",seeders:"Seeders",size:"Grootte",updated_at:"Bijgewerkt op"},original_release_date:"Oorspronkelijke releasedatum",permalink:"Permalink",poster:"Poster",published:"Gepubliceerd",rating:"Beoordeling",refresh:"Vernieuw resultaten",s_l:"S / L",search:"Zoeken",seeders:"Seeders",select_all:"Alles selecteren",showing_x_of_y_files:"{{x}} van {{y}} bestanden weergegeven",size:"Grootte",source:"Torrentbron",summary:"Samenvatting",title:"Titel",toggle_drawer:"Zijpaneel in-/uitschakelen",votes_count_n:"{{count}} stemmen"},version:{bitmagnet_version:"bitmagnet versie {{version}}",unknown:"onbekend"}};var rt={content_types:{plural:{all:"Todos",audiobook:"Audiolivros",comic:"Quadrinhos",ebook:"E-books",movie:"Filmes",music:"M\xFAsica",null:"Desconhecido",software:"Software",tv_show:"Programas de TV",xxx:"XXX"},singular:{audiobook:"Audiolivro",comic:"Quadrinho",ebook:"E-book",movie:"Filme",music:"M\xFAsica",null:"Desconhecido",software:"Software",tv_show:"Programa de TV",xxx:"XXX"}},dashboard:{event:{created:"Criado",failed:"Falhou",processed:"Processado",updated:"Atualizado"},interval:{all:"Todos",days:"Dias",days_1:"1 dia",hours:"Horas",hours_1:"1 hora",hours_12:"12 horas",hours_6:"6 horas",minutes:"Minutos",minutes_1:"1 minuto",minutes_15:"15 minutos",minutes_30:"30 minutos",minutes_5:"5 minutos",off:"Desligado",seconds_10:"10 segundos",seconds_30:"30 segundos",weeks_1:"1 semana"},metrics:{event:"Evento",resolution:"Resolu\xE7\xE3o",throughput:"Taxa de transfer\xEAncia",timeframe:"Intervalo de tempo"},queues:{created:"Criado",created_at:"Criado em",enqueue_jobs:"Enfileirar trabalhos",enqueue_torrent_processing_batch:"Enfileirar lote de processamento de torrents",failed:"Falhou",force_rematch:"For\xE7ar nova correspond\xEAncia de conte\xFAdo j\xE1 correspondido",jobs_enqueued:"Trabalhos enfileirados",latency:"Lat\xEAncia",match_content_by_external_api_search:"Correspond\xEAncia de conte\xFAdo por pesquisa de API externa",match_content_by_local_search:"Correspond\xEAncia de conte\xFAdo por pesquisa local",payload:"Carga \xFAtil",pending:"Pendente",priority:"Prioridade",process_orphaned_torrents_only:"Processar apenas torrents \xF3rf\xE3os",processed:"Processado",purge_jobs:"Limpar trabalhos",purge_queue_jobs:"Limpar trabalhos da fila",queue:"Fila",queue_purged:"Fila limpa",queues:"Filas",ran_at:"Executado em",retry:"Tentar novamente",total_counts_by_status:"Contagens totais por status"}},facets:{content_type:"Tipo de Conte\xFAdo",file_type:"Tipo de Arquivo",genre:"G\xEAnero",language:"Idioma",queue:"Fila",status:"Status",torrent_source:"Fonte do Torrent",torrent_tag:"Tag do Torrent",video_resolution:"Resolu\xE7\xE3o de V\xEDdeo",video_source:"Fonte de V\xEDdeo"},file_types:{archive:"Arquivo",audio:"\xC1udio",data:"Dados",document:"Documento",image:"Imagem",software:"Software",subtitles:"Legendas",unknown:"Desconhecido",video:"V\xEDdeo"},general:{all:"Todos",dismiss:"Fechar",error:"Erro",none:"Nenhum",refresh:"Atualizar",status:"Status"},health:{bitmagnet_is_status:"bitmagnet est\xE1 {{status}}",check_failed_with_error:"Verifica\xE7\xE3o falhou com erro",component:"Componente",components:{dht:"DHT",postgres:"Postgres",tmdb:"TMDB"},dismiss:"Fechar",error:"Erro",status:"Status",statuses:{degraded:"Degradado",down:"Fora do ar",error:"Erro",inactive:"Inativo",started:"Iniciado",unknown:"Pendente",up:"Funcionando"},summary:"Resumo de Sa\xFAde",worker:"Trabalhador",workers:{dht_crawler:"Rastreamento DHT",http_server:"Servidor HTTP",queue_server:"Servidor de Fila"}},languages:{af:"Afric\xE2ner",ar:"\xC1rabe",az:"Azeri",be:"Bielorrusso",bg:"B\xFAlgaro",bs:"B\xF3snio",ca:"Catal\xE3o",ce:"Checheno",co:"Corso",cs:"Tcheco",cy:"Gal\xEAs",da:"Dinamarqu\xEAs",de:"Alem\xE3o",el:"Grego",en:"Ingl\xEAs",es:"Espanhol",et:"Estoniano",eu:"Basco",fa:"Persa",fi:"Finland\xEAs",fr:"Franc\xEAs",he:"Hebraico",hi:"Hindi",hr:"Croata",hu:"H\xFAngaro",hy:"Arm\xEAnio",id:"Indon\xE9sio",is:"Island\xEAs",it:"Italiano",ja:"Japon\xEAs",ka:"Georgiano",ko:"Coreano",ku:"Curdo",lt:"Lituano",lv:"Let\xE3o",mi:"Maori",mk:"Maced\xF4nio",ml:"Malaiala",mn:"Mongol",ms:"Malaio",mt:"Malt\xEAs",nl:"Holand\xEAs",no:"Noruegu\xEAs",pl:"Polon\xEAs",pt:"Portugu\xEAs",ro:"Romeno",ru:"Russo",sa:"S\xE2nscrito",sk:"Eslovaco",sl:"Esloveno",sm:"Samoano",so:"Somali",sr:"S\xE9rvio",sv:"Sueco",ta:"T\xE2mil",th:"Tailand\xEAs",tr:"Turco",uk:"Ucraniano",vi:"Vietnamita",yi:"I\xEDdiche",zh:"Chin\xEAs",zu:"Zulu"},layout:{bitmagnet_on_service:"bitmagnet em {{service}}",change_theme:"Alterar tema",external_links:"Links externos",sponsor:"Patrocinador",support_bitmagnet:"Apoiar bitmagnet",translate:"Traduzir"},paginator:{first_page:"Primeira p\xE1gina",items_per_page:"Itens por p\xE1gina",last_page:"\xDAltima p\xE1gina",next_page:"Pr\xF3xima p\xE1gina",previous_page:"P\xE1gina anterior",x_to_y:"{{x}} a {{y}}",x_to_y_of_z:"{{x}} a {{y}} de {{z}}"},routes:{admin:"Administra\xE7\xE3o",dashboard:"Painel",home:"In\xEDcio",jobs:"Tarefas",queues:"Filas",torrents:"Torrents",visualize:"Visualizar"},torrents:{clear_search:"Limpar Pesquisa",copy:"Copiar",copy_to_clipboard:"Copiar para a \xE1rea de transfer\xEAncia",delete:"Excluir",delete_action_cannot_be_undone:"Esta a\xE7\xE3o n\xE3o pode ser desfeita",delete_are_you_sure:"Tem certeza de que deseja excluir este torrent?",deselect_all:"Desmarcar todos",edit_tags:"Editar tags",episodes:"Epis\xF3dios",external_links:"Links externos",file_index:"\xCDndice de arquivo",file_path:"Caminho do arquivo",file_size:"Tamanho do arquivo",file_type:"Tipo de arquivo",files:"Arquivos",files_count_n:"{{count}} arquivos",files_no_info:"Sem informa\xE7\xF5es de arquivos dispon\xEDveis",files_single:"Arquivo \xFAnico",genres:"G\xEAneros",info_hash:"Hash de informa\xE7\xE3o",info_hashes:"Hashes de informa\xE7\xE3o",languages:"Idiomas",leechers:"Leechers",magnet:"Magnet",magnet_links:"Links magnet",new_tag:"Nova tag",order_by:"Ordenar por",order_direction_toggle:"Inverter dire\xE7\xE3o",ordering:{files_count:"Contagem de arquivos",info_hash:"Hash de informa\xE7\xE3o",leechers:"Leechers",name:"Nome",published_at:"Publicado em",relevance:"Relev\xE2ncia",seeders:"Seeders",size:"Tamanho",updated_at:"Atualizado em"},original_release_date:"Data de lan\xE7amento original",permalink:"Link permanente",poster:"P\xF4ster",published:"Publicado",rating:"Classifica\xE7\xE3o",refresh:"Atualizar resultados",s_l:"S / L",search:"Buscar",seeders:"Seeders",select_all:"Selecionar tudo",showing_x_of_y_files:"Mostrando {{x}} de {{y}} arquivos",size:"Tamanho",source:"Fonte do torrent",summary:"Resumo",title:"T\xEDtulo",toggle_drawer:"Alternar gaveta",votes_count_n:"{{count}} votos"},version:{bitmagnet_version:"Vers\xE3o do bitmagnet {{version}}",unknown:"desconhecido"}};var nt={content_types:{plural:{all:"\u0412\u0441\u0435",audiobook:"\u0410\u0443\u0434\u0438\u043E\u043A\u043D\u0438\u0433\u0438",comic:"\u041A\u043E\u043C\u0438\u043A\u0441\u044B",ebook:"\u042D\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u044B\u0435 \u043A\u043D\u0438\u0433\u0438",movie:"\u0424\u0438\u043B\u044C\u043C\u044B",music:"\u041C\u0443\u0437\u044B\u043A\u0430",null:"\u041D\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043D\u043E",software:"\u041F\u0440\u043E\u0433\u0440\u0430\u043C\u043C\u044B",tv_show:"\u0422\u0435\u043B\u0435\u043F\u0435\u0440\u0435\u0434\u0430\u0447\u0438",xxx:"\u041F\u043E\u0440\u043D\u043E"},singular:{audiobook:"\u0410\u0443\u0434\u0438\u043E\u043A\u043D\u0438\u0433\u0430",comic:"\u041A\u043E\u043C\u0438\u043A\u0441",ebook:"\u042D\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u0430\u044F \u043A\u043D\u0438\u0433\u0430",movie:"\u0424\u0438\u043B\u044C\u043C",music:"\u041C\u0443\u0437\u044B\u043A\u0430",null:"\u041D\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043D\u043E",software:"\u041F\u0440\u043E\u0433\u0440\u0430\u043C\u043C\u0430",tv_show:"\u0422\u0435\u043B\u0435\u043F\u0435\u0440\u0435\u0434\u0430\u0447\u0430",xxx:"\u041F\u043E\u0440\u043D\u043E"}},dashboard:{event:{created:"\u0421\u043E\u0437\u0434\u0430\u043D\u043E",failed:"\u041E\u0448\u0438\u0431\u043A\u0430",processed:"\u041E\u0431\u0440\u0430\u0431\u043E\u0442\u0430\u043D\u043E",updated:"\u041E\u0431\u043D\u043E\u0432\u043B\u0435\u043D\u043E"},interval:{all:"\u0412\u0441\u0435",days:"\u0414\u043D\u0438",days_1:"1 \u0434\u0435\u043D\u044C",hours:"\u0427\u0430\u0441\u044B",hours_1:"1 \u0447\u0430\u0441",hours_12:"12 \u0447\u0430\u0441\u043E\u0432",hours_6:"6 \u0447\u0430\u0441\u043E\u0432",minutes:"\u041C\u0438\u043D\u0443\u0442\u044B",minutes_1:"1 \u043C\u0438\u043D\u0443\u0442\u0430",minutes_15:"15 \u043C\u0438\u043D\u0443\u0442",minutes_30:"30 \u043C\u0438\u043D\u0443\u0442",minutes_5:"5 \u043C\u0438\u043D\u0443\u0442",off:"\u041E\u0442\u043A\u043B\u044E\u0447\u0435\u043D\u043E",seconds_10:"10 \u0441\u0435\u043A\u0443\u043D\u0434",seconds_30:"30 \u0441\u0435\u043A\u0443\u043D\u0434",weeks_1:"1 \u043D\u0435\u0434\u0435\u043B\u044F"},metrics:{event:"\u0421\u043E\u0431\u044B\u0442\u0438\u0435",resolution:"\u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043D\u0438\u0435",throughput:"\u041F\u0440\u043E\u043F\u0443\u0441\u043A\u043D\u0430\u044F \u0441\u043F\u043E\u0441\u043E\u0431\u043D\u043E\u0441\u0442\u044C",timeframe:"\u041F\u0435\u0440\u0438\u043E\u0434 \u0432\u0440\u0435\u043C\u0435\u043D\u0438"},queues:{created:"\u0421\u043E\u0437\u0434\u0430\u043D\u043E",created_at:"\u0421\u043E\u0437\u0434\u0430\u043D\u043E \u0432",enqueue_jobs:"\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0437\u0430\u0434\u0430\u043D\u0438\u044F \u0432 \u043E\u0447\u0435\u0440\u0435\u0434\u044C",enqueue_torrent_processing_batch:"\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u043F\u0430\u0440\u0442\u0438\u044E \u0434\u043B\u044F \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0438 \u0442\u043E\u0440\u0440\u0435\u043D\u0442\u043E\u0432",failed:"\u041E\u0448\u0438\u0431\u043A\u0430",force_rematch:"\u041F\u0440\u0438\u043D\u0443\u0434\u0438\u0442\u0435\u043B\u044C\u043D\u043E\u0435 \u043F\u043E\u0432\u0442\u043E\u0440\u043D\u043E\u0435 \u0441\u043E\u043F\u043E\u0441\u0442\u0430\u0432\u043B\u0435\u043D\u0438\u0435 \u0443\u0436\u0435 \u0441\u043E\u043F\u043E\u0441\u0442\u0430\u0432\u043B\u0435\u043D\u043D\u043E\u0433\u043E \u043A\u043E\u043D\u0442\u0435\u043D\u0442\u0430",jobs_enqueued:"\u0417\u0430\u0434\u0430\u043D\u0438\u044F \u0434\u043E\u0431\u0430\u0432\u043B\u0435\u043D\u044B \u0432 \u043E\u0447\u0435\u0440\u0435\u0434\u044C",latency:"\u0417\u0430\u0434\u0435\u0440\u0436\u043A\u0430",match_content_by_external_api_search:"\u0421\u043E\u043F\u043E\u0441\u0442\u0430\u0432\u0438\u0442\u044C \u043A\u043E\u043D\u0442\u0435\u043D\u0442 \u0447\u0435\u0440\u0435\u0437 \u0432\u043D\u0435\u0448\u043D\u0438\u0439 API",match_content_by_local_search:"\u0421\u043E\u043F\u043E\u0441\u0442\u0430\u0432\u0438\u0442\u044C \u043A\u043E\u043D\u0442\u0435\u043D\u0442 \u0447\u0435\u0440\u0435\u0437 \u043B\u043E\u043A\u0430\u043B\u044C\u043D\u044B\u0439 \u043F\u043E\u0438\u0441\u043A",payload:"\u0414\u0430\u043D\u043D\u044B\u0435",pending:"\u0412 \u043E\u0436\u0438\u0434\u0430\u043D\u0438\u0438",priority:"\u041F\u0440\u0438\u043E\u0440\u0438\u0442\u0435\u0442",process_orphaned_torrents_only:"\u041E\u0431\u0440\u0430\u0431\u0430\u0442\u044B\u0432\u0430\u0442\u044C \u0442\u043E\u043B\u044C\u043A\u043E \xAB\u043E\u0441\u0438\u0440\u043E\u0442\u0435\u0432\u0448\u0438\u0435\xBB \u0442\u043E\u0440\u0440\u0435\u043D\u0442\u044B",processed:"\u041E\u0431\u0440\u0430\u0431\u043E\u0442\u0430\u043D\u043E",purge_jobs:"\u041E\u0447\u0438\u0441\u0442\u0438\u0442\u044C \u0437\u0430\u0434\u0430\u043D\u0438\u044F",purge_queue_jobs:"\u041E\u0447\u0438\u0441\u0442\u0438\u0442\u044C \u0437\u0430\u0434\u0430\u043D\u0438\u044F \u043E\u0447\u0435\u0440\u0435\u0434\u0438",queue:"\u041E\u0447\u0435\u0440\u0435\u0434\u044C",queue_purged:"\u041E\u0447\u0435\u0440\u0435\u0434\u044C \u043E\u0447\u0438\u0449\u0435\u043D\u0430",queues:"\u041E\u0447\u0435\u0440\u0435\u0434\u0438",ran_at:"\u0412\u044B\u043F\u043E\u043B\u043D\u0435\u043D\u043E \u0432",retry:"\u041F\u043E\u0432\u0442\u043E\u0440\u0438\u0442\u044C",total_counts_by_status:"\u041E\u0431\u0449\u0435\u0435 \u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E \u043F\u043E \u0441\u0442\u0430\u0442\u0443\u0441\u0430\u043C"}},facets:{content_type:"\u0422\u0438\u043F \u043A\u043E\u043D\u0442\u0435\u043D\u0442\u0430",file_type:"\u0422\u0438\u043F \u0444\u0430\u0439\u043B\u0430",genre:"\u0416\u0430\u043D\u0440",language:"\u042F\u0437\u044B\u043A",queue:"\u041E\u0447\u0435\u0440\u0435\u0434\u044C",status:"\u0421\u0442\u0430\u0442\u0443\u0441",torrent_source:"\u0418\u0441\u0442\u043E\u0447\u043D\u0438\u043A \u0442\u043E\u0440\u0440\u0435\u043D\u0442\u0430",torrent_tag:"\u0422\u0435\u0433 \u0442\u043E\u0440\u0440\u0435\u043D\u0442\u0430",video_resolution:"\u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043D\u0438\u0435 \u0432\u0438\u0434\u0435\u043E",video_source:"\u0418\u0441\u0442\u043E\u0447\u043D\u0438\u043A \u0432\u0438\u0434\u0435\u043E"},file_types:{archive:"\u0410\u0440\u0445\u0438\u0432",audio:"\u0410\u0443\u0434\u0438\u043E",data:"\u0414\u0430\u043D\u043D\u044B\u0435",document:"\u0414\u043E\u043A\u0443\u043C\u0435\u043D\u0442",image:"\u0418\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0435",software:"\u041F\u0440\u043E\u0433\u0440\u0430\u043C\u043C\u044B",subtitles:"\u0421\u0443\u0431\u0442\u0438\u0442\u0440\u044B",unknown:"\u041D\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043D\u043E",video:"\u0412\u0438\u0434\u0435\u043E"},general:{all:"\u0412\u0441\u0435",dismiss:"\u0417\u0430\u043A\u0440\u044B\u0442\u044C",error:"\u041E\u0448\u0438\u0431\u043A\u0430",none:"\u041D\u0435\u0442",refresh:"\u041E\u0431\u043D\u043E\u0432\u0438\u0442\u044C",status:"\u0421\u0442\u0430\u0442\u0443\u0441"},health:{bitmagnet_is_status:"bitmagnet {{status}}",check_failed_with_error:"\u041F\u0440\u043E\u0432\u0435\u0440\u043A\u0430 \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u043B\u0430\u0441\u044C \u0441 \u043E\u0448\u0438\u0431\u043A\u043E\u0439",component:"\u041A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442",components:{dht:"DHT",postgres:"Postgres",tmdb:"TMDB"},dismiss:"\u0417\u0430\u043A\u0440\u044B\u0442\u044C",error:"\u041E\u0448\u0438\u0431\u043A\u0430",status:"\u0421\u0442\u0430\u0442\u0443\u0441",statuses:{degraded:"\u0421\u043D\u0438\u0436\u0435\u043D\u0430 \u043F\u0440\u043E\u0438\u0437\u0432\u043E\u0434\u0438\u0442\u0435\u043B\u044C\u043D\u043E\u0441\u0442\u044C",down:"\u041D\u0435 \u0440\u0430\u0431\u043E\u0442\u0430\u0435\u0442",error:"\u041E\u0448\u0438\u0431\u043A\u0430",inactive:"\u041D\u0435\u0430\u043A\u0442\u0438\u0432\u0435\u043D",started:"\u0417\u0430\u043F\u0443\u0449\u0435\u043D\u043E",unknown:"\u041D\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043D\u043E",up:"\u0420\u0430\u0431\u043E\u0442\u0430\u0435\u0442"},summary:"\u0421\u0432\u043E\u0434\u043A\u0430 \u0441\u043E\u0441\u0442\u043E\u044F\u043D\u0438\u044F",worker:"\u0420\u0430\u0431\u043E\u0447\u0438\u0439",workers:{dht_crawler:"DHT \u043E\u0431\u0445\u043E\u0434\u0447\u0438\u043A",http_server:"HTTP \u0441\u0435\u0440\u0432\u0435\u0440",queue_server:"\u0421\u0435\u0440\u0432\u0435\u0440 \u043E\u0447\u0435\u0440\u0435\u0434\u0435\u0439"}},languages:{af:"\u0410\u0444\u0440\u0438\u043A\u0430\u0430\u043D\u0441",ar:"\u0410\u0440\u0430\u0431\u0441\u043A\u0438\u0439",az:"\u0410\u0437\u0435\u0440\u0431\u0430\u0439\u0434\u0436\u0430\u043D\u0441\u043A\u0438\u0439",be:"\u0411\u0435\u043B\u043E\u0440\u0443\u0441\u0441\u043A\u0438\u0439",bg:"\u0411\u043E\u043B\u0433\u0430\u0440\u0441\u043A\u0438\u0439",bs:"\u0411\u043E\u0441\u043D\u0438\u0439\u0441\u043A\u0438\u0439",ca:"\u041A\u0430\u0442\u0430\u043B\u0430\u043D\u0441\u043A\u0438\u0439",ce:"\u0427\u0435\u0447\u0435\u043D\u0441\u043A\u0438\u0439",co:"\u041A\u043E\u0440\u0441\u0438\u043A\u0430\u043D\u0441\u043A\u0438\u0439",cs:"\u0427\u0435\u0448\u0441\u043A\u0438\u0439",cy:"\u0412\u0430\u043B\u043B\u0438\u0439\u0441\u043A\u0438\u0439",da:"\u0414\u0430\u0442\u0441\u043A\u0438\u0439",de:"\u041D\u0435\u043C\u0435\u0446\u043A\u0438\u0439",el:"\u0413\u0440\u0435\u0447\u0435\u0441\u043A\u0438\u0439",en:"\u0410\u043D\u0433\u043B\u0438\u0439\u0441\u043A\u0438\u0439",es:"\u0418\u0441\u043F\u0430\u043D\u0441\u043A\u0438\u0439",et:"\u042D\u0441\u0442\u043E\u043D\u0441\u043A\u0438\u0439",eu:"\u0411\u0430\u0441\u043A\u0441\u043A\u0438\u0439",fa:"\u041F\u0435\u0440\u0441\u0438\u0434\u0441\u043A\u0438\u0439",fi:"\u0424\u0438\u043D\u0441\u043A\u0438\u0439",fr:"\u0424\u0440\u0430\u043D\u0446\u0443\u0437\u0441\u043A\u0438\u0439",he:"\u0418\u0432\u0440\u0438\u0442",hi:"\u0425\u0438\u043D\u0434\u0438",hr:"\u0425\u043E\u0440\u0432\u0430\u0442\u0441\u043A\u0438\u0439",hu:"\u0412\u0435\u043D\u0433\u0435\u0440\u0441\u043A\u0438\u0439",hy:"\u0410\u0440\u043C\u044F\u043D\u0441\u043A\u0438\u0439",id:"\u0418\u043D\u0434\u043E\u043D\u0435\u0437\u0438\u0439\u0441\u043A\u0438\u0439",is:"\u0418\u0441\u043B\u0430\u043D\u0434\u0441\u043A\u0438\u0439",it:"\u0418\u0442\u0430\u043B\u044C\u044F\u043D\u0441\u043A\u0438\u0439",ja:"\u042F\u043F\u043E\u043D\u0441\u043A\u0438\u0439",ka:"\u0413\u0440\u0443\u0437\u0438\u043D\u0441\u043A\u0438\u0439",ko:"\u041A\u043E\u0440\u0435\u0439\u0441\u043A\u0438\u0439",ku:"\u041A\u0443\u0440\u0434\u0441\u043A\u0438\u0439",lt:"\u041B\u0438\u0442\u043E\u0432\u0441\u043A\u0438\u0439",lv:"\u041B\u0430\u0442\u044B\u0448\u0441\u043A\u0438\u0439",mi:"\u041C\u0430\u043E\u0440\u0438",mk:"\u041C\u0430\u043A\u0435\u0434\u043E\u043D\u0441\u043A\u0438\u0439",ml:"\u041C\u0430\u043B\u0430\u044F\u043B\u0430\u043C",mn:"\u041C\u043E\u043D\u0433\u043E\u043B\u044C\u0441\u043A\u0438\u0439",ms:"\u041C\u0430\u043B\u0430\u0439\u0441\u043A\u0438\u0439",mt:"\u041C\u0430\u043B\u044C\u0442\u0438\u0439\u0441\u043A\u0438\u0439",nl:"\u041D\u0438\u0434\u0435\u0440\u043B\u0430\u043D\u0434\u0441\u043A\u0438\u0439",no:"\u041D\u043E\u0440\u0432\u0435\u0436\u0441\u043A\u0438\u0439",pl:"\u041F\u043E\u043B\u044C\u0441\u043A\u0438\u0439",pt:"\u041F\u043E\u0440\u0442\u0443\u0433\u0430\u043B\u044C\u0441\u043A\u0438\u0439",ro:"\u0420\u0443\u043C\u044B\u043D\u0441\u043A\u0438\u0439",ru:"\u0420\u0443\u0441\u0441\u043A\u0438\u0439",sa:"\u0421\u0430\u043D\u0441\u043A\u0440\u0438\u0442",sk:"\u0421\u043B\u043E\u0432\u0430\u0446\u043A\u0438\u0439",sl:"\u0421\u043B\u043E\u0432\u0435\u043D\u0441\u043A\u0438\u0439",sm:"\u0421\u0430\u043C\u043E\u0430\u043D\u0441\u043A\u0438\u0439",so:"\u0421\u043E\u043C\u0430\u043B\u0438\u0439\u0441\u043A\u0438\u0439",sr:"\u0421\u0435\u0440\u0431\u0441\u043A\u0438\u0439",sv:"\u0428\u0432\u0435\u0434\u0441\u043A\u0438\u0439",ta:"\u0422\u0430\u043C\u0438\u043B\u044C\u0441\u043A\u0438\u0439",th:"\u0422\u0430\u0439\u0441\u043A\u0438\u0439",tr:"\u0422\u0443\u0440\u0435\u0446\u043A\u0438\u0439",uk:"\u0423\u043A\u0440\u0430\u0438\u043D\u0441\u043A\u0438\u0439",vi:"\u0412\u044C\u0435\u0442\u043D\u0430\u043C\u0441\u043A\u0438\u0439",yi:"\u0418\u0434\u0438\u0448",zh:"\u041A\u0438\u0442\u0430\u0439\u0441\u043A\u0438\u0439",zu:"\u0417\u0443\u043B\u0443\u0441\u0441\u043A\u0438\u0439"},layout:{bitmagnet_on_service:"bitmagnet \u043D\u0430 {{service}}",change_theme:"\u0418\u0437\u043C\u0435\u043D\u0438\u0442\u044C \u0442\u0435\u043C\u0443",external_links:"\u0412\u043D\u0435\u0448\u043D\u0438\u0435 \u0441\u0441\u044B\u043B\u043A\u0438",sponsor:"\u0421\u043F\u043E\u043D\u0441\u043E\u0440",support_bitmagnet:"\u041F\u043E\u0434\u0434\u0435\u0440\u0436\u0430\u0442\u044C bitmagnet",translate:"\u041F\u0435\u0440\u0435\u0432\u0435\u0441\u0442\u0438"},paginator:{first_page:"\u041F\u0435\u0440\u0432\u0430\u044F \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u0430",items_per_page:"\u042D\u043B\u0435\u043C\u0435\u043D\u0442\u043E\u0432 \u043D\u0430 \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u0435",last_page:"\u041F\u043E\u0441\u043B\u0435\u0434\u043D\u044F\u044F \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u0430",next_page:"\u0421\u043B\u0435\u0434\u0443\u044E\u0449\u0430\u044F \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u0430",previous_page:"\u041F\u0440\u0435\u0434\u044B\u0434\u0443\u0449\u0430\u044F \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u0430",x_to_y:"{{x}} \u0434\u043E {{y}}",x_to_y_of_z:"{{x}} \u0434\u043E {{y}} \u0438\u0437 {{z}}"},routes:{admin:"\u0410\u0434\u043C\u0438\u043D\u0438\u0441\u0442\u0440\u0430\u0442\u043E\u0440",dashboard:"\u041F\u0430\u043D\u0435\u043B\u044C \u0443\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u044F",home:"\u0413\u043B\u0430\u0432\u043D\u0430\u044F",jobs:"\u0417\u0430\u0434\u0430\u043D\u0438\u044F",queues:"\u041E\u0447\u0435\u0440\u0435\u0434\u0438",torrents:"\u0422\u043E\u0440\u0440\u0435\u043D\u0442\u044B",visualize:"\u0412\u0438\u0437\u0443\u0430\u043B\u0438\u0437\u0430\u0446\u0438\u044F"},torrents:{clear_search:"\u041E\u0447\u0438\u0441\u0442\u0438\u0442\u044C \u043F\u043E\u0438\u0441\u043A",copy:"\u041A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u0442\u044C",copy_to_clipboard:"\u041A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0432 \u0431\u0443\u0444\u0435\u0440 \u043E\u0431\u043C\u0435\u043D\u0430",delete:"\u0423\u0434\u0430\u043B\u0438\u0442\u044C",delete_action_cannot_be_undone:"\u042D\u0442\u043E \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u043D\u0435\u043B\u044C\u0437\u044F \u043E\u0442\u043C\u0435\u043D\u0438\u0442\u044C",delete_are_you_sure:"\u0412\u044B \u0443\u0432\u0435\u0440\u0435\u043D\u044B, \u0447\u0442\u043E \u0445\u043E\u0442\u0438\u0442\u0435 \u0443\u0434\u0430\u043B\u0438\u0442\u044C \u044D\u0442\u043E\u0442 \u0442\u043E\u0440\u0440\u0435\u043D\u0442?",deselect_all:"\u0421\u043D\u044F\u0442\u044C \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u0438\u0435",edit_tags:"\u0420\u0435\u0434\u0430\u043A\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0442\u0435\u0433\u0438",episodes:"\u042D\u043F\u0438\u0437\u043E\u0434\u044B",external_links:"\u0412\u043D\u0435\u0448\u043D\u0438\u0435 \u0441\u0441\u044B\u043B\u043A\u0438",file_index:"\u0418\u043D\u0434\u0435\u043A\u0441 \u0444\u0430\u0439\u043B\u0430",file_path:"\u041F\u0443\u0442\u044C \u043A \u0444\u0430\u0439\u043B\u0443",file_size:"\u0420\u0430\u0437\u043C\u0435\u0440 \u0444\u0430\u0439\u043B\u0430",file_type:"\u0422\u0438\u043F \u0444\u0430\u0439\u043B\u0430",files:"\u0424\u0430\u0439\u043B\u044B",files_count_n:"{{count}} \u0444\u0430\u0439\u043B\u043E\u0432",files_no_info:"\u0418\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u044F \u043E \u0444\u0430\u0439\u043B\u0430\u0445 \u043D\u0435\u0434\u043E\u0441\u0442\u0443\u043F\u043D\u0430",files_single:"\u041E\u0434\u0438\u043D \u0444\u0430\u0439\u043B",genres:"\u0416\u0430\u043D\u0440\u044B",info_hash:"\u0425\u044D\u0448 \u0438\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u0438",info_hashes:"\u0425\u044D\u0448\u0438 \u0438\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u0438",languages:"\u042F\u0437\u044B\u043A\u0438",leechers:"\u041B\u0438\u0447\u0435\u0440\u044B",magnet:"\u041C\u0430\u0433\u043D\u0435\u0442",magnet_links:"\u041C\u0430\u0433\u043D\u0435\u0442 \u0441\u0441\u044B\u043B\u043A\u0438",new_tag:"\u041D\u043E\u0432\u044B\u0439 \u0442\u0435\u0433",order_by:"\u0421\u043E\u0440\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u043F\u043E",order_direction_toggle:"\u041F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u043D\u0430\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u0435",ordering:{files_count:"\u041A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E \u0444\u0430\u0439\u043B\u043E\u0432",info_hash:"\u0425\u044D\u0448 \u0438\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u0438",leechers:"\u041B\u0438\u0447\u0435\u0440\u044B",name:"\u0418\u043C\u044F",published_at:"\u0414\u0430\u0442\u0430 \u043F\u0443\u0431\u043B\u0438\u043A\u0430\u0446\u0438\u0438",relevance:"\u0410\u043A\u0442\u0443\u0430\u043B\u044C\u043D\u043E\u0441\u0442\u044C",seeders:"\u0421\u0438\u0434\u0435\u0440\u044B",size:"\u0420\u0430\u0437\u043C\u0435\u0440",updated_at:"\u0414\u0430\u0442\u0430 \u043E\u0431\u043D\u043E\u0432\u043B\u0435\u043D\u0438\u044F"},original_release_date:"\u041E\u0440\u0438\u0433\u0438\u043D\u0430\u043B\u044C\u043D\u0430\u044F \u0434\u0430\u0442\u0430 \u0432\u044B\u043F\u0443\u0441\u043A\u0430",permalink:"\u041F\u043E\u0441\u0442\u043E\u044F\u043D\u043D\u0430\u044F \u0441\u0441\u044B\u043B\u043A\u0430",poster:"\u041F\u043E\u0441\u0442\u0435\u0440",published:"\u041E\u043F\u0443\u0431\u043B\u0438\u043A\u043E\u0432\u0430\u043D\u043E",rating:"\u0420\u0435\u0439\u0442\u0438\u043D\u0433",refresh:"\u041E\u0431\u043D\u043E\u0432\u0438\u0442\u044C \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u044B",s_l:"S / L",search:"\u041F\u043E\u0438\u0441\u043A",seeders:"\u0421\u0438\u0434\u0435\u0440\u044B",select_all:"\u0412\u044B\u0431\u0440\u0430\u0442\u044C \u0432\u0441\u0435",showing_x_of_y_files:"\u041F\u043E\u043A\u0430\u0437\u0430\u043D\u043E {{x}} \u0438\u0437 {{y}} \u0444\u0430\u0439\u043B\u043E\u0432",size:"\u0420\u0430\u0437\u043C\u0435\u0440",source:"\u0418\u0441\u0442\u043E\u0447\u043D\u0438\u043A \u0442\u043E\u0440\u0440\u0435\u043D\u0442\u0430",summary:"\u0421\u0432\u043E\u0434\u043A\u0430",title:"\u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435",toggle_drawer:"\u041F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u043F\u0430\u043D\u0435\u043B\u044C",votes_count_n:"{{count}} \u0433\u043E\u043B\u043E\u0441\u043E\u0432"},version:{bitmagnet_version:"\u0412\u0435\u0440\u0441\u0438\u044F bitmagnet {{version}}",unknown:"\u043D\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043D\u043E"}};var st={content_types:{plural:{all:"T\xFCm\xFC",audiobook:"Sesli Kitaplar",comic:"\xC7izgi Romanlar",ebook:"E-Kitaplar",movie:"Filmler",music:"M\xFCzik",null:"Bilinmiyor",software:"Yaz\u0131l\u0131m",tv_show:"TV Programlar\u0131",xxx:"XXX"},singular:{audiobook:"Sesli Kitap",comic:"\xC7izgi Roman",ebook:"E-Kitap",movie:"Film",music:"M\xFCzik",null:"Bilinmiyor",software:"Yaz\u0131l\u0131m",tv_show:"TV Program\u0131",xxx:"XXX"}},dashboard:{event:{created:"Olu\u015Fturuldu",failed:"Ba\u015Far\u0131s\u0131z",processed:"\u0130\u015Flendi",updated:"G\xFCncellendi"},interval:{all:"T\xFCm\xFC",days:"G\xFCnler",days_1:"1 g\xFCn",hours:"Saatler",hours_1:"1 saat",hours_12:"12 saat",hours_6:"6 saat",minutes:"Dakikalar",minutes_1:"1 dakika",minutes_15:"15 dakika",minutes_30:"30 dakika",minutes_5:"5 dakika",off:"Kapal\u0131",seconds_10:"10 saniye",seconds_30:"30 saniye",weeks_1:"1 hafta"},metrics:{event:"Olay",resolution:"\xC7\xF6z\xFCn\xFCrl\xFCk",throughput:"Verim",timeframe:"Zaman Dilimi"},queues:{created:"Olu\u015Fturuldu",created_at:"Olu\u015Fturulma tarihi",enqueue_jobs:"\u0130\u015Fleri Kuyru\u011Fa Al",enqueue_torrent_processing_batch:"Torrent \u0130\u015Fleme Paketini Kuyru\u011Fa Al",failed:"Ba\u015Far\u0131s\u0131z",force_rematch:"E\u015Fle\u015Fmi\u015F i\xE7eri\u011Fi yeniden e\u015Fle\u015Ftir",jobs_enqueued:"Kuyru\u011Fa Al\u0131nan \u0130\u015Fler",latency:"Gecikme",match_content_by_external_api_search:"D\u0131\u015F API aramas\u0131yla i\xE7eri\u011Fi e\u015Fle\u015Ftir",match_content_by_local_search:"Yerel aramayla i\xE7eri\u011Fi e\u015Fle\u015Ftir",payload:"Veri Y\xFCk\xFC",pending:"Beklemede",priority:"\xD6ncelik",process_orphaned_torrents_only:"Sadece sahipsiz torrentleri i\u015Fle",processed:"\u0130\u015Flendi",purge_jobs:"\u0130\u015Fleri Temizle",purge_queue_jobs:"Kuyruk \u0130\u015Flerini Temizle",queue:"Kuyruk",queue_purged:"Kuyruk Temizlendi",queues:"Kuyruklar",ran_at:"\xC7al\u0131\u015Ft\u0131r\u0131ld\u0131",retry:"Tekrar Dene",total_counts_by_status:"Duruma G\xF6re Toplam Say\u0131lar"}},facets:{content_type:"\u0130\xE7erik T\xFCr\xFC",file_type:"Dosya T\xFCr\xFC",genre:"T\xFCr",language:"Dil",queue:"Kuyruk",status:"Durum",torrent_source:"Torrent Kayna\u011F\u0131",torrent_tag:"Torrent Etiketi",video_resolution:"Video \xC7\xF6z\xFCn\xFCrl\xFC\u011F\xFC",video_source:"Video Kayna\u011F\u0131"},file_types:{archive:"Ar\u015Fiv",audio:"Ses",data:"Veri",document:"Belge",image:"G\xF6r\xFCnt\xFC",software:"Yaz\u0131l\u0131m",subtitles:"Altyaz\u0131lar",unknown:"Bilinmiyor",video:"Video"},general:{all:"T\xFCm\xFC",dismiss:"Kapat",error:"Hata",none:"Hi\xE7biri",refresh:"Yenile",status:"Durum"},health:{bitmagnet_is_status:"bitmagnet durumu {{status}}",check_failed_with_error:"Hata ile kontrol ba\u015Far\u0131s\u0131z oldu",component:"Bile\u015Fen",components:{dht:"DHT",postgres:"Postgres",tmdb:"TMDB"},dismiss:"Kapat",error:"Hata",status:"Durum",statuses:{degraded:"Azalm\u0131\u015F",down:"Kapal\u0131",error:"Hata",inactive:"Etkin de\u011Fil",started:"Ba\u015Flad\u0131",unknown:"Bilinmiyor",up:"\xC7al\u0131\u015F\u0131yor"},summary:"Sa\u011Fl\u0131k \xD6zeti",worker:"\u0130\u015F\xE7i",workers:{dht_crawler:"DHT taray\u0131c\u0131",http_server:"HTTP sunucusu",queue_server:"Kuyruk sunucusu"}},languages:{af:"Afrikanca",ar:"Arap\xE7a",az:"Azerice",be:"Beyaz Rus\xE7a",bg:"Bulgarca",bs:"Bo\u015Fnak\xE7a",ca:"Katalanca",ce:"\xC7e\xE7ence",co:"Korsikaca",cs:"\xC7ek\xE7e",cy:"Galce",da:"Danca",de:"Almanca",el:"Yunanca",en:"\u0130ngilizce",es:"\u0130spanyolca",et:"Estonca",eu:"Bask\xE7a",fa:"Fars\xE7a",fi:"Fince",fr:"Frans\u0131zca",he:"\u0130branice",hi:"Hint\xE7e",hr:"H\u0131rvat\xE7a",hu:"Macarca",hy:"Ermenice",id:"Endonezce",is:"\u0130zlandaca",it:"\u0130talyanca",ja:"Japonca",ka:"G\xFCrc\xFCce",ko:"Korece",ku:"K\xFCrt\xE7e",lt:"Litvanca",lv:"Letonca",mi:"Maorice",mk:"Makedonca",ml:"Malayalamca",mn:"Mo\u011Folca",ms:"Malayca",mt:"Maltaca",nl:"Flemenk\xE7e",no:"Norve\xE7\xE7e",pl:"Leh\xE7e",pt:"Portekizce",ro:"Romence",ru:"Rus\xE7a",sa:"Sanskrit\xE7e",sk:"Slovak\xE7a",sl:"Slovence",sm:"Samoaca",so:"Somalice",sr:"S\u0131rp\xE7a",sv:"\u0130sve\xE7\xE7e",ta:"Tamilce",th:"Tayca",tr:"T\xFCrk\xE7e",uk:"Ukraynaca",vi:"Vietnamca",yi:"Yidi\u015F",zh:"\xC7ince",zu:"Zuluca"},layout:{bitmagnet_on_service:"{{service}} \xFCzerinde bitmagnet",change_theme:"Temay\u0131 De\u011Fi\u015Ftir",external_links:"D\u0131\u015F Ba\u011Flant\u0131lar",sponsor:"Sponsor",support_bitmagnet:"bitmagnet'i Destekle",translate:"\xC7evir"},paginator:{first_page:"\u0130lk Sayfa",items_per_page:"Sayfa ba\u015F\u0131na \xF6\u011Fe",last_page:"Son Sayfa",next_page:"Sonraki Sayfa",previous_page:"\xD6nceki Sayfa",x_to_y:"{{x}} - {{y}} aras\u0131",x_to_y_of_z:"{{x}} ile {{y}} aras\u0131, toplam {{z}}"},routes:{admin:"Y\xF6netici",dashboard:"Kontrol Paneli",home:"Ana Sayfa",jobs:"G\xF6revler",queues:"Kuyruklar",torrents:"Torrentler",visualize:"G\xF6rselle\u015Ftir"},torrents:{clear_search:"Aramay\u0131 Temizle",copy:"Kopyala",copy_to_clipboard:"Panoya Kopyala",delete:"Sil",delete_action_cannot_be_undone:"Bu i\u015Flem geri al\u0131namaz",delete_are_you_sure:"Bu torrent'i silmek istedi\u011Finizden emin misiniz?",deselect_all:"T\xFCm Se\xE7imleri Kald\u0131r",edit_tags:"Etiketleri D\xFCzenle",episodes:"B\xF6l\xFCmler",external_links:"D\u0131\u015F Ba\u011Flant\u0131lar",file_index:"Dosya Dizini",file_path:"Dosya Yolu",file_size:"Dosya Boyutu",file_type:"Dosya T\xFCr\xFC",files:"Dosyalar",files_count_n:"{{count}} dosya",files_no_info:"Dosya bilgisi mevcut de\u011Fil",files_single:"Tek dosya",genres:"T\xFCrler",info_hash:"Bilgi hash'i",info_hashes:"Bilgi hash'leri",languages:"Diller",leechers:"Leechers",magnet:"Magnet",magnet_links:"Magnet Ba\u011Flant\u0131lar",new_tag:"Yeni etiket",order_by:"S\u0131ralama \xF6l\xE7\xFCt\xFC",order_direction_toggle:"Y\xF6n\xFC de\u011Fi\u015Ftir",ordering:{files_count:"Dosya say\u0131s\u0131",info_hash:"Bilgi hash'i",leechers:"Leechers",name:"Ad",published_at:"Yay\u0131nlanma tarihi",relevance:"Alaka d\xFCzeyi",seeders:"Seeders",size:"Boyut",updated_at:"G\xFCncellenme tarihi"},original_release_date:"Orijinal \xE7\u0131k\u0131\u015F tarihi",permalink:"Kal\u0131c\u0131 Ba\u011Flant\u0131",poster:"Poster",published:"Yay\u0131nland\u0131",rating:"Puan",refresh:"Sonu\xE7lar\u0131 Yenile",s_l:"S / L",search:"Ara",seeders:"Seeders",select_all:"T\xFCm\xFCn\xFC Se\xE7",showing_x_of_y_files:"{{y}} dosyan\u0131n {{x}} tanesi g\xF6steriliyor",size:"Boyut",source:"Torrent Kayna\u011F\u0131",summary:"\xD6zet",title:"Ba\u015Fl\u0131k",toggle_drawer:"\xC7ekmeceyi A\xE7/Kapat",votes_count_n:"{{count}} oy"},version:{bitmagnet_version:"bitmagnet versiyonu {{version}}",unknown:"bilinmiyor"}};var it={content_types:{plural:{all:"\u0423\u0441\u0456",audiobook:"\u0410\u0443\u0434\u0456\u043E\u043A\u043D\u0438\u0433\u0438",comic:"\u041A\u043E\u043C\u0456\u043A\u0441\u0438",ebook:"\u0415\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u0456 \u043A\u043D\u0438\u0433\u0438",movie:"\u0424\u0456\u043B\u044C\u043C\u0438",music:"\u041C\u0443\u0437\u0438\u043A\u0430",null:"\u041D\u0435\u0432\u0456\u0434\u043E\u043C\u043E",software:"\u041F\u0440\u043E\u0433\u0440\u0430\u043C\u0438",tv_show:"\u0422\u0435\u043B\u0435\u0448\u043E\u0443",xxx:"\u041F\u043E\u0440\u043D\u043E"},singular:{audiobook:"\u0410\u0443\u0434\u0456\u043E\u043A\u043D\u0438\u0433\u0430",comic:"\u041A\u043E\u043C\u0456\u043A\u0441",ebook:"\u0415\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u0430 \u043A\u043D\u0438\u0433\u0430",movie:"\u0424\u0456\u043B\u044C\u043C",music:"\u041C\u0443\u0437\u0438\u043A\u0430",null:"\u041D\u0435\u0432\u0456\u0434\u043E\u043C\u043E",software:"\u041F\u0440\u043E\u0433\u0440\u0430\u043C\u0430",tv_show:"\u0422\u0435\u043B\u0435\u0448\u043E\u0443",xxx:"\u041F\u043E\u0440\u043D\u043E"}},dashboard:{event:{created:"\u0421\u0442\u0432\u043E\u0440\u0435\u043D\u043E",failed:"\u041F\u043E\u043C\u0438\u043B\u043A\u0430",processed:"\u041E\u0431\u0440\u043E\u0431\u043B\u0435\u043D\u043E",updated:"\u041E\u043D\u043E\u0432\u043B\u0435\u043D\u043E"},interval:{all:"\u0423\u0441\u0456",days:"\u0414\u043D\u0456",days_1:"1 \u0434\u0435\u043D\u044C",hours:"\u0413\u043E\u0434\u0438\u043D\u0438",hours_1:"1 \u0433\u043E\u0434\u0438\u043D\u0430",hours_12:"12 \u0433\u043E\u0434\u0438\u043D",hours_6:"6 \u0433\u043E\u0434\u0438\u043D",minutes:"\u0425\u0432\u0438\u043B\u0438\u043D\u0438",minutes_1:"1 \u0445\u0432\u0438\u043B\u0438\u043D\u0430",minutes_15:"15 \u0445\u0432\u0438\u043B\u0438\u043D",minutes_30:"30 \u0445\u0432\u0438\u043B\u0438\u043D",minutes_5:"5 \u0445\u0432\u0438\u043B\u0438\u043D",off:"\u0412\u0438\u043C\u043A\u043D\u0435\u043D\u043E",seconds_10:"10 \u0441\u0435\u043A\u0443\u043D\u0434",seconds_30:"30 \u0441\u0435\u043A\u0443\u043D\u0434",weeks_1:"1 \u0442\u0438\u0436\u0434\u0435\u043D\u044C"},metrics:{event:"\u041F\u043E\u0434\u0456\u044F",resolution:"\u0420\u043E\u0437\u0434\u0456\u043B\u044C\u043D\u0430 \u0437\u0434\u0430\u0442\u043D\u0456\u0441\u0442\u044C",throughput:"\u041F\u0440\u043E\u043F\u0443\u0441\u043A\u043D\u0430 \u0437\u0434\u0430\u0442\u043D\u0456\u0441\u0442\u044C",timeframe:"\u041F\u0440\u043E\u043C\u0456\u0436\u043E\u043A \u0447\u0430\u0441\u0443"},queues:{created:"\u0421\u0442\u0432\u043E\u0440\u0435\u043D\u043E",created_at:"\u0421\u0442\u0432\u043E\u0440\u0435\u043D\u043E \u043E",enqueue_jobs:"\u0414\u043E\u0434\u0430\u0442\u0438 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u0434\u043E \u0447\u0435\u0440\u0433\u0438",enqueue_torrent_processing_batch:"\u0414\u043E\u0434\u0430\u0442\u0438 \u043F\u0430\u043A\u0435\u0442 \u0434\u043B\u044F \u043E\u0431\u0440\u043E\u0431\u043A\u0438 \u0442\u043E\u0440\u0440\u0435\u043D\u0442\u0456\u0432",failed:"\u041F\u043E\u043C\u0438\u043B\u043A\u0430",force_rematch:"\u041F\u0440\u0438\u043C\u0443\u0441\u043E\u0432\u043E \u043F\u043E\u0432\u0442\u043E\u0440\u043D\u043E \u0437\u0456\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u0432\u0436\u0435 \u0437\u0456\u0441\u0442\u0430\u0432\u043B\u0435\u043D\u0438\u0439 \u043A\u043E\u043D\u0442\u0435\u043D\u0442",jobs_enqueued:"\u0417\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u0434\u043E\u0434\u0430\u043D\u043E \u0432 \u0447\u0435\u0440\u0433\u0443",latency:"\u0417\u0430\u0442\u0440\u0438\u043C\u043A\u0430",match_content_by_external_api_search:"\u0417\u0456\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u043A\u043E\u043D\u0442\u0435\u043D\u0442 \u0447\u0435\u0440\u0435\u0437 \u0437\u043E\u0432\u043D\u0456\u0448\u043D\u0456\u0439 API",match_content_by_local_search:"\u0417\u0456\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u043A\u043E\u043D\u0442\u0435\u043D\u0442 \u0447\u0435\u0440\u0435\u0437 \u043B\u043E\u043A\u0430\u043B\u044C\u043D\u0438\u0439 \u043F\u043E\u0448\u0443\u043A",payload:"\u0414\u0430\u043D\u0456",pending:"\u0412 \u043E\u0447\u0456\u043A\u0443\u0432\u0430\u043D\u043D\u0456",priority:"\u041F\u0440\u0456\u043E\u0440\u0438\u0442\u0435\u0442",process_orphaned_torrents_only:"\u041E\u0431\u0440\u043E\u0431\u043B\u044F\u0442\u0438 \u043B\u0438\u0448\u0435 \xAB\u0441\u0438\u0440\u043E\u0442\u043B\u0438\u0432\u0456\xBB \u0442\u043E\u0440\u0440\u0435\u043D\u0442\u0438",processed:"\u041E\u0431\u0440\u043E\u0431\u043B\u0435\u043D\u043E",purge_jobs:"\u041E\u0447\u0438\u0441\u0442\u0438\u0442\u0438 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F",purge_queue_jobs:"\u041E\u0447\u0438\u0441\u0442\u0438\u0442\u0438 \u0437\u0430\u0432\u0434\u0430\u043D\u043D\u044F \u0447\u0435\u0440\u0433\u0438",queue:"\u0427\u0435\u0440\u0433\u0430",queue_purged:"\u0427\u0435\u0440\u0433\u0430 \u043E\u0447\u0438\u0449\u0435\u043D\u0430",queues:"\u0427\u0435\u0440\u0433\u0438",ran_at:"\u0417\u0430\u043F\u0443\u0449\u0435\u043D\u043E \u043E",retry:"\u041F\u043E\u0432\u0442\u043E\u0440\u0438\u0442\u0438",total_counts_by_status:"\u0417\u0430\u0433\u0430\u043B\u044C\u043D\u0430 \u043A\u0456\u043B\u044C\u043A\u0456\u0441\u0442\u044C \u0437\u0430 \u0441\u0442\u0430\u0442\u0443\u0441\u0430\u043C\u0438"}},facets:{content_type:"\u0422\u0438\u043F \u043A\u043E\u043D\u0442\u0435\u043D\u0442\u0443",file_type:"\u0422\u0438\u043F \u0444\u0430\u0439\u043B\u0443",genre:"\u0416\u0430\u043D\u0440",language:"\u041C\u043E\u0432\u0430",queue:"\u0427\u0435\u0440\u0433\u0430",status:"\u0421\u0442\u0430\u0442\u0443\u0441",torrent_source:"\u0414\u0436\u0435\u0440\u0435\u043B\u043E \u0442\u043E\u0440\u0440\u0435\u043D\u0442\u0430",torrent_tag:"\u0422\u0435\u0433 \u0442\u043E\u0440\u0440\u0435\u043D\u0442\u0430",video_resolution:"\u0420\u043E\u0437\u0434\u0456\u043B\u044C\u043D\u0430 \u0437\u0434\u0430\u0442\u043D\u0456\u0441\u0442\u044C \u0432\u0456\u0434\u0435\u043E",video_source:"\u0414\u0436\u0435\u0440\u0435\u043B\u043E \u0432\u0456\u0434\u0435\u043E"},file_types:{archive:"\u0410\u0440\u0445\u0456\u0432",audio:"\u0410\u0443\u0434\u0456\u043E",data:"\u0414\u0430\u043D\u0456",document:"\u0414\u043E\u043A\u0443\u043C\u0435\u043D\u0442",image:"\u0417\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u043D\u044F",software:"\u041F\u0440\u043E\u0433\u0440\u0430\u043C\u0438",subtitles:"\u0421\u0443\u0431\u0442\u0438\u0442\u0440\u0438",unknown:"\u041D\u0435\u0432\u0456\u0434\u043E\u043C\u043E",video:"\u0412\u0456\u0434\u0435\u043E"},general:{all:"\u0423\u0441\u0456",dismiss:"\u0417\u0430\u043A\u0440\u0438\u0442\u0438",error:"\u041F\u043E\u043C\u0438\u043B\u043A\u0430",none:"\u041D\u0435\u043C\u0430\u0454",refresh:"\u041E\u043D\u043E\u0432\u0438\u0442\u0438",status:"\u0421\u0442\u0430\u0442\u0443\u0441"},health:{bitmagnet_is_status:"bitmagnet {{status}}",check_failed_with_error:"\u041F\u0435\u0440\u0435\u0432\u0456\u0440\u043A\u0430 \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u043B\u0430\u0441\u044F \u043F\u043E\u043C\u0438\u043B\u043A\u043E\u044E",component:"\u041A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442",components:{dht:"DHT",postgres:"Postgres",tmdb:"TMDB"},dismiss:"\u0417\u0430\u043A\u0440\u0438\u0442\u0438",error:"\u041F\u043E\u043C\u0438\u043B\u043A\u0430",status:"\u0421\u0442\u0430\u0442\u0443\u0441",statuses:{degraded:"\u0417\u043D\u0438\u0436\u0435\u043D\u0430 \u043F\u0440\u043E\u0434\u0443\u043A\u0442\u0438\u0432\u043D\u0456\u0441\u0442\u044C",down:"\u041D\u0435 \u043F\u0440\u0430\u0446\u044E\u0454",error:"\u041F\u043E\u043C\u0438\u043B\u043A\u0430",inactive:"\u041D\u0435\u0430\u043A\u0442\u0438\u0432\u043D\u0438\u0439",started:"\u0417\u0430\u043F\u0443\u0449\u0435\u043D\u043E",unknown:"\u041E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F",up:"\u041F\u0440\u0430\u0446\u044E\u0454"},summary:"\u0417\u0432\u0435\u0434\u0435\u043D\u043D\u044F \u0441\u0442\u0430\u043D\u0443",worker:"\u041F\u0440\u0430\u0446\u0456\u0432\u043D\u0438\u043A",workers:{dht_crawler:"DHT \u0441\u043A\u0430\u043D\u0435\u0440",http_server:"HTTP \u0441\u0435\u0440\u0432\u0435\u0440",queue_server:"\u0421\u0435\u0440\u0432\u0435\u0440 \u0447\u0435\u0440\u0433\u0438"}},languages:{af:"\u0410\u0444\u0440\u0438\u043A\u0430\u0430\u043D\u0441",ar:"\u0410\u0440\u0430\u0431\u0441\u044C\u043A\u0430",az:"\u0410\u0437\u0435\u0440\u0431\u0430\u0439\u0434\u0436\u0430\u043D\u0441\u044C\u043A\u0430",be:"\u0411\u0456\u043B\u043E\u0440\u0443\u0441\u044C\u043A\u0430",bg:"\u0411\u043E\u043B\u0433\u0430\u0440\u0441\u044C\u043A\u0430",bs:"\u0411\u043E\u0441\u043D\u0456\u0439\u0441\u044C\u043A\u0430",ca:"\u041A\u0430\u0442\u0430\u043B\u043E\u043D\u0441\u044C\u043A\u0430",ce:"\u0427\u0435\u0447\u0435\u043D\u0441\u044C\u043A\u0430",co:"\u041A\u043E\u0440\u0441\u0438\u043A\u0430\u043D\u0441\u044C\u043A\u0430",cs:"\u0427\u0435\u0441\u044C\u043A\u0430",cy:"\u0412\u0430\u043B\u043B\u0456\u0439\u0441\u044C\u043A\u0430",da:"\u0414\u0430\u043D\u0441\u044C\u043A\u0430",de:"\u041D\u0456\u043C\u0435\u0446\u044C\u043A\u0430",el:"\u0413\u0440\u0435\u0446\u044C\u043A\u0430",en:"\u0410\u043D\u0433\u043B\u0456\u0439\u0441\u044C\u043A\u0430",es:"\u0406\u0441\u043F\u0430\u043D\u0441\u044C\u043A\u0430",et:"\u0415\u0441\u0442\u043E\u043D\u0441\u044C\u043A\u0430",eu:"\u0411\u0430\u0441\u043A\u0441\u044C\u043A\u0430",fa:"\u041F\u0435\u0440\u0441\u044C\u043A\u0430",fi:"\u0424\u0456\u043D\u0441\u044C\u043A\u0430",fr:"\u0424\u0440\u0430\u043D\u0446\u0443\u0437\u044C\u043A\u0430",he:"\u0406\u0432\u0440\u0438\u0442",hi:"\u0425\u0456\u043D\u0434\u0456",hr:"\u0425\u043E\u0440\u0432\u0430\u0442\u0441\u044C\u043A\u0430",hu:"\u0423\u0433\u043E\u0440\u0441\u044C\u043A\u0430",hy:"\u0412\u0456\u0440\u043C\u0435\u043D\u0441\u044C\u043A\u0430",id:"\u0406\u043D\u0434\u043E\u043D\u0435\u0437\u0456\u0439\u0441\u044C\u043A\u0430",is:"\u0406\u0441\u043B\u0430\u043D\u0434\u0441\u044C\u043A\u0430",it:"\u0406\u0442\u0430\u043B\u0456\u0439\u0441\u044C\u043A\u0430",ja:"\u042F\u043F\u043E\u043D\u0441\u044C\u043A\u0430",ka:"\u0413\u0440\u0443\u0437\u0438\u043D\u0441\u044C\u043A\u0430",ko:"\u041A\u043E\u0440\u0435\u0439\u0441\u044C\u043A\u0430",ku:"\u041A\u0443\u0440\u0434\u0441\u044C\u043A\u0430",lt:"\u041B\u0438\u0442\u043E\u0432\u0441\u044C\u043A\u0430",lv:"\u041B\u0430\u0442\u0438\u0441\u044C\u043A\u0430",mi:"\u041C\u0430\u043E\u0440\u0456",mk:"\u041C\u0430\u043A\u0435\u0434\u043E\u043D\u0441\u044C\u043A\u0430",ml:"\u041C\u0430\u043B\u0430\u044F\u043B\u0430\u043C",mn:"\u041C\u043E\u043D\u0433\u043E\u043B\u044C\u0441\u044C\u043A\u0430",ms:"\u041C\u0430\u043B\u0430\u0439\u0441\u044C\u043A\u0430",mt:"\u041C\u0430\u043B\u044C\u0442\u0456\u0439\u0441\u044C\u043A\u0430",nl:"\u041D\u0456\u0434\u0435\u0440\u043B\u0430\u043D\u0434\u0441\u044C\u043A\u0430",no:"\u041D\u043E\u0440\u0432\u0435\u0437\u044C\u043A\u0430",pl:"\u041F\u043E\u043B\u044C\u0441\u044C\u043A\u0430",pt:"\u041F\u043E\u0440\u0442\u0443\u0433\u0430\u043B\u044C\u0441\u044C\u043A\u0430",ro:"\u0420\u0443\u043C\u0443\u043D\u0441\u044C\u043A\u0430",ru:"\u0420\u043E\u0441\u0456\u0439\u0441\u044C\u043A\u0430",sa:"\u0421\u0430\u043D\u0441\u043A\u0440\u0438\u0442",sk:"\u0421\u043B\u043E\u0432\u0430\u0446\u044C\u043A\u0430",sl:"\u0421\u043B\u043E\u0432\u0435\u043D\u0441\u044C\u043A\u0430",sm:"\u0421\u0430\u043C\u043E\u0430\u043D\u0441\u044C\u043A\u0430",so:"\u0421\u043E\u043C\u0430\u043B\u0456\u0439\u0441\u044C\u043A\u0430",sr:"\u0421\u0435\u0440\u0431\u0441\u044C\u043A\u0430",sv:"\u0428\u0432\u0435\u0434\u0441\u044C\u043A\u0430",ta:"\u0422\u0430\u043C\u0456\u043B\u044C\u0441\u044C\u043A\u0430",th:"\u0422\u0430\u0439\u0441\u044C\u043A\u0430",tr:"\u0422\u0443\u0440\u0435\u0446\u044C\u043A\u0430",uk:"\u0423\u043A\u0440\u0430\u0457\u043D\u0441\u044C\u043A\u0430",vi:"\u0412'\u0454\u0442\u043D\u0430\u043C\u0441\u044C\u043A\u0430",yi:"\u0407\u0434\u0438\u0448",zh:"\u041A\u0438\u0442\u0430\u0439\u0441\u044C\u043A\u0430",zu:"\u0417\u0443\u043B\u0443\u0441\u044C\u043A\u0430"},layout:{bitmagnet_on_service:"bitmagnet \u043D\u0430 {{service}}",change_theme:"\u0417\u043C\u0456\u043D\u0438\u0442\u0438 \u0442\u0435\u043C\u0443",external_links:"\u0417\u043E\u0432\u043D\u0456\u0448\u043D\u0456 \u043F\u043E\u0441\u0438\u043B\u0430\u043D\u043D\u044F",sponsor:"\u0421\u043F\u043E\u043D\u0441\u043E\u0440",support_bitmagnet:"\u041F\u0456\u0434\u0442\u0440\u0438\u043C\u0430\u0442\u0438 bitmagnet",translate:"\u041F\u0435\u0440\u0435\u043A\u043B\u0430\u0441\u0442\u0438"},paginator:{first_page:"\u041F\u0435\u0440\u0448\u0430 \u0441\u0442\u043E\u0440\u0456\u043D\u043A\u0430",items_per_page:"\u0415\u043B\u0435\u043C\u0435\u043D\u0442\u0456\u0432 \u043D\u0430 \u0441\u0442\u043E\u0440\u0456\u043D\u0446\u0456",last_page:"\u041E\u0441\u0442\u0430\u043D\u043D\u044F \u0441\u0442\u043E\u0440\u0456\u043D\u043A\u0430",next_page:"\u041D\u0430\u0441\u0442\u0443\u043F\u043D\u0430 \u0441\u0442\u043E\u0440\u0456\u043D\u043A\u0430",previous_page:"\u041F\u043E\u043F\u0435\u0440\u0435\u0434\u043D\u044F \u0441\u0442\u043E\u0440\u0456\u043D\u043A\u0430",x_to_y:"{{x}} \u0434\u043E {{y}}",x_to_y_of_z:"{{x}} \u0434\u043E {{y}} \u0437 {{z}}"},routes:{admin:"\u0410\u0434\u043C\u0456\u043D\u0456\u0441\u0442\u0440\u0430\u0442\u043E\u0440",dashboard:"\u041F\u0430\u043D\u0435\u043B\u044C \u0443\u043F\u0440\u0430\u0432\u043B\u0456\u043D\u043D\u044F",home:"\u0413\u043E\u043B\u043E\u0432\u043D\u0430",jobs:"\u0417\u0430\u0432\u0434\u0430\u043D\u043D\u044F",queues:"\u0427\u0435\u0440\u0433\u0438",torrents:"\u0422\u043E\u0440\u0440\u0435\u043D\u0442\u0438",visualize:"\u0412\u0456\u0437\u0443\u0430\u043B\u0456\u0437\u0443\u0432\u0430\u0442\u0438"},torrents:{clear_search:"\u041E\u0447\u0438\u0441\u0442\u0438\u0442\u0438 \u043F\u043E\u0448\u0443\u043A",copy:"\u041A\u043E\u043F\u0456\u044E\u0432\u0430\u0442\u0438",copy_to_clipboard:"\u041A\u043E\u043F\u0456\u044E\u0432\u0430\u0442\u0438 \u0432 \u0431\u0443\u0444\u0435\u0440 \u043E\u0431\u043C\u0456\u043D\u0443",delete:"\u0412\u0438\u0434\u0430\u043B\u0438\u0442\u0438",delete_action_cannot_be_undone:"\u0426\u044E \u0434\u0456\u044E \u043D\u0435 \u043C\u043E\u0436\u043D\u0430 \u0441\u043A\u0430\u0441\u0443\u0432\u0430\u0442\u0438",delete_are_you_sure:"\u0412\u0438 \u0432\u043F\u0435\u0432\u043D\u0435\u043D\u0456, \u0449\u043E \u0445\u043E\u0447\u0435\u0442\u0435 \u0432\u0438\u0434\u0430\u043B\u0438\u0442\u0438 \u0446\u0435\u0439 \u0442\u043E\u0440\u0440\u0435\u043D\u0442?",deselect_all:"\u0417\u043D\u044F\u0442\u0438 \u0432\u0438\u0434\u0456\u043B\u0435\u043D\u043D\u044F",edit_tags:"\u0420\u0435\u0434\u0430\u0433\u0443\u0432\u0430\u0442\u0438 \u0442\u0435\u0433\u0438",episodes:"\u0415\u043F\u0456\u0437\u043E\u0434\u0438",external_links:"\u0417\u043E\u0432\u043D\u0456\u0448\u043D\u0456 \u043F\u043E\u0441\u0438\u043B\u0430\u043D\u043D\u044F",file_index:"\u0406\u043D\u0434\u0435\u043A\u0441 \u0444\u0430\u0439\u043B\u0443",file_path:"\u0428\u043B\u044F\u0445 \u0434\u043E \u0444\u0430\u0439\u043B\u0443",file_size:"\u0420\u043E\u0437\u043C\u0456\u0440 \u0444\u0430\u0439\u043B\u0443",file_type:"\u0422\u0438\u043F \u0444\u0430\u0439\u043B\u0443",files:"\u0424\u0430\u0439\u043B\u0438",files_count_n:"{{count}} \u0444\u0430\u0439\u043B\u0456\u0432",files_no_info:"\u0406\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0456\u044F \u043F\u0440\u043E \u0444\u0430\u0439\u043B\u0438 \u043D\u0435\u0434\u043E\u0441\u0442\u0443\u043F\u043D\u0430",files_single:"\u041E\u0434\u0438\u043D \u0444\u0430\u0439\u043B",genres:"\u0416\u0430\u043D\u0440\u0438",info_hash:"\u0425\u0435\u0448 \u0456\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0456\u0457",info_hashes:"\u0425\u0435\u0448\u0456 \u0456\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0456\u0457",languages:"\u041C\u043E\u0432\u0438",leechers:"\u041B\u0456\u0447\u0435\u0440\u0438",magnet:"\u041C\u0430\u0433\u043D\u0435\u0442",magnet_links:"\u041C\u0430\u0433\u043D\u0435\u0442-\u043F\u043E\u0441\u0438\u043B\u0430\u043D\u043D\u044F",new_tag:"\u041D\u043E\u0432\u0438\u0439 \u0442\u0435\u0433",order_by:"\u0421\u043E\u0440\u0442\u0443\u0432\u0430\u0442\u0438 \u0437\u0430",order_direction_toggle:"\u0417\u043C\u0456\u043D\u0438\u0442\u0438 \u043D\u0430\u043F\u0440\u044F\u043C\u043E\u043A",ordering:{files_count:"\u041A\u0456\u043B\u044C\u043A\u0456\u0441\u0442\u044C \u0444\u0430\u0439\u043B\u0456\u0432",info_hash:"\u0425\u0435\u0448 \u0456\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0456\u0457",leechers:"\u041B\u0456\u0447\u0435\u0440\u0438",name:"\u041D\u0430\u0437\u0432\u0430",published_at:"\u0414\u0430\u0442\u0430 \u043F\u0443\u0431\u043B\u0456\u043A\u0430\u0446\u0456\u0457",relevance:"\u0410\u043A\u0442\u0443\u0430\u043B\u044C\u043D\u0456\u0441\u0442\u044C",seeders:"\u0421\u0456\u0434\u0435\u0440\u0438",size:"\u0420\u043E\u0437\u043C\u0456\u0440",updated_at:"\u0414\u0430\u0442\u0430 \u043E\u043D\u043E\u0432\u043B\u0435\u043D\u043D\u044F"},original_release_date:"\u0414\u0430\u0442\u0430 \u043E\u0440\u0438\u0433\u0456\u043D\u0430\u043B\u044C\u043D\u043E\u0433\u043E \u0432\u0438\u043F\u0443\u0441\u043A\u0443",permalink:"\u041F\u043E\u0441\u0442\u0456\u0439\u043D\u0435 \u043F\u043E\u0441\u0438\u043B\u0430\u043D\u043D\u044F",poster:"\u041F\u043E\u0441\u0442\u0435\u0440",published:"\u041E\u043F\u0443\u0431\u043B\u0456\u043A\u043E\u0432\u0430\u043D\u043E",rating:"\u0420\u0435\u0439\u0442\u0438\u043D\u0433",refresh:"\u041E\u043D\u043E\u0432\u0438\u0442\u0438 \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u0438",s_l:"S / L",search:"\u041F\u043E\u0448\u0443\u043A",seeders:"\u0421\u0456\u0434\u0435\u0440\u0438",select_all:"\u0412\u0438\u0431\u0440\u0430\u0442\u0438 \u0432\u0441\u0456",showing_x_of_y_files:"\u041F\u043E\u043A\u0430\u0437\u0430\u043D\u043E {{x}} \u0437 {{y}} \u0444\u0430\u0439\u043B\u0456\u0432",size:"\u0420\u043E\u0437\u043C\u0456\u0440",source:"\u0414\u0436\u0435\u0440\u0435\u043B\u043E \u0442\u043E\u0440\u0440\u0435\u043D\u0442\u0430",summary:"\u0417\u0432\u0435\u0434\u0435\u043D\u043D\u044F",title:"\u041D\u0430\u0437\u0432\u0430",toggle_drawer:"\u041F\u0435\u0440\u0435\u043C\u043A\u043D\u0443\u0442\u0438 \u043F\u0430\u043D\u0435\u043B\u044C",votes_count_n:"{{count}} \u0433\u043E\u043B\u043E\u0441\u0456\u0432"},version:{bitmagnet_version:"\u0412\u0435\u0440\u0441\u0456\u044F bitmagnet {{version}}",unknown:"\u043D\u0435\u0432\u0456\u0434\u043E\u043C\u043E"}};var lt={content_types:{plural:{all:"\u5168\u90E8",audiobook:"\u6709\u58F0\u4E66",comic:"\u6F2B\u753B",ebook:"\u7535\u5B50\u4E66",movie:"\u7535\u5F71",music:"\u97F3\u4E50",null:"\u672A\u77E5",software:"\u8F6F\u4EF6",tv_show:"\u7535\u89C6\u8282\u76EE",xxx:"\u8272\u60C5"},singular:{audiobook:"\u6709\u58F0\u4E66",comic:"\u6F2B\u753B",ebook:"\u7535\u5B50\u4E66",movie:"\u7535\u5F71",music:"\u97F3\u4E50",null:"\u672A\u77E5",software:"\u8F6F\u4EF6",tv_show:"\u7535\u89C6\u8282\u76EE",xxx:"\u8272\u60C5"}},dashboard:{event:{created:"\u5DF2\u521B\u5EFA",failed:"\u5931\u8D25",processed:"\u5DF2\u5904\u7406",updated:"\u5DF2\u66F4\u65B0"},interval:{all:"\u5168\u90E8",days:"\u5929",days_1:"1\u5929",hours:"\u5C0F\u65F6",hours_1:"1\u5C0F\u65F6",hours_12:"12\u5C0F\u65F6",hours_6:"6\u5C0F\u65F6",minutes:"\u5206\u949F",minutes_1:"1\u5206\u949F",minutes_15:"15\u5206\u949F",minutes_30:"30\u5206\u949F",minutes_5:"5\u5206\u949F",off:"\u5173\u95ED",seconds_10:"10\u79D2",seconds_30:"30\u79D2",weeks_1:"1\u5468"},metrics:{event:"\u4E8B\u4EF6",resolution:"\u5206\u8FA8\u7387",throughput:"\u541E\u5410\u91CF",timeframe:"\u65F6\u95F4\u8303\u56F4"},queues:{created:"\u5DF2\u521B\u5EFA",created_at:"\u521B\u5EFA\u4E8E",enqueue_jobs:"\u52A0\u5165\u961F\u5217\u7684\u4EFB\u52A1",enqueue_torrent_processing_batch:"\u52A0\u5165\u961F\u5217\u7684\u79CD\u5B50\u5904\u7406\u6279\u6B21",failed:"\u5931\u8D25",force_rematch:"\u5F3A\u5236\u91CD\u65B0\u5339\u914D\u5DF2\u5339\u914D\u7684\u5185\u5BB9",jobs_enqueued:"\u52A0\u5165\u961F\u5217\u7684\u4EFB\u52A1",latency:"\u5EF6\u8FDF",match_content_by_external_api_search:"\u901A\u8FC7\u5916\u90E8API\u641C\u7D22\u5339\u914D\u5185\u5BB9",match_content_by_local_search:"\u901A\u8FC7\u672C\u5730\u641C\u7D22\u5339\u914D\u5185\u5BB9",payload:"\u6709\u6548\u8F7D\u8377",pending:"\u5F85\u5904\u7406",priority:"\u4F18\u5148\u7EA7",process_orphaned_torrents_only:"\u4EC5\u5904\u7406\u5B64\u7ACB\u7684\u79CD\u5B50",processed:"\u5DF2\u5904\u7406",purge_jobs:"\u6E05\u9664\u4EFB\u52A1",purge_queue_jobs:"\u6E05\u9664\u961F\u5217\u4EFB\u52A1",queue:"\u961F\u5217",queue_purged:"\u961F\u5217\u5DF2\u6E05\u9664",queues:"\u961F\u5217",ran_at:"\u8FD0\u884C\u4E8E",retry:"\u91CD\u8BD5",total_counts_by_status:"\u6309\u72B6\u6001\u7EDF\u8BA1\u603B\u6570"}},facets:{content_type:"\u5185\u5BB9\u7C7B\u578B",file_type:"\u6587\u4EF6\u7C7B\u578B",genre:"\u7C7B\u578B",language:"\u8BED\u8A00",queue:"\u961F\u5217",status:"\u72B6\u6001",torrent_source:"\u79CD\u5B50\u6765\u6E90",torrent_tag:"\u79CD\u5B50\u6807\u7B7E",video_resolution:"\u89C6\u9891\u5206\u8FA8\u7387",video_source:"\u89C6\u9891\u6765\u6E90"},file_types:{archive:"\u6863\u6848",audio:"\u97F3\u9891",data:"\u6570\u636E",document:"\u6587\u6863",image:"\u56FE\u50CF",software:"\u8F6F\u4EF6",subtitles:"\u5B57\u5E55",unknown:"\u672A\u77E5",video:"\u89C6\u9891"},general:{all:"\u5168\u90E8",dismiss:"\u5FFD\u7565",error:"\u9519\u8BEF",none:"\u65E0",refresh:"\u5237\u65B0",status:"\u72B6\u6001"},health:{bitmagnet_is_status:"bitmagnet\u662F{{status}}",check_failed_with_error:"\u68C0\u67E5\u5931\u8D25\uFF0C\u9519\u8BEF",component:"\u7EC4\u4EF6",components:{dht:"DHT",postgres:"Postgres",tmdb:"TMDB"},dismiss:"\u5FFD\u7565",error:"\u9519\u8BEF",status:"\u72B6\u6001",statuses:{degraded:"\u964D\u7EA7",down:"\u5173\u95ED",error:"\u9519\u8BEF",inactive:"\u4E0D\u6D3B\u8DC3",started:"\u5DF2\u542F\u52A8",unknown:"\u672A\u77E5",up:"\u8FD0\u884C\u4E2D"},summary:"\u5065\u5EB7\u6982\u8FF0",worker:"\u5DE5\u4F5C\u8005",workers:{dht_crawler:"DHT\u722C\u866B",http_server:"HTTP\u670D\u52A1\u5668",queue_server:"\u961F\u5217\u670D\u52A1\u5668"}},languages:{af:"\u5357\u975E\u8377\u5170\u8BED",ar:"\u963F\u62C9\u4F2F\u8BED",az:"\u963F\u585E\u62DC\u7586\u8BED",be:"\u767D\u4FC4\u7F57\u65AF\u8BED",bg:"\u4FDD\u52A0\u5229\u4E9A\u8BED",bs:"\u6CE2\u65AF\u5C3C\u4E9A\u8BED",ca:"\u52A0\u6CF0\u7F57\u5C3C\u4E9A\u8BED",ce:"\u8F66\u81E3\u8BED",co:"\u79D1\u897F\u5609\u8BED",cs:"\u6377\u514B\u8BED",cy:"\u5A01\u5C14\u58EB\u8BED",da:"\u4E39\u9EA6\u8BED",de:"\u5FB7\u8BED",el:"\u5E0C\u814A\u8BED",en:"\u82F1\u8BED",es:"\u897F\u73ED\u7259\u8BED",et:"\u7231\u6C99\u5C3C\u4E9A\u8BED",eu:"\u5DF4\u65AF\u514B\u8BED",fa:"\u6CE2\u65AF\u8BED",fi:"\u82AC\u5170\u8BED",fr:"\u6CD5\u8BED",he:"\u5E0C\u4F2F\u6765\u8BED",hi:"\u5370\u5730\u8BED",hr:"\u514B\u7F57\u5730\u4E9A\u8BED",hu:"\u5308\u7259\u5229\u8BED",hy:"\u4E9A\u7F8E\u5C3C\u4E9A\u8BED",id:"\u5370\u5EA6\u5C3C\u897F\u4E9A\u8BED",is:"\u51B0\u5C9B\u8BED",it:"\u610F\u5927\u5229\u8BED",ja:"\u65E5\u8BED",ka:"\u683C\u9C81\u5409\u4E9A\u8BED",ko:"\u97E9\u8BED",ku:"\u5E93\u5C14\u5FB7\u8BED",lt:"\u7ACB\u9676\u5B9B\u8BED",lv:"\u62C9\u8131\u7EF4\u4E9A\u8BED",mi:"\u6BDB\u5229\u8BED",mk:"\u9A6C\u5176\u987F\u8BED",ml:"\u9A6C\u62C9\u96C5\u62C9\u59C6\u8BED",mn:"\u8499\u53E4\u8BED",ms:"\u9A6C\u6765\u8BED",mt:"\u9A6C\u8033\u4ED6\u8BED",nl:"\u8377\u5170\u8BED",no:"\u632A\u5A01\u8BED",pl:"\u6CE2\u5170\u8BED",pt:"\u8461\u8404\u7259\u8BED",ro:"\u7F57\u9A6C\u5C3C\u4E9A\u8BED",ru:"\u4FC4\u8BED",sa:"\u68B5\u8BED",sk:"\u65AF\u6D1B\u4F10\u514B\u8BED",sl:"\u65AF\u6D1B\u6587\u5C3C\u4E9A\u8BED",sm:"\u8428\u6469\u4E9A\u8BED",so:"\u7D22\u9A6C\u91CC\u8BED",sr:"\u585E\u5C14\u7EF4\u4E9A\u8BED",sv:"\u745E\u5178\u8BED",ta:"\u6CF0\u7C73\u5C14\u8BED",th:"\u6CF0\u8BED",tr:"\u571F\u8033\u5176\u8BED",uk:"\u4E4C\u514B\u5170\u8BED",vi:"\u8D8A\u5357\u8BED",yi:"\u610F\u7B2C\u7EEA\u8BED",zh:"\u4E2D\u6587",zu:"\u7956\u9C81\u8BED"},layout:{bitmagnet_on_service:"bitmagnet\u5728{{service}}",change_theme:"\u66F4\u6539\u4E3B\u9898",external_links:"\u5916\u90E8\u94FE\u63A5",sponsor:"\u8D5E\u52A9\u5546",support_bitmagnet:"\u652F\u6301bitmagnet",translate:"\u7FFB\u8BD1"},paginator:{first_page:"\u7B2C\u4E00\u9875",items_per_page:"\u6BCF\u9875\u9879\u76EE\u6570",last_page:"\u6700\u540E\u4E00\u9875",next_page:"\u4E0B\u4E00\u9875",previous_page:"\u4E0A\u4E00\u9875",x_to_y:"{{x}}\u5230{{y}}",x_to_y_of_y:"__\u7F3A\u5931__",x_to_y_of_z:"{{x}}\u5230{{y}}\uFF0C\u5171{{z}}"},routes:{admin:"\u7BA1\u7406\u5458",dashboard:"\u4EEA\u8868\u76D8",home:"\u9996\u9875",jobs:"\u4EFB\u52A1",queues:"\u961F\u5217",torrents:"\u79CD\u5B50",visualize:"\u53EF\u89C6\u5316"},torrents:{clear_search:"\u6E05\u9664\u641C\u7D22",copy:"\u590D\u5236",copy_to_clipboard:"\u590D\u5236\u5230\u526A\u8D34\u677F",delete:"\u5220\u9664",delete_action_cannot_be_undone:"\u6B64\u64CD\u4F5C\u65E0\u6CD5\u64A4\u9500",delete_are_you_sure:"\u60A8\u786E\u5B9A\u8981\u5220\u9664\u6B64\u79CD\u5B50\u5417\uFF1F",deselect_all:"\u53D6\u6D88\u5168\u9009",edit_tags:"\u7F16\u8F91\u6807\u7B7E",episodes:"\u5267\u96C6",external_links:"\u5916\u90E8\u94FE\u63A5",file_index:"\u6587\u4EF6\u7D22\u5F15",file_path:"\u6587\u4EF6\u8DEF\u5F84",file_size:"\u6587\u4EF6\u5927\u5C0F",file_type:"\u6587\u4EF6\u7C7B\u578B",files:"\u6587\u4EF6",files_count_n:"{{count}}\u4E2A\u6587\u4EF6",files_no_info:"\u65E0\u6587\u4EF6\u4FE1\u606F",files_single:"\u5355\u4E2A\u6587\u4EF6",genres:"\u7C7B\u578B",info_hash:"\u4FE1\u606F\u54C8\u5E0C",info_hashes:"\u4FE1\u606F\u54C8\u5E0C",languages:"\u8BED\u8A00",leechers:"\u4E0B\u8F7D\u8005",magnet:"\u78C1\u529B\u94FE\u63A5",magnet_links:"\u78C1\u529B\u94FE\u63A5",new_tag:"\u65B0\u6807\u7B7E",order_by:"\u6392\u5E8F\u4F9D\u636E",order_direction_toggle:"\u5207\u6362\u65B9\u5411",ordering:{files_count:"\u6587\u4EF6\u6570",info_hash:"\u4FE1\u606F\u54C8\u5E0C",leechers:"\u4E0B\u8F7D\u8005",name:"\u540D\u79F0",published_at:"\u53D1\u5E03\u4E8E",relevance:"\u76F8\u5173\u6027",seeders:"\u4E0A\u4F20\u8005",size:"\u5927\u5C0F",updated_at:"\u66F4\u65B0\u4E8E"},original_release_date:"\u539F\u59CB\u53D1\u5E03\u65E5\u671F",permalink:"\u6C38\u4E45\u94FE\u63A5",poster:"\u6D77\u62A5",published:"\u5DF2\u53D1\u5E03",rating:"\u8BC4\u5206",refresh:"\u5237\u65B0\u7ED3\u679C",s_l:"S / L",search:"\u641C\u7D22",seeders:"\u4E0A\u4F20\u8005",select_all:"\u5168\u9009",showing_x_of_y_files:"\u663E\u793A{{x}}\u4E2A\uFF0C\u5171{{y}}\u4E2A\u6587\u4EF6",size:"\u5927\u5C0F",source:"\u79CD\u5B50\u6765\u6E90",summary:"\u6458\u8981",title:"\u6807\u9898",toggle_drawer:"\u5207\u6362\u62BD\u5C49",votes_count_n:"{{count}}\u7968"},version:{bitmagnet_version:"bitmagnet\u7248\u672C{{version}}",unknown:"\u672A\u77E5"}};var W={ar:Ye,de:Je,en:Ze,es:$e,fr:et,hi:tt,ja:at,nl:ot,pt:rt,ru:nt,tr:st,uk:it,zh:lt};var ut=(()=>{class t{getTranslation(e){return Z(this,null,function*(){if(e in W){let a=W[e];return ct(a)}else return Promise.reject(new Error(`Translation not found: ${e}`))})}static{this.\u0275fac=function(a){return new(a||t)}}static{this.\u0275prov=p({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})(),Bt=["__missing__","__fallback__"],ct=t=>Object.fromEntries(Object.entries(t).flatMap(([o,e])=>{if(typeof e=="object")e=ct(e);else if(typeof e=="string"&&Bt.includes(e))return[];return[[o,e]]}));var dt={providers:[he({eventCoalescing:!0}),Te(Qe,Se()),We("animations"),X(pe()),X(),Me({config:{availableLangs:[{id:"ar",label:"\u0627\u0644\u0639\u0631\u0628\u064A\u0629"},{id:"de",label:"Deutsch"},{id:"en",label:"English"},{id:"es",label:"Espa\xF1ol"},{id:"fr",label:"Fran\xE7ais"},{id:"hi",label:"\u0939\u093F\u0928\u094D\u0926\u0940"},{id:"ja",label:"\u65E5\u672C\u8A9E"},{id:"nl",label:"Nederlands"},{id:"pt",label:"Portugu\xEAs"},{id:"ru",label:"\u0420\u0443\u0441\u0441\u043A\u0438\u0439"},{id:"tr",label:"T\xFCrk\xE7e"},{id:"uk",label:"\u0423\u043A\u0440\u0430\u0457\u043D\u0441\u044C\u043A\u0430"},{id:"zh",label:"\u4E2D\u6587"}],defaultLang:"en",fallbackLang:"en",missingHandler:{useFallbackTranslation:!0},reRenderOnLangChange:!0,prodMode:!1},loader:ut}),Ae(ze())]};var Rt=new P("Browser Storage",{providedIn:"root",factory:()=>localStorage}),L=(()=>{class t{constructor(e){this.storage=e}get(e){return this.storage.getItem(e)}set(e,a){this.storage.setItem(e,a)}remove(e){this.storage.removeItem(e)}clear(){this.storage.clear()}static{this.\u0275fac=function(a){return new(a||t)(ae(Rt))}}static{this.\u0275prov=p({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();var Ht={classic:{key:"classic",label:"Classic",dark:!1},clean:{key:"clean",label:"Clean",dark:!1},neon:{key:"neon",label:"Neon",dark:!0},tundra:{key:"tundra",label:"Tundra",dark:!0}},F=Ht,_t="classic",mt="tundra";var Q="bitmagnet-theme",B=(()=>{class t{constructor(){this.document=u(D),this.browserStorage=u(L),this._window=this.document.defaultView,this.selectedThemeSubject=new $(void 0),this.selectedTheme$=this.selectedThemeSubject.asObservable(),this.themes=Object.values(F),this.getPreferredTheme=()=>this.getStoredTheme()??this.getAutoTheme(),this.getStoredTheme=()=>{let e=this.browserStorage.get(Q);return e&&e in F?e:void 0},this.getAutoTheme=()=>this.windowMatchMediaPrefersDark()?.matches?mt:_t,this.setTheme=e=>{this.setActiveTheme(e),this.setStoredTheme(this.selectedTheme??"auto")},this.setActiveTheme=e=>{e==="auto"||!(e in F)?(e=this.getAutoTheme(),this.selectedTheme=void 0):this.selectedTheme=e,this.document.documentElement.setAttribute("data-bitmagnet-theme",e),this.selectedThemeSubject.next(this.selectedTheme)},this.setStoredTheme=e=>{e==="auto"?this.browserStorage.remove(Q):this.browserStorage.set(Q,e)},this.setActiveTheme(this.getPreferredTheme()),this.windowMatchMediaPrefersDark()?.addEventListener("change",()=>{this.getStoredTheme()||this.setActiveTheme(this.getAutoTheme())})}windowMatchMediaPrefersDark(){return this._window&&this._window.matchMedia?this._window.matchMedia("(prefers-color-scheme: dark)"):void 0}static{this.\u0275fac=function(a){return new(a||t)}}static{this.\u0275prov=p({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();var Gt=t=>({version:t});function Nt(t,o){if(t&1&&(w(0),s(1,"span",1),c(2),n(),T()),t&2){let e=o.$implicit,a=_();i(),h("matTooltip",e("version.bitmagnet_version",me(2,Gt,a.versionUnknown?e("version.unknown"):a.version))),i(),f(a.version)}}var Y="v-unknown",ht=(()=>{class t{constructor(){this.apollo=u(Pe),this.version=Y,this.versionUnknown=!0}ngOnInit(){this.apollo.query({query:je}).pipe(ee(e=>e.data.version)).subscribe({next:e=>{e?(this.version=e,this.versionUnknown=!1):(this.version=Y,this.versionUnknown=!0)},error:()=>{this.version=Y}})}static{this.\u0275fac=function(a){return new(a||t)}}static{this.\u0275cmp=g({type:t,selectors:[["app-version"]],standalone:!0,features:[b],decls:1,vars:0,consts:[[4,"transloco"],[1,"version",3,"matTooltip"]],template:function(a,r){a&1&&x(0,Nt,3,4,"ng-container",0)},dependencies:[I,j,E,Ie],encapsulation:2})}}return t})();var pt="bitmagnet-language",gt=(()=>{class t{constructor(){this.transloco=u(Ce),this.browserStorage=u(L),this.availableLanguages=this.transloco.getAvailableLangs(),this.transloco.setActiveLang(this.getPreferredLanguage())}getPreferredLanguage(){return this.getStoredLanguage()??this.getAutoLanguage()}getStoredLanguage(){let e=this.browserStorage.get(pt);return e&&this.transloco.isLang(e)?e:void 0}getAutoLanguage(){let e=navigator?.language?.split("-")?.[0];return this.transloco.isLang(e)?e:"en"}setLanguage(e){this.transloco.setActiveLang(e),this.browserStorage.set(pt,e)}static{this.\u0275fac=function(a){return new(a||t)}}static{this.\u0275prov=p({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();var Kt=["element"],J=(()=>{class t{static{this.\u0275fac=function(a){return new(a||t)}}static{this.\u0275cmp=g({type:t,selectors:[["app-theme-emitter-color"]],viewQuery:function(a,r){if(a&1&&M(Kt,5),a&2){let l;z(l=A())&&(r.element=l.first)}},inputs:{color:"color"},standalone:!0,features:[b],decls:2,vars:2,consts:[["element",""]],template:function(a,r){a&1&&d(0,"div",null,0),a&2&&v("theme-emitter-color "+r.color)},encapsulation:2})}}return t})();var Xt=["lightdark"];function Ut(t,o){if(t&1&&d(0,"app-theme-emitter-color",1),t&2){let e=o.$implicit;h("color",e)}}var ft=(()=>{class t{constructor(){this.service=u(Ue),this.themeManager=u(B),this.themeColors=Xe,this.themeManager.selectedTheme$.subscribe(()=>{this.updateThemeColors()})}ngAfterViewInit(){this.updateThemeColors()}updateThemeColors(){let e={};for(let r of this.elements??[])e[r.color]=getComputedStyle(r.element.nativeElement).color;let a=this.lightdark&&getComputedStyle(this.lightdark.nativeElement).color==="rgb(0, 0, 0)"?"dark":"light";this.service.setInfo({colors:e,type:a})}static{this.\u0275fac=function(a){return new(a||t)}}static{this.\u0275cmp=g({type:t,selectors:[["app-theme-emitter"]],viewQuery:function(a,r){if(a&1&&(M(Xt,5),M(J,5)),a&2){let l;z(l=A())&&(r.lightdark=l.first),z(l=A())&&(r.elements=l)}},standalone:!0,features:[b],decls:5,vars:0,consts:[["lightdark",""],[3,"color"],[1,"theme-emitter-lightdark"]],template:function(a,r){a&1&&(w(0),S(1,Ut,1,1,"app-theme-emitter-color",1,ce),d(3,"div",2,0),T()),a&2&&(i(),C(r.themeColors))},dependencies:[J],styles:["[_nghost-%COMP%]{display:none}.theme-emitter-color.background[_ngcontent-%COMP%]{color:var(--mat-app-background-color)}.theme-emitter-color.foreground[_ngcontent-%COMP%]{color:var(--mat-app-text-color)}"]})}}return t})();var Qt=["*"],Yt=(t,o)=>o.key,Jt=(t,o)=>o.id,Zt=()=>({service:"Discord"}),$t=()=>({service:"GitHub"}),ea=()=>({service:"OpenCollective"});function ta(t,o){if(t&1&&(s(0,"h1")(1,"a",22),d(2,"mat-icon",23),s(3,"span",24),c(4,"bitmagnet"),n(),d(5,"app-version"),n()(),s(6,"nav")(7,"a",25,3),d(9,"mat-icon",23),c(10),n(),s(11,"a",26,4)(13,"mat-icon"),c(14,"dashboard"),n(),c(15),n()()),t&2){let e=k(8),a=k(12),r=_().$implicit;i(7),v(e.isActive?"active":""),i(3),K(" ",r("routes.torrents")," "),i(),v(a.isActive?"active":""),i(4),K(" ",r("routes.dashboard")," ")}}function aa(t,o){if(t&1&&(s(0,"h1")(1,"a",27),d(2,"mat-icon",23),n()(),s(3,"button",28,4)(5,"mat-icon"),c(6,"dashboard"),n()()),t&2){let e=k(4),a=_().$implicit;i(3),v(e.isActive?"active":""),h("matTooltip",a("routes.dashboard"))}}function oa(t,o){if(t&1){let e=G();s(0,"a",29),N("click",function(){let r=R(e).$implicit,l=_(2);return H(l.themeManager.setTheme(r.key))}),s(1,"mat-icon"),c(2),n(),c(3),n()}if(t&2){let e=o.$implicit,a=_(2);v(e.key===a.themeManager.selectedTheme?"active":""),i(2),f(e.dark?"dark_mode":"light_mode"),i(),f(e.label)}}function ra(t,o){if(t&1){let e=G();s(0,"a",30),N("click",function(){let r=R(e).$implicit,l=_(2);return H(l.translateManager.setLanguage(r.id))}),c(1),n()}if(t&2){let e=o.$implicit,a=_().$implicit,r=_();v(e.id===r.translateManager.getPreferredLanguage()?"active":""),h("matTooltip",e.id===r.translateManager.getPreferredLanguage()?void 0:a("languages."+e.id)),i(),f(e.label)}}function na(t,o){if(t&1&&(s(0,"a",19)(1,"mat-icon"),c(2,"favorite"),n()()),t&2){let e=_().$implicit;h("matTooltip",e("layout.sponsor"))}}function sa(t,o){if(t&1&&(s(0,"a",20)(1,"mat-icon"),c(2,"favorite"),n(),c(3),n()),t&2){let e=_().$implicit;h("matTooltip",e("layout.support_bitmagnet")),i(3),f(e("layout.sponsor"))}}function ia(t,o){if(t&1&&(w(0),s(1,"mat-toolbar",6),x(2,ta,16,6)(3,aa,7,3),d(4,"span",7)(5,"app-health-widget"),s(6,"button",8)(7,"mat-icon"),c(8,"apparel"),n()(),s(9,"mat-menu",9,0),S(11,oa,4,4,"a",10,Yt),n(),s(13,"button",11)(14,"mat-icon"),c(15,"translate"),n()(),s(16,"mat-menu",9,1),S(18,ra,2,4,"a",12,Jt),n(),s(20,"button",13),d(21,"mat-icon",14),n(),s(22,"mat-menu",9,2)(24,"a",15),c(25,"bitmagnet.io"),n(),s(26,"a",16),c(27),n(),s(28,"a",17),c(29),n(),s(30,"a",18),c(31),n()(),x(32,na,3,1,"a",19)(33,sa,4,2,"a",20),n(),s(34,"div",21),_e(35),n(),d(36,"app-theme-emitter"),T()),t&2){let e=o.$implicit,a=k(10),r=k(17),l=k(23),m=_();i(2),O(m.breakpoints.sizeAtLeast("Medium")?2:3),i(4),h("matMenuTriggerFor",a)("matTooltip",e("layout.change_theme")),i(5),C(m.themeManager.themes),i(2),h("matMenuTriggerFor",r)("matTooltip",e("layout.translate")),i(5),C(m.translateManager.availableLanguages),i(2),h("matTooltip",e("layout.external_links"))("matMenuTriggerFor",l),i(7),f(e("layout.bitmagnet_on_service",q(11,Zt))),i(2),f(e("layout.bitmagnet_on_service",q(12,$t))),i(2),f(e("layout.bitmagnet_on_service",q(13,ea))),i(),O(m.breakpoints.sizeAtLeast("Medium")?33:32)}}var bt=(()=>{class t{constructor(){this.themeManager=u(B),this.translateManager=u(gt),this.breakpoints=u(Oe),this.title=u(be),this.router=u(ke),this.health=u(Ge)}static{this.\u0275fac=function(a){return new(a||t)}}static{this.\u0275cmp=g({type:t,selectors:[["app-layout"]],standalone:!0,features:[b],ngContentSelectors:Qt,decls:1,vars:0,consts:[["themesMenu","matMenu"],["languagesMenu","matMenu"],["externalLinksMenu","matMenu"],["linkTorrents","routerLinkActive"],["linkDashboard","routerLinkActive"],[4,"transloco"],[1,"toolbar-header"],[1,"spacer"],["mat-icon-button","","aria-label","Theme",3,"matMenuTriggerFor","matTooltip"],[1,"layout-header-menu"],["mat-menu-item","",3,"class"],["mat-icon-button","",3,"matMenuTriggerFor","matTooltip"],["mat-menu-item","","matTooltipPosition","right","matTooltipShowDelay","500",3,"matTooltip","class"],["mat-icon-button","",3,"matTooltip","matMenuTriggerFor"],["svgIcon","external-link"],["mat-menu-item","","href","https://bitmagnet.io","target","_blank"],["mat-menu-item","","href","https://discord.gg/6mFNszX8qM","target","_blank"],["mat-menu-item","","href","https://github.com/bitmagnet-io/bitmagnet","target","_blank"],["mat-menu-item","","href","https://opencollective.com/bitmagnet","target","_blank"],["mat-icon-button","","href","https://opencollective.com/bitmagnet","target","_blank",1,"button-sponsor",3,"matTooltip"],["mat-button","","href","https://opencollective.com/bitmagnet","target","_blank",1,"button-sponsor",3,"matTooltip"],[1,"app-content"],["routerLink","torrents"],["svgIcon","magnet"],[1,"name"],["mat-button","","routerLink","torrents","routerLinkActive",""],["mat-button","","routerLink","dashboard","routerLinkActive",""],["routerLink","/torrents"],["mat-icon-button","","routerLink","dashboard","routerLinkActive","",3,"matTooltip"],["mat-menu-item","",3,"click"],["mat-menu-item","","matTooltipPosition","right","matTooltipShowDelay","500",3,"click","matTooltip"]],template:function(a,r){a&1&&(de(),x(0,ia,37,14,"ng-container",5))},dependencies:[I,qe,Ee,De,Fe,Re,Be,He,Ve,j,xe,we,E,Ke,Ne,ft,ht],styles:[".mat-toolbar.toolbar-header[_ngcontent-%COMP%]{position:sticky;top:0;z-index:10;--mat-toolbar-title-text-size: 22px;--mat-toolbar-standard-height: 56px;--mat-icon-color: #fff;padding:0 20px;--mdc-text-button-label-text-size: 15px}.mat-toolbar.toolbar-header[_ngcontent-%COMP%] h1[_ngcontent-%COMP%]{margin-top:-2px;margin-right:20px}.mat-toolbar.toolbar-header[_ngcontent-%COMP%] h1[_ngcontent-%COMP%] a[_ngcontent-%COMP%]{text-decoration:none}.mat-toolbar.toolbar-header[_ngcontent-%COMP%] h1[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{position:relative;top:4px}.mat-toolbar.toolbar-header[_ngcontent-%COMP%] h1[_ngcontent-%COMP%] .name[_ngcontent-%COMP%]{margin-left:10px;margin-right:16px}.mat-toolbar.toolbar-header[_ngcontent-%COMP%] h1[_ngcontent-%COMP%] app-version[_ngcontent-%COMP%]{font-size:13px}.mat-toolbar.toolbar-header[_ngcontent-%COMP%] .mdc-button[_ngcontent-%COMP%]{margin-left:6px;--mdc-text-button-label-text-weight: bold;--mat-text-button-horizontal-padding: 12px;--mdc-text-button-container-height: 30px}.mat-toolbar.toolbar-header[_ngcontent-%COMP%] nav[_ngcontent-%COMP%]{position:absolute;left:340px;top:0;height:56px;padding-top:14px}.mat-toolbar.toolbar-header[_ngcontent-%COMP%] nav[_ngcontent-%COMP%] a[_ngcontent-%COMP%]{margin-right:10px}.mat-toolbar.toolbar-header[_ngcontent-%COMP%] nav[_ngcontent-%COMP%] mat-icon[data-mat-icon-name=magnet][_ngcontent-%COMP%]{margin-top:-5px;overflow:visible}.app-content[_ngcontent-%COMP%]{z-index:1}.layout-header-menu[_ngcontent-%COMP%] a.active[_ngcontent-%COMP%]{font-weight:700}"]})}}return t})();var yt=(t,o)=>t.setDefaultFontSetClass("material-icons-outlined","material-symbols-outlined").addSvgIcon("magnet",o.bypassSecurityTrustResourceUrl("magnet.svg")).addSvgIcon("external-link",o.bypassSecurityTrustResourceUrl("external-link.svg")).addSvgIcon("binary",o.bypassSecurityTrustResourceUrl("binary.svg")).addSvgIcon("queue",o.bypassSecurityTrustResourceUrl("queue.svg"));var vt=(()=>{class t{constructor(e,a){this.title="bitmagnet",yt(e,a)}static{this.\u0275fac=function(a){return new(a||t)(V(Le),V(ye))}}static{this.\u0275cmp=g({type:t,selectors:[["app-root"]],standalone:!0,features:[b],decls:2,vars:0,template:function(a,r){a&1&&(s(0,"app-layout"),d(1,"router-outlet"),n())},dependencies:[ve,bt]})}}return t})();fe(vt,dt).catch(t=>console.error(t)); diff --git a/webui/dist/bitmagnet/material-icons-latin-400-normal.59322316b3fd6063.woff2 b/webui/dist/bitmagnet/browser/media/material-icons-latin-400-normal-LEZCGFVT.woff2 similarity index 100% rename from webui/dist/bitmagnet/material-icons-latin-400-normal.59322316b3fd6063.woff2 rename to webui/dist/bitmagnet/browser/media/material-icons-latin-400-normal-LEZCGFVT.woff2 diff --git a/webui/dist/bitmagnet/material-icons-latin-400-normal.728e8cb4aef5a9bf.woff b/webui/dist/bitmagnet/browser/media/material-icons-latin-400-normal-OKHIZNFO.woff similarity index 100% rename from webui/dist/bitmagnet/material-icons-latin-400-normal.728e8cb4aef5a9bf.woff rename to webui/dist/bitmagnet/browser/media/material-icons-latin-400-normal-OKHIZNFO.woff diff --git a/webui/dist/bitmagnet/material-icons-outlined-latin-400-normal.f86cb7b0aa53f0fe.woff2 b/webui/dist/bitmagnet/browser/media/material-icons-outlined-latin-400-normal-7BWLPMFK.woff2 similarity index 100% rename from webui/dist/bitmagnet/material-icons-outlined-latin-400-normal.f86cb7b0aa53f0fe.woff2 rename to webui/dist/bitmagnet/browser/media/material-icons-outlined-latin-400-normal-7BWLPMFK.woff2 diff --git a/webui/dist/bitmagnet/material-icons-outlined-latin-400-normal.78a93b2079680a08.woff b/webui/dist/bitmagnet/browser/media/material-icons-outlined-latin-400-normal-PCUTWIDZ.woff similarity index 100% rename from webui/dist/bitmagnet/material-icons-outlined-latin-400-normal.78a93b2079680a08.woff rename to webui/dist/bitmagnet/browser/media/material-icons-outlined-latin-400-normal-PCUTWIDZ.woff diff --git a/webui/dist/bitmagnet/browser/media/material-symbols-outlined-latin-100-normal-KBIUMYAA.woff b/webui/dist/bitmagnet/browser/media/material-symbols-outlined-latin-100-normal-KBIUMYAA.woff new file mode 100644 index 0000000..24c5833 Binary files /dev/null and b/webui/dist/bitmagnet/browser/media/material-symbols-outlined-latin-100-normal-KBIUMYAA.woff differ diff --git a/webui/dist/bitmagnet/browser/media/material-symbols-outlined-latin-100-normal-Q755U3GZ.woff2 b/webui/dist/bitmagnet/browser/media/material-symbols-outlined-latin-100-normal-Q755U3GZ.woff2 new file mode 100644 index 0000000..66a8034 Binary files /dev/null and b/webui/dist/bitmagnet/browser/media/material-symbols-outlined-latin-100-normal-Q755U3GZ.woff2 differ diff --git a/webui/dist/bitmagnet/browser/media/material-symbols-outlined-latin-200-normal-A2Z3HCC2.woff2 b/webui/dist/bitmagnet/browser/media/material-symbols-outlined-latin-200-normal-A2Z3HCC2.woff2 new file mode 100644 index 0000000..1371bab Binary files /dev/null and b/webui/dist/bitmagnet/browser/media/material-symbols-outlined-latin-200-normal-A2Z3HCC2.woff2 differ diff --git a/webui/dist/bitmagnet/browser/media/material-symbols-outlined-latin-200-normal-JBR4MHAF.woff b/webui/dist/bitmagnet/browser/media/material-symbols-outlined-latin-200-normal-JBR4MHAF.woff new file mode 100644 index 0000000..cfb6be3 Binary files /dev/null and b/webui/dist/bitmagnet/browser/media/material-symbols-outlined-latin-200-normal-JBR4MHAF.woff differ diff --git a/webui/dist/bitmagnet/browser/media/material-symbols-outlined-latin-300-normal-JTVX56JQ.woff b/webui/dist/bitmagnet/browser/media/material-symbols-outlined-latin-300-normal-JTVX56JQ.woff new file mode 100644 index 0000000..d0a66fb Binary files /dev/null and b/webui/dist/bitmagnet/browser/media/material-symbols-outlined-latin-300-normal-JTVX56JQ.woff differ diff --git a/webui/dist/bitmagnet/browser/media/material-symbols-outlined-latin-300-normal-QVIUYGFA.woff2 b/webui/dist/bitmagnet/browser/media/material-symbols-outlined-latin-300-normal-QVIUYGFA.woff2 new file mode 100644 index 0000000..c9aaa54 Binary files /dev/null and b/webui/dist/bitmagnet/browser/media/material-symbols-outlined-latin-300-normal-QVIUYGFA.woff2 differ diff --git a/webui/dist/bitmagnet/browser/media/material-symbols-outlined-latin-400-normal-4FRPJO5X.woff2 b/webui/dist/bitmagnet/browser/media/material-symbols-outlined-latin-400-normal-4FRPJO5X.woff2 new file mode 100644 index 0000000..52d1c1a Binary files /dev/null and b/webui/dist/bitmagnet/browser/media/material-symbols-outlined-latin-400-normal-4FRPJO5X.woff2 differ diff --git a/webui/dist/bitmagnet/browser/media/material-symbols-outlined-latin-400-normal-CBTIXZPO.woff b/webui/dist/bitmagnet/browser/media/material-symbols-outlined-latin-400-normal-CBTIXZPO.woff new file mode 100644 index 0000000..acb2675 Binary files /dev/null and b/webui/dist/bitmagnet/browser/media/material-symbols-outlined-latin-400-normal-CBTIXZPO.woff differ diff --git a/webui/dist/bitmagnet/browser/media/roboto-cyrillic-400-normal-LBMDEO7N.woff b/webui/dist/bitmagnet/browser/media/roboto-cyrillic-400-normal-LBMDEO7N.woff new file mode 100644 index 0000000..44e012a Binary files /dev/null and b/webui/dist/bitmagnet/browser/media/roboto-cyrillic-400-normal-LBMDEO7N.woff differ diff --git a/webui/dist/bitmagnet/browser/media/roboto-cyrillic-400-normal-ZSAA7UM5.woff2 b/webui/dist/bitmagnet/browser/media/roboto-cyrillic-400-normal-ZSAA7UM5.woff2 new file mode 100644 index 0000000..a4962e9 Binary files /dev/null and b/webui/dist/bitmagnet/browser/media/roboto-cyrillic-400-normal-ZSAA7UM5.woff2 differ diff --git a/webui/dist/bitmagnet/browser/media/roboto-cyrillic-ext-400-normal-3LPF5CMR.woff b/webui/dist/bitmagnet/browser/media/roboto-cyrillic-ext-400-normal-3LPF5CMR.woff new file mode 100644 index 0000000..6994a4d Binary files /dev/null and b/webui/dist/bitmagnet/browser/media/roboto-cyrillic-ext-400-normal-3LPF5CMR.woff differ diff --git a/webui/dist/bitmagnet/browser/media/roboto-cyrillic-ext-400-normal-ZDADDXVC.woff2 b/webui/dist/bitmagnet/browser/media/roboto-cyrillic-ext-400-normal-ZDADDXVC.woff2 new file mode 100644 index 0000000..e3d708f Binary files /dev/null and b/webui/dist/bitmagnet/browser/media/roboto-cyrillic-ext-400-normal-ZDADDXVC.woff2 differ diff --git a/webui/dist/bitmagnet/browser/media/roboto-greek-400-normal-DTDUS3GJ.woff b/webui/dist/bitmagnet/browser/media/roboto-greek-400-normal-DTDUS3GJ.woff new file mode 100644 index 0000000..f8226bb Binary files /dev/null and b/webui/dist/bitmagnet/browser/media/roboto-greek-400-normal-DTDUS3GJ.woff differ diff --git a/webui/dist/bitmagnet/browser/media/roboto-greek-400-normal-XOLKJBVR.woff2 b/webui/dist/bitmagnet/browser/media/roboto-greek-400-normal-XOLKJBVR.woff2 new file mode 100644 index 0000000..a7f32b6 Binary files /dev/null and b/webui/dist/bitmagnet/browser/media/roboto-greek-400-normal-XOLKJBVR.woff2 differ diff --git a/webui/dist/bitmagnet/browser/media/roboto-greek-ext-400-normal-W33USUDN.woff2 b/webui/dist/bitmagnet/browser/media/roboto-greek-ext-400-normal-W33USUDN.woff2 new file mode 100644 index 0000000..47ce460 Binary files /dev/null and b/webui/dist/bitmagnet/browser/media/roboto-greek-ext-400-normal-W33USUDN.woff2 differ diff --git a/webui/dist/bitmagnet/browser/media/roboto-greek-ext-400-normal-XVSFLYYV.woff b/webui/dist/bitmagnet/browser/media/roboto-greek-ext-400-normal-XVSFLYYV.woff new file mode 100644 index 0000000..0aea65a Binary files /dev/null and b/webui/dist/bitmagnet/browser/media/roboto-greek-ext-400-normal-XVSFLYYV.woff differ diff --git a/webui/dist/bitmagnet/browser/media/roboto-latin-400-normal-JNYDHCS5.woff2 b/webui/dist/bitmagnet/browser/media/roboto-latin-400-normal-JNYDHCS5.woff2 new file mode 100644 index 0000000..2d7b215 Binary files /dev/null and b/webui/dist/bitmagnet/browser/media/roboto-latin-400-normal-JNYDHCS5.woff2 differ diff --git a/webui/dist/bitmagnet/browser/media/roboto-latin-400-normal-Q4ODZ3WO.woff b/webui/dist/bitmagnet/browser/media/roboto-latin-400-normal-Q4ODZ3WO.woff new file mode 100644 index 0000000..4333e5a Binary files /dev/null and b/webui/dist/bitmagnet/browser/media/roboto-latin-400-normal-Q4ODZ3WO.woff differ diff --git a/webui/dist/bitmagnet/browser/media/roboto-latin-ext-400-normal-HADPAURF.woff2 b/webui/dist/bitmagnet/browser/media/roboto-latin-ext-400-normal-HADPAURF.woff2 new file mode 100644 index 0000000..20c87e6 Binary files /dev/null and b/webui/dist/bitmagnet/browser/media/roboto-latin-ext-400-normal-HADPAURF.woff2 differ diff --git a/webui/dist/bitmagnet/browser/media/roboto-latin-ext-400-normal-SAKQSSDU.woff b/webui/dist/bitmagnet/browser/media/roboto-latin-ext-400-normal-SAKQSSDU.woff new file mode 100644 index 0000000..3658dd2 Binary files /dev/null and b/webui/dist/bitmagnet/browser/media/roboto-latin-ext-400-normal-SAKQSSDU.woff differ diff --git a/webui/dist/bitmagnet/browser/media/roboto-vietnamese-400-normal-PKET2HVX.woff b/webui/dist/bitmagnet/browser/media/roboto-vietnamese-400-normal-PKET2HVX.woff new file mode 100644 index 0000000..cdeb26c Binary files /dev/null and b/webui/dist/bitmagnet/browser/media/roboto-vietnamese-400-normal-PKET2HVX.woff differ diff --git a/webui/dist/bitmagnet/browser/media/roboto-vietnamese-400-normal-RHIHKZKP.woff2 b/webui/dist/bitmagnet/browser/media/roboto-vietnamese-400-normal-RHIHKZKP.woff2 new file mode 100644 index 0000000..cfd043d Binary files /dev/null and b/webui/dist/bitmagnet/browser/media/roboto-vietnamese-400-normal-RHIHKZKP.woff2 differ diff --git a/webui/dist/bitmagnet/browser/polyfills-FFHMD2TL.js b/webui/dist/bitmagnet/browser/polyfills-FFHMD2TL.js new file mode 100644 index 0000000..b01b791 --- /dev/null +++ b/webui/dist/bitmagnet/browser/polyfills-FFHMD2TL.js @@ -0,0 +1,2 @@ +var ce=globalThis;function te(e){return(ce.__Zone_symbol_prefix||"__zone_symbol__")+e}function dt(){let e=ce.performance;function n(M){e&&e.mark&&e.mark(M)}function a(M,s){e&&e.measure&&e.measure(M,s)}n("Zone");class t{static{this.__symbol__=te}static assertZonePatched(){if(ce.Promise!==S.ZoneAwarePromise)throw new Error("Zone.js has detected that ZoneAwarePromise `(window|global).Promise` has been overwritten.\nMost likely cause is that a Promise polyfill has been loaded after Zone.js (Polyfilling Promise api is not necessary when zone.js is loaded. If you must load one, do so before loading zone.js.)")}static get root(){let s=t.current;for(;s.parent;)s=s.parent;return s}static get current(){return b.zone}static get currentTask(){return D}static __load_patch(s,i,o=!1){if(S.hasOwnProperty(s)){let g=ce[te("forceDuplicateZoneCheck")]===!0;if(!o&&g)throw Error("Already loaded patch: "+s)}else if(!ce["__Zone_disable_"+s]){let g="Zone:"+s;n(g),S[s]=i(ce,t,w),a(g,g)}}get parent(){return this._parent}get name(){return this._name}constructor(s,i){this._parent=s,this._name=i?i.name||"unnamed":"",this._properties=i&&i.properties||{},this._zoneDelegate=new f(this,this._parent&&this._parent._zoneDelegate,i)}get(s){let i=this.getZoneWith(s);if(i)return i._properties[s]}getZoneWith(s){let i=this;for(;i;){if(i._properties.hasOwnProperty(s))return i;i=i._parent}return null}fork(s){if(!s)throw new Error("ZoneSpec required!");return this._zoneDelegate.fork(this,s)}wrap(s,i){if(typeof s!="function")throw new Error("Expecting function got: "+s);let o=this._zoneDelegate.intercept(this,s,i),g=this;return function(){return g.runGuarded(o,this,arguments,i)}}run(s,i,o,g){b={parent:b,zone:this};try{return this._zoneDelegate.invoke(this,s,i,o,g)}finally{b=b.parent}}runGuarded(s,i=null,o,g){b={parent:b,zone:this};try{try{return this._zoneDelegate.invoke(this,s,i,o,g)}catch(V){if(this._zoneDelegate.handleError(this,V))throw V}}finally{b=b.parent}}runTask(s,i,o){if(s.zone!=this)throw new Error("A task can only be run in the zone of creation! (Creation: "+(s.zone||J).name+"; Execution: "+this.name+")");let g=s,{type:V,data:{isPeriodic:ee=!1,isRefreshable:Z=!1}={}}=s;if(s.state===q&&(V===z||V===y))return;let he=s.state!=A;he&&g._transitionTo(A,d);let _e=D;D=g,b={parent:b,zone:this};try{V==y&&s.data&&!ee&&!Z&&(s.cancelFn=void 0);try{return this._zoneDelegate.invokeTask(this,g,i,o)}catch(Q){if(this._zoneDelegate.handleError(this,Q))throw Q}}finally{let Q=s.state;if(Q!==q&&Q!==X)if(V==z||ee||Z&&Q===k)he&&g._transitionTo(d,A,k);else{let Ee=g._zoneDelegates;this._updateTaskCount(g,-1),he&&g._transitionTo(q,A,q),Z&&(g._zoneDelegates=Ee)}b=b.parent,D=_e}}scheduleTask(s){if(s.zone&&s.zone!==this){let o=this;for(;o;){if(o===s.zone)throw Error(`can not reschedule task to ${this.name} which is descendants of the original zone ${s.zone.name}`);o=o.parent}}s._transitionTo(k,q);let i=[];s._zoneDelegates=i,s._zone=this;try{s=this._zoneDelegate.scheduleTask(this,s)}catch(o){throw s._transitionTo(X,k,q),this._zoneDelegate.handleError(this,o),o}return s._zoneDelegates===i&&this._updateTaskCount(s,1),s.state==k&&s._transitionTo(d,k),s}scheduleMicroTask(s,i,o,g){return this.scheduleTask(new E(G,s,i,o,g,void 0))}scheduleMacroTask(s,i,o,g,V){return this.scheduleTask(new E(y,s,i,o,g,V))}scheduleEventTask(s,i,o,g,V){return this.scheduleTask(new E(z,s,i,o,g,V))}cancelTask(s){if(s.zone!=this)throw new Error("A task can only be cancelled in the zone of creation! (Creation: "+(s.zone||J).name+"; Execution: "+this.name+")");if(!(s.state!==d&&s.state!==A)){s._transitionTo(x,d,A);try{this._zoneDelegate.cancelTask(this,s)}catch(i){throw s._transitionTo(X,x),this._zoneDelegate.handleError(this,i),i}return this._updateTaskCount(s,-1),s._transitionTo(q,x),s.runCount=-1,s}}_updateTaskCount(s,i){let o=s._zoneDelegates;i==-1&&(s._zoneDelegates=null);for(let g=0;gM.hasTask(i,o),onScheduleTask:(M,s,i,o)=>M.scheduleTask(i,o),onInvokeTask:(M,s,i,o,g,V)=>M.invokeTask(i,o,g,V),onCancelTask:(M,s,i,o)=>M.cancelTask(i,o)};class f{get zone(){return this._zone}constructor(s,i,o){this._taskCounts={microTask:0,macroTask:0,eventTask:0},this._zone=s,this._parentDelegate=i,this._forkZS=o&&(o&&o.onFork?o:i._forkZS),this._forkDlgt=o&&(o.onFork?i:i._forkDlgt),this._forkCurrZone=o&&(o.onFork?this._zone:i._forkCurrZone),this._interceptZS=o&&(o.onIntercept?o:i._interceptZS),this._interceptDlgt=o&&(o.onIntercept?i:i._interceptDlgt),this._interceptCurrZone=o&&(o.onIntercept?this._zone:i._interceptCurrZone),this._invokeZS=o&&(o.onInvoke?o:i._invokeZS),this._invokeDlgt=o&&(o.onInvoke?i:i._invokeDlgt),this._invokeCurrZone=o&&(o.onInvoke?this._zone:i._invokeCurrZone),this._handleErrorZS=o&&(o.onHandleError?o:i._handleErrorZS),this._handleErrorDlgt=o&&(o.onHandleError?i:i._handleErrorDlgt),this._handleErrorCurrZone=o&&(o.onHandleError?this._zone:i._handleErrorCurrZone),this._scheduleTaskZS=o&&(o.onScheduleTask?o:i._scheduleTaskZS),this._scheduleTaskDlgt=o&&(o.onScheduleTask?i:i._scheduleTaskDlgt),this._scheduleTaskCurrZone=o&&(o.onScheduleTask?this._zone:i._scheduleTaskCurrZone),this._invokeTaskZS=o&&(o.onInvokeTask?o:i._invokeTaskZS),this._invokeTaskDlgt=o&&(o.onInvokeTask?i:i._invokeTaskDlgt),this._invokeTaskCurrZone=o&&(o.onInvokeTask?this._zone:i._invokeTaskCurrZone),this._cancelTaskZS=o&&(o.onCancelTask?o:i._cancelTaskZS),this._cancelTaskDlgt=o&&(o.onCancelTask?i:i._cancelTaskDlgt),this._cancelTaskCurrZone=o&&(o.onCancelTask?this._zone:i._cancelTaskCurrZone),this._hasTaskZS=null,this._hasTaskDlgt=null,this._hasTaskDlgtOwner=null,this._hasTaskCurrZone=null;let g=o&&o.onHasTask,V=i&&i._hasTaskZS;(g||V)&&(this._hasTaskZS=g?o:c,this._hasTaskDlgt=i,this._hasTaskDlgtOwner=this,this._hasTaskCurrZone=this._zone,o.onScheduleTask||(this._scheduleTaskZS=c,this._scheduleTaskDlgt=i,this._scheduleTaskCurrZone=this._zone),o.onInvokeTask||(this._invokeTaskZS=c,this._invokeTaskDlgt=i,this._invokeTaskCurrZone=this._zone),o.onCancelTask||(this._cancelTaskZS=c,this._cancelTaskDlgt=i,this._cancelTaskCurrZone=this._zone))}fork(s,i){return this._forkZS?this._forkZS.onFork(this._forkDlgt,this.zone,s,i):new t(s,i)}intercept(s,i,o){return this._interceptZS?this._interceptZS.onIntercept(this._interceptDlgt,this._interceptCurrZone,s,i,o):i}invoke(s,i,o,g,V){return this._invokeZS?this._invokeZS.onInvoke(this._invokeDlgt,this._invokeCurrZone,s,i,o,g,V):i.apply(o,g)}handleError(s,i){return this._handleErrorZS?this._handleErrorZS.onHandleError(this._handleErrorDlgt,this._handleErrorCurrZone,s,i):!0}scheduleTask(s,i){let o=i;if(this._scheduleTaskZS)this._hasTaskZS&&o._zoneDelegates.push(this._hasTaskDlgtOwner),o=this._scheduleTaskZS.onScheduleTask(this._scheduleTaskDlgt,this._scheduleTaskCurrZone,s,i),o||(o=i);else if(i.scheduleFn)i.scheduleFn(i);else if(i.type==G)U(i);else throw new Error("Task is missing scheduleFn.");return o}invokeTask(s,i,o,g){return this._invokeTaskZS?this._invokeTaskZS.onInvokeTask(this._invokeTaskDlgt,this._invokeTaskCurrZone,s,i,o,g):i.callback.apply(o,g)}cancelTask(s,i){let o;if(this._cancelTaskZS)o=this._cancelTaskZS.onCancelTask(this._cancelTaskDlgt,this._cancelTaskCurrZone,s,i);else{if(!i.cancelFn)throw Error("Task is not cancelable");o=i.cancelFn(i)}return o}hasTask(s,i){try{this._hasTaskZS&&this._hasTaskZS.onHasTask(this._hasTaskDlgt,this._hasTaskCurrZone,s,i)}catch(o){this.handleError(s,o)}}_updateTaskCount(s,i){let o=this._taskCounts,g=o[s],V=o[s]=g+i;if(V<0)throw new Error("More tasks executed then were scheduled.");if(g==0||V==0){let ee={microTask:o.microTask>0,macroTask:o.macroTask>0,eventTask:o.eventTask>0,change:s};this.hasTask(this._zone,ee)}}}class E{constructor(s,i,o,g,V,ee){if(this._zone=null,this.runCount=0,this._zoneDelegates=null,this._state="notScheduled",this.type=s,this.source=i,this.data=g,this.scheduleFn=V,this.cancelFn=ee,!o)throw new Error("callback is not defined");this.callback=o;let Z=this;s===z&&g&&g.useG?this.invoke=E.invokeTask:this.invoke=function(){return E.invokeTask.call(ce,Z,this,arguments)}}static invokeTask(s,i,o){s||(s=this),K++;try{return s.runCount++,s.zone.runTask(s,i,o)}finally{K==1&&$(),K--}}get zone(){return this._zone}get state(){return this._state}cancelScheduleRequest(){this._transitionTo(q,k)}_transitionTo(s,i,o){if(this._state===i||this._state===o)this._state=s,s==q&&(this._zoneDelegates=null);else throw new Error(`${this.type} '${this.source}': can not transition to '${s}', expecting state '${i}'${o?" or '"+o+"'":""}, was '${this._state}'.`)}toString(){return this.data&&typeof this.data.handleId<"u"?this.data.handleId.toString():Object.prototype.toString.call(this)}toJSON(){return{type:this.type,state:this.state,source:this.source,zone:this.zone.name,runCount:this.runCount}}}let T=te("setTimeout"),p=te("Promise"),C=te("then"),_=[],P=!1,I;function H(M){if(I||ce[p]&&(I=ce[p].resolve(0)),I){let s=I[C];s||(s=I.then),s.call(I,M)}else ce[T](M,0)}function U(M){K===0&&_.length===0&&H($),M&&_.push(M)}function $(){if(!P){for(P=!0;_.length;){let M=_;_=[];for(let s=0;sb,onUnhandledError:W,microtaskDrainDone:W,scheduleMicroTask:U,showUncaughtError:()=>!t[te("ignoreConsoleErrorUncaughtError")],patchEventTarget:()=>[],patchOnProperties:W,patchMethod:()=>W,bindArguments:()=>[],patchThen:()=>W,patchMacroTask:()=>W,patchEventPrototype:()=>W,isIEOrEdge:()=>!1,getGlobalObjects:()=>{},ObjectDefineProperty:()=>W,ObjectGetOwnPropertyDescriptor:()=>{},ObjectCreate:()=>{},ArraySlice:()=>[],patchClass:()=>W,wrapWithCurrentZone:()=>W,filterProperties:()=>[],attachOriginToPatched:()=>W,_redefineProperty:()=>W,patchCallbacks:()=>W,nativeScheduleMicroTask:H},b={parent:null,zone:new t(null,null)},D=null,K=0;function W(){}return a("Zone","Zone"),t}function _t(){let e=globalThis,n=e[te("forceDuplicateZoneCheck")]===!0;if(e.Zone&&(n||typeof e.Zone.__symbol__!="function"))throw new Error("Zone already loaded.");return e.Zone??=dt(),e.Zone}var be=Object.getOwnPropertyDescriptor,Ae=Object.defineProperty,je=Object.getPrototypeOf,Et=Object.create,Tt=Array.prototype.slice,He="addEventListener",xe="removeEventListener",Le=te(He),Ie=te(xe),ae="true",le="false",Pe=te("");function Ve(e,n){return Zone.current.wrap(e,n)}function Ge(e,n,a,t,c){return Zone.current.scheduleMacroTask(e,n,a,t,c)}var j=te,De=typeof window<"u",pe=De?window:void 0,Y=De&&pe||globalThis,gt="removeAttribute";function Fe(e,n){for(let a=e.length-1;a>=0;a--)typeof e[a]=="function"&&(e[a]=Ve(e[a],n+"_"+a));return e}function yt(e,n){let a=e.constructor.name;for(let t=0;t{let p=function(){return T.apply(this,Fe(arguments,a+"."+c))};return fe(p,T),p})(f)}}}function tt(e){return e?e.writable===!1?!1:!(typeof e.get=="function"&&typeof e.set>"u"):!0}var nt=typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope,Se=!("nw"in Y)&&typeof Y.process<"u"&&Y.process.toString()==="[object process]",Be=!Se&&!nt&&!!(De&&pe.HTMLElement),rt=typeof Y.process<"u"&&Y.process.toString()==="[object process]"&&!nt&&!!(De&&pe.HTMLElement),Ce={},mt=j("enable_beforeunload"),Ye=function(e){if(e=e||Y.event,!e)return;let n=Ce[e.type];n||(n=Ce[e.type]=j("ON_PROPERTY"+e.type));let a=this||e.target||Y,t=a[n],c;if(Be&&a===pe&&e.type==="error"){let f=e;c=t&&t.call(this,f.message,f.filename,f.lineno,f.colno,f.error),c===!0&&e.preventDefault()}else c=t&&t.apply(this,arguments),e.type==="beforeunload"&&Y[mt]&&typeof c=="string"?e.returnValue=c:c!=null&&!c&&e.preventDefault();return c};function $e(e,n,a){let t=be(e,n);if(!t&&a&&be(a,n)&&(t={enumerable:!0,configurable:!0}),!t||!t.configurable)return;let c=j("on"+n+"patched");if(e.hasOwnProperty(c)&&e[c])return;delete t.writable,delete t.value;let f=t.get,E=t.set,T=n.slice(2),p=Ce[T];p||(p=Ce[T]=j("ON_PROPERTY"+T)),t.set=function(C){let _=this;if(!_&&e===Y&&(_=Y),!_)return;typeof _[p]=="function"&&_.removeEventListener(T,Ye),E&&E.call(_,null),_[p]=C,typeof C=="function"&&_.addEventListener(T,Ye,!1)},t.get=function(){let C=this;if(!C&&e===Y&&(C=Y),!C)return null;let _=C[p];if(_)return _;if(f){let P=f.call(this);if(P)return t.set.call(this,P),typeof C[gt]=="function"&&C.removeAttribute(n),P}return null},Ae(e,n,t),e[c]=!0}function ot(e,n,a){if(n)for(let t=0;tfunction(E,T){let p=a(E,T);return p.cbIdx>=0&&typeof T[p.cbIdx]=="function"?Ge(p.name,T[p.cbIdx],p,c):f.apply(E,T)})}function fe(e,n){e[j("OriginalDelegate")]=n}var Je=!1,Me=!1;function kt(){try{let e=pe.navigator.userAgent;if(e.indexOf("MSIE ")!==-1||e.indexOf("Trident/")!==-1)return!0}catch{}return!1}function vt(){if(Je)return Me;Je=!0;try{let e=pe.navigator.userAgent;(e.indexOf("MSIE ")!==-1||e.indexOf("Trident/")!==-1||e.indexOf("Edge/")!==-1)&&(Me=!0)}catch{}return Me}function Ke(e){return typeof e=="function"}function Qe(e){return typeof e=="number"}var me=!1;if(typeof window<"u")try{let e=Object.defineProperty({},"passive",{get:function(){me=!0}});window.addEventListener("test",e,e),window.removeEventListener("test",e,e)}catch{me=!1}var bt={useG:!0},ne={},st={},it=new RegExp("^"+Pe+"(\\w+)(true|false)$"),ct=j("propagationStopped");function at(e,n){let a=(n?n(e):e)+le,t=(n?n(e):e)+ae,c=Pe+a,f=Pe+t;ne[e]={},ne[e][le]=c,ne[e][ae]=f}function Pt(e,n,a,t){let c=t&&t.add||He,f=t&&t.rm||xe,E=t&&t.listeners||"eventListeners",T=t&&t.rmAll||"removeAllListeners",p=j(c),C="."+c+":",_="prependListener",P="."+_+":",I=function(k,d,A){if(k.isRemoved)return;let x=k.callback;typeof x=="object"&&x.handleEvent&&(k.callback=y=>x.handleEvent(y),k.originalDelegate=x);let X;try{k.invoke(k,d,[A])}catch(y){X=y}let G=k.options;if(G&&typeof G=="object"&&G.once){let y=k.originalDelegate?k.originalDelegate:k.callback;d[f].call(d,A.type,y,G)}return X};function H(k,d,A){if(d=d||e.event,!d)return;let x=k||d.target||e,X=x[ne[d.type][A?ae:le]];if(X){let G=[];if(X.length===1){let y=I(X[0],x,d);y&&G.push(y)}else{let y=X.slice();for(let z=0;z{throw z})}}}let U=function(k){return H(this,k,!1)},$=function(k){return H(this,k,!0)};function J(k,d){if(!k)return!1;let A=!0;d&&d.useG!==void 0&&(A=d.useG);let x=d&&d.vh,X=!0;d&&d.chkDup!==void 0&&(X=d.chkDup);let G=!1;d&&d.rt!==void 0&&(G=d.rt);let y=k;for(;y&&!y.hasOwnProperty(c);)y=je(y);if(!y&&k[c]&&(y=k),!y||y[p])return!1;let z=d&&d.eventNameToString,S={},w=y[p]=y[c],b=y[j(f)]=y[f],D=y[j(E)]=y[E],K=y[j(T)]=y[T],W;d&&d.prepend&&(W=y[j(d.prepend)]=y[d.prepend]);function M(r,u){return!me&&typeof r=="object"&&r?!!r.capture:!me||!u?r:typeof r=="boolean"?{capture:r,passive:!0}:r?typeof r=="object"&&r.passive!==!1?{...r,passive:!0}:r:{passive:!0}}let s=function(r){if(!S.isExisting)return w.call(S.target,S.eventName,S.capture?$:U,S.options)},i=function(r){if(!r.isRemoved){let u=ne[r.eventName],v;u&&(v=u[r.capture?ae:le]);let R=v&&r.target[v];if(R){for(let m=0;mre.zone.cancelTask(re);r.call(Te,"abort",ie,{once:!0}),re.removeAbortListener=()=>Te.removeEventListener("abort",ie)}if(S.target=null,ke&&(ke.taskData=null),Ue&&(S.options.once=!0),!me&&typeof re.options=="boolean"||(re.options=se),re.target=N,re.capture=Oe,re.eventName=L,B&&(re.originalDelegate=F),O?ge.unshift(re):ge.push(re),m)return N}};return y[c]=l(w,C,ee,Z,G),W&&(y[_]=l(W,P,g,Z,G,!0)),y[f]=function(){let r=this||e,u=arguments[0];d&&d.transferEventName&&(u=d.transferEventName(u));let v=arguments[2],R=v?typeof v=="boolean"?!0:v.capture:!1,m=arguments[1];if(!m)return b.apply(this,arguments);if(x&&!x(b,m,r,arguments))return;let O=ne[u],N;O&&(N=O[R?ae:le]);let L=N&&r[N];if(L)for(let F=0;Ffunction(c,f){c[ct]=!0,t&&t.apply(c,f)})}function Rt(e,n){n.patchMethod(e,"queueMicrotask",a=>function(t,c){Zone.current.scheduleMicroTask("queueMicrotask",c[0])})}var Re=j("zoneTask");function ye(e,n,a,t){let c=null,f=null;n+=t,a+=t;let E={};function T(C){let _=C.data;_.args[0]=function(){return C.invoke.apply(this,arguments)};let P=c.apply(e,_.args);return Qe(P)?_.handleId=P:(_.handle=P,_.isRefreshable=Ke(P.refresh)),C}function p(C){let{handle:_,handleId:P}=C.data;return f.call(e,_??P)}c=ue(e,n,C=>function(_,P){if(Ke(P[0])){let I={isRefreshable:!1,isPeriodic:t==="Interval",delay:t==="Timeout"||t==="Interval"?P[1]||0:void 0,args:P},H=P[0];P[0]=function(){try{return H.apply(this,arguments)}finally{let{handle:A,handleId:x,isPeriodic:X,isRefreshable:G}=I;!X&&!G&&(x?delete E[x]:A&&(A[Re]=null))}};let U=Ge(n,P[0],I,T,p);if(!U)return U;let{handleId:$,handle:J,isRefreshable:q,isPeriodic:k}=U.data;if($)E[$]=U;else if(J&&(J[Re]=U,q&&!k)){let d=J.refresh;J.refresh=function(){let{zone:A,state:x}=U;return x==="notScheduled"?(U._state="scheduled",A._updateTaskCount(U,1)):x==="running"&&(U._state="scheduling"),d.call(this)}}return J??$??U}else return C.apply(e,P)}),f=ue(e,a,C=>function(_,P){let I=P[0],H;Qe(I)?(H=E[I],delete E[I]):(H=I?.[Re],H?I[Re]=null:H=I),H?.type?H.cancelFn&&H.zone.cancelTask(H):C.apply(e,P)})}function Ct(e,n){let{isBrowser:a,isMix:t}=n.getGlobalObjects();if(!a&&!t||!e.customElements||!("customElements"in e))return;let c=["connectedCallback","disconnectedCallback","adoptedCallback","attributeChangedCallback","formAssociatedCallback","formDisabledCallback","formResetCallback","formStateRestoreCallback"];n.patchCallbacks(n,e.customElements,"customElements","define",c)}function Dt(e,n){if(Zone[n.symbol("patchEventTarget")])return;let{eventNames:a,zoneSymbolEventNames:t,TRUE_STR:c,FALSE_STR:f,ZONE_SYMBOL_PREFIX:E}=n.getGlobalObjects();for(let p=0;pf.target===e);if(!t||t.length===0)return n;let c=t[0].ignoreProperties;return n.filter(f=>c.indexOf(f)===-1)}function et(e,n,a,t){if(!e)return;let c=ut(e,n,a);ot(e,c,t)}function Ze(e){return Object.getOwnPropertyNames(e).filter(n=>n.startsWith("on")&&n.length>2).map(n=>n.substring(2))}function Ot(e,n){if(Se&&!rt||Zone[e.symbol("patchEvents")])return;let a=n.__Zone_ignore_on_properties,t=[];if(Be){let c=window;t=t.concat(["Document","SVGElement","Element","HTMLElement","HTMLBodyElement","HTMLMediaElement","HTMLFrameSetElement","HTMLFrameElement","HTMLIFrameElement","HTMLMarqueeElement","Worker"]);let f=kt()?[{target:c,ignoreProperties:["error"]}]:[];et(c,Ze(c),a&&a.concat(f),je(c))}t=t.concat(["XMLHttpRequest","XMLHttpRequestEventTarget","IDBIndex","IDBRequest","IDBOpenDBRequest","IDBDatabase","IDBTransaction","IDBCursor","WebSocket"]);for(let c=0;c{let a=n[e.__symbol__("legacyPatch")];a&&a()}),e.__load_patch("timers",n=>{let a="set",t="clear";ye(n,a,t,"Timeout"),ye(n,a,t,"Interval"),ye(n,a,t,"Immediate")}),e.__load_patch("requestAnimationFrame",n=>{ye(n,"request","cancel","AnimationFrame"),ye(n,"mozRequest","mozCancel","AnimationFrame"),ye(n,"webkitRequest","webkitCancel","AnimationFrame")}),e.__load_patch("blocking",(n,a)=>{let t=["alert","prompt","confirm"];for(let c=0;cfunction(C,_){return a.current.run(E,n,_,p)})}}),e.__load_patch("EventTarget",(n,a,t)=>{St(n,t),Dt(n,t);let c=n.XMLHttpRequestEventTarget;c&&c.prototype&&t.patchEventTarget(n,t,[c.prototype])}),e.__load_patch("MutationObserver",(n,a,t)=>{ve("MutationObserver"),ve("WebKitMutationObserver")}),e.__load_patch("IntersectionObserver",(n,a,t)=>{ve("IntersectionObserver")}),e.__load_patch("FileReader",(n,a,t)=>{ve("FileReader")}),e.__load_patch("on_property",(n,a,t)=>{Ot(t,n)}),e.__load_patch("customElements",(n,a,t)=>{Ct(n,t)}),e.__load_patch("XHR",(n,a)=>{C(n);let t=j("xhrTask"),c=j("xhrSync"),f=j("xhrListener"),E=j("xhrScheduled"),T=j("xhrURL"),p=j("xhrErrorBeforeScheduled");function C(_){let P=_.XMLHttpRequest;if(!P)return;let I=P.prototype;function H(w){return w[t]}let U=I[Le],$=I[Ie];if(!U){let w=_.XMLHttpRequestEventTarget;if(w){let b=w.prototype;U=b[Le],$=b[Ie]}}let J="readystatechange",q="scheduled";function k(w){let b=w.data,D=b.target;D[E]=!1,D[p]=!1;let K=D[f];U||(U=D[Le],$=D[Ie]),K&&$.call(D,J,K);let W=D[f]=()=>{if(D.readyState===D.DONE)if(!b.aborted&&D[E]&&w.state===q){let s=D[a.__symbol__("loadfalse")];if(D.status!==0&&s&&s.length>0){let i=w.invoke;w.invoke=function(){let o=D[a.__symbol__("loadfalse")];for(let g=0;gfunction(w,b){return w[c]=b[2]==!1,w[T]=b[1],x.apply(w,b)}),X="XMLHttpRequest.send",G=j("fetchTaskAborting"),y=j("fetchTaskScheduling"),z=ue(I,"send",()=>function(w,b){if(a.current[y]===!0||w[c])return z.apply(w,b);{let D={target:w,url:w[T],isPeriodic:!1,args:b,aborted:!1},K=Ge(X,d,D,k,A);w&&w[p]===!0&&!D.aborted&&K.state===q&&K.invoke()}}),S=ue(I,"abort",()=>function(w,b){let D=H(w);if(D&&typeof D.type=="string"){if(D.cancelFn==null||D.data&&D.data.aborted)return;D.zone.cancelTask(D)}else if(a.current[G]===!0)return S.apply(w,b)})}}),e.__load_patch("geolocation",n=>{n.navigator&&n.navigator.geolocation&&yt(n.navigator.geolocation,["getCurrentPosition","watchPosition"])}),e.__load_patch("PromiseRejectionEvent",(n,a)=>{function t(c){return function(f){lt(n,c).forEach(T=>{let p=n.PromiseRejectionEvent;if(p){let C=new p(c,{promise:f.promise,reason:f.rejection});T.invoke(C)}})}}n.PromiseRejectionEvent&&(a[j("unhandledPromiseRejectionHandler")]=t("unhandledrejection"),a[j("rejectionHandledHandler")]=t("rejectionhandled"))}),e.__load_patch("queueMicrotask",(n,a,t)=>{Rt(n,t)})}function Lt(e){e.__load_patch("ZoneAwarePromise",(n,a,t)=>{let c=Object.getOwnPropertyDescriptor,f=Object.defineProperty;function E(h){if(h&&h.toString===Object.prototype.toString){let l=h.constructor&&h.constructor.name;return(l||"")+": "+JSON.stringify(h)}return h?h.toString():Object.prototype.toString.call(h)}let T=t.symbol,p=[],C=n[T("DISABLE_WRAPPING_UNCAUGHT_PROMISE_REJECTION")]!==!1,_=T("Promise"),P=T("then"),I="__creationTrace__";t.onUnhandledError=h=>{if(t.showUncaughtError()){let l=h&&h.rejection;l?console.error("Unhandled Promise rejection:",l instanceof Error?l.message:l,"; Zone:",h.zone.name,"; Task:",h.task&&h.task.source,"; Value:",l,l instanceof Error?l.stack:void 0):console.error(h)}},t.microtaskDrainDone=()=>{for(;p.length;){let h=p.shift();try{h.zone.runGuarded(()=>{throw h.throwOriginal?h.rejection:h})}catch(l){U(l)}}};let H=T("unhandledPromiseRejectionHandler");function U(h){t.onUnhandledError(h);try{let l=a[H];typeof l=="function"&&l.call(this,h)}catch{}}function $(h){return h&&h.then}function J(h){return h}function q(h){return Z.reject(h)}let k=T("state"),d=T("value"),A=T("finally"),x=T("parentPromiseValue"),X=T("parentPromiseState"),G="Promise.then",y=null,z=!0,S=!1,w=0;function b(h,l){return r=>{try{M(h,l,r)}catch(u){M(h,!1,u)}}}let D=function(){let h=!1;return function(r){return function(){h||(h=!0,r.apply(null,arguments))}}},K="Promise resolved with itself",W=T("currentTaskTrace");function M(h,l,r){let u=D();if(h===r)throw new TypeError(K);if(h[k]===y){let v=null;try{(typeof r=="object"||typeof r=="function")&&(v=r&&r.then)}catch(R){return u(()=>{M(h,!1,R)})(),h}if(l!==S&&r instanceof Z&&r.hasOwnProperty(k)&&r.hasOwnProperty(d)&&r[k]!==y)i(r),M(h,r[k],r[d]);else if(l!==S&&typeof v=="function")try{v.call(r,u(b(h,l)),u(b(h,!1)))}catch(R){u(()=>{M(h,!1,R)})()}else{h[k]=l;let R=h[d];if(h[d]=r,h[A]===A&&l===z&&(h[k]=h[X],h[d]=h[x]),l===S&&r instanceof Error){let m=a.currentTask&&a.currentTask.data&&a.currentTask.data[I];m&&f(r,W,{configurable:!0,enumerable:!1,writable:!0,value:m})}for(let m=0;m{try{let O=h[d],N=!!r&&A===r[A];N&&(r[x]=O,r[X]=R);let L=l.run(m,void 0,N&&m!==q&&m!==J?[]:[O]);M(r,!0,L)}catch(O){M(r,!1,O)}},r)}let g="function ZoneAwarePromise() { [native code] }",V=function(){},ee=n.AggregateError;class Z{static toString(){return g}static resolve(l){return l instanceof Z?l:M(new this(null),z,l)}static reject(l){return M(new this(null),S,l)}static withResolvers(){let l={};return l.promise=new Z((r,u)=>{l.resolve=r,l.reject=u}),l}static any(l){if(!l||typeof l[Symbol.iterator]!="function")return Promise.reject(new ee([],"All promises were rejected"));let r=[],u=0;try{for(let m of l)u++,r.push(Z.resolve(m))}catch{return Promise.reject(new ee([],"All promises were rejected"))}if(u===0)return Promise.reject(new ee([],"All promises were rejected"));let v=!1,R=[];return new Z((m,O)=>{for(let N=0;N{v||(v=!0,m(L))},L=>{R.push(L),u--,u===0&&(v=!0,O(new ee(R,"All promises were rejected")))})})}static race(l){let r,u,v=new this((O,N)=>{r=O,u=N});function R(O){r(O)}function m(O){u(O)}for(let O of l)$(O)||(O=this.resolve(O)),O.then(R,m);return v}static all(l){return Z.allWithCallback(l)}static allSettled(l){return(this&&this.prototype instanceof Z?this:Z).allWithCallback(l,{thenCallback:u=>({status:"fulfilled",value:u}),errorCallback:u=>({status:"rejected",reason:u})})}static allWithCallback(l,r){let u,v,R=new this((L,F)=>{u=L,v=F}),m=2,O=0,N=[];for(let L of l){$(L)||(L=this.resolve(L));let F=O;try{L.then(B=>{N[F]=r?r.thenCallback(B):B,m--,m===0&&u(N)},B=>{r?(N[F]=r.errorCallback(B),m--,m===0&&u(N)):v(B)})}catch(B){v(B)}m++,O++}return m-=2,m===0&&u(N),R}constructor(l){let r=this;if(!(r instanceof Z))throw new Error("Must be an instanceof Promise.");r[k]=y,r[d]=[];try{let u=D();l&&l(u(b(r,z)),u(b(r,S)))}catch(u){M(r,!1,u)}}get[Symbol.toStringTag](){return"Promise"}get[Symbol.species](){return Z}then(l,r){let u=this.constructor?.[Symbol.species];(!u||typeof u!="function")&&(u=this.constructor||Z);let v=new u(V),R=a.current;return this[k]==y?this[d].push(R,v,l,r):o(this,R,v,l,r),v}catch(l){return this.then(null,l)}finally(l){let r=this.constructor?.[Symbol.species];(!r||typeof r!="function")&&(r=Z);let u=new r(V);u[A]=A;let v=a.current;return this[k]==y?this[d].push(v,u,l,l):o(this,v,u,l,l),u}}Z.resolve=Z.resolve,Z.reject=Z.reject,Z.race=Z.race,Z.all=Z.all;let he=n[_]=n.Promise;n.Promise=Z;let _e=T("thenPatched");function Q(h){let l=h.prototype,r=c(l,"then");if(r&&(r.writable===!1||!r.configurable))return;let u=l.then;l[P]=u,h.prototype.then=function(v,R){return new Z((O,N)=>{u.call(this,O,N)}).then(v,R)},h[_e]=!0}t.patchThen=Q;function Ee(h){return function(l,r){let u=h.apply(l,r);if(u instanceof Z)return u;let v=u.constructor;return v[_e]||Q(v),u}}return he&&(Q(he),ue(n,"fetch",h=>Ee(h))),Promise[a.__symbol__("uncaughtPromiseErrors")]=p,Z})}function It(e){e.__load_patch("toString",n=>{let a=Function.prototype.toString,t=j("OriginalDelegate"),c=j("Promise"),f=j("Error"),E=function(){if(typeof this=="function"){let _=this[t];if(_)return typeof _=="function"?a.call(_):Object.prototype.toString.call(_);if(this===Promise){let P=n[c];if(P)return a.call(P)}if(this===Error){let P=n[f];if(P)return a.call(P)}}return a.call(this)};E[t]=a,Function.prototype.toString=E;let T=Object.prototype.toString,p="[object Promise]";Object.prototype.toString=function(){return typeof Promise=="function"&&this instanceof Promise?p:T.call(this)}})}function Mt(e,n,a,t,c){let f=Zone.__symbol__(t);if(n[f])return;let E=n[f]=n[t];n[t]=function(T,p,C){return p&&p.prototype&&c.forEach(function(_){let P=`${a}.${t}::`+_,I=p.prototype;try{if(I.hasOwnProperty(_)){let H=e.ObjectGetOwnPropertyDescriptor(I,_);H&&H.value?(H.value=e.wrapWithCurrentZone(H.value,P),e._redefineProperty(p.prototype,_,H)):I[_]&&(I[_]=e.wrapWithCurrentZone(I[_],P))}else I[_]&&(I[_]=e.wrapWithCurrentZone(I[_],P))}catch{}}),E.call(n,T,p,C)},e.attachOriginToPatched(n[t],E)}function Zt(e){e.__load_patch("util",(n,a,t)=>{let c=Ze(n);t.patchOnProperties=ot,t.patchMethod=ue,t.bindArguments=Fe,t.patchMacroTask=pt;let f=a.__symbol__("BLACK_LISTED_EVENTS"),E=a.__symbol__("UNPATCHED_EVENTS");n[E]&&(n[f]=n[E]),n[f]&&(a[f]=a[E]=n[f]),t.patchEventPrototype=wt,t.patchEventTarget=Pt,t.isIEOrEdge=vt,t.ObjectDefineProperty=Ae,t.ObjectGetOwnPropertyDescriptor=be,t.ObjectCreate=Et,t.ArraySlice=Tt,t.patchClass=ve,t.wrapWithCurrentZone=Ve,t.filterProperties=ut,t.attachOriginToPatched=fe,t._redefineProperty=Object.defineProperty,t.patchCallbacks=Mt,t.getGlobalObjects=()=>({globalSources:st,zoneSymbolEventNames:ne,eventNames:c,isBrowser:Be,isMix:rt,isNode:Se,TRUE_STR:ae,FALSE_STR:le,ZONE_SYMBOL_PREFIX:Pe,ADD_EVENT_LISTENER_STR:He,REMOVE_EVENT_LISTENER_STR:xe})})}function At(e){Lt(e),It(e),Zt(e)}var ft=_t();At(ft);Nt(ft); diff --git a/webui/dist/bitmagnet/browser/queue.svg b/webui/dist/bitmagnet/browser/queue.svg new file mode 100644 index 0000000..fa43e06 --- /dev/null +++ b/webui/dist/bitmagnet/browser/queue.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/webui/dist/bitmagnet/browser/styles-RRNC7ICR.css b/webui/dist/bitmagnet/browser/styles-RRNC7ICR.css new file mode 100644 index 0000000..c8bd7e2 --- /dev/null +++ b/webui/dist/bitmagnet/browser/styles-RRNC7ICR.css @@ -0,0 +1 @@ +@font-face{font-family:Roboto;font-style:normal;font-display:swap;font-weight:400;src:url("./media/roboto-cyrillic-ext-400-normal-ZDADDXVC.woff2") format("woff2"),url("./media/roboto-cyrillic-ext-400-normal-3LPF5CMR.woff") format("woff");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Roboto;font-style:normal;font-display:swap;font-weight:400;src:url("./media/roboto-cyrillic-400-normal-ZSAA7UM5.woff2") format("woff2"),url("./media/roboto-cyrillic-400-normal-LBMDEO7N.woff") format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Roboto;font-style:normal;font-display:swap;font-weight:400;src:url("./media/roboto-greek-ext-400-normal-W33USUDN.woff2") format("woff2"),url("./media/roboto-greek-ext-400-normal-XVSFLYYV.woff") format("woff");unicode-range:U+1F00-1FFF}@font-face{font-family:Roboto;font-style:normal;font-display:swap;font-weight:400;src:url("./media/roboto-greek-400-normal-XOLKJBVR.woff2") format("woff2"),url("./media/roboto-greek-400-normal-DTDUS3GJ.woff") format("woff");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Roboto;font-style:normal;font-display:swap;font-weight:400;src:url("./media/roboto-vietnamese-400-normal-RHIHKZKP.woff2") format("woff2"),url("./media/roboto-vietnamese-400-normal-PKET2HVX.woff") format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Roboto;font-style:normal;font-display:swap;font-weight:400;src:url("./media/roboto-latin-ext-400-normal-HADPAURF.woff2") format("woff2"),url("./media/roboto-latin-ext-400-normal-SAKQSSDU.woff") format("woff");unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Roboto;font-style:normal;font-display:swap;font-weight:400;src:url("./media/roboto-latin-400-normal-JNYDHCS5.woff2") format("woff2"),url("./media/roboto-latin-400-normal-Q4ODZ3WO.woff") format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Material Icons;font-style:normal;font-display:swap;font-weight:400;src:url("./media/material-icons-latin-400-normal-LEZCGFVT.woff2") format("woff2"),url("./media/material-icons-latin-400-normal-OKHIZNFO.woff") format("woff")}@font-face{font-family:Material Icons Outlined;font-style:normal;font-display:swap;font-weight:400;src:url("./media/material-icons-outlined-latin-400-normal-7BWLPMFK.woff2") format("woff2"),url("./media/material-icons-outlined-latin-400-normal-PCUTWIDZ.woff") format("woff")}@font-face{font-family:Material Symbols Outlined;font-style:normal;font-display:swap;font-weight:100;src:url("./media/material-symbols-outlined-latin-100-normal-Q755U3GZ.woff2") format("woff2"),url("./media/material-symbols-outlined-latin-100-normal-KBIUMYAA.woff") format("woff")}@font-face{font-family:Material Symbols Outlined;font-style:normal;font-display:swap;font-weight:200;src:url("./media/material-symbols-outlined-latin-200-normal-A2Z3HCC2.woff2") format("woff2"),url("./media/material-symbols-outlined-latin-200-normal-JBR4MHAF.woff") format("woff")}@font-face{font-family:Material Symbols Outlined;font-style:normal;font-display:swap;font-weight:300;src:url("./media/material-symbols-outlined-latin-300-normal-QVIUYGFA.woff2") format("woff2"),url("./media/material-symbols-outlined-latin-300-normal-JTVX56JQ.woff") format("woff")}@font-face{font-family:Material Symbols Outlined;font-style:normal;font-display:swap;font-weight:400;src:url("./media/material-symbols-outlined-latin-400-normal-4FRPJO5X.woff2") format("woff2"),url("./media/material-symbols-outlined-latin-400-normal-CBTIXZPO.woff") format("woff")}.mat-ripple{overflow:hidden;position:relative}.mat-ripple:not(:empty){transform:translateZ(0)}.mat-ripple.mat-ripple-unbounded{overflow:visible}.mat-ripple-element{position:absolute;border-radius:50%;pointer-events:none;transition:opacity,transform 0ms cubic-bezier(0,0,.2,1);transform:scale3d(0,0,0);background-color:var(--mat-ripple-color, rgba(0, 0, 0, .1))}.cdk-high-contrast-active .mat-ripple-element,.cdk-drag-preview .mat-ripple-element,.cdk-drag-placeholder .mat-ripple-element{display:none}.cdk-visually-hidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap;outline:0;-webkit-appearance:none;-moz-appearance:none;left:0}[dir=rtl] .cdk-visually-hidden{left:auto;right:0}.cdk-overlay-container,.cdk-global-overlay-wrapper{pointer-events:none;top:0;left:0;height:100%;width:100%}.cdk-overlay-container{position:fixed;z-index:1000}.cdk-overlay-container:empty{display:none}.cdk-global-overlay-wrapper{display:flex;position:absolute;z-index:1000}.cdk-overlay-pane{position:absolute;pointer-events:auto;box-sizing:border-box;z-index:1000;display:flex;max-width:100%;max-height:100%}.cdk-overlay-backdrop{position:absolute;inset:0;z-index:1000;pointer-events:auto;-webkit-tap-highlight-color:transparent;transition:opacity .4s cubic-bezier(.25,.8,.25,1);opacity:0}.cdk-overlay-backdrop.cdk-overlay-backdrop-showing{opacity:1}.cdk-high-contrast-active .cdk-overlay-backdrop.cdk-overlay-backdrop-showing{opacity:.6}.cdk-overlay-dark-backdrop{background:#00000052}.cdk-overlay-transparent-backdrop{transition:visibility 1ms linear,opacity 1ms linear;visibility:hidden;opacity:1}.cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing{opacity:0;visibility:visible}.cdk-overlay-backdrop-noop-animation{transition:none}.cdk-overlay-connected-position-bounding-box{position:absolute;z-index:1000;display:flex;flex-direction:column;min-width:1px;min-height:1px}.cdk-global-scrollblock{position:fixed;width:100%;overflow-y:scroll}textarea.cdk-textarea-autosize{resize:none}textarea.cdk-textarea-autosize-measuring{padding:2px 0!important;box-sizing:content-box!important;height:auto!important;overflow:hidden!important}textarea.cdk-textarea-autosize-measuring-firefox{padding:2px 0!important;box-sizing:content-box!important;height:0!important}@keyframes cdk-text-field-autofill-start{}@keyframes cdk-text-field-autofill-end{}.cdk-text-field-autofill-monitored:-webkit-autofill{animation:cdk-text-field-autofill-start 0s 1ms}.cdk-text-field-autofill-monitored:not(:-webkit-autofill){animation:cdk-text-field-autofill-end 0s 1ms}.mat-focus-indicator{position:relative}.mat-focus-indicator:before{inset:0;position:absolute;box-sizing:border-box;pointer-events:none;display:var(--mat-focus-indicator-display, none);border:var(--mat-focus-indicator-border-width, 3px) var(--mat-focus-indicator-border-style, solid) var(--mat-focus-indicator-border-color, transparent);border-radius:var(--mat-focus-indicator-border-radius, 4px)}.mat-focus-indicator:focus:before{content:""}.cdk-high-contrast-active{--mat-focus-indicator-display: block}.mat-mdc-focus-indicator{position:relative}.mat-mdc-focus-indicator:before{inset:0;position:absolute;box-sizing:border-box;pointer-events:none;display:var(--mat-mdc-focus-indicator-display, none);border:var(--mat-mdc-focus-indicator-border-width, 3px) var(--mat-mdc-focus-indicator-border-style, solid) var(--mat-mdc-focus-indicator-border-color, transparent);border-radius:var(--mat-mdc-focus-indicator-border-radius, 4px)}.mat-mdc-focus-indicator:focus:before{content:""}.cdk-high-contrast-active{--mat-mdc-focus-indicator-display: block}.mat-app-background{background-color:var(--mat-app-background-color, var(--mat-app-background, transparent));color:var(--mat-app-text-color, var(--mat-app-on-background, inherit))}.mat-elevation-z0,.mat-mdc-elevation-specific.mat-elevation-z0{box-shadow:var(--mat-app-elevation-shadow-level-0, none)}.mat-elevation-z1,.mat-mdc-elevation-specific.mat-elevation-z1{box-shadow:var(--mat-app-elevation-shadow-level-1, none)}.mat-elevation-z2,.mat-mdc-elevation-specific.mat-elevation-z2{box-shadow:var(--mat-app-elevation-shadow-level-2, none)}.mat-elevation-z3,.mat-mdc-elevation-specific.mat-elevation-z3{box-shadow:var(--mat-app-elevation-shadow-level-3, none)}.mat-elevation-z4,.mat-mdc-elevation-specific.mat-elevation-z4{box-shadow:var(--mat-app-elevation-shadow-level-4, none)}.mat-elevation-z5,.mat-mdc-elevation-specific.mat-elevation-z5{box-shadow:var(--mat-app-elevation-shadow-level-5, none)}.mat-elevation-z6,.mat-mdc-elevation-specific.mat-elevation-z6{box-shadow:var(--mat-app-elevation-shadow-level-6, none)}.mat-elevation-z7,.mat-mdc-elevation-specific.mat-elevation-z7{box-shadow:var(--mat-app-elevation-shadow-level-7, none)}.mat-elevation-z8,.mat-mdc-elevation-specific.mat-elevation-z8{box-shadow:var(--mat-app-elevation-shadow-level-8, none)}.mat-elevation-z9,.mat-mdc-elevation-specific.mat-elevation-z9{box-shadow:var(--mat-app-elevation-shadow-level-9, none)}.mat-elevation-z10,.mat-mdc-elevation-specific.mat-elevation-z10{box-shadow:var(--mat-app-elevation-shadow-level-10, none)}.mat-elevation-z11,.mat-mdc-elevation-specific.mat-elevation-z11{box-shadow:var(--mat-app-elevation-shadow-level-11, none)}.mat-elevation-z12,.mat-mdc-elevation-specific.mat-elevation-z12{box-shadow:var(--mat-app-elevation-shadow-level-12, none)}.mat-elevation-z13,.mat-mdc-elevation-specific.mat-elevation-z13{box-shadow:var(--mat-app-elevation-shadow-level-13, none)}.mat-elevation-z14,.mat-mdc-elevation-specific.mat-elevation-z14{box-shadow:var(--mat-app-elevation-shadow-level-14, none)}.mat-elevation-z15,.mat-mdc-elevation-specific.mat-elevation-z15{box-shadow:var(--mat-app-elevation-shadow-level-15, none)}.mat-elevation-z16,.mat-mdc-elevation-specific.mat-elevation-z16{box-shadow:var(--mat-app-elevation-shadow-level-16, none)}.mat-elevation-z17,.mat-mdc-elevation-specific.mat-elevation-z17{box-shadow:var(--mat-app-elevation-shadow-level-17, none)}.mat-elevation-z18,.mat-mdc-elevation-specific.mat-elevation-z18{box-shadow:var(--mat-app-elevation-shadow-level-18, none)}.mat-elevation-z19,.mat-mdc-elevation-specific.mat-elevation-z19{box-shadow:var(--mat-app-elevation-shadow-level-19, none)}.mat-elevation-z20,.mat-mdc-elevation-specific.mat-elevation-z20{box-shadow:var(--mat-app-elevation-shadow-level-20, none)}.mat-elevation-z21,.mat-mdc-elevation-specific.mat-elevation-z21{box-shadow:var(--mat-app-elevation-shadow-level-21, none)}.mat-elevation-z22,.mat-mdc-elevation-specific.mat-elevation-z22{box-shadow:var(--mat-app-elevation-shadow-level-22, none)}.mat-elevation-z23,.mat-mdc-elevation-specific.mat-elevation-z23{box-shadow:var(--mat-app-elevation-shadow-level-23, none)}.mat-elevation-z24,.mat-mdc-elevation-specific.mat-elevation-z24{box-shadow:var(--mat-app-elevation-shadow-level-24, none)}html{--mat-app-background-color: #fbf8fd;--mat-app-text-color: #1b1b1f;--mat-app-elevation-shadow-level-0: 0px 0px 0px 0px rgba(0, 0, 0, .2), 0px 0px 0px 0px rgba(0, 0, 0, .14), 0px 0px 0px 0px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-1: 0px 2px 1px -1px rgba(0, 0, 0, .2), 0px 1px 1px 0px rgba(0, 0, 0, .14), 0px 1px 3px 0px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-2: 0px 3px 1px -2px rgba(0, 0, 0, .2), 0px 2px 2px 0px rgba(0, 0, 0, .14), 0px 1px 5px 0px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-3: 0px 3px 3px -2px rgba(0, 0, 0, .2), 0px 3px 4px 0px rgba(0, 0, 0, .14), 0px 1px 8px 0px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-4: 0px 2px 4px -1px rgba(0, 0, 0, .2), 0px 4px 5px 0px rgba(0, 0, 0, .14), 0px 1px 10px 0px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-5: 0px 3px 5px -1px rgba(0, 0, 0, .2), 0px 5px 8px 0px rgba(0, 0, 0, .14), 0px 1px 14px 0px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-6: 0px 3px 5px -1px rgba(0, 0, 0, .2), 0px 6px 10px 0px rgba(0, 0, 0, .14), 0px 1px 18px 0px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-7: 0px 4px 5px -2px rgba(0, 0, 0, .2), 0px 7px 10px 1px rgba(0, 0, 0, .14), 0px 2px 16px 1px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-8: 0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-9: 0px 5px 6px -3px rgba(0, 0, 0, .2), 0px 9px 12px 1px rgba(0, 0, 0, .14), 0px 3px 16px 2px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-10: 0px 6px 6px -3px rgba(0, 0, 0, .2), 0px 10px 14px 1px rgba(0, 0, 0, .14), 0px 4px 18px 3px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-11: 0px 6px 7px -4px rgba(0, 0, 0, .2), 0px 11px 15px 1px rgba(0, 0, 0, .14), 0px 4px 20px 3px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-12: 0px 7px 8px -4px rgba(0, 0, 0, .2), 0px 12px 17px 2px rgba(0, 0, 0, .14), 0px 5px 22px 4px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-13: 0px 7px 8px -4px rgba(0, 0, 0, .2), 0px 13px 19px 2px rgba(0, 0, 0, .14), 0px 5px 24px 4px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-14: 0px 7px 9px -4px rgba(0, 0, 0, .2), 0px 14px 21px 2px rgba(0, 0, 0, .14), 0px 5px 26px 4px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-15: 0px 8px 9px -5px rgba(0, 0, 0, .2), 0px 15px 22px 2px rgba(0, 0, 0, .14), 0px 6px 28px 5px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-16: 0px 8px 10px -5px rgba(0, 0, 0, .2), 0px 16px 24px 2px rgba(0, 0, 0, .14), 0px 6px 30px 5px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-17: 0px 8px 11px -5px rgba(0, 0, 0, .2), 0px 17px 26px 2px rgba(0, 0, 0, .14), 0px 6px 32px 5px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-18: 0px 9px 11px -5px rgba(0, 0, 0, .2), 0px 18px 28px 2px rgba(0, 0, 0, .14), 0px 7px 34px 6px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-19: 0px 9px 12px -6px rgba(0, 0, 0, .2), 0px 19px 29px 2px rgba(0, 0, 0, .14), 0px 7px 36px 6px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-20: 0px 10px 13px -6px rgba(0, 0, 0, .2), 0px 20px 31px 3px rgba(0, 0, 0, .14), 0px 8px 38px 7px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-21: 0px 10px 13px -6px rgba(0, 0, 0, .2), 0px 21px 33px 3px rgba(0, 0, 0, .14), 0px 8px 40px 7px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-22: 0px 10px 14px -6px rgba(0, 0, 0, .2), 0px 22px 35px 3px rgba(0, 0, 0, .14), 0px 8px 42px 7px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-23: 0px 11px 14px -7px rgba(0, 0, 0, .2), 0px 23px 36px 3px rgba(0, 0, 0, .14), 0px 9px 44px 8px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-24: 0px 11px 15px -7px rgba(0, 0, 0, .2), 0px 24px 38px 3px rgba(0, 0, 0, .14), 0px 9px 46px 8px rgba(0, 0, 0, .12);--mat-ripple-color: rgba(27, 27, 31, .1);--mat-option-selected-state-label-text-color: #400014;--mat-option-label-text-color: #1b1b1f;--mat-option-hover-state-layer-color: rgba(27, 27, 31, .08);--mat-option-focus-state-layer-color: rgba(27, 27, 31, .12);--mat-option-selected-state-layer-color: #ffd9de;--mat-option-label-text-font: Roboto, sans-serif;--mat-option-label-text-line-height: 1.25rem;--mat-option-label-text-size: 1rem;--mat-option-label-text-tracking: .006rem;--mat-option-label-text-weight: 400;--mat-optgroup-label-text-color: #46464f;--mat-optgroup-label-text-font: Roboto, sans-serif;--mat-optgroup-label-text-line-height: 1.25rem;--mat-optgroup-label-text-size: .875rem;--mat-optgroup-label-text-tracking: .006rem;--mat-optgroup-label-text-weight: 500;--mat-full-pseudo-checkbox-selected-icon-color: #4355b9;--mat-full-pseudo-checkbox-selected-checkmark-color: #ffffff;--mat-full-pseudo-checkbox-unselected-icon-color: #46464f;--mat-full-pseudo-checkbox-disabled-selected-checkmark-color: #fbf8fd;--mat-full-pseudo-checkbox-disabled-unselected-icon-color: rgba(27, 27, 31, .38);--mat-full-pseudo-checkbox-disabled-selected-icon-color: rgba(27, 27, 31, .38);--mat-minimal-pseudo-checkbox-selected-checkmark-color: #4355b9;--mat-minimal-pseudo-checkbox-disabled-selected-checkmark-color: rgba(27, 27, 31, .38);--mdc-elevated-card-container-color: #fbf8fd;--mdc-elevated-card-container-elevation: 0px 2px 1px -1px rgba(0, 0, 0, .2), 0px 1px 1px 0px rgba(0, 0, 0, .14), 0px 1px 3px 0px rgba(0, 0, 0, .12);--mdc-elevated-card-container-shape: 12px;--mdc-outlined-card-container-color: #fbf8fd;--mdc-outlined-card-outline-color: #c7c5d0;--mdc-outlined-card-container-elevation: 0px 0px 0px 0px rgba(0, 0, 0, .2), 0px 0px 0px 0px rgba(0, 0, 0, .14), 0px 0px 0px 0px rgba(0, 0, 0, .12);--mdc-outlined-card-container-shape: 12px;--mdc-outlined-card-outline-width: 1px;--mat-card-subtitle-text-color: #1b1b1f;--mat-card-title-text-font: Roboto, sans-serif;--mat-card-title-text-line-height: 1.75rem;--mat-card-title-text-size: 1.375rem;--mat-card-title-text-tracking: 0;--mat-card-title-text-weight: 400;--mat-card-subtitle-text-font: Roboto, sans-serif;--mat-card-subtitle-text-line-height: 1.5rem;--mat-card-subtitle-text-size: 1rem;--mat-card-subtitle-text-tracking: .009rem;--mat-card-subtitle-text-weight: 500;--mdc-linear-progress-active-indicator-color: #4355b9;--mdc-linear-progress-track-color: #e3e1ec;--mdc-linear-progress-active-indicator-height: 4px;--mdc-linear-progress-track-height: 4px;--mdc-linear-progress-track-shape: 0;--mdc-plain-tooltip-container-color: #303034;--mdc-plain-tooltip-supporting-text-color: #f3f0f4;--mdc-plain-tooltip-supporting-text-line-height: 1rem;--mdc-plain-tooltip-supporting-text-font: Roboto, sans-serif;--mdc-plain-tooltip-supporting-text-size: .75rem;--mdc-plain-tooltip-supporting-text-weight: 400;--mdc-plain-tooltip-supporting-text-tracking: .025rem;--mdc-plain-tooltip-container-shape: 4px;--mdc-filled-text-field-caret-color: #4355b9;--mdc-filled-text-field-focus-active-indicator-color: #4355b9;--mdc-filled-text-field-focus-label-text-color: #4355b9;--mdc-filled-text-field-container-color: #e3e1ec;--mdc-filled-text-field-disabled-container-color: rgba(27, 27, 31, .04);--mdc-filled-text-field-label-text-color: #46464f;--mdc-filled-text-field-hover-label-text-color: #46464f;--mdc-filled-text-field-disabled-label-text-color: rgba(27, 27, 31, .38);--mdc-filled-text-field-input-text-color: #1b1b1f;--mdc-filled-text-field-disabled-input-text-color: rgba(27, 27, 31, .38);--mdc-filled-text-field-input-text-placeholder-color: #46464f;--mdc-filled-text-field-error-hover-label-text-color: #410002;--mdc-filled-text-field-error-focus-label-text-color: #ba1a1a;--mdc-filled-text-field-error-label-text-color: #ba1a1a;--mdc-filled-text-field-active-indicator-color: #46464f;--mdc-filled-text-field-disabled-active-indicator-color: rgba(27, 27, 31, .38);--mdc-filled-text-field-hover-active-indicator-color: #1b1b1f;--mdc-filled-text-field-error-active-indicator-color: #ba1a1a;--mdc-filled-text-field-error-focus-active-indicator-color: #ba1a1a;--mdc-filled-text-field-error-hover-active-indicator-color: #410002;--mdc-filled-text-field-label-text-font: Roboto, sans-serif;--mdc-filled-text-field-label-text-size: 1rem;--mdc-filled-text-field-label-text-tracking: .031rem;--mdc-filled-text-field-label-text-weight: 400;--mdc-filled-text-field-active-indicator-height: 1px;--mdc-filled-text-field-focus-active-indicator-height: 2px;--mdc-filled-text-field-container-shape: 4px;--mdc-outlined-text-field-caret-color: #4355b9;--mdc-outlined-text-field-focus-outline-color: #4355b9;--mdc-outlined-text-field-focus-label-text-color: #4355b9;--mdc-outlined-text-field-label-text-color: #46464f;--mdc-outlined-text-field-hover-label-text-color: #1b1b1f;--mdc-outlined-text-field-disabled-label-text-color: rgba(27, 27, 31, .38);--mdc-outlined-text-field-input-text-color: #1b1b1f;--mdc-outlined-text-field-disabled-input-text-color: rgba(27, 27, 31, .38);--mdc-outlined-text-field-input-text-placeholder-color: #46464f;--mdc-outlined-text-field-error-focus-label-text-color: #ba1a1a;--mdc-outlined-text-field-error-label-text-color: #ba1a1a;--mdc-outlined-text-field-error-hover-label-text-color: #410002;--mdc-outlined-text-field-outline-color: #767680;--mdc-outlined-text-field-disabled-outline-color: rgba(27, 27, 31, .12);--mdc-outlined-text-field-hover-outline-color: #1b1b1f;--mdc-outlined-text-field-error-focus-outline-color: #ba1a1a;--mdc-outlined-text-field-error-hover-outline-color: #410002;--mdc-outlined-text-field-error-outline-color: #ba1a1a;--mdc-outlined-text-field-label-text-font: Roboto, sans-serif;--mdc-outlined-text-field-label-text-size: 1rem;--mdc-outlined-text-field-label-text-tracking: .031rem;--mdc-outlined-text-field-label-text-weight: 400;--mdc-outlined-text-field-outline-width: 1px;--mdc-outlined-text-field-focus-outline-width: 2px;--mdc-outlined-text-field-container-shape: 4px;--mat-form-field-focus-select-arrow-color: #4355b9;--mat-form-field-disabled-input-text-placeholder-color: rgba(27, 27, 31, .38);--mat-form-field-state-layer-color: #1b1b1f;--mat-form-field-error-text-color: #ba1a1a;--mat-form-field-select-option-text-color: #1b1b1f;--mat-form-field-select-disabled-option-text-color: rgba(27, 27, 31, .38);--mat-form-field-leading-icon-color: #46464f;--mat-form-field-disabled-leading-icon-color: rgba(27, 27, 31, .38);--mat-form-field-trailing-icon-color: #46464f;--mat-form-field-disabled-trailing-icon-color: rgba(27, 27, 31, .38);--mat-form-field-error-focus-trailing-icon-color: #ba1a1a;--mat-form-field-error-hover-trailing-icon-color: #410002;--mat-form-field-error-trailing-icon-color: #ba1a1a;--mat-form-field-enabled-select-arrow-color: #46464f;--mat-form-field-disabled-select-arrow-color: rgba(27, 27, 31, .38);--mat-form-field-hover-state-layer-opacity: .08;--mat-form-field-container-text-font: Roboto, sans-serif;--mat-form-field-container-text-line-height: 1.5rem;--mat-form-field-container-text-size: 1rem;--mat-form-field-container-text-tracking: .031rem;--mat-form-field-container-text-weight: 400;--mat-form-field-subscript-text-font: Roboto, sans-serif;--mat-form-field-subscript-text-line-height: 1rem;--mat-form-field-subscript-text-size: .75rem;--mat-form-field-subscript-text-tracking: .025rem;--mat-form-field-subscript-text-weight: 400;--mat-form-field-container-height: 56px;--mat-form-field-filled-label-display: block;--mat-form-field-container-vertical-padding: 16px;--mat-form-field-filled-with-label-container-padding-top: 24px;--mat-form-field-filled-with-label-container-padding-bottom: 8px;--mat-form-field-focus-state-layer-opacity: 0;--mat-select-panel-background-color: #f0edf1;--mat-select-enabled-trigger-text-color: #1b1b1f;--mat-select-disabled-trigger-text-color: rgba(27, 27, 31, .38);--mat-select-placeholder-text-color: #46464f;--mat-select-enabled-arrow-color: #46464f;--mat-select-disabled-arrow-color: rgba(27, 27, 31, .38);--mat-select-focused-arrow-color: #4355b9;--mat-select-invalid-arrow-color: #ba1a1a;--mat-select-trigger-text-font: Roboto, sans-serif;--mat-select-trigger-text-line-height: 1.5rem;--mat-select-trigger-text-size: 1rem;--mat-select-trigger-text-tracking: .031rem;--mat-select-trigger-text-weight: 400;--mat-select-arrow-transform: translateY(-8px);--mat-select-container-elevation-shadow: 0px 3px 1px -2px rgba(0, 0, 0, .2), 0px 2px 2px 0px rgba(0, 0, 0, .14), 0px 1px 5px 0px rgba(0, 0, 0, .12);--mat-autocomplete-background-color: #f0edf1;--mat-autocomplete-container-shape: 4px;--mat-autocomplete-container-elevation-shadow: 0px 3px 1px -2px rgba(0, 0, 0, .2), 0px 2px 2px 0px rgba(0, 0, 0, .14), 0px 1px 5px 0px rgba(0, 0, 0, .12);--mdc-dialog-container-color: #fbf8fd;--mdc-dialog-subhead-color: #1b1b1f;--mdc-dialog-supporting-text-color: #46464f;--mdc-dialog-subhead-font: Roboto, sans-serif;--mdc-dialog-subhead-line-height: 2rem;--mdc-dialog-subhead-size: 1.5rem;--mdc-dialog-subhead-weight: 400;--mdc-dialog-subhead-tracking: 0;--mdc-dialog-supporting-text-font: Roboto, sans-serif;--mdc-dialog-supporting-text-line-height: 1.25rem;--mdc-dialog-supporting-text-size: .875rem;--mdc-dialog-supporting-text-weight: 400;--mdc-dialog-supporting-text-tracking: .016rem;--mdc-dialog-container-shape: 28px;--mat-dialog-container-elevation-shadow: none;--mat-dialog-container-max-width: 560px;--mat-dialog-container-small-max-width: calc(100vw - 32px) ;--mat-dialog-container-min-width: 280px;--mat-dialog-actions-alignment: flex-end;--mat-dialog-actions-padding: 16px 24px;--mat-dialog-content-padding: 20px 24px;--mat-dialog-with-actions-content-padding: 20px 24px 0;--mat-dialog-headline-padding: 6px 24px 13px;--mdc-chip-outline-color: #767680;--mdc-chip-disabled-outline-color: rgba(27, 27, 31, .12);--mdc-chip-focus-outline-color: #46464f;--mdc-chip-hover-state-layer-opacity: .08;--mdc-chip-selected-hover-state-layer-opacity: .08;--mdc-chip-disabled-label-text-color: rgba(27, 27, 31, .38);--mdc-chip-elevated-selected-container-color: #ffd9de;--mdc-chip-flat-disabled-selected-container-color: rgba(27, 27, 31, .12);--mdc-chip-focus-state-layer-color: #46464f;--mdc-chip-hover-state-layer-color: #46464f;--mdc-chip-selected-hover-state-layer-color: #400014;--mdc-chip-focus-state-layer-opacity: .12;--mdc-chip-selected-focus-state-layer-color: #400014;--mdc-chip-selected-focus-state-layer-opacity: .12;--mdc-chip-label-text-color: #46464f;--mdc-chip-selected-label-text-color: #400014;--mdc-chip-with-icon-icon-color: #46464f;--mdc-chip-with-icon-disabled-icon-color: #1b1b1f;--mdc-chip-with-icon-selected-icon-color: #400014;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: #1b1b1f;--mdc-chip-with-trailing-icon-trailing-icon-color: #46464f;--mdc-chip-label-text-font: Roboto, sans-serif;--mdc-chip-label-text-line-height: 1.25rem;--mdc-chip-label-text-size: .875rem;--mdc-chip-label-text-tracking: .006rem;--mdc-chip-label-text-weight: 500;--mdc-chip-container-height: 32px;--mdc-chip-container-shape-radius: 8px;--mdc-chip-with-avatar-avatar-shape-radius: 24px;--mdc-chip-with-avatar-avatar-size: 24px;--mdc-chip-with-icon-icon-size: 18px;--mdc-chip-outline-width: 1px;--mdc-chip-with-avatar-disabled-avatar-opacity: .38;--mdc-chip-flat-selected-outline-width: 0;--mdc-chip-with-trailing-icon-disabled-trailing-icon-opacity: .38;--mdc-chip-with-icon-disabled-icon-opacity: .38;--mdc-chip-elevated-container-color: transparent;--mat-chip-trailing-action-state-layer-color: #46464f;--mat-chip-selected-trailing-action-state-layer-color: #400014;--mat-chip-trailing-action-hover-state-layer-opacity: .08;--mat-chip-trailing-action-focus-state-layer-opacity: .12;--mat-chip-selected-disabled-trailing-icon-color: #1b1b1f;--mat-chip-selected-trailing-icon-color: #400014;--mat-chip-disabled-container-opacity: 1;--mat-chip-trailing-action-opacity: 1;--mat-chip-trailing-action-focus-opacity: 1;--mdc-switch-selected-focus-state-layer-opacity: .12;--mdc-switch-selected-hover-state-layer-opacity: .08;--mdc-switch-selected-pressed-state-layer-opacity: .12;--mdc-switch-unselected-focus-state-layer-opacity: .12;--mdc-switch-unselected-hover-state-layer-opacity: .08;--mdc-switch-unselected-pressed-state-layer-opacity: .12;--mdc-switch-selected-focus-state-layer-color: #4355b9;--mdc-switch-selected-handle-color: #ffffff;--mdc-switch-selected-hover-state-layer-color: #4355b9;--mdc-switch-selected-pressed-state-layer-color: #4355b9;--mdc-switch-selected-focus-handle-color: #dee0ff;--mdc-switch-selected-hover-handle-color: #dee0ff;--mdc-switch-selected-pressed-handle-color: #dee0ff;--mdc-switch-selected-focus-track-color: #4355b9;--mdc-switch-selected-hover-track-color: #4355b9;--mdc-switch-selected-pressed-track-color: #4355b9;--mdc-switch-selected-track-color: #4355b9;--mdc-switch-disabled-selected-handle-color: #fbf8fd;--mdc-switch-disabled-selected-icon-color: #1b1b1f;--mdc-switch-disabled-selected-track-color: #1b1b1f;--mdc-switch-disabled-unselected-handle-color: #1b1b1f;--mdc-switch-disabled-unselected-icon-color: #e3e1ec;--mdc-switch-disabled-unselected-track-color: #e3e1ec;--mdc-switch-selected-icon-color: #00105c;--mdc-switch-unselected-focus-handle-color: #46464f;--mdc-switch-unselected-focus-state-layer-color: #1b1b1f;--mdc-switch-unselected-focus-track-color: #e3e1ec;--mdc-switch-unselected-handle-color: #767680;--mdc-switch-unselected-hover-handle-color: #46464f;--mdc-switch-unselected-hover-state-layer-color: #1b1b1f;--mdc-switch-unselected-hover-track-color: #e3e1ec;--mdc-switch-unselected-icon-color: #e3e1ec;--mdc-switch-unselected-pressed-handle-color: #46464f;--mdc-switch-unselected-pressed-state-layer-color: #1b1b1f;--mdc-switch-unselected-pressed-track-color: #e3e1ec;--mdc-switch-unselected-track-color: #e3e1ec;--mdc-switch-disabled-selected-icon-opacity: .38;--mdc-switch-disabled-track-opacity: .12;--mdc-switch-disabled-unselected-icon-opacity: .38;--mdc-switch-handle-shape: 9999px;--mdc-switch-selected-icon-size: 16px;--mdc-switch-track-height: 32px;--mdc-switch-track-shape: 9999px;--mdc-switch-track-width: 52px;--mdc-switch-unselected-icon-size: 16px;--mdc-switch-state-layer-size: 40px;--mat-switch-track-outline-color: #767680;--mat-switch-disabled-unselected-track-outline-color: #1b1b1f;--mat-switch-label-text-color: #1b1b1f;--mat-switch-label-text-font: Roboto, sans-serif;--mat-switch-label-text-line-height: 1.25rem;--mat-switch-label-text-size: .875rem;--mat-switch-label-text-tracking: .016rem;--mat-switch-label-text-weight: 400;--mat-switch-disabled-selected-handle-opacity: 1;--mat-switch-disabled-unselected-handle-opacity: .38;--mat-switch-unselected-handle-size: 16px;--mat-switch-selected-handle-size: 24px;--mat-switch-pressed-handle-size: 28px;--mat-switch-with-icon-handle-size: 24px;--mat-switch-selected-handle-horizontal-margin: 0 24px;--mat-switch-selected-with-icon-handle-horizontal-margin: 0 24px;--mat-switch-selected-pressed-handle-horizontal-margin: 0 22px;--mat-switch-unselected-handle-horizontal-margin: 0 8px;--mat-switch-unselected-with-icon-handle-horizontal-margin: 0 4px;--mat-switch-unselected-pressed-handle-horizontal-margin: 0 2px;--mat-switch-visible-track-opacity: 1;--mat-switch-hidden-track-opacity: 0;--mat-switch-visible-track-transition: opacity 75ms;--mat-switch-hidden-track-transition: opacity 75ms;--mat-switch-track-outline-width: 2px;--mat-switch-selected-track-outline-width: 2px;--mat-switch-selected-track-outline-color: transparent;--mat-switch-disabled-unselected-track-outline-width: 2px;--mdc-radio-disabled-selected-icon-color: #1b1b1f;--mdc-radio-disabled-unselected-icon-color: #1b1b1f;--mdc-radio-unselected-hover-icon-color: #1b1b1f;--mdc-radio-unselected-icon-color: #46464f;--mdc-radio-unselected-pressed-icon-color: #1b1b1f;--mdc-radio-selected-focus-icon-color: #4355b9;--mdc-radio-selected-hover-icon-color: #4355b9;--mdc-radio-selected-icon-color: #4355b9;--mdc-radio-selected-pressed-icon-color: #4355b9;--mdc-radio-state-layer-size: 40px;--mdc-radio-disabled-selected-icon-opacity: .38;--mdc-radio-disabled-unselected-icon-opacity: .38;--mat-radio-ripple-color: #1b1b1f;--mat-radio-checked-ripple-color: #4355b9;--mat-radio-disabled-label-color: rgba(27, 27, 31, .38);--mat-radio-label-text-color: #1b1b1f;--mat-radio-label-text-font: Roboto, sans-serif;--mat-radio-label-text-line-height: 1.25rem;--mat-radio-label-text-size: .875rem;--mat-radio-label-text-tracking: .016rem;--mat-radio-label-text-weight: 400;--mat-radio-touch-target-display: block;--mdc-slider-handle-elevation: 0px 2px 1px -1px rgba(0, 0, 0, .2), 0px 1px 1px 0px rgba(0, 0, 0, .14), 0px 1px 3px 0px rgba(0, 0, 0, .12);--mdc-slider-handle-color: #4355b9;--mdc-slider-focus-handle-color: #4355b9;--mdc-slider-hover-handle-color: #4355b9;--mdc-slider-active-track-color: #4355b9;--mdc-slider-inactive-track-color: #e3e1ec;--mdc-slider-with-tick-marks-inactive-container-color: #46464f;--mdc-slider-with-tick-marks-active-container-color: #ffffff;--mdc-slider-disabled-active-track-color: #1b1b1f;--mdc-slider-disabled-handle-color: #1b1b1f;--mdc-slider-disabled-inactive-track-color: #1b1b1f;--mdc-slider-label-container-color: #4355b9;--mdc-slider-label-label-text-color: #ffffff;--mdc-slider-with-overlap-handle-outline-color: #ffffff;--mdc-slider-with-tick-marks-disabled-container-color: #1b1b1f;--mdc-slider-label-label-text-font: Roboto, sans-serif;--mdc-slider-label-label-text-size: .75rem;--mdc-slider-label-label-text-line-height: 1rem;--mdc-slider-label-label-text-tracking: .031rem;--mdc-slider-label-label-text-weight: 500;--mdc-slider-active-track-height: 4px;--mdc-slider-active-track-shape: 9999px;--mdc-slider-handle-height: 20px;--mdc-slider-handle-shape: 9999px;--mdc-slider-handle-width: 20px;--mdc-slider-inactive-track-height: 4px;--mdc-slider-inactive-track-shape: 9999px;--mdc-slider-with-overlap-handle-outline-width: 1px;--mdc-slider-with-tick-marks-active-container-opacity: .38;--mdc-slider-with-tick-marks-container-shape: 9999px;--mdc-slider-with-tick-marks-container-size: 2px;--mdc-slider-with-tick-marks-inactive-container-opacity: .38;--mat-slider-ripple-color: #4355b9;--mat-slider-hover-state-layer-color: rgba(67, 85, 185, .05);--mat-slider-focus-state-layer-color: rgba(67, 85, 185, .2);--mat-slider-value-indicator-width: 28px;--mat-slider-value-indicator-height: 28px;--mat-slider-value-indicator-caret-display: none;--mat-slider-value-indicator-border-radius: 50% 50% 50% 0;--mat-slider-value-indicator-padding: 0;--mat-slider-value-indicator-text-transform: rotate(45deg);--mat-slider-value-indicator-container-transform: translateX(-50%) rotate(-45deg);--mat-slider-value-indicator-opacity: 1;--mat-menu-item-label-text-color: #1b1b1f;--mat-menu-item-icon-color: #46464f;--mat-menu-item-hover-state-layer-color: rgba(27, 27, 31, .08);--mat-menu-item-focus-state-layer-color: rgba(27, 27, 31, .12);--mat-menu-container-color: #f0edf1;--mat-menu-divider-color: #e3e1ec;--mat-menu-item-label-text-font: Roboto, sans-serif;--mat-menu-item-label-text-size: .875rem;--mat-menu-item-label-text-tracking: .006rem;--mat-menu-item-label-text-line-height: 1.25rem;--mat-menu-item-label-text-weight: 500;--mat-menu-container-shape: 4px;--mat-menu-divider-bottom-spacing: 8px;--mat-menu-divider-top-spacing: 8px;--mat-menu-item-spacing: 12px;--mat-menu-item-icon-size: 24px;--mat-menu-item-leading-spacing: 12px;--mat-menu-item-trailing-spacing: 12px;--mat-menu-item-with-icon-leading-spacing: 12px;--mat-menu-item-with-icon-trailing-spacing: 12px;--mat-menu-base-elevation-level: 2;--mdc-list-list-item-container-color: transparent;--mdc-list-list-item-leading-avatar-color: #dee0ff;--mdc-list-list-item-disabled-state-layer-color: #1b1b1f;--mdc-list-list-item-disabled-state-layer-opacity: .12;--mdc-list-list-item-label-text-color: #1b1b1f;--mdc-list-list-item-supporting-text-color: #46464f;--mdc-list-list-item-leading-icon-color: #46464f;--mdc-list-list-item-trailing-supporting-text-color: #46464f;--mdc-list-list-item-trailing-icon-color: #46464f;--mdc-list-list-item-selected-trailing-icon-color: #4355b9;--mdc-list-list-item-disabled-label-text-color: #1b1b1f;--mdc-list-list-item-disabled-leading-icon-color: #1b1b1f;--mdc-list-list-item-disabled-trailing-icon-color: #1b1b1f;--mdc-list-list-item-hover-label-text-color: #1b1b1f;--mdc-list-list-item-focus-label-text-color: #1b1b1f;--mdc-list-list-item-hover-state-layer-color: #1b1b1f;--mdc-list-list-item-hover-state-layer-opacity: .08;--mdc-list-list-item-focus-state-layer-color: #1b1b1f;--mdc-list-list-item-focus-state-layer-opacity: .12;--mdc-list-list-item-label-text-font: Roboto, sans-serif;--mdc-list-list-item-label-text-line-height: 1.5rem;--mdc-list-list-item-label-text-size: 1rem;--mdc-list-list-item-label-text-tracking: .031rem;--mdc-list-list-item-label-text-weight: 400;--mdc-list-list-item-supporting-text-font: Roboto, sans-serif;--mdc-list-list-item-supporting-text-line-height: 1.25rem;--mdc-list-list-item-supporting-text-size: .875rem;--mdc-list-list-item-supporting-text-tracking: .016rem;--mdc-list-list-item-supporting-text-weight: 400;--mdc-list-list-item-trailing-supporting-text-font: Roboto, sans-serif;--mdc-list-list-item-trailing-supporting-text-line-height: 1rem;--mdc-list-list-item-trailing-supporting-text-size: .688rem;--mdc-list-list-item-trailing-supporting-text-tracking: .031rem;--mdc-list-list-item-trailing-supporting-text-weight: 500;--mdc-list-list-item-one-line-container-height: 48px;--mdc-list-list-item-two-line-container-height: 64px;--mdc-list-list-item-three-line-container-height: 88px;--mdc-list-list-item-container-shape: 0;--mdc-list-list-item-leading-avatar-shape: 9999px;--mdc-list-list-item-leading-icon-size: 24px;--mdc-list-list-item-leading-avatar-size: 40px;--mdc-list-list-item-trailing-icon-size: 24px;--mdc-list-list-item-disabled-label-text-opacity: .3;--mdc-list-list-item-disabled-leading-icon-opacity: .38;--mdc-list-list-item-disabled-trailing-icon-opacity: .38;--mat-list-active-indicator-color: #ffd9de;--mat-list-list-item-leading-icon-start-space: 16px;--mat-list-list-item-leading-icon-end-space: 16px;--mat-list-active-indicator-shape: 9999px;--mat-paginator-container-text-color: #1b1b1f;--mat-paginator-container-background-color: #fbf8fd;--mat-paginator-enabled-icon-color: #46464f;--mat-paginator-disabled-icon-color: rgba(27, 27, 31, .38);--mat-paginator-container-text-font: Roboto, sans-serif;--mat-paginator-container-text-line-height: 1rem;--mat-paginator-container-text-size: .75rem;--mat-paginator-container-text-tracking: .025rem;--mat-paginator-container-text-weight: 400;--mat-paginator-select-trigger-text-size: .75rem;--mat-paginator-container-size: 56px;--mat-paginator-form-field-container-height: 40px;--mat-paginator-form-field-container-vertical-padding: 8px;--mat-paginator-touch-target-display: block;--mdc-secondary-navigation-tab-container-height: 48px;--mdc-tab-indicator-active-indicator-color: #4355b9;--mdc-tab-indicator-active-indicator-height: 2px;--mdc-tab-indicator-active-indicator-shape: 0;--mat-tab-header-divider-color: #e3e1ec;--mat-tab-header-pagination-icon-color: #1b1b1f;--mat-tab-header-inactive-label-text-color: #1b1b1f;--mat-tab-header-active-label-text-color: #1b1b1f;--mat-tab-header-active-ripple-color: #1b1b1f;--mat-tab-header-inactive-ripple-color: #1b1b1f;--mat-tab-header-inactive-focus-label-text-color: #1b1b1f;--mat-tab-header-inactive-hover-label-text-color: #1b1b1f;--mat-tab-header-active-focus-label-text-color: #1b1b1f;--mat-tab-header-active-hover-label-text-color: #1b1b1f;--mat-tab-header-active-focus-indicator-color: #4355b9;--mat-tab-header-active-hover-indicator-color: #4355b9;--mat-tab-header-label-text-font: Roboto, sans-serif;--mat-tab-header-label-text-size: .875rem;--mat-tab-header-label-text-tracking: .006rem;--mat-tab-header-label-text-line-height: 1.25rem;--mat-tab-header-label-text-weight: 500;--mat-tab-header-divider-height: 1px;--mdc-checkbox-disabled-selected-checkmark-color: #fbf8fd;--mdc-checkbox-selected-focus-state-layer-opacity: .12;--mdc-checkbox-selected-hover-state-layer-opacity: .08;--mdc-checkbox-selected-pressed-state-layer-opacity: .12;--mdc-checkbox-unselected-focus-state-layer-opacity: .12;--mdc-checkbox-unselected-hover-state-layer-opacity: .08;--mdc-checkbox-unselected-pressed-state-layer-opacity: .12;--mdc-checkbox-selected-pressed-icon-color: #4355b9;--mdc-checkbox-disabled-selected-icon-color: rgba(27, 27, 31, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(27, 27, 31, .38);--mdc-checkbox-selected-checkmark-color: #ffffff;--mdc-checkbox-selected-focus-icon-color: #4355b9;--mdc-checkbox-selected-hover-icon-color: #4355b9;--mdc-checkbox-selected-icon-color: #4355b9;--mdc-checkbox-unselected-focus-icon-color: #1b1b1f;--mdc-checkbox-unselected-hover-icon-color: #1b1b1f;--mdc-checkbox-unselected-icon-color: #46464f;--mdc-checkbox-selected-focus-state-layer-color: #4355b9;--mdc-checkbox-selected-hover-state-layer-color: #4355b9;--mdc-checkbox-selected-pressed-state-layer-color: #1b1b1f;--mdc-checkbox-unselected-focus-state-layer-color: #1b1b1f;--mdc-checkbox-unselected-hover-state-layer-color: #1b1b1f;--mdc-checkbox-unselected-pressed-state-layer-color: #4355b9;--mdc-checkbox-state-layer-size: 40px;--mat-checkbox-disabled-label-color: rgba(27, 27, 31, .38);--mat-checkbox-label-text-color: #1b1b1f;--mat-checkbox-label-text-font: Roboto, sans-serif;--mat-checkbox-label-text-line-height: 1.25rem;--mat-checkbox-label-text-size: .875rem;--mat-checkbox-label-text-tracking: .016rem;--mat-checkbox-label-text-weight: 400;--mat-checkbox-touch-target-display: block;--mdc-text-button-label-text-color: #4355b9;--mdc-text-button-disabled-label-text-color: rgba(27, 27, 31, .38);--mdc-text-button-label-text-font: Roboto, sans-serif;--mdc-text-button-label-text-size: .875rem;--mdc-text-button-label-text-tracking: .006rem;--mdc-text-button-label-text-weight: 500;--mdc-text-button-container-height: 40px;--mdc-text-button-container-shape: 9999px;--mdc-protected-button-container-elevation-shadow: 0px 2px 1px -1px rgba(0, 0, 0, .2), 0px 1px 1px 0px rgba(0, 0, 0, .14), 0px 1px 3px 0px rgba(0, 0, 0, .12);--mdc-protected-button-disabled-container-elevation-shadow: 0px 0px 0px 0px rgba(0, 0, 0, .2), 0px 0px 0px 0px rgba(0, 0, 0, .14), 0px 0px 0px 0px rgba(0, 0, 0, .12);--mdc-protected-button-focus-container-elevation-shadow: 0px 2px 1px -1px rgba(0, 0, 0, .2), 0px 1px 1px 0px rgba(0, 0, 0, .14), 0px 1px 3px 0px rgba(0, 0, 0, .12);--mdc-protected-button-hover-container-elevation-shadow: 0px 3px 3px -2px rgba(0, 0, 0, .2), 0px 3px 4px 0px rgba(0, 0, 0, .14), 0px 1px 8px 0px rgba(0, 0, 0, .12);--mdc-protected-button-pressed-container-elevation-shadow: 0px 2px 1px -1px rgba(0, 0, 0, .2), 0px 1px 1px 0px rgba(0, 0, 0, .14), 0px 1px 3px 0px rgba(0, 0, 0, .12);--mdc-protected-button-container-color: #fbf8fd;--mdc-protected-button-label-text-color: #4355b9;--mdc-protected-button-disabled-container-color: rgba(27, 27, 31, .12);--mdc-protected-button-disabled-label-text-color: rgba(27, 27, 31, .38);--mdc-protected-button-label-text-font: Roboto, sans-serif;--mdc-protected-button-label-text-size: .875rem;--mdc-protected-button-label-text-tracking: .006rem;--mdc-protected-button-label-text-weight: 500;--mdc-protected-button-container-height: 40px;--mdc-protected-button-container-shape: 9999px;--mdc-filled-button-container-color: #4355b9;--mdc-filled-button-label-text-color: #ffffff;--mdc-filled-button-disabled-container-color: rgba(27, 27, 31, .12);--mdc-filled-button-disabled-label-text-color: rgba(27, 27, 31, .38);--mdc-filled-button-label-text-font: Roboto, sans-serif;--mdc-filled-button-label-text-size: .875rem;--mdc-filled-button-label-text-tracking: .006rem;--mdc-filled-button-label-text-weight: 500;--mdc-filled-button-container-height: 40px;--mdc-filled-button-container-shape: 9999px;--mdc-outlined-button-disabled-outline-color: rgba(27, 27, 31, .12);--mdc-outlined-button-disabled-label-text-color: rgba(27, 27, 31, .38);--mdc-outlined-button-label-text-color: #4355b9;--mdc-outlined-button-outline-color: #767680;--mdc-outlined-button-label-text-font: Roboto, sans-serif;--mdc-outlined-button-label-text-size: .875rem;--mdc-outlined-button-label-text-tracking: .006rem;--mdc-outlined-button-label-text-weight: 500;--mdc-outlined-button-container-height: 40px;--mdc-outlined-button-outline-width: 1px;--mdc-outlined-button-container-shape: 9999px;--mat-text-button-state-layer-color: #4355b9;--mat-text-button-disabled-state-layer-color: #46464f;--mat-text-button-ripple-color: rgba(67, 85, 185, .12);--mat-text-button-hover-state-layer-opacity: .08;--mat-text-button-focus-state-layer-opacity: .12;--mat-text-button-pressed-state-layer-opacity: .12;--mat-text-button-touch-target-display: block;--mat-text-button-horizontal-padding: 12px;--mat-text-button-with-icon-horizontal-padding: 16px;--mat-text-button-icon-spacing: 8px;--mat-text-button-icon-offset: -4px;--mat-protected-button-state-layer-color: #4355b9;--mat-protected-button-disabled-state-layer-color: #46464f;--mat-protected-button-ripple-color: rgba(67, 85, 185, .12);--mat-protected-button-hover-state-layer-opacity: .08;--mat-protected-button-focus-state-layer-opacity: .12;--mat-protected-button-pressed-state-layer-opacity: .12;--mat-protected-button-touch-target-display: block;--mat-protected-button-horizontal-padding: 24px;--mat-protected-button-icon-spacing: 8px;--mat-protected-button-icon-offset: -8px;--mat-filled-button-state-layer-color: #ffffff;--mat-filled-button-disabled-state-layer-color: #46464f;--mat-filled-button-ripple-color: rgba(255, 255, 255, .12);--mat-filled-button-hover-state-layer-opacity: .08;--mat-filled-button-focus-state-layer-opacity: .12;--mat-filled-button-pressed-state-layer-opacity: .12;--mat-filled-button-touch-target-display: block;--mat-filled-button-horizontal-padding: 24px;--mat-filled-button-icon-spacing: 8px;--mat-filled-button-icon-offset: -8px;--mat-outlined-button-state-layer-color: #4355b9;--mat-outlined-button-disabled-state-layer-color: #46464f;--mat-outlined-button-ripple-color: rgba(67, 85, 185, .12);--mat-outlined-button-hover-state-layer-opacity: .08;--mat-outlined-button-focus-state-layer-opacity: .12;--mat-outlined-button-pressed-state-layer-opacity: .12;--mat-outlined-button-touch-target-display: block;--mat-outlined-button-horizontal-padding: 24px;--mat-outlined-button-icon-spacing: 8px;--mat-outlined-button-icon-offset: -8px;--mdc-icon-button-icon-color: #46464f;--mdc-icon-button-disabled-icon-color: rgba(27, 27, 31, .38);--mdc-icon-button-state-layer-size: 40px;--mdc-icon-button-icon-size: 24px;--mat-icon-button-state-layer-color: #46464f;--mat-icon-button-disabled-state-layer-color: #46464f;--mat-icon-button-ripple-color: rgba(70, 70, 79, .12);--mat-icon-button-hover-state-layer-opacity: .08;--mat-icon-button-focus-state-layer-opacity: .12;--mat-icon-button-pressed-state-layer-opacity: .12;--mat-icon-button-touch-target-display: block;--mdc-extended-fab-container-elevation-shadow: 0px 3px 5px -1px rgba(0, 0, 0, .2), 0px 6px 10px 0px rgba(0, 0, 0, .14), 0px 1px 18px 0px rgba(0, 0, 0, .12);--mdc-extended-fab-focus-container-elevation-shadow: 0px 3px 5px -1px rgba(0, 0, 0, .2), 0px 6px 10px 0px rgba(0, 0, 0, .14), 0px 1px 18px 0px rgba(0, 0, 0, .12);--mdc-extended-fab-hover-container-elevation-shadow: 0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12);--mdc-extended-fab-pressed-container-elevation-shadow: 0px 3px 5px -1px rgba(0, 0, 0, .2), 0px 6px 10px 0px rgba(0, 0, 0, .14), 0px 1px 18px 0px rgba(0, 0, 0, .12);--mdc-extended-fab-label-text-font: Roboto, sans-serif;--mdc-extended-fab-label-text-size: .875rem;--mdc-extended-fab-label-text-tracking: .006rem;--mdc-extended-fab-label-text-weight: 500;--mdc-extended-fab-container-height: 56px;--mdc-extended-fab-container-shape: 16px;--mdc-fab-container-elevation-shadow: 0px 3px 5px -1px rgba(0, 0, 0, .2), 0px 6px 10px 0px rgba(0, 0, 0, .14), 0px 1px 18px 0px rgba(0, 0, 0, .12);--mdc-fab-focus-container-elevation-shadow: 0px 3px 5px -1px rgba(0, 0, 0, .2), 0px 6px 10px 0px rgba(0, 0, 0, .14), 0px 1px 18px 0px rgba(0, 0, 0, .12);--mdc-fab-hover-container-elevation-shadow: 0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12);--mdc-fab-pressed-container-elevation-shadow: 0px 3px 5px -1px rgba(0, 0, 0, .2), 0px 6px 10px 0px rgba(0, 0, 0, .14), 0px 1px 18px 0px rgba(0, 0, 0, .12);--mdc-fab-container-color: #dee0ff;--mdc-fab-container-shape: 16px;--mdc-fab-small-container-elevation-shadow: 0px 3px 5px -1px rgba(0, 0, 0, .2), 0px 6px 10px 0px rgba(0, 0, 0, .14), 0px 1px 18px 0px rgba(0, 0, 0, .12);--mdc-fab-small-focus-container-elevation-shadow: 0px 3px 5px -1px rgba(0, 0, 0, .2), 0px 6px 10px 0px rgba(0, 0, 0, .14), 0px 1px 18px 0px rgba(0, 0, 0, .12);--mdc-fab-small-hover-container-elevation-shadow: 0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12);--mdc-fab-small-pressed-container-elevation-shadow: 0px 3px 5px -1px rgba(0, 0, 0, .2), 0px 6px 10px 0px rgba(0, 0, 0, .14), 0px 1px 18px 0px rgba(0, 0, 0, .12);--mdc-fab-small-container-color: #dee0ff;--mdc-fab-small-container-shape: 12px;--mat-fab-foreground-color: #00105c;--mat-fab-state-layer-color: #00105c;--mat-fab-ripple-color: rgba(0, 16, 92, .12);--mat-fab-hover-state-layer-opacity: .08;--mat-fab-focus-state-layer-opacity: .12;--mat-fab-pressed-state-layer-opacity: .12;--mat-fab-disabled-state-container-color: rgba(27, 27, 31, .12);--mat-fab-disabled-state-foreground-color: rgba(27, 27, 31, .38);--mat-fab-touch-target-display: block;--mat-fab-small-foreground-color: #00105c;--mat-fab-small-state-layer-color: #00105c;--mat-fab-small-ripple-color: rgba(0, 16, 92, .12);--mat-fab-small-hover-state-layer-opacity: .08;--mat-fab-small-focus-state-layer-opacity: .12;--mat-fab-small-pressed-state-layer-opacity: .12;--mat-fab-small-disabled-state-container-color: rgba(27, 27, 31, .12);--mat-fab-small-disabled-state-foreground-color: rgba(27, 27, 31, .38);--mdc-snackbar-container-color: #303034;--mdc-snackbar-supporting-text-color: #f3f0f4;--mdc-snackbar-supporting-text-font: Roboto, sans-serif;--mdc-snackbar-supporting-text-line-height: 1.25rem;--mdc-snackbar-supporting-text-size: .875rem;--mdc-snackbar-supporting-text-weight: 400;--mdc-snackbar-container-shape: 4px;--mat-snack-bar-button-color: #bac3ff;--mat-table-background-color: #fbf8fd;--mat-table-header-headline-color: #1b1b1f;--mat-table-row-item-label-text-color: #1b1b1f;--mat-table-row-item-outline-color: #767680;--mat-table-header-headline-font: Roboto, sans-serif;--mat-table-header-headline-line-height: 1.25rem;--mat-table-header-headline-size: .875rem;--mat-table-header-headline-weight: 500;--mat-table-header-headline-tracking: .006rem;--mat-table-row-item-label-text-font: Roboto, sans-serif;--mat-table-row-item-label-text-line-height: 1.25rem;--mat-table-row-item-label-text-size: .875rem;--mat-table-row-item-label-text-weight: 400;--mat-table-row-item-label-text-tracking: .016rem;--mat-table-footer-supporting-text-font: Roboto, sans-serif;--mat-table-footer-supporting-text-line-height: 1.25rem;--mat-table-footer-supporting-text-size: .875rem;--mat-table-footer-supporting-text-weight: 400;--mat-table-footer-supporting-text-tracking: .016rem;--mat-table-header-container-height: 56px;--mat-table-footer-container-height: 52px;--mat-table-row-item-container-height: 52px;--mat-table-row-item-outline-width: 1px;--mdc-circular-progress-active-indicator-color: #4355b9;--mdc-circular-progress-active-indicator-width: 4px;--mdc-circular-progress-size: 48px;--mat-badge-background-color: #ba1a1a;--mat-badge-text-color: #ffffff;--mat-badge-disabled-state-background-color: rgba(186, 26, 26, .38);--mat-badge-disabled-state-text-color: #ffffff;--mat-badge-text-font: Roboto, sans-serif;--mat-badge-text-size: .688rem;--mat-badge-text-weight: 500;--mat-badge-large-size-text-size: .688rem;--mat-badge-container-shape: 9999px;--mat-badge-container-size: 16px;--mat-badge-small-size-container-size: 6px;--mat-badge-large-size-container-size: 16px;--mat-badge-legacy-container-size: 16px;--mat-badge-legacy-small-size-container-size: 16px;--mat-badge-legacy-large-size-container-size: 16px;--mat-badge-container-offset: -12px 0;--mat-badge-small-size-container-offset: -6px 0;--mat-badge-large-size-container-offset: -12px 0;--mat-badge-container-overlap-offset: -12px;--mat-badge-small-size-container-overlap-offset: -6px;--mat-badge-large-size-container-overlap-offset: -12px;--mat-badge-container-padding: 0 4px;--mat-badge-small-size-container-padding: 0;--mat-badge-large-size-container-padding: 0 4px;--mat-badge-small-size-text-size: 0;--mat-bottom-sheet-container-text-color: #1b1b1f;--mat-bottom-sheet-container-background-color: #f6f2f7;--mat-bottom-sheet-container-text-font: Roboto, sans-serif;--mat-bottom-sheet-container-text-line-height: 1.5rem;--mat-bottom-sheet-container-text-size: 1rem;--mat-bottom-sheet-container-text-tracking: .031rem;--mat-bottom-sheet-container-text-weight: 400;--mat-bottom-sheet-container-shape: 28px;--mat-standard-button-toggle-hover-state-layer-opacity: .08;--mat-standard-button-toggle-focus-state-layer-opacity: .12;--mat-standard-button-toggle-text-color: #1b1b1f;--mat-standard-button-toggle-state-layer-color: #1b1b1f;--mat-standard-button-toggle-selected-state-background-color: #ffd9de;--mat-standard-button-toggle-selected-state-text-color: #400014;--mat-standard-button-toggle-disabled-state-text-color: rgba(27, 27, 31, .38);--mat-standard-button-toggle-disabled-selected-state-text-color: rgba(27, 27, 31, .38);--mat-standard-button-toggle-disabled-selected-state-background-color: rgba(27, 27, 31, .12);--mat-standard-button-toggle-divider-color: #767680;--mat-standard-button-toggle-label-text-font: Roboto, sans-serif;--mat-standard-button-toggle-label-text-line-height: 1.25rem;--mat-standard-button-toggle-label-text-size: .875rem;--mat-standard-button-toggle-label-text-tracking: .006rem;--mat-standard-button-toggle-label-text-weight: 500;--mat-standard-button-toggle-height: 40px;--mat-standard-button-toggle-shape: 9999px;--mat-standard-button-toggle-background-color: transparent;--mat-standard-button-toggle-disabled-state-background-color: transparent;--mat-datepicker-calendar-date-selected-state-text-color: #ffffff;--mat-datepicker-calendar-date-selected-state-background-color: #4355b9;--mat-datepicker-calendar-date-selected-disabled-state-background-color: rgba(27, 27, 31, .38);--mat-datepicker-calendar-date-today-selected-state-outline-color: #4355b9;--mat-datepicker-calendar-date-focus-state-background-color: rgba(27, 27, 31, .12);--mat-datepicker-calendar-date-hover-state-background-color: rgba(27, 27, 31, .08);--mat-datepicker-toggle-active-state-icon-color: #46464f;--mat-datepicker-calendar-date-in-range-state-background-color: #dee0ff;--mat-datepicker-calendar-date-in-comparison-range-state-background-color: #ffd7f1;--mat-datepicker-calendar-date-in-overlap-range-state-background-color: #ffd9de;--mat-datepicker-calendar-date-in-overlap-range-selected-state-background-color: #bc004b;--mat-datepicker-toggle-icon-color: #46464f;--mat-datepicker-calendar-body-label-text-color: #1b1b1f;--mat-datepicker-calendar-period-button-text-color: #46464f;--mat-datepicker-calendar-period-button-icon-color: #46464f;--mat-datepicker-calendar-navigation-button-icon-color: #46464f;--mat-datepicker-calendar-header-text-color: #46464f;--mat-datepicker-calendar-date-today-outline-color: #4355b9;--mat-datepicker-calendar-date-today-disabled-state-outline-color: rgba(27, 27, 31, .38);--mat-datepicker-calendar-date-text-color: #1b1b1f;--mat-datepicker-calendar-date-disabled-state-text-color: rgba(27, 27, 31, .38);--mat-datepicker-calendar-date-preview-state-outline-color: #4355b9;--mat-datepicker-range-input-separator-color: #1b1b1f;--mat-datepicker-range-input-disabled-state-separator-color: rgba(27, 27, 31, .38);--mat-datepicker-range-input-disabled-state-text-color: rgba(27, 27, 31, .38);--mat-datepicker-calendar-container-background-color: #eae7ec;--mat-datepicker-calendar-container-text-color: #1b1b1f;--mat-datepicker-calendar-text-font: Roboto, sans-serif;--mat-datepicker-calendar-text-size: .875rem;--mat-datepicker-calendar-body-label-text-size: .875rem;--mat-datepicker-calendar-body-label-text-weight: 500;--mat-datepicker-calendar-period-button-text-size: .875rem;--mat-datepicker-calendar-period-button-text-weight: 500;--mat-datepicker-calendar-header-text-size: .875rem;--mat-datepicker-calendar-header-text-weight: 500;--mat-datepicker-calendar-container-shape: 16px;--mat-datepicker-calendar-container-touch-shape: 28px;--mat-datepicker-calendar-container-elevation-shadow: 0px 0px 0px 0px rgba(0, 0, 0, .2), 0px 0px 0px 0px rgba(0, 0, 0, .14), 0px 0px 0px 0px rgba(0, 0, 0, .12);--mat-datepicker-calendar-container-touch-elevation-shadow: 0px 0px 0px 0px rgba(0, 0, 0, .2), 0px 0px 0px 0px rgba(0, 0, 0, .14), 0px 0px 0px 0px rgba(0, 0, 0, .12);--mat-datepicker-calendar-header-divider-color: transparent;--mat-datepicker-calendar-date-outline-color: transparent;--mat-divider-color: #767680;--mat-divider-width: 1px;--mat-expansion-container-background-color: #fbf8fd;--mat-expansion-container-text-color: #1b1b1f;--mat-expansion-actions-divider-color: #767680;--mat-expansion-header-hover-state-layer-color: rgba(27, 27, 31, .08);--mat-expansion-header-focus-state-layer-color: rgba(27, 27, 31, .12);--mat-expansion-header-disabled-state-text-color: rgba(27, 27, 31, .38);--mat-expansion-header-text-color: #1b1b1f;--mat-expansion-header-description-color: #46464f;--mat-expansion-header-indicator-color: #46464f;--mat-expansion-header-text-font: Roboto, sans-serif;--mat-expansion-header-text-size: 1rem;--mat-expansion-header-text-weight: 500;--mat-expansion-header-text-line-height: 1.5rem;--mat-expansion-header-text-tracking: .009rem;--mat-expansion-container-text-font: Roboto, sans-serif;--mat-expansion-container-text-line-height: 1.5rem;--mat-expansion-container-text-size: 1rem;--mat-expansion-container-text-tracking: .031rem;--mat-expansion-container-text-weight: 400;--mat-expansion-header-collapsed-state-height: 48px;--mat-expansion-header-expanded-state-height: 64px;--mat-expansion-container-shape: 12px;--mat-expansion-legacy-header-indicator-display: none;--mat-expansion-header-indicator-display: inline-block;--mat-grid-list-tile-header-primary-text-size: 400 1rem / 1.5rem Roboto, sans-serif;--mat-grid-list-tile-header-secondary-text-size: 400 .875rem / 1.25rem Roboto, sans-serif;--mat-grid-list-tile-footer-primary-text-size: 400 1rem / 1.5rem Roboto, sans-serif;--mat-grid-list-tile-footer-secondary-text-size: 400 .875rem / 1.25rem Roboto, sans-serif;--mat-icon-color: inherit;--mat-sidenav-container-background-color: #fbf8fd;--mat-sidenav-container-text-color: #46464f;--mat-sidenav-content-background-color: #fbf8fd;--mat-sidenav-content-text-color: #1b1b1f;--mat-sidenav-scrim-color: rgba(47, 48, 56, .4);--mat-sidenav-container-shape: 16px;--mat-sidenav-container-elevation-shadow: none;--mat-sidenav-container-width: 360px;--mat-sidenav-container-divider-color: transparent;--mat-stepper-header-icon-foreground-color: #fbf8fd;--mat-stepper-header-selected-state-icon-background-color: #4355b9;--mat-stepper-header-selected-state-icon-foreground-color: #ffffff;--mat-stepper-header-edit-state-icon-background-color: #4355b9;--mat-stepper-header-edit-state-icon-foreground-color: #ffffff;--mat-stepper-container-color: #fbf8fd;--mat-stepper-line-color: #767680;--mat-stepper-header-hover-state-layer-color: rgba(48, 48, 52, .08);--mat-stepper-header-focus-state-layer-color: rgba(48, 48, 52, .12);--mat-stepper-header-label-text-color: #46464f;--mat-stepper-header-optional-label-text-color: #46464f;--mat-stepper-header-selected-state-label-text-color: #46464f;--mat-stepper-header-error-state-label-text-color: #ba1a1a;--mat-stepper-header-icon-background-color: #46464f;--mat-stepper-header-error-state-icon-foreground-color: #ba1a1a;--mat-stepper-container-text-font: Roboto, sans-serif;--mat-stepper-header-label-text-font: Roboto, sans-serif;--mat-stepper-header-label-text-size: .875rem;--mat-stepper-header-label-text-weight: 500;--mat-stepper-header-error-state-label-text-size: .875rem;--mat-stepper-header-selected-state-label-text-size: .875rem;--mat-stepper-header-selected-state-label-text-weight: 500;--mat-stepper-header-height: 72px;--mat-stepper-header-focus-state-layer-shape: 12px;--mat-stepper-header-hover-state-layer-shape: 12px;--mat-stepper-header-error-state-icon-background-color: transparent;--mat-sort-arrow-color: #1b1b1f;--mat-toolbar-container-background-color: #fbf8fd;--mat-toolbar-container-text-color: #1b1b1f;--mat-toolbar-title-text-font: Roboto, sans-serif;--mat-toolbar-title-text-line-height: 1.75rem;--mat-toolbar-title-text-size: 1.375rem;--mat-toolbar-title-text-tracking: 0;--mat-toolbar-title-text-weight: 400;--mat-toolbar-standard-height: 64px;--mat-toolbar-mobile-height: 56px;--mat-tree-container-background-color: #fbf8fd;--mat-tree-node-text-color: #1b1b1f;--mat-tree-node-text-font: Roboto, sans-serif;--mat-tree-node-text-size: 1rem;--mat-tree-node-text-weight: 400;--mat-tree-node-min-height: 48px}.mat-theme-loaded-marker{display:none}html .health-icon-down mat-icon,html .health-icon-error mat-icon{color:#ffb4ab}html .mat-toolbar.toolbar-header{background-color:#4355b9;--mat-toolbar-container-text-color: #fff}html .mat-toolbar.toolbar-header h1{cursor:default}html .mat-toolbar.toolbar-header a{color:#fff}html .mat-toolbar.toolbar-header .mat-icon{fill:#fff}html .mat-toolbar.toolbar-header .mdc-button.active{color:#4355b9;background-color:#fffc;cursor:default}html .mat-toolbar.toolbar-header .mdc-button.active mat-icon{color:#4355b9;fill:#4355b9}html .mat-toolbar.toolbar-header .mdc-button:hover:not(.active){background-color:#fff3}html .mat-toolbar.toolbar-header .mdc-button.button-sponsor{margin-left:20px}html .mat-toolbar.toolbar-header .mdc-icon-button .mat-icon{fill:#fff}html .mat-toolbar.toolbar-header .mdc-icon-button:hover{background-color:#fff3}html .layout-header-menu a{color:#7789f0}html .layout-header-menu a.active{color:#4355b9;background-color:#0000001a}html a{color:#e61a61}html tbody tr:not(.expanded-detail-row):hover{background-color:#00000005}html app-dashboard mat-drawer nav a{--mdc-text-button-label-text-color: mat.get-theme-color( $theme, secondary, 40 )}html app-dashboard mat-drawer nav a.active{color:#ffb2be;background-color:#0000001a}html app-queue-visualize button.selected{background-color:#ffecee;color:#bc004b}html .theme-emitter-color.success-50{color:#22892f}html .theme-emitter-color.caution-50{color:#bc5d00}html .theme-emitter-color.primary-20{color:#08218a}html .theme-emitter-color.primary-40{color:#4355b9}html .theme-emitter-color.primary-50{color:#5d6fd4}html .theme-emitter-color.primary-60{color:#7789f0}html .theme-emitter-color.primary-80{color:#bac3ff}html .theme-emitter-color.secondary-20{color:#660025}html .theme-emitter-color.secondary-40{color:#bc004b}html .theme-emitter-color.secondary-50{color:#e61a61}html .theme-emitter-color.secondary-60{color:#ff4e7c}html .theme-emitter-color.secondary-80{color:#ffb2be}html .theme-emitter-color.tertiary-20{color:#44263d}html .theme-emitter-color.tertiary-40{color:#77536d}html .theme-emitter-color.tertiary-50{color:#916c86}html .theme-emitter-color.tertiary-60{color:#ac85a1}html .theme-emitter-color.tertiary-80{color:#e6bad7}html .theme-emitter-color.neutral-20{color:#303034}html .theme-emitter-color.neutral-40{color:#5f5e62}html .theme-emitter-color.neutral-50{color:#78767a}html .theme-emitter-color.neutral-60{color:#929094}html .theme-emitter-color.neutral-80{color:#c8c5ca}html .theme-emitter-color.neutral-variant-20{color:#2f3038}html .theme-emitter-color.neutral-variant-40{color:#5d5e67}html .theme-emitter-color.neutral-variant-50{color:#767680}html .theme-emitter-color.neutral-variant-60{color:#90909a}html .theme-emitter-color.neutral-variant-80{color:#c7c5d0}html .theme-emitter-color.error-20{color:#690005}html .theme-emitter-color.error-40{color:#ba1a1a}html .theme-emitter-color.error-50{color:#de3730}html .theme-emitter-color.error-60{color:#ff5449}html .theme-emitter-color.error-80{color:#ffb4ab}html .theme-emitter-lightdark else{color:#fff}html .drawer-scroll-wrapper{background-color:#dee0ffbf}@media (pointer: fine){html .drawer-content::-webkit-scrollbar-thumb{background-color:#4355b9}}html .panel-content-type li.active{color:#bc004b}html .panel-content-type li:hover:not(.active){color:#77536d}html .filtered .mat-mdc-checkbox-checked .mat-internal-form-field{color:#bc004b}html .filtered .mat-mdc-checkbox:hover:not(.mat-mdc-checkbox-checked) .mat-internal-form-field{color:#77536d}html .unfiltered{--mdc-checkbox-selected-icon-color: lightgray}html .unfiltered .mat-mdc-checkbox:hover .mat-internal-form-field{color:#77536d}html .table-torrents .mat-column-magnet .mat-icon{fill:#4355b9}html[data-bitmagnet-theme=clean]{--mat-app-background-color: #fbf8fd;--mat-app-background: #fbf8fd;--mat-expansion-container-background-color: #f3f0f4;--mat-expansion-container-shape: 2px;--mat-menu-container-color: #f3f0f4;--mat-sidenav-container-background-color: #fbf8fd;--mat-sidenav-content-background-color: #fbf8fd;--mat-table-background-color: #f3f0f4;--mdc-chip-container-shape-radius: 4px;--mdc-dialog-container-shape: 6px;--mdc-elevated-card-container-color: #f3f0f4;--mdc-elevated-card-container-shape: 6px;--mdc-fab-small-container-color: #e4e1e6;--mdc-fab-small-container-elevation-shadow: none;--mdc-fab-small-container-shape: 4px;--mdc-fab-small-focus-container-elevation-shadow: 1px 1px 2px #c8c5ca;--mdc-fab-small-hover-container-elevation-shadow: 1px 1px 2px #acaaaf;--mdc-filled-text-field-container-color: #f3f0f4;--mdc-linear-progress-track-color: #f3f0f4;--mdc-outlined-button-container-shape: 6px;--mdc-text-button-container-shape: 4px}html[data-bitmagnet-theme=clean] .mat-toolbar.toolbar-header{--mat-toolbar-container-text-color: var(--mat-app-text-color);background-color:#f3f0f4;border-bottom-color:var(--mat-table-row-item-outline-color);border-bottom-style:solid;border-bottom-width:1px}html[data-bitmagnet-theme=clean] .mat-toolbar.toolbar-header a{color:var(--mat-app-text-color)}html[data-bitmagnet-theme=clean] .mat-toolbar.toolbar-header a.active{color:#4355b9}html[data-bitmagnet-theme=clean] .mat-toolbar.toolbar-header a.active.mdc-button{background-color:#eae7ec}html[data-bitmagnet-theme=clean] .mat-toolbar.toolbar-header .mat-icon{color:var(--mat-app-text-color);fill:var(--mat-app-text-color)}html[data-bitmagnet-theme=clean] .mat-expansion-panel{box-shadow:1px 1px 2px var(--mat-table-row-item-outline-color)}html[data-bitmagnet-theme=neon]{--mat-app-background-color: #111415;--mat-app-text-color: #e1e2e4;--mat-app-elevation-shadow-level-0: 0px 0px 0px 0px rgba(0, 0, 0, .2), 0px 0px 0px 0px rgba(0, 0, 0, .14), 0px 0px 0px 0px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-1: 0px 2px 1px -1px rgba(0, 0, 0, .2), 0px 1px 1px 0px rgba(0, 0, 0, .14), 0px 1px 3px 0px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-2: 0px 3px 1px -2px rgba(0, 0, 0, .2), 0px 2px 2px 0px rgba(0, 0, 0, .14), 0px 1px 5px 0px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-3: 0px 3px 3px -2px rgba(0, 0, 0, .2), 0px 3px 4px 0px rgba(0, 0, 0, .14), 0px 1px 8px 0px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-4: 0px 2px 4px -1px rgba(0, 0, 0, .2), 0px 4px 5px 0px rgba(0, 0, 0, .14), 0px 1px 10px 0px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-5: 0px 3px 5px -1px rgba(0, 0, 0, .2), 0px 5px 8px 0px rgba(0, 0, 0, .14), 0px 1px 14px 0px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-6: 0px 3px 5px -1px rgba(0, 0, 0, .2), 0px 6px 10px 0px rgba(0, 0, 0, .14), 0px 1px 18px 0px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-7: 0px 4px 5px -2px rgba(0, 0, 0, .2), 0px 7px 10px 1px rgba(0, 0, 0, .14), 0px 2px 16px 1px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-8: 0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-9: 0px 5px 6px -3px rgba(0, 0, 0, .2), 0px 9px 12px 1px rgba(0, 0, 0, .14), 0px 3px 16px 2px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-10: 0px 6px 6px -3px rgba(0, 0, 0, .2), 0px 10px 14px 1px rgba(0, 0, 0, .14), 0px 4px 18px 3px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-11: 0px 6px 7px -4px rgba(0, 0, 0, .2), 0px 11px 15px 1px rgba(0, 0, 0, .14), 0px 4px 20px 3px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-12: 0px 7px 8px -4px rgba(0, 0, 0, .2), 0px 12px 17px 2px rgba(0, 0, 0, .14), 0px 5px 22px 4px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-13: 0px 7px 8px -4px rgba(0, 0, 0, .2), 0px 13px 19px 2px rgba(0, 0, 0, .14), 0px 5px 24px 4px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-14: 0px 7px 9px -4px rgba(0, 0, 0, .2), 0px 14px 21px 2px rgba(0, 0, 0, .14), 0px 5px 26px 4px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-15: 0px 8px 9px -5px rgba(0, 0, 0, .2), 0px 15px 22px 2px rgba(0, 0, 0, .14), 0px 6px 28px 5px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-16: 0px 8px 10px -5px rgba(0, 0, 0, .2), 0px 16px 24px 2px rgba(0, 0, 0, .14), 0px 6px 30px 5px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-17: 0px 8px 11px -5px rgba(0, 0, 0, .2), 0px 17px 26px 2px rgba(0, 0, 0, .14), 0px 6px 32px 5px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-18: 0px 9px 11px -5px rgba(0, 0, 0, .2), 0px 18px 28px 2px rgba(0, 0, 0, .14), 0px 7px 34px 6px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-19: 0px 9px 12px -6px rgba(0, 0, 0, .2), 0px 19px 29px 2px rgba(0, 0, 0, .14), 0px 7px 36px 6px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-20: 0px 10px 13px -6px rgba(0, 0, 0, .2), 0px 20px 31px 3px rgba(0, 0, 0, .14), 0px 8px 38px 7px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-21: 0px 10px 13px -6px rgba(0, 0, 0, .2), 0px 21px 33px 3px rgba(0, 0, 0, .14), 0px 8px 40px 7px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-22: 0px 10px 14px -6px rgba(0, 0, 0, .2), 0px 22px 35px 3px rgba(0, 0, 0, .14), 0px 8px 42px 7px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-23: 0px 11px 14px -7px rgba(0, 0, 0, .2), 0px 23px 36px 3px rgba(0, 0, 0, .14), 0px 9px 44px 8px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-24: 0px 11px 15px -7px rgba(0, 0, 0, .2), 0px 24px 38px 3px rgba(0, 0, 0, .14), 0px 9px 46px 8px rgba(0, 0, 0, .12);--mat-ripple-color: rgba(225, 226, 228, .1);--mat-option-selected-state-label-text-color: #a5ff7a;--mat-option-label-text-color: #e1e2e4;--mat-option-hover-state-layer-color: rgba(225, 226, 228, .08);--mat-option-focus-state-layer-color: rgba(225, 226, 228, .12);--mat-option-selected-state-layer-color: #1e891e;--mat-optgroup-label-text-color: #dce4e9;--mat-full-pseudo-checkbox-selected-icon-color: #ffccff;--mat-full-pseudo-checkbox-selected-checkmark-color: #330033;--mat-full-pseudo-checkbox-unselected-icon-color: #dce4e9;--mat-full-pseudo-checkbox-disabled-selected-checkmark-color: #111415;--mat-full-pseudo-checkbox-disabled-unselected-icon-color: rgba(225, 226, 228, .38);--mat-full-pseudo-checkbox-disabled-selected-icon-color: rgba(225, 226, 228, .38);--mat-minimal-pseudo-checkbox-selected-checkmark-color: #ffccff;--mat-minimal-pseudo-checkbox-disabled-selected-checkmark-color: rgba(225, 226, 228, .38);--mdc-elevated-card-container-color: #111415;--mdc-elevated-card-container-elevation: 0px 2px 1px -1px rgba(0, 0, 0, .2), 0px 1px 1px 0px rgba(0, 0, 0, .14), 0px 1px 3px 0px rgba(0, 0, 0, .12);--mdc-outlined-card-container-color: #111415;--mdc-outlined-card-outline-color: #40484c;--mdc-outlined-card-container-elevation: 0px 0px 0px 0px rgba(0, 0, 0, .2), 0px 0px 0px 0px rgba(0, 0, 0, .14), 0px 0px 0px 0px rgba(0, 0, 0, .12);--mat-card-subtitle-text-color: #e1e2e4;--mdc-linear-progress-active-indicator-color: #ffccff;--mdc-linear-progress-track-color: #40484c;--mdc-plain-tooltip-container-color: #e1e2e4;--mdc-plain-tooltip-supporting-text-color: #2e3132;--mdc-filled-text-field-caret-color: #ffccff;--mdc-filled-text-field-focus-active-indicator-color: #ffccff;--mdc-filled-text-field-focus-label-text-color: #ffccff;--mdc-filled-text-field-container-color: #40484c;--mdc-filled-text-field-disabled-container-color: rgba(225, 226, 228, .04);--mdc-filled-text-field-label-text-color: #dce4e9;--mdc-filled-text-field-hover-label-text-color: #dce4e9;--mdc-filled-text-field-disabled-label-text-color: rgba(225, 226, 228, .38);--mdc-filled-text-field-input-text-color: #e1e2e4;--mdc-filled-text-field-disabled-input-text-color: rgba(225, 226, 228, .38);--mdc-filled-text-field-input-text-placeholder-color: #dce4e9;--mdc-filled-text-field-error-hover-label-text-color: #fff2f2;--mdc-filled-text-field-error-focus-label-text-color: #ffe6e6;--mdc-filled-text-field-error-label-text-color: #ffe6e6;--mdc-filled-text-field-active-indicator-color: #dce4e9;--mdc-filled-text-field-disabled-active-indicator-color: rgba(225, 226, 228, .38);--mdc-filled-text-field-hover-active-indicator-color: #e1e2e4;--mdc-filled-text-field-error-active-indicator-color: #ffe6e6;--mdc-filled-text-field-error-focus-active-indicator-color: #ffe6e6;--mdc-filled-text-field-error-hover-active-indicator-color: #fff2f2;--mdc-outlined-text-field-caret-color: #ffccff;--mdc-outlined-text-field-focus-outline-color: #ffccff;--mdc-outlined-text-field-focus-label-text-color: #ffccff;--mdc-outlined-text-field-label-text-color: #dce4e9;--mdc-outlined-text-field-hover-label-text-color: #e1e2e4;--mdc-outlined-text-field-disabled-label-text-color: rgba(225, 226, 228, .38);--mdc-outlined-text-field-input-text-color: #e1e2e4;--mdc-outlined-text-field-disabled-input-text-color: rgba(225, 226, 228, .38);--mdc-outlined-text-field-input-text-placeholder-color: #dce4e9;--mdc-outlined-text-field-error-focus-label-text-color: #ffe6e6;--mdc-outlined-text-field-error-label-text-color: #ffe6e6;--mdc-outlined-text-field-error-hover-label-text-color: #fff2f2;--mdc-outlined-text-field-outline-color: #8a9297;--mdc-outlined-text-field-disabled-outline-color: rgba(225, 226, 228, .12);--mdc-outlined-text-field-hover-outline-color: #e1e2e4;--mdc-outlined-text-field-error-focus-outline-color: #ffe6e6;--mdc-outlined-text-field-error-hover-outline-color: #fff2f2;--mdc-outlined-text-field-error-outline-color: #ffe6e6;--mat-form-field-focus-select-arrow-color: #ffccff;--mat-form-field-disabled-input-text-placeholder-color: rgba(225, 226, 228, .38);--mat-form-field-state-layer-color: #e1e2e4;--mat-form-field-error-text-color: #ffe6e6;--mat-form-field-select-option-text-color: #191c1e;--mat-form-field-select-disabled-option-text-color: rgba(25, 28, 30, .38);--mat-form-field-leading-icon-color: #dce4e9;--mat-form-field-disabled-leading-icon-color: rgba(225, 226, 228, .38);--mat-form-field-trailing-icon-color: #dce4e9;--mat-form-field-disabled-trailing-icon-color: rgba(225, 226, 228, .38);--mat-form-field-error-focus-trailing-icon-color: #ffe6e6;--mat-form-field-error-hover-trailing-icon-color: #fff2f2;--mat-form-field-error-trailing-icon-color: #ffe6e6;--mat-form-field-enabled-select-arrow-color: #dce4e9;--mat-form-field-disabled-select-arrow-color: rgba(225, 226, 228, .38);--mat-form-field-hover-state-layer-opacity: .08;--mat-select-panel-background-color: #1d2022;--mat-select-enabled-trigger-text-color: #e1e2e4;--mat-select-disabled-trigger-text-color: rgba(225, 226, 228, .38);--mat-select-placeholder-text-color: #dce4e9;--mat-select-enabled-arrow-color: #dce4e9;--mat-select-disabled-arrow-color: rgba(225, 226, 228, .38);--mat-select-focused-arrow-color: #ffccff;--mat-select-invalid-arrow-color: #ffe6e6;--mat-autocomplete-background-color: #1d2022;--mdc-dialog-container-color: #111415;--mdc-dialog-subhead-color: #e1e2e4;--mdc-dialog-supporting-text-color: #dce4e9;--mdc-chip-outline-color: #8a9297;--mdc-chip-disabled-outline-color: rgba(225, 226, 228, .12);--mdc-chip-focus-outline-color: #dce4e9;--mdc-chip-hover-state-layer-opacity: .08;--mdc-chip-selected-hover-state-layer-opacity: .08;--mdc-chip-disabled-label-text-color: rgba(225, 226, 228, .38);--mdc-chip-elevated-selected-container-color: #1e891e;--mdc-chip-flat-disabled-selected-container-color: rgba(225, 226, 228, .12);--mdc-chip-focus-state-layer-color: #dce4e9;--mdc-chip-hover-state-layer-color: #dce4e9;--mdc-chip-selected-hover-state-layer-color: #a5ff7a;--mdc-chip-focus-state-layer-opacity: .12;--mdc-chip-selected-focus-state-layer-color: #a5ff7a;--mdc-chip-selected-focus-state-layer-opacity: .12;--mdc-chip-label-text-color: #dce4e9;--mdc-chip-selected-label-text-color: #a5ff7a;--mdc-chip-with-icon-icon-color: #dce4e9;--mdc-chip-with-icon-disabled-icon-color: #e1e2e4;--mdc-chip-with-icon-selected-icon-color: #a5ff7a;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: #e1e2e4;--mdc-chip-with-trailing-icon-trailing-icon-color: #dce4e9;--mat-chip-trailing-action-state-layer-color: #dce4e9;--mat-chip-selected-trailing-action-state-layer-color: #a5ff7a;--mat-chip-trailing-action-hover-state-layer-opacity: .08;--mat-chip-trailing-action-focus-state-layer-opacity: .12;--mat-chip-selected-disabled-trailing-icon-color: #e1e2e4;--mat-chip-selected-trailing-icon-color: #a5ff7a;--mdc-switch-selected-focus-state-layer-opacity: .12;--mdc-switch-selected-hover-state-layer-opacity: .08;--mdc-switch-selected-pressed-state-layer-opacity: .12;--mdc-switch-unselected-focus-state-layer-opacity: .12;--mdc-switch-unselected-hover-state-layer-opacity: .08;--mdc-switch-unselected-pressed-state-layer-opacity: .12;--mdc-switch-selected-focus-state-layer-color: #ffccff;--mdc-switch-selected-handle-color: #330033;--mdc-switch-selected-hover-state-layer-color: #ffccff;--mdc-switch-selected-pressed-state-layer-color: #ffccff;--mdc-switch-selected-focus-handle-color: #660066;--mdc-switch-selected-hover-handle-color: #660066;--mdc-switch-selected-pressed-handle-color: #660066;--mdc-switch-selected-focus-track-color: #ffccff;--mdc-switch-selected-hover-track-color: #ffccff;--mdc-switch-selected-pressed-track-color: #ffccff;--mdc-switch-selected-track-color: #ffccff;--mdc-switch-disabled-selected-handle-color: #111415;--mdc-switch-disabled-selected-icon-color: #e1e2e4;--mdc-switch-disabled-selected-track-color: #e1e2e4;--mdc-switch-disabled-unselected-handle-color: #e1e2e4;--mdc-switch-disabled-unselected-icon-color: #40484c;--mdc-switch-disabled-unselected-track-color: #40484c;--mdc-switch-selected-icon-color: #ffe6ff;--mdc-switch-unselected-focus-handle-color: #dce4e9;--mdc-switch-unselected-focus-state-layer-color: #e1e2e4;--mdc-switch-unselected-focus-track-color: #40484c;--mdc-switch-unselected-handle-color: #8a9297;--mdc-switch-unselected-hover-handle-color: #dce4e9;--mdc-switch-unselected-hover-state-layer-color: #e1e2e4;--mdc-switch-unselected-hover-track-color: #40484c;--mdc-switch-unselected-icon-color: #40484c;--mdc-switch-unselected-pressed-handle-color: #dce4e9;--mdc-switch-unselected-pressed-state-layer-color: #e1e2e4;--mdc-switch-unselected-pressed-track-color: #40484c;--mdc-switch-unselected-track-color: #40484c;--mat-switch-track-outline-color: #8a9297;--mat-switch-disabled-unselected-track-outline-color: #e1e2e4;--mat-switch-label-text-color: #e1e2e4;--mdc-radio-disabled-selected-icon-color: #e1e2e4;--mdc-radio-disabled-unselected-icon-color: #e1e2e4;--mdc-radio-unselected-hover-icon-color: #e1e2e4;--mdc-radio-unselected-icon-color: #dce4e9;--mdc-radio-unselected-pressed-icon-color: #e1e2e4;--mdc-radio-selected-focus-icon-color: #ffccff;--mdc-radio-selected-hover-icon-color: #ffccff;--mdc-radio-selected-icon-color: #ffccff;--mdc-radio-selected-pressed-icon-color: #ffccff;--mat-radio-ripple-color: #e1e2e4;--mat-radio-checked-ripple-color: #ffccff;--mat-radio-disabled-label-color: rgba(225, 226, 228, .38);--mat-radio-label-text-color: #e1e2e4;--mdc-slider-handle-elevation: 0px 2px 1px -1px rgba(0, 0, 0, .2), 0px 1px 1px 0px rgba(0, 0, 0, .14), 0px 1px 3px 0px rgba(0, 0, 0, .12);--mdc-slider-handle-color: #ffccff;--mdc-slider-focus-handle-color: #ffccff;--mdc-slider-hover-handle-color: #ffccff;--mdc-slider-active-track-color: #ffccff;--mdc-slider-inactive-track-color: #40484c;--mdc-slider-with-tick-marks-inactive-container-color: #dce4e9;--mdc-slider-with-tick-marks-active-container-color: #330033;--mdc-slider-disabled-active-track-color: #e1e2e4;--mdc-slider-disabled-handle-color: #e1e2e4;--mdc-slider-disabled-inactive-track-color: #e1e2e4;--mdc-slider-label-container-color: #ffccff;--mdc-slider-label-label-text-color: #330033;--mdc-slider-with-overlap-handle-outline-color: #330033;--mdc-slider-with-tick-marks-disabled-container-color: #e1e2e4;--mat-slider-ripple-color: #ffccff;--mat-slider-hover-state-layer-color: rgba(255, 204, 255, .05);--mat-slider-focus-state-layer-color: rgba(255, 204, 255, .2);--mat-menu-item-label-text-color: #e1e2e4;--mat-menu-item-icon-color: #dce4e9;--mat-menu-item-hover-state-layer-color: rgba(225, 226, 228, .08);--mat-menu-item-focus-state-layer-color: rgba(225, 226, 228, .12);--mat-menu-container-color: #1d2022;--mat-menu-divider-color: #40484c;--mdc-list-list-item-container-color: transparent;--mdc-list-list-item-leading-avatar-color: #660066;--mdc-list-list-item-disabled-state-layer-color: #e1e2e4;--mdc-list-list-item-disabled-state-layer-opacity: .12;--mdc-list-list-item-label-text-color: #e1e2e4;--mdc-list-list-item-supporting-text-color: #dce4e9;--mdc-list-list-item-leading-icon-color: #dce4e9;--mdc-list-list-item-trailing-supporting-text-color: #dce4e9;--mdc-list-list-item-trailing-icon-color: #dce4e9;--mdc-list-list-item-selected-trailing-icon-color: #ffccff;--mdc-list-list-item-disabled-label-text-color: #e1e2e4;--mdc-list-list-item-disabled-leading-icon-color: #e1e2e4;--mdc-list-list-item-disabled-trailing-icon-color: #e1e2e4;--mdc-list-list-item-hover-label-text-color: #e1e2e4;--mdc-list-list-item-focus-label-text-color: #e1e2e4;--mdc-list-list-item-hover-state-layer-color: #e1e2e4;--mdc-list-list-item-hover-state-layer-opacity: .08;--mdc-list-list-item-focus-state-layer-color: #e1e2e4;--mdc-list-list-item-focus-state-layer-opacity: .12;--mat-list-active-indicator-color: #1e891e;--mat-paginator-container-text-color: #e1e2e4;--mat-paginator-container-background-color: #111415;--mat-paginator-enabled-icon-color: #dce4e9;--mat-paginator-disabled-icon-color: rgba(225, 226, 228, .38);--mdc-tab-indicator-active-indicator-color: #ffccff;--mat-tab-header-divider-color: #40484c;--mat-tab-header-pagination-icon-color: #e1e2e4;--mat-tab-header-inactive-label-text-color: #e1e2e4;--mat-tab-header-active-label-text-color: #e1e2e4;--mat-tab-header-active-ripple-color: #e1e2e4;--mat-tab-header-inactive-ripple-color: #e1e2e4;--mat-tab-header-inactive-focus-label-text-color: #e1e2e4;--mat-tab-header-inactive-hover-label-text-color: #e1e2e4;--mat-tab-header-active-focus-label-text-color: #e1e2e4;--mat-tab-header-active-hover-label-text-color: #e1e2e4;--mat-tab-header-active-focus-indicator-color: #ffccff;--mat-tab-header-active-hover-indicator-color: #ffccff;--mdc-checkbox-disabled-selected-checkmark-color: #111415;--mdc-checkbox-selected-focus-state-layer-opacity: .12;--mdc-checkbox-selected-hover-state-layer-opacity: .08;--mdc-checkbox-selected-pressed-state-layer-opacity: .12;--mdc-checkbox-unselected-focus-state-layer-opacity: .12;--mdc-checkbox-unselected-hover-state-layer-opacity: .08;--mdc-checkbox-unselected-pressed-state-layer-opacity: .12;--mdc-checkbox-selected-pressed-icon-color: #ffccff;--mdc-checkbox-disabled-selected-icon-color: rgba(225, 226, 228, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(225, 226, 228, .38);--mdc-checkbox-selected-checkmark-color: #330033;--mdc-checkbox-selected-focus-icon-color: #ffccff;--mdc-checkbox-selected-hover-icon-color: #ffccff;--mdc-checkbox-selected-icon-color: #ffccff;--mdc-checkbox-unselected-focus-icon-color: #e1e2e4;--mdc-checkbox-unselected-hover-icon-color: #e1e2e4;--mdc-checkbox-unselected-icon-color: #dce4e9;--mdc-checkbox-selected-focus-state-layer-color: #ffccff;--mdc-checkbox-selected-hover-state-layer-color: #ffccff;--mdc-checkbox-selected-pressed-state-layer-color: #e1e2e4;--mdc-checkbox-unselected-focus-state-layer-color: #e1e2e4;--mdc-checkbox-unselected-hover-state-layer-color: #e1e2e4;--mdc-checkbox-unselected-pressed-state-layer-color: #ffccff;--mat-checkbox-disabled-label-color: rgba(225, 226, 228, .38);--mat-checkbox-label-text-color: #e1e2e4;--mdc-text-button-label-text-color: #ffccff;--mdc-text-button-disabled-label-text-color: rgba(225, 226, 228, .38);--mdc-protected-button-container-elevation-shadow: 0px 2px 1px -1px rgba(0, 0, 0, .2), 0px 1px 1px 0px rgba(0, 0, 0, .14), 0px 1px 3px 0px rgba(0, 0, 0, .12);--mdc-protected-button-disabled-container-elevation-shadow: 0px 0px 0px 0px rgba(0, 0, 0, .2), 0px 0px 0px 0px rgba(0, 0, 0, .14), 0px 0px 0px 0px rgba(0, 0, 0, .12);--mdc-protected-button-focus-container-elevation-shadow: 0px 2px 1px -1px rgba(0, 0, 0, .2), 0px 1px 1px 0px rgba(0, 0, 0, .14), 0px 1px 3px 0px rgba(0, 0, 0, .12);--mdc-protected-button-hover-container-elevation-shadow: 0px 3px 3px -2px rgba(0, 0, 0, .2), 0px 3px 4px 0px rgba(0, 0, 0, .14), 0px 1px 8px 0px rgba(0, 0, 0, .12);--mdc-protected-button-pressed-container-elevation-shadow: 0px 2px 1px -1px rgba(0, 0, 0, .2), 0px 1px 1px 0px rgba(0, 0, 0, .14), 0px 1px 3px 0px rgba(0, 0, 0, .12);--mdc-protected-button-container-color: #111415;--mdc-protected-button-label-text-color: #ffccff;--mdc-protected-button-disabled-container-color: rgba(225, 226, 228, .12);--mdc-protected-button-disabled-label-text-color: rgba(225, 226, 228, .38);--mdc-filled-button-container-color: #ffccff;--mdc-filled-button-label-text-color: #330033;--mdc-filled-button-disabled-container-color: rgba(225, 226, 228, .12);--mdc-filled-button-disabled-label-text-color: rgba(225, 226, 228, .38);--mdc-outlined-button-disabled-outline-color: rgba(225, 226, 228, .12);--mdc-outlined-button-disabled-label-text-color: rgba(225, 226, 228, .38);--mdc-outlined-button-label-text-color: #ffccff;--mdc-outlined-button-outline-color: #8a9297;--mat-text-button-state-layer-color: #ffccff;--mat-text-button-disabled-state-layer-color: #dce4e9;--mat-text-button-ripple-color: rgba(255, 204, 255, .12);--mat-text-button-hover-state-layer-opacity: .08;--mat-text-button-focus-state-layer-opacity: .12;--mat-text-button-pressed-state-layer-opacity: .12;--mat-protected-button-state-layer-color: #ffccff;--mat-protected-button-disabled-state-layer-color: #dce4e9;--mat-protected-button-ripple-color: rgba(255, 204, 255, .12);--mat-protected-button-hover-state-layer-opacity: .08;--mat-protected-button-focus-state-layer-opacity: .12;--mat-protected-button-pressed-state-layer-opacity: .12;--mat-filled-button-state-layer-color: #330033;--mat-filled-button-disabled-state-layer-color: #dce4e9;--mat-filled-button-ripple-color: rgba(51, 0, 51, .12);--mat-filled-button-hover-state-layer-opacity: .08;--mat-filled-button-focus-state-layer-opacity: .12;--mat-filled-button-pressed-state-layer-opacity: .12;--mat-outlined-button-state-layer-color: #ffccff;--mat-outlined-button-disabled-state-layer-color: #dce4e9;--mat-outlined-button-ripple-color: rgba(255, 204, 255, .12);--mat-outlined-button-hover-state-layer-opacity: .08;--mat-outlined-button-focus-state-layer-opacity: .12;--mat-outlined-button-pressed-state-layer-opacity: .12;--mdc-icon-button-icon-color: #dce4e9;--mdc-icon-button-disabled-icon-color: rgba(225, 226, 228, .38);--mat-icon-button-state-layer-color: #dce4e9;--mat-icon-button-disabled-state-layer-color: #dce4e9;--mat-icon-button-ripple-color: rgba(220, 228, 233, .12);--mat-icon-button-hover-state-layer-opacity: .08;--mat-icon-button-focus-state-layer-opacity: .12;--mat-icon-button-pressed-state-layer-opacity: .12;--mdc-extended-fab-container-elevation-shadow: 0px 3px 5px -1px rgba(0, 0, 0, .2), 0px 6px 10px 0px rgba(0, 0, 0, .14), 0px 1px 18px 0px rgba(0, 0, 0, .12);--mdc-extended-fab-focus-container-elevation-shadow: 0px 3px 5px -1px rgba(0, 0, 0, .2), 0px 6px 10px 0px rgba(0, 0, 0, .14), 0px 1px 18px 0px rgba(0, 0, 0, .12);--mdc-extended-fab-hover-container-elevation-shadow: 0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12);--mdc-extended-fab-pressed-container-elevation-shadow: 0px 3px 5px -1px rgba(0, 0, 0, .2), 0px 6px 10px 0px rgba(0, 0, 0, .14), 0px 1px 18px 0px rgba(0, 0, 0, .12);--mdc-fab-container-elevation-shadow: 0px 3px 5px -1px rgba(0, 0, 0, .2), 0px 6px 10px 0px rgba(0, 0, 0, .14), 0px 1px 18px 0px rgba(0, 0, 0, .12);--mdc-fab-focus-container-elevation-shadow: 0px 3px 5px -1px rgba(0, 0, 0, .2), 0px 6px 10px 0px rgba(0, 0, 0, .14), 0px 1px 18px 0px rgba(0, 0, 0, .12);--mdc-fab-hover-container-elevation-shadow: 0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12);--mdc-fab-pressed-container-elevation-shadow: 0px 3px 5px -1px rgba(0, 0, 0, .2), 0px 6px 10px 0px rgba(0, 0, 0, .14), 0px 1px 18px 0px rgba(0, 0, 0, .12);--mdc-fab-container-color: #660066;--mdc-fab-small-container-elevation-shadow: 0px 3px 5px -1px rgba(0, 0, 0, .2), 0px 6px 10px 0px rgba(0, 0, 0, .14), 0px 1px 18px 0px rgba(0, 0, 0, .12);--mdc-fab-small-focus-container-elevation-shadow: 0px 3px 5px -1px rgba(0, 0, 0, .2), 0px 6px 10px 0px rgba(0, 0, 0, .14), 0px 1px 18px 0px rgba(0, 0, 0, .12);--mdc-fab-small-hover-container-elevation-shadow: 0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12);--mdc-fab-small-pressed-container-elevation-shadow: 0px 3px 5px -1px rgba(0, 0, 0, .2), 0px 6px 10px 0px rgba(0, 0, 0, .14), 0px 1px 18px 0px rgba(0, 0, 0, .12);--mdc-fab-small-container-color: #660066;--mat-fab-foreground-color: #ffe6ff;--mat-fab-state-layer-color: #ffe6ff;--mat-fab-ripple-color: rgba(255, 230, 255, .12);--mat-fab-hover-state-layer-opacity: .08;--mat-fab-focus-state-layer-opacity: .12;--mat-fab-pressed-state-layer-opacity: .12;--mat-fab-disabled-state-container-color: rgba(225, 226, 228, .12);--mat-fab-disabled-state-foreground-color: rgba(225, 226, 228, .38);--mat-fab-small-foreground-color: #ffe6ff;--mat-fab-small-state-layer-color: #ffe6ff;--mat-fab-small-ripple-color: rgba(255, 230, 255, .12);--mat-fab-small-hover-state-layer-opacity: .08;--mat-fab-small-focus-state-layer-opacity: .12;--mat-fab-small-pressed-state-layer-opacity: .12;--mat-fab-small-disabled-state-container-color: rgba(225, 226, 228, .12);--mat-fab-small-disabled-state-foreground-color: rgba(225, 226, 228, .38);--mdc-snackbar-container-color: #e1e2e4;--mdc-snackbar-supporting-text-color: #2e3132;--mat-snack-bar-button-color: #ff00ff;--mat-table-background-color: #111415;--mat-table-header-headline-color: #e1e2e4;--mat-table-row-item-label-text-color: #e1e2e4;--mat-table-row-item-outline-color: #8a9297;--mdc-circular-progress-active-indicator-color: #ffccff;--mat-badge-background-color: #ffe6e6;--mat-badge-text-color: #660000;--mat-badge-disabled-state-background-color: rgba(255, 230, 230, .38);--mat-badge-disabled-state-text-color: #660000;--mat-bottom-sheet-container-text-color: #e1e2e4;--mat-bottom-sheet-container-background-color: #191c1e;--mat-standard-button-toggle-hover-state-layer-opacity: .08;--mat-standard-button-toggle-focus-state-layer-opacity: .12;--mat-standard-button-toggle-text-color: #e1e2e4;--mat-standard-button-toggle-state-layer-color: #e1e2e4;--mat-standard-button-toggle-selected-state-background-color: #1e891e;--mat-standard-button-toggle-selected-state-text-color: #a5ff7a;--mat-standard-button-toggle-disabled-state-text-color: rgba(225, 226, 228, .38);--mat-standard-button-toggle-disabled-selected-state-text-color: rgba(225, 226, 228, .38);--mat-standard-button-toggle-disabled-selected-state-background-color: rgba(225, 226, 228, .12);--mat-standard-button-toggle-divider-color: #8a9297;--mat-datepicker-calendar-date-selected-state-text-color: #330033;--mat-datepicker-calendar-date-selected-state-background-color: #ffccff;--mat-datepicker-calendar-date-selected-disabled-state-background-color: rgba(225, 226, 228, .38);--mat-datepicker-calendar-date-today-selected-state-outline-color: #ffccff;--mat-datepicker-calendar-date-focus-state-background-color: rgba(225, 226, 228, .12);--mat-datepicker-calendar-date-hover-state-background-color: rgba(225, 226, 228, .08);--mat-datepicker-toggle-active-state-icon-color: #dce4e9;--mat-datepicker-calendar-date-in-range-state-background-color: #660066;--mat-datepicker-calendar-date-in-comparison-range-state-background-color: #0066cc;--mat-datepicker-calendar-date-in-overlap-range-state-background-color: #1e891e;--mat-datepicker-calendar-date-in-overlap-range-selected-state-background-color: #8bff61;--mat-datepicker-toggle-icon-color: #dce4e9;--mat-datepicker-calendar-body-label-text-color: #e1e2e4;--mat-datepicker-calendar-period-button-text-color: #dce4e9;--mat-datepicker-calendar-period-button-icon-color: #dce4e9;--mat-datepicker-calendar-navigation-button-icon-color: #dce4e9;--mat-datepicker-calendar-header-text-color: #dce4e9;--mat-datepicker-calendar-date-today-outline-color: #ffccff;--mat-datepicker-calendar-date-today-disabled-state-outline-color: rgba(225, 226, 228, .38);--mat-datepicker-calendar-date-text-color: #e1e2e4;--mat-datepicker-calendar-date-disabled-state-text-color: rgba(225, 226, 228, .38);--mat-datepicker-calendar-date-preview-state-outline-color: #ffccff;--mat-datepicker-range-input-separator-color: #e1e2e4;--mat-datepicker-range-input-disabled-state-separator-color: rgba(225, 226, 228, .38);--mat-datepicker-range-input-disabled-state-text-color: rgba(225, 226, 228, .38);--mat-datepicker-calendar-container-background-color: #272a2c;--mat-datepicker-calendar-container-text-color: #e1e2e4;--mat-divider-color: #8a9297;--mat-expansion-container-background-color: #111415;--mat-expansion-container-text-color: #e1e2e4;--mat-expansion-actions-divider-color: #8a9297;--mat-expansion-header-hover-state-layer-color: rgba(225, 226, 228, .08);--mat-expansion-header-focus-state-layer-color: rgba(225, 226, 228, .12);--mat-expansion-header-disabled-state-text-color: rgba(225, 226, 228, .38);--mat-expansion-header-text-color: #e1e2e4;--mat-expansion-header-description-color: #dce4e9;--mat-expansion-header-indicator-color: #dce4e9;--mat-sidenav-container-background-color: #111415;--mat-sidenav-container-text-color: #dce4e9;--mat-sidenav-content-background-color: #111415;--mat-sidenav-content-text-color: #e1e2e4;--mat-sidenav-scrim-color: rgba(42, 50, 54, .4);--mat-stepper-header-icon-foreground-color: #111415;--mat-stepper-header-selected-state-icon-background-color: #ffccff;--mat-stepper-header-selected-state-icon-foreground-color: #330033;--mat-stepper-header-edit-state-icon-background-color: #ffccff;--mat-stepper-header-edit-state-icon-foreground-color: #330033;--mat-stepper-container-color: #111415;--mat-stepper-line-color: #8a9297;--mat-stepper-header-hover-state-layer-color: rgba(225, 226, 228, .08);--mat-stepper-header-focus-state-layer-color: rgba(225, 226, 228, .12);--mat-stepper-header-label-text-color: #dce4e9;--mat-stepper-header-optional-label-text-color: #dce4e9;--mat-stepper-header-selected-state-label-text-color: #dce4e9;--mat-stepper-header-error-state-label-text-color: #ffe6e6;--mat-stepper-header-icon-background-color: #dce4e9;--mat-stepper-header-error-state-icon-foreground-color: #ffe6e6;--mat-sort-arrow-color: #e1e2e4;--mat-toolbar-container-background-color: #111415;--mat-toolbar-container-text-color: #e1e2e4;--mat-tree-container-background-color: #111415;--mat-tree-node-text-color: #e1e2e4;--mat-app-background-color: #0c0f10;--mat-app-background: #0c0f10;--mat-expansion-container-background-color: #191c1e;--mat-sidenav-container-background-color: #0c0f10;--mat-sidenav-content-background-color: #0c0f10;--mat-table-background-color: #191c1e;--mdc-elevated-card-container-color: #191c1e}html[data-bitmagnet-theme=neon] .health-icon-down mat-icon,html[data-bitmagnet-theme=neon] .health-icon-error mat-icon{color:#ffe6e6}html[data-bitmagnet-theme=neon] .mat-toolbar.toolbar-header{background-color:#f0f;--mat-toolbar-container-text-color: #fff}html[data-bitmagnet-theme=neon] .mat-toolbar.toolbar-header h1{cursor:default}html[data-bitmagnet-theme=neon] .mat-toolbar.toolbar-header a{color:#fff}html[data-bitmagnet-theme=neon] .mat-toolbar.toolbar-header .mat-icon{fill:#fff}html[data-bitmagnet-theme=neon] .mat-toolbar.toolbar-header .mdc-button.active{color:#f0f;background-color:#fffc;cursor:default}html[data-bitmagnet-theme=neon] .mat-toolbar.toolbar-header .mdc-button.active mat-icon{color:#f0f;fill:#f0f}html[data-bitmagnet-theme=neon] .mat-toolbar.toolbar-header .mdc-button:hover:not(.active){background-color:#fff3}html[data-bitmagnet-theme=neon] .mat-toolbar.toolbar-header .mdc-button.button-sponsor{margin-left:20px}html[data-bitmagnet-theme=neon] .mat-toolbar.toolbar-header .mdc-icon-button .mat-icon{fill:#fff}html[data-bitmagnet-theme=neon] .mat-toolbar.toolbar-header .mdc-icon-button:hover{background-color:#fff3}html[data-bitmagnet-theme=neon] .layout-header-menu a{color:#f6f}html[data-bitmagnet-theme=neon] .layout-header-menu a.active{color:#fcf;background-color:#ffffff1a}html[data-bitmagnet-theme=neon] a{color:#8bff61}html[data-bitmagnet-theme=neon] tbody tr:not(.expanded-detail-row):hover{background-color:#ffffff05}html[data-bitmagnet-theme=neon] app-dashboard mat-drawer nav a{--mdc-text-button-label-text-color: mat.get-theme-color( $theme, secondary, 40 )}html[data-bitmagnet-theme=neon] app-dashboard mat-drawer nav a.active{color:#8bff61;background-color:#ffffff1a}html[data-bitmagnet-theme=neon] app-queue-visualize button.selected{background-color:#1a001a}html[data-bitmagnet-theme=neon] .theme-emitter-color.success-50{color:#3f6}html[data-bitmagnet-theme=neon] .theme-emitter-color.caution-50{color:#ffd633}html[data-bitmagnet-theme=neon] .theme-emitter-color.primary-20{color:#303}html[data-bitmagnet-theme=neon] .theme-emitter-color.primary-40{color:#f0f}html[data-bitmagnet-theme=neon] .theme-emitter-color.primary-50{color:#f3f}html[data-bitmagnet-theme=neon] .theme-emitter-color.primary-60{color:#f6f}html[data-bitmagnet-theme=neon] .theme-emitter-color.primary-80{color:#fcf}html[data-bitmagnet-theme=neon] .theme-emitter-color.secondary-20{color:#145514}html[data-bitmagnet-theme=neon] .theme-emitter-color.secondary-40{color:#28bd28}html[data-bitmagnet-theme=neon] .theme-emitter-color.secondary-50{color:#3dff14}html[data-bitmagnet-theme=neon] .theme-emitter-color.secondary-60{color:#57ff2e}html[data-bitmagnet-theme=neon] .theme-emitter-color.secondary-80{color:#8bff61}html[data-bitmagnet-theme=neon] .theme-emitter-color.tertiary-20{color:#036}html[data-bitmagnet-theme=neon] .theme-emitter-color.tertiary-40{color:#00b3ff}html[data-bitmagnet-theme=neon] .theme-emitter-color.tertiary-50{color:#3cf}html[data-bitmagnet-theme=neon] .theme-emitter-color.tertiary-60{color:#66e5ff}html[data-bitmagnet-theme=neon] .theme-emitter-color.tertiary-80{color:#cff}html[data-bitmagnet-theme=neon] .theme-emitter-color.neutral-20{color:#2e3132}html[data-bitmagnet-theme=neon] .theme-emitter-color.neutral-40{color:#5c5f60}html[data-bitmagnet-theme=neon] .theme-emitter-color.neutral-50{color:#757779}html[data-bitmagnet-theme=neon] .theme-emitter-color.neutral-60{color:#8f9193}html[data-bitmagnet-theme=neon] .theme-emitter-color.neutral-80{color:#c5c7c8}html[data-bitmagnet-theme=neon] .theme-emitter-color.neutral-variant-20{color:#2a3236}html[data-bitmagnet-theme=neon] .theme-emitter-color.neutral-variant-40{color:#586064}html[data-bitmagnet-theme=neon] .theme-emitter-color.neutral-variant-50{color:#70787d}html[data-bitmagnet-theme=neon] .theme-emitter-color.neutral-variant-60{color:#8a9297}html[data-bitmagnet-theme=neon] .theme-emitter-color.neutral-variant-80{color:#c0c8cd}html[data-bitmagnet-theme=neon] .theme-emitter-color.error-20{color:#600}html[data-bitmagnet-theme=neon] .theme-emitter-color.error-40{color:#f33}html[data-bitmagnet-theme=neon] .theme-emitter-color.error-50{color:#f66}html[data-bitmagnet-theme=neon] .theme-emitter-color.error-60{color:#f99}html[data-bitmagnet-theme=neon] .theme-emitter-color.error-80{color:#ffe6e6}html[data-bitmagnet-theme=neon] .theme-emitter-lightdark{color:#000}html[data-bitmagnet-theme=neon] .theme-emitter-lightdark else{color:#fff}html[data-bitmagnet-theme=neon] .drawer-scroll-wrapper{background-color:#660066bf}@media (pointer: fine){html[data-bitmagnet-theme=neon] .drawer-content::-webkit-scrollbar-thumb{background-color:#fcf}}html[data-bitmagnet-theme=neon] .panel-content-type li.active{color:#8bff61}html[data-bitmagnet-theme=neon] .panel-content-type li:hover:not(.active){color:#cff}html[data-bitmagnet-theme=neon] .filtered .mat-mdc-checkbox-checked .mat-internal-form-field{color:#8bff61}html[data-bitmagnet-theme=neon] .filtered .mat-mdc-checkbox:hover:not(.mat-mdc-checkbox-checked) .mat-internal-form-field{color:#cff}html[data-bitmagnet-theme=neon] .unfiltered{--mdc-checkbox-selected-icon-color: lightgray}html[data-bitmagnet-theme=neon] .unfiltered .mat-mdc-checkbox:hover .mat-internal-form-field{color:#cff}html[data-bitmagnet-theme=neon] .table-torrents .mat-column-magnet .mat-icon{fill:#f6f}html[data-bitmagnet-theme=neon] .mat-toolbar.toolbar-header{--mat-toolbar-container-text-color: var(--mat-app-text-color)}html[data-bitmagnet-theme=neon] .mat-toolbar.toolbar-header a,html[data-bitmagnet-theme=neon] .mat-toolbar.toolbar-header a.active{color:#0c0f10}html[data-bitmagnet-theme=neon] .mat-toolbar.toolbar-header a.active.mdc-button{background-color:#0c0f10}html[data-bitmagnet-theme=neon] .mat-toolbar.toolbar-header .mat-icon{color:#0c0f10;fill:#0c0f10}html[data-bitmagnet-theme=tundra]{--mat-app-background-color: #111415;--mat-app-text-color: #e1e2e4;--mat-app-elevation-shadow-level-0: 0px 0px 0px 0px rgba(0, 0, 0, .2), 0px 0px 0px 0px rgba(0, 0, 0, .14), 0px 0px 0px 0px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-1: 0px 2px 1px -1px rgba(0, 0, 0, .2), 0px 1px 1px 0px rgba(0, 0, 0, .14), 0px 1px 3px 0px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-2: 0px 3px 1px -2px rgba(0, 0, 0, .2), 0px 2px 2px 0px rgba(0, 0, 0, .14), 0px 1px 5px 0px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-3: 0px 3px 3px -2px rgba(0, 0, 0, .2), 0px 3px 4px 0px rgba(0, 0, 0, .14), 0px 1px 8px 0px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-4: 0px 2px 4px -1px rgba(0, 0, 0, .2), 0px 4px 5px 0px rgba(0, 0, 0, .14), 0px 1px 10px 0px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-5: 0px 3px 5px -1px rgba(0, 0, 0, .2), 0px 5px 8px 0px rgba(0, 0, 0, .14), 0px 1px 14px 0px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-6: 0px 3px 5px -1px rgba(0, 0, 0, .2), 0px 6px 10px 0px rgba(0, 0, 0, .14), 0px 1px 18px 0px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-7: 0px 4px 5px -2px rgba(0, 0, 0, .2), 0px 7px 10px 1px rgba(0, 0, 0, .14), 0px 2px 16px 1px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-8: 0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-9: 0px 5px 6px -3px rgba(0, 0, 0, .2), 0px 9px 12px 1px rgba(0, 0, 0, .14), 0px 3px 16px 2px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-10: 0px 6px 6px -3px rgba(0, 0, 0, .2), 0px 10px 14px 1px rgba(0, 0, 0, .14), 0px 4px 18px 3px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-11: 0px 6px 7px -4px rgba(0, 0, 0, .2), 0px 11px 15px 1px rgba(0, 0, 0, .14), 0px 4px 20px 3px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-12: 0px 7px 8px -4px rgba(0, 0, 0, .2), 0px 12px 17px 2px rgba(0, 0, 0, .14), 0px 5px 22px 4px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-13: 0px 7px 8px -4px rgba(0, 0, 0, .2), 0px 13px 19px 2px rgba(0, 0, 0, .14), 0px 5px 24px 4px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-14: 0px 7px 9px -4px rgba(0, 0, 0, .2), 0px 14px 21px 2px rgba(0, 0, 0, .14), 0px 5px 26px 4px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-15: 0px 8px 9px -5px rgba(0, 0, 0, .2), 0px 15px 22px 2px rgba(0, 0, 0, .14), 0px 6px 28px 5px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-16: 0px 8px 10px -5px rgba(0, 0, 0, .2), 0px 16px 24px 2px rgba(0, 0, 0, .14), 0px 6px 30px 5px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-17: 0px 8px 11px -5px rgba(0, 0, 0, .2), 0px 17px 26px 2px rgba(0, 0, 0, .14), 0px 6px 32px 5px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-18: 0px 9px 11px -5px rgba(0, 0, 0, .2), 0px 18px 28px 2px rgba(0, 0, 0, .14), 0px 7px 34px 6px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-19: 0px 9px 12px -6px rgba(0, 0, 0, .2), 0px 19px 29px 2px rgba(0, 0, 0, .14), 0px 7px 36px 6px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-20: 0px 10px 13px -6px rgba(0, 0, 0, .2), 0px 20px 31px 3px rgba(0, 0, 0, .14), 0px 8px 38px 7px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-21: 0px 10px 13px -6px rgba(0, 0, 0, .2), 0px 21px 33px 3px rgba(0, 0, 0, .14), 0px 8px 40px 7px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-22: 0px 10px 14px -6px rgba(0, 0, 0, .2), 0px 22px 35px 3px rgba(0, 0, 0, .14), 0px 8px 42px 7px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-23: 0px 11px 14px -7px rgba(0, 0, 0, .2), 0px 23px 36px 3px rgba(0, 0, 0, .14), 0px 9px 44px 8px rgba(0, 0, 0, .12);--mat-app-elevation-shadow-level-24: 0px 11px 15px -7px rgba(0, 0, 0, .2), 0px 24px 38px 3px rgba(0, 0, 0, .14), 0px 9px 46px 8px rgba(0, 0, 0, .12);--mat-ripple-color: rgba(225, 226, 228, .1);--mat-option-selected-state-label-text-color: #c7c766;--mat-option-label-text-color: #e1e2e4;--mat-option-hover-state-layer-color: rgba(225, 226, 228, .08);--mat-option-focus-state-layer-color: rgba(225, 226, 228, .12);--mat-option-selected-state-layer-color: #51511e;--mat-optgroup-label-text-color: #dce4e9;--mat-full-pseudo-checkbox-selected-icon-color: #8591cd;--mat-full-pseudo-checkbox-selected-checkmark-color: #222744;--mat-full-pseudo-checkbox-unselected-icon-color: #dce4e9;--mat-full-pseudo-checkbox-disabled-selected-checkmark-color: #111415;--mat-full-pseudo-checkbox-disabled-unselected-icon-color: rgba(225, 226, 228, .38);--mat-full-pseudo-checkbox-disabled-selected-icon-color: rgba(225, 226, 228, .38);--mat-minimal-pseudo-checkbox-selected-checkmark-color: #8591cd;--mat-minimal-pseudo-checkbox-disabled-selected-checkmark-color: rgba(225, 226, 228, .38);--mdc-elevated-card-container-color: #111415;--mdc-elevated-card-container-elevation: 0px 2px 1px -1px rgba(0, 0, 0, .2), 0px 1px 1px 0px rgba(0, 0, 0, .14), 0px 1px 3px 0px rgba(0, 0, 0, .12);--mdc-outlined-card-container-color: #111415;--mdc-outlined-card-outline-color: #40484c;--mdc-outlined-card-container-elevation: 0px 0px 0px 0px rgba(0, 0, 0, .2), 0px 0px 0px 0px rgba(0, 0, 0, .14), 0px 0px 0px 0px rgba(0, 0, 0, .12);--mat-card-subtitle-text-color: #e1e2e4;--mdc-linear-progress-active-indicator-color: #8591cd;--mdc-linear-progress-track-color: #40484c;--mdc-plain-tooltip-container-color: #e1e2e4;--mdc-plain-tooltip-supporting-text-color: #2e3132;--mdc-filled-text-field-caret-color: #8591cd;--mdc-filled-text-field-focus-active-indicator-color: #8591cd;--mdc-filled-text-field-focus-label-text-color: #8591cd;--mdc-filled-text-field-container-color: #40484c;--mdc-filled-text-field-disabled-container-color: rgba(225, 226, 228, .04);--mdc-filled-text-field-label-text-color: #dce4e9;--mdc-filled-text-field-hover-label-text-color: #dce4e9;--mdc-filled-text-field-disabled-label-text-color: rgba(225, 226, 228, .38);--mdc-filled-text-field-input-text-color: #e1e2e4;--mdc-filled-text-field-disabled-input-text-color: rgba(225, 226, 228, .38);--mdc-filled-text-field-input-text-placeholder-color: #dce4e9;--mdc-filled-text-field-error-hover-label-text-color: #ffdad6;--mdc-filled-text-field-error-focus-label-text-color: #ffb4ab;--mdc-filled-text-field-error-label-text-color: #ffb4ab;--mdc-filled-text-field-active-indicator-color: #dce4e9;--mdc-filled-text-field-disabled-active-indicator-color: rgba(225, 226, 228, .38);--mdc-filled-text-field-hover-active-indicator-color: #e1e2e4;--mdc-filled-text-field-error-active-indicator-color: #ffb4ab;--mdc-filled-text-field-error-focus-active-indicator-color: #ffb4ab;--mdc-filled-text-field-error-hover-active-indicator-color: #ffdad6;--mdc-outlined-text-field-caret-color: #8591cd;--mdc-outlined-text-field-focus-outline-color: #8591cd;--mdc-outlined-text-field-focus-label-text-color: #8591cd;--mdc-outlined-text-field-label-text-color: #dce4e9;--mdc-outlined-text-field-hover-label-text-color: #e1e2e4;--mdc-outlined-text-field-disabled-label-text-color: rgba(225, 226, 228, .38);--mdc-outlined-text-field-input-text-color: #e1e2e4;--mdc-outlined-text-field-disabled-input-text-color: rgba(225, 226, 228, .38);--mdc-outlined-text-field-input-text-placeholder-color: #dce4e9;--mdc-outlined-text-field-error-focus-label-text-color: #ffb4ab;--mdc-outlined-text-field-error-label-text-color: #ffb4ab;--mdc-outlined-text-field-error-hover-label-text-color: #ffdad6;--mdc-outlined-text-field-outline-color: #8a9297;--mdc-outlined-text-field-disabled-outline-color: rgba(225, 226, 228, .12);--mdc-outlined-text-field-hover-outline-color: #e1e2e4;--mdc-outlined-text-field-error-focus-outline-color: #ffb4ab;--mdc-outlined-text-field-error-hover-outline-color: #ffdad6;--mdc-outlined-text-field-error-outline-color: #ffb4ab;--mat-form-field-focus-select-arrow-color: #8591cd;--mat-form-field-disabled-input-text-placeholder-color: rgba(225, 226, 228, .38);--mat-form-field-state-layer-color: #e1e2e4;--mat-form-field-error-text-color: #ffb4ab;--mat-form-field-select-option-text-color: #191c1e;--mat-form-field-select-disabled-option-text-color: rgba(25, 28, 30, .38);--mat-form-field-leading-icon-color: #dce4e9;--mat-form-field-disabled-leading-icon-color: rgba(225, 226, 228, .38);--mat-form-field-trailing-icon-color: #dce4e9;--mat-form-field-disabled-trailing-icon-color: rgba(225, 226, 228, .38);--mat-form-field-error-focus-trailing-icon-color: #ffb4ab;--mat-form-field-error-hover-trailing-icon-color: #ffdad6;--mat-form-field-error-trailing-icon-color: #ffb4ab;--mat-form-field-enabled-select-arrow-color: #dce4e9;--mat-form-field-disabled-select-arrow-color: rgba(225, 226, 228, .38);--mat-form-field-hover-state-layer-opacity: .08;--mat-select-panel-background-color: #1d2022;--mat-select-enabled-trigger-text-color: #e1e2e4;--mat-select-disabled-trigger-text-color: rgba(225, 226, 228, .38);--mat-select-placeholder-text-color: #dce4e9;--mat-select-enabled-arrow-color: #dce4e9;--mat-select-disabled-arrow-color: rgba(225, 226, 228, .38);--mat-select-focused-arrow-color: #8591cd;--mat-select-invalid-arrow-color: #ffb4ab;--mat-autocomplete-background-color: #1d2022;--mdc-dialog-container-color: #111415;--mdc-dialog-subhead-color: #e1e2e4;--mdc-dialog-supporting-text-color: #dce4e9;--mdc-chip-outline-color: #8a9297;--mdc-chip-disabled-outline-color: rgba(225, 226, 228, .12);--mdc-chip-focus-outline-color: #dce4e9;--mdc-chip-hover-state-layer-opacity: .08;--mdc-chip-selected-hover-state-layer-opacity: .08;--mdc-chip-disabled-label-text-color: rgba(225, 226, 228, .38);--mdc-chip-elevated-selected-container-color: #51511e;--mdc-chip-flat-disabled-selected-container-color: rgba(225, 226, 228, .12);--mdc-chip-focus-state-layer-color: #dce4e9;--mdc-chip-hover-state-layer-color: #dce4e9;--mdc-chip-selected-hover-state-layer-color: #c7c766;--mdc-chip-focus-state-layer-opacity: .12;--mdc-chip-selected-focus-state-layer-color: #c7c766;--mdc-chip-selected-focus-state-layer-opacity: .12;--mdc-chip-label-text-color: #dce4e9;--mdc-chip-selected-label-text-color: #c7c766;--mdc-chip-with-icon-icon-color: #dce4e9;--mdc-chip-with-icon-disabled-icon-color: #e1e2e4;--mdc-chip-with-icon-selected-icon-color: #c7c766;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: #e1e2e4;--mdc-chip-with-trailing-icon-trailing-icon-color: #dce4e9;--mat-chip-trailing-action-state-layer-color: #dce4e9;--mat-chip-selected-trailing-action-state-layer-color: #c7c766;--mat-chip-trailing-action-hover-state-layer-opacity: .08;--mat-chip-trailing-action-focus-state-layer-opacity: .12;--mat-chip-selected-disabled-trailing-icon-color: #e1e2e4;--mat-chip-selected-trailing-icon-color: #c7c766;--mdc-switch-selected-focus-state-layer-opacity: .12;--mdc-switch-selected-hover-state-layer-opacity: .08;--mdc-switch-selected-pressed-state-layer-opacity: .12;--mdc-switch-unselected-focus-state-layer-opacity: .12;--mdc-switch-unselected-hover-state-layer-opacity: .08;--mdc-switch-unselected-pressed-state-layer-opacity: .12;--mdc-switch-selected-focus-state-layer-color: #8591cd;--mdc-switch-selected-handle-color: #222744;--mdc-switch-selected-hover-state-layer-color: #8591cd;--mdc-switch-selected-pressed-state-layer-color: #8591cd;--mdc-switch-selected-focus-handle-color: #3a4179;--mdc-switch-selected-hover-handle-color: #3a4179;--mdc-switch-selected-pressed-handle-color: #3a4179;--mdc-switch-selected-focus-track-color: #8591cd;--mdc-switch-selected-hover-track-color: #8591cd;--mdc-switch-selected-pressed-track-color: #8591cd;--mdc-switch-selected-track-color: #8591cd;--mdc-switch-disabled-selected-handle-color: #111415;--mdc-switch-disabled-selected-icon-color: #e1e2e4;--mdc-switch-disabled-selected-track-color: #e1e2e4;--mdc-switch-disabled-unselected-handle-color: #e1e2e4;--mdc-switch-disabled-unselected-icon-color: #40484c;--mdc-switch-disabled-unselected-track-color: #40484c;--mdc-switch-selected-icon-color: #99a1d7;--mdc-switch-unselected-focus-handle-color: #dce4e9;--mdc-switch-unselected-focus-state-layer-color: #e1e2e4;--mdc-switch-unselected-focus-track-color: #40484c;--mdc-switch-unselected-handle-color: #8a9297;--mdc-switch-unselected-hover-handle-color: #dce4e9;--mdc-switch-unselected-hover-state-layer-color: #e1e2e4;--mdc-switch-unselected-hover-track-color: #40484c;--mdc-switch-unselected-icon-color: #40484c;--mdc-switch-unselected-pressed-handle-color: #dce4e9;--mdc-switch-unselected-pressed-state-layer-color: #e1e2e4;--mdc-switch-unselected-pressed-track-color: #40484c;--mdc-switch-unselected-track-color: #40484c;--mat-switch-track-outline-color: #8a9297;--mat-switch-disabled-unselected-track-outline-color: #e1e2e4;--mat-switch-label-text-color: #e1e2e4;--mdc-radio-disabled-selected-icon-color: #e1e2e4;--mdc-radio-disabled-unselected-icon-color: #e1e2e4;--mdc-radio-unselected-hover-icon-color: #e1e2e4;--mdc-radio-unselected-icon-color: #dce4e9;--mdc-radio-unselected-pressed-icon-color: #e1e2e4;--mdc-radio-selected-focus-icon-color: #8591cd;--mdc-radio-selected-hover-icon-color: #8591cd;--mdc-radio-selected-icon-color: #8591cd;--mdc-radio-selected-pressed-icon-color: #8591cd;--mat-radio-ripple-color: #e1e2e4;--mat-radio-checked-ripple-color: #8591cd;--mat-radio-disabled-label-color: rgba(225, 226, 228, .38);--mat-radio-label-text-color: #e1e2e4;--mdc-slider-handle-elevation: 0px 2px 1px -1px rgba(0, 0, 0, .2), 0px 1px 1px 0px rgba(0, 0, 0, .14), 0px 1px 3px 0px rgba(0, 0, 0, .12);--mdc-slider-handle-color: #8591cd;--mdc-slider-focus-handle-color: #8591cd;--mdc-slider-hover-handle-color: #8591cd;--mdc-slider-active-track-color: #8591cd;--mdc-slider-inactive-track-color: #40484c;--mdc-slider-with-tick-marks-inactive-container-color: #dce4e9;--mdc-slider-with-tick-marks-active-container-color: #222744;--mdc-slider-disabled-active-track-color: #e1e2e4;--mdc-slider-disabled-handle-color: #e1e2e4;--mdc-slider-disabled-inactive-track-color: #e1e2e4;--mdc-slider-label-container-color: #8591cd;--mdc-slider-label-label-text-color: #222744;--mdc-slider-with-overlap-handle-outline-color: #222744;--mdc-slider-with-tick-marks-disabled-container-color: #e1e2e4;--mat-slider-ripple-color: #8591cd;--mat-slider-hover-state-layer-color: rgba(133, 145, 205, .05);--mat-slider-focus-state-layer-color: rgba(133, 145, 205, .2);--mat-menu-item-label-text-color: #e1e2e4;--mat-menu-item-icon-color: #dce4e9;--mat-menu-item-hover-state-layer-color: rgba(225, 226, 228, .08);--mat-menu-item-focus-state-layer-color: rgba(225, 226, 228, .12);--mat-menu-container-color: #1d2022;--mat-menu-divider-color: #40484c;--mdc-list-list-item-container-color: transparent;--mdc-list-list-item-leading-avatar-color: #3a4179;--mdc-list-list-item-disabled-state-layer-color: #e1e2e4;--mdc-list-list-item-disabled-state-layer-opacity: .12;--mdc-list-list-item-label-text-color: #e1e2e4;--mdc-list-list-item-supporting-text-color: #dce4e9;--mdc-list-list-item-leading-icon-color: #dce4e9;--mdc-list-list-item-trailing-supporting-text-color: #dce4e9;--mdc-list-list-item-trailing-icon-color: #dce4e9;--mdc-list-list-item-selected-trailing-icon-color: #8591cd;--mdc-list-list-item-disabled-label-text-color: #e1e2e4;--mdc-list-list-item-disabled-leading-icon-color: #e1e2e4;--mdc-list-list-item-disabled-trailing-icon-color: #e1e2e4;--mdc-list-list-item-hover-label-text-color: #e1e2e4;--mdc-list-list-item-focus-label-text-color: #e1e2e4;--mdc-list-list-item-hover-state-layer-color: #e1e2e4;--mdc-list-list-item-hover-state-layer-opacity: .08;--mdc-list-list-item-focus-state-layer-color: #e1e2e4;--mdc-list-list-item-focus-state-layer-opacity: .12;--mat-list-active-indicator-color: #51511e;--mat-paginator-container-text-color: #e1e2e4;--mat-paginator-container-background-color: #111415;--mat-paginator-enabled-icon-color: #dce4e9;--mat-paginator-disabled-icon-color: rgba(225, 226, 228, .38);--mdc-tab-indicator-active-indicator-color: #8591cd;--mat-tab-header-divider-color: #40484c;--mat-tab-header-pagination-icon-color: #e1e2e4;--mat-tab-header-inactive-label-text-color: #e1e2e4;--mat-tab-header-active-label-text-color: #e1e2e4;--mat-tab-header-active-ripple-color: #e1e2e4;--mat-tab-header-inactive-ripple-color: #e1e2e4;--mat-tab-header-inactive-focus-label-text-color: #e1e2e4;--mat-tab-header-inactive-hover-label-text-color: #e1e2e4;--mat-tab-header-active-focus-label-text-color: #e1e2e4;--mat-tab-header-active-hover-label-text-color: #e1e2e4;--mat-tab-header-active-focus-indicator-color: #8591cd;--mat-tab-header-active-hover-indicator-color: #8591cd;--mdc-checkbox-disabled-selected-checkmark-color: #111415;--mdc-checkbox-selected-focus-state-layer-opacity: .12;--mdc-checkbox-selected-hover-state-layer-opacity: .08;--mdc-checkbox-selected-pressed-state-layer-opacity: .12;--mdc-checkbox-unselected-focus-state-layer-opacity: .12;--mdc-checkbox-unselected-hover-state-layer-opacity: .08;--mdc-checkbox-unselected-pressed-state-layer-opacity: .12;--mdc-checkbox-selected-pressed-icon-color: #8591cd;--mdc-checkbox-disabled-selected-icon-color: rgba(225, 226, 228, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(225, 226, 228, .38);--mdc-checkbox-selected-checkmark-color: #222744;--mdc-checkbox-selected-focus-icon-color: #8591cd;--mdc-checkbox-selected-hover-icon-color: #8591cd;--mdc-checkbox-selected-icon-color: #8591cd;--mdc-checkbox-unselected-focus-icon-color: #e1e2e4;--mdc-checkbox-unselected-hover-icon-color: #e1e2e4;--mdc-checkbox-unselected-icon-color: #dce4e9;--mdc-checkbox-selected-focus-state-layer-color: #8591cd;--mdc-checkbox-selected-hover-state-layer-color: #8591cd;--mdc-checkbox-selected-pressed-state-layer-color: #e1e2e4;--mdc-checkbox-unselected-focus-state-layer-color: #e1e2e4;--mdc-checkbox-unselected-hover-state-layer-color: #e1e2e4;--mdc-checkbox-unselected-pressed-state-layer-color: #8591cd;--mat-checkbox-disabled-label-color: rgba(225, 226, 228, .38);--mat-checkbox-label-text-color: #e1e2e4;--mdc-text-button-label-text-color: #8591cd;--mdc-text-button-disabled-label-text-color: rgba(225, 226, 228, .38);--mdc-protected-button-container-elevation-shadow: 0px 2px 1px -1px rgba(0, 0, 0, .2), 0px 1px 1px 0px rgba(0, 0, 0, .14), 0px 1px 3px 0px rgba(0, 0, 0, .12);--mdc-protected-button-disabled-container-elevation-shadow: 0px 0px 0px 0px rgba(0, 0, 0, .2), 0px 0px 0px 0px rgba(0, 0, 0, .14), 0px 0px 0px 0px rgba(0, 0, 0, .12);--mdc-protected-button-focus-container-elevation-shadow: 0px 2px 1px -1px rgba(0, 0, 0, .2), 0px 1px 1px 0px rgba(0, 0, 0, .14), 0px 1px 3px 0px rgba(0, 0, 0, .12);--mdc-protected-button-hover-container-elevation-shadow: 0px 3px 3px -2px rgba(0, 0, 0, .2), 0px 3px 4px 0px rgba(0, 0, 0, .14), 0px 1px 8px 0px rgba(0, 0, 0, .12);--mdc-protected-button-pressed-container-elevation-shadow: 0px 2px 1px -1px rgba(0, 0, 0, .2), 0px 1px 1px 0px rgba(0, 0, 0, .14), 0px 1px 3px 0px rgba(0, 0, 0, .12);--mdc-protected-button-container-color: #111415;--mdc-protected-button-label-text-color: #8591cd;--mdc-protected-button-disabled-container-color: rgba(225, 226, 228, .12);--mdc-protected-button-disabled-label-text-color: rgba(225, 226, 228, .38);--mdc-filled-button-container-color: #8591cd;--mdc-filled-button-label-text-color: #222744;--mdc-filled-button-disabled-container-color: rgba(225, 226, 228, .12);--mdc-filled-button-disabled-label-text-color: rgba(225, 226, 228, .38);--mdc-outlined-button-disabled-outline-color: rgba(225, 226, 228, .12);--mdc-outlined-button-disabled-label-text-color: rgba(225, 226, 228, .38);--mdc-outlined-button-label-text-color: #8591cd;--mdc-outlined-button-outline-color: #8a9297;--mat-text-button-state-layer-color: #8591cd;--mat-text-button-disabled-state-layer-color: #dce4e9;--mat-text-button-ripple-color: rgba(133, 145, 205, .12);--mat-text-button-hover-state-layer-opacity: .08;--mat-text-button-focus-state-layer-opacity: .12;--mat-text-button-pressed-state-layer-opacity: .12;--mat-protected-button-state-layer-color: #8591cd;--mat-protected-button-disabled-state-layer-color: #dce4e9;--mat-protected-button-ripple-color: rgba(133, 145, 205, .12);--mat-protected-button-hover-state-layer-opacity: .08;--mat-protected-button-focus-state-layer-opacity: .12;--mat-protected-button-pressed-state-layer-opacity: .12;--mat-filled-button-state-layer-color: #222744;--mat-filled-button-disabled-state-layer-color: #dce4e9;--mat-filled-button-ripple-color: rgba(34, 39, 68, .12);--mat-filled-button-hover-state-layer-opacity: .08;--mat-filled-button-focus-state-layer-opacity: .12;--mat-filled-button-pressed-state-layer-opacity: .12;--mat-outlined-button-state-layer-color: #8591cd;--mat-outlined-button-disabled-state-layer-color: #dce4e9;--mat-outlined-button-ripple-color: rgba(133, 145, 205, .12);--mat-outlined-button-hover-state-layer-opacity: .08;--mat-outlined-button-focus-state-layer-opacity: .12;--mat-outlined-button-pressed-state-layer-opacity: .12;--mdc-icon-button-icon-color: #dce4e9;--mdc-icon-button-disabled-icon-color: rgba(225, 226, 228, .38);--mat-icon-button-state-layer-color: #dce4e9;--mat-icon-button-disabled-state-layer-color: #dce4e9;--mat-icon-button-ripple-color: rgba(220, 228, 233, .12);--mat-icon-button-hover-state-layer-opacity: .08;--mat-icon-button-focus-state-layer-opacity: .12;--mat-icon-button-pressed-state-layer-opacity: .12;--mdc-extended-fab-container-elevation-shadow: 0px 3px 5px -1px rgba(0, 0, 0, .2), 0px 6px 10px 0px rgba(0, 0, 0, .14), 0px 1px 18px 0px rgba(0, 0, 0, .12);--mdc-extended-fab-focus-container-elevation-shadow: 0px 3px 5px -1px rgba(0, 0, 0, .2), 0px 6px 10px 0px rgba(0, 0, 0, .14), 0px 1px 18px 0px rgba(0, 0, 0, .12);--mdc-extended-fab-hover-container-elevation-shadow: 0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12);--mdc-extended-fab-pressed-container-elevation-shadow: 0px 3px 5px -1px rgba(0, 0, 0, .2), 0px 6px 10px 0px rgba(0, 0, 0, .14), 0px 1px 18px 0px rgba(0, 0, 0, .12);--mdc-fab-container-elevation-shadow: 0px 3px 5px -1px rgba(0, 0, 0, .2), 0px 6px 10px 0px rgba(0, 0, 0, .14), 0px 1px 18px 0px rgba(0, 0, 0, .12);--mdc-fab-focus-container-elevation-shadow: 0px 3px 5px -1px rgba(0, 0, 0, .2), 0px 6px 10px 0px rgba(0, 0, 0, .14), 0px 1px 18px 0px rgba(0, 0, 0, .12);--mdc-fab-hover-container-elevation-shadow: 0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12);--mdc-fab-pressed-container-elevation-shadow: 0px 3px 5px -1px rgba(0, 0, 0, .2), 0px 6px 10px 0px rgba(0, 0, 0, .14), 0px 1px 18px 0px rgba(0, 0, 0, .12);--mdc-fab-container-color: #3a4179;--mdc-fab-small-container-elevation-shadow: 0px 3px 5px -1px rgba(0, 0, 0, .2), 0px 6px 10px 0px rgba(0, 0, 0, .14), 0px 1px 18px 0px rgba(0, 0, 0, .12);--mdc-fab-small-focus-container-elevation-shadow: 0px 3px 5px -1px rgba(0, 0, 0, .2), 0px 6px 10px 0px rgba(0, 0, 0, .14), 0px 1px 18px 0px rgba(0, 0, 0, .12);--mdc-fab-small-hover-container-elevation-shadow: 0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12);--mdc-fab-small-pressed-container-elevation-shadow: 0px 3px 5px -1px rgba(0, 0, 0, .2), 0px 6px 10px 0px rgba(0, 0, 0, .14), 0px 1px 18px 0px rgba(0, 0, 0, .12);--mdc-fab-small-container-color: #3a4179;--mat-fab-foreground-color: #99a1d7;--mat-fab-state-layer-color: #99a1d7;--mat-fab-ripple-color: rgba(153, 161, 215, .12);--mat-fab-hover-state-layer-opacity: .08;--mat-fab-focus-state-layer-opacity: .12;--mat-fab-pressed-state-layer-opacity: .12;--mat-fab-disabled-state-container-color: rgba(225, 226, 228, .12);--mat-fab-disabled-state-foreground-color: rgba(225, 226, 228, .38);--mat-fab-small-foreground-color: #99a1d7;--mat-fab-small-state-layer-color: #99a1d7;--mat-fab-small-ripple-color: rgba(153, 161, 215, .12);--mat-fab-small-hover-state-layer-opacity: .08;--mat-fab-small-focus-state-layer-opacity: .12;--mat-fab-small-pressed-state-layer-opacity: .12;--mat-fab-small-disabled-state-container-color: rgba(225, 226, 228, .12);--mat-fab-small-disabled-state-foreground-color: rgba(225, 226, 228, .38);--mdc-snackbar-container-color: #e1e2e4;--mdc-snackbar-supporting-text-color: #2e3132;--mat-snack-bar-button-color: #4a529c;--mat-table-background-color: #111415;--mat-table-header-headline-color: #e1e2e4;--mat-table-row-item-label-text-color: #e1e2e4;--mat-table-row-item-outline-color: #8a9297;--mdc-circular-progress-active-indicator-color: #8591cd;--mat-badge-background-color: #ffb4ab;--mat-badge-text-color: #690005;--mat-badge-disabled-state-background-color: rgba(255, 180, 171, .38);--mat-badge-disabled-state-text-color: #690005;--mat-bottom-sheet-container-text-color: #e1e2e4;--mat-bottom-sheet-container-background-color: #191c1e;--mat-standard-button-toggle-hover-state-layer-opacity: .08;--mat-standard-button-toggle-focus-state-layer-opacity: .12;--mat-standard-button-toggle-text-color: #e1e2e4;--mat-standard-button-toggle-state-layer-color: #e1e2e4;--mat-standard-button-toggle-selected-state-background-color: #51511e;--mat-standard-button-toggle-selected-state-text-color: #c7c766;--mat-standard-button-toggle-disabled-state-text-color: rgba(225, 226, 228, .38);--mat-standard-button-toggle-disabled-selected-state-text-color: rgba(225, 226, 228, .38);--mat-standard-button-toggle-disabled-selected-state-background-color: rgba(225, 226, 228, .12);--mat-standard-button-toggle-divider-color: #8a9297;--mat-datepicker-calendar-date-selected-state-text-color: #222744;--mat-datepicker-calendar-date-selected-state-background-color: #8591cd;--mat-datepicker-calendar-date-selected-disabled-state-background-color: rgba(225, 226, 228, .38);--mat-datepicker-calendar-date-today-selected-state-outline-color: #8591cd;--mat-datepicker-calendar-date-focus-state-background-color: rgba(225, 226, 228, .12);--mat-datepicker-calendar-date-hover-state-background-color: rgba(225, 226, 228, .08);--mat-datepicker-toggle-active-state-icon-color: #dce4e9;--mat-datepicker-calendar-date-in-range-state-background-color: #3a4179;--mat-datepicker-calendar-date-in-comparison-range-state-background-color: #454364;--mat-datepicker-calendar-date-in-overlap-range-state-background-color: #51511e;--mat-datepicker-calendar-date-in-overlap-range-selected-state-background-color: #b3b355;--mat-datepicker-toggle-icon-color: #dce4e9;--mat-datepicker-calendar-body-label-text-color: #e1e2e4;--mat-datepicker-calendar-period-button-text-color: #dce4e9;--mat-datepicker-calendar-period-button-icon-color: #dce4e9;--mat-datepicker-calendar-navigation-button-icon-color: #dce4e9;--mat-datepicker-calendar-header-text-color: #dce4e9;--mat-datepicker-calendar-date-today-outline-color: #8591cd;--mat-datepicker-calendar-date-today-disabled-state-outline-color: rgba(225, 226, 228, .38);--mat-datepicker-calendar-date-text-color: #e1e2e4;--mat-datepicker-calendar-date-disabled-state-text-color: rgba(225, 226, 228, .38);--mat-datepicker-calendar-date-preview-state-outline-color: #8591cd;--mat-datepicker-range-input-separator-color: #e1e2e4;--mat-datepicker-range-input-disabled-state-separator-color: rgba(225, 226, 228, .38);--mat-datepicker-range-input-disabled-state-text-color: rgba(225, 226, 228, .38);--mat-datepicker-calendar-container-background-color: #272a2c;--mat-datepicker-calendar-container-text-color: #e1e2e4;--mat-divider-color: #8a9297;--mat-expansion-container-background-color: #111415;--mat-expansion-container-text-color: #e1e2e4;--mat-expansion-actions-divider-color: #8a9297;--mat-expansion-header-hover-state-layer-color: rgba(225, 226, 228, .08);--mat-expansion-header-focus-state-layer-color: rgba(225, 226, 228, .12);--mat-expansion-header-disabled-state-text-color: rgba(225, 226, 228, .38);--mat-expansion-header-text-color: #e1e2e4;--mat-expansion-header-description-color: #dce4e9;--mat-expansion-header-indicator-color: #dce4e9;--mat-sidenav-container-background-color: #111415;--mat-sidenav-container-text-color: #dce4e9;--mat-sidenav-content-background-color: #111415;--mat-sidenav-content-text-color: #e1e2e4;--mat-sidenav-scrim-color: rgba(42, 50, 54, .4);--mat-stepper-header-icon-foreground-color: #111415;--mat-stepper-header-selected-state-icon-background-color: #8591cd;--mat-stepper-header-selected-state-icon-foreground-color: #222744;--mat-stepper-header-edit-state-icon-background-color: #8591cd;--mat-stepper-header-edit-state-icon-foreground-color: #222744;--mat-stepper-container-color: #111415;--mat-stepper-line-color: #8a9297;--mat-stepper-header-hover-state-layer-color: rgba(225, 226, 228, .08);--mat-stepper-header-focus-state-layer-color: rgba(225, 226, 228, .12);--mat-stepper-header-label-text-color: #dce4e9;--mat-stepper-header-optional-label-text-color: #dce4e9;--mat-stepper-header-selected-state-label-text-color: #dce4e9;--mat-stepper-header-error-state-label-text-color: #ffb4ab;--mat-stepper-header-icon-background-color: #dce4e9;--mat-stepper-header-error-state-icon-foreground-color: #ffb4ab;--mat-sort-arrow-color: #e1e2e4;--mat-toolbar-container-background-color: #111415;--mat-toolbar-container-text-color: #e1e2e4;--mat-tree-container-background-color: #111415;--mat-tree-node-text-color: #e1e2e4;--mat-sidenav-content-background-color: #0d0f19;--mat-sidenav-container-background-color: #0d0f19;--mat-app-background-color: #0d0f19;--mat-app-background: #0d0f19;--mat-fab-small-foreground-color: var(--mat-app-text-color);--mat-table-background-color: #141726;--mat-expansion-container-background-color: #141726;--mdc-elevated-card-container-color: #141726;--mat-toolbar-container-background-color: #222744}html[data-bitmagnet-theme=tundra] .health-icon-down mat-icon,html[data-bitmagnet-theme=tundra] .health-icon-error mat-icon{color:#ffb4ab}html[data-bitmagnet-theme=tundra] .mat-toolbar.toolbar-header{background-color:#4a529c;--mat-toolbar-container-text-color: #fff}html[data-bitmagnet-theme=tundra] .mat-toolbar.toolbar-header h1{cursor:default}html[data-bitmagnet-theme=tundra] .mat-toolbar.toolbar-header a{color:#fff}html[data-bitmagnet-theme=tundra] .mat-toolbar.toolbar-header .mat-icon{fill:#fff}html[data-bitmagnet-theme=tundra] .mat-toolbar.toolbar-header .mdc-button.active{color:#4a529c;background-color:#fffc;cursor:default}html[data-bitmagnet-theme=tundra] .mat-toolbar.toolbar-header .mdc-button.active mat-icon{color:#4a529c;fill:#4a529c}html[data-bitmagnet-theme=tundra] .mat-toolbar.toolbar-header .mdc-button:hover:not(.active){background-color:#fff3}html[data-bitmagnet-theme=tundra] .mat-toolbar.toolbar-header .mdc-button.button-sponsor{margin-left:20px}html[data-bitmagnet-theme=tundra] .mat-toolbar.toolbar-header .mdc-icon-button .mat-icon{fill:#fff}html[data-bitmagnet-theme=tundra] .mat-toolbar.toolbar-header .mdc-icon-button:hover{background-color:#fff3}html[data-bitmagnet-theme=tundra] .layout-header-menu a{color:#6a75b6}html[data-bitmagnet-theme=tundra] .layout-header-menu a.active{color:#8591cd;background-color:#ffffff1a}html[data-bitmagnet-theme=tundra] a{color:#b3b355}html[data-bitmagnet-theme=tundra] tbody tr:not(.expanded-detail-row):hover{background-color:#ffffff05}html[data-bitmagnet-theme=tundra] app-dashboard mat-drawer nav a{--mdc-text-button-label-text-color: mat.get-theme-color( $theme, secondary, 40 )}html[data-bitmagnet-theme=tundra] app-dashboard mat-drawer nav a.active{color:#b3b355;background-color:#ffffff1a}html[data-bitmagnet-theme=tundra] app-queue-visualize button.selected{background-color:#141726}html[data-bitmagnet-theme=tundra] .theme-emitter-color.success-50{color:#22892f}html[data-bitmagnet-theme=tundra] .theme-emitter-color.caution-50{color:#bc5d00}html[data-bitmagnet-theme=tundra] .theme-emitter-color.primary-20{color:#222744}html[data-bitmagnet-theme=tundra] .theme-emitter-color.primary-40{color:#4a529c}html[data-bitmagnet-theme=tundra] .theme-emitter-color.primary-50{color:#5963b0}html[data-bitmagnet-theme=tundra] .theme-emitter-color.primary-60{color:#6a75b6}html[data-bitmagnet-theme=tundra] .theme-emitter-color.primary-80{color:#8591cd}html[data-bitmagnet-theme=tundra] .theme-emitter-color.secondary-20{color:#3c3c13}html[data-bitmagnet-theme=tundra] .theme-emitter-color.secondary-40{color:#666628}html[data-bitmagnet-theme=tundra] .theme-emitter-color.secondary-50{color:#7a7a30}html[data-bitmagnet-theme=tundra] .theme-emitter-color.secondary-60{color:#8e8e39}html[data-bitmagnet-theme=tundra] .theme-emitter-color.secondary-80{color:#b3b355}html[data-bitmagnet-theme=tundra] .theme-emitter-color.tertiary-20{color:#2e2d4d}html[data-bitmagnet-theme=tundra] .theme-emitter-color.tertiary-40{color:#5d5b7d}html[data-bitmagnet-theme=tundra] .theme-emitter-color.tertiary-50{color:#767397}html[data-bitmagnet-theme=tundra] .theme-emitter-color.tertiary-60{color:#8f8db2}html[data-bitmagnet-theme=tundra] .theme-emitter-color.tertiary-80{color:#c6c2ea}html[data-bitmagnet-theme=tundra] .theme-emitter-color.neutral-20{color:#2e3132}html[data-bitmagnet-theme=tundra] .theme-emitter-color.neutral-40{color:#5c5f60}html[data-bitmagnet-theme=tundra] .theme-emitter-color.neutral-50{color:#757779}html[data-bitmagnet-theme=tundra] .theme-emitter-color.neutral-60{color:#8f9193}html[data-bitmagnet-theme=tundra] .theme-emitter-color.neutral-80{color:#c5c7c8}html[data-bitmagnet-theme=tundra] .theme-emitter-color.neutral-variant-20{color:#2a3236}html[data-bitmagnet-theme=tundra] .theme-emitter-color.neutral-variant-40{color:#586064}html[data-bitmagnet-theme=tundra] .theme-emitter-color.neutral-variant-50{color:#70787d}html[data-bitmagnet-theme=tundra] .theme-emitter-color.neutral-variant-60{color:#8a9297}html[data-bitmagnet-theme=tundra] .theme-emitter-color.neutral-variant-80{color:#c0c8cd}html[data-bitmagnet-theme=tundra] .theme-emitter-color.error-20{color:#690005}html[data-bitmagnet-theme=tundra] .theme-emitter-color.error-40{color:#ba1a1a}html[data-bitmagnet-theme=tundra] .theme-emitter-color.error-50{color:#de3730}html[data-bitmagnet-theme=tundra] .theme-emitter-color.error-60{color:#ff5449}html[data-bitmagnet-theme=tundra] .theme-emitter-color.error-80{color:#ffb4ab}html[data-bitmagnet-theme=tundra] .theme-emitter-lightdark{color:#000}html[data-bitmagnet-theme=tundra] .theme-emitter-lightdark else{color:#fff}html[data-bitmagnet-theme=tundra] .drawer-scroll-wrapper{background-color:#3a4179bf}@media (pointer: fine){html[data-bitmagnet-theme=tundra] .drawer-content::-webkit-scrollbar-thumb{background-color:#8591cd}}html[data-bitmagnet-theme=tundra] .panel-content-type li.active{color:#b3b355}html[data-bitmagnet-theme=tundra] .panel-content-type li:hover:not(.active){color:#c6c2ea}html[data-bitmagnet-theme=tundra] .filtered .mat-mdc-checkbox-checked .mat-internal-form-field{color:#b3b355}html[data-bitmagnet-theme=tundra] .filtered .mat-mdc-checkbox:hover:not(.mat-mdc-checkbox-checked) .mat-internal-form-field{color:#c6c2ea}html[data-bitmagnet-theme=tundra] .unfiltered{--mdc-checkbox-selected-icon-color: lightgray}html[data-bitmagnet-theme=tundra] .unfiltered .mat-mdc-checkbox:hover .mat-internal-form-field{color:#c6c2ea}html[data-bitmagnet-theme=tundra] .table-torrents .mat-column-magnet .mat-icon{fill:#6a75b6}html,body{height:100%}body{margin:0;font-family:Roboto,Helvetica Neue,sans-serif}.material-icons{font-family:Material Icons;font-weight:400;font-style:normal;font-size:24px;display:inline-block;line-height:1;text-transform:none;letter-spacing:normal;word-wrap:normal;white-space:nowrap;direction:ltr;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale;font-feature-settings:"liga"}.material-icons-outlined{font-family:Material Icons Outlined;font-weight:400;font-style:normal;font-size:24px;display:inline-block;line-height:1;text-transform:none;letter-spacing:normal;word-wrap:normal;white-space:nowrap;direction:ltr;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale;font-feature-settings:"liga"}.material-symbols-outlined{font-family:Material Symbols Outlined;font-weight:400;font-style:normal;font-size:24px;display:inline-block;line-height:1;text-transform:none;letter-spacing:normal;word-wrap:normal;white-space:nowrap;direction:ltr;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale;font-feature-settings:"liga"}.mat-icon{fill:var(--mat-icon-color)}.spacer{display:inline-flex;flex:1 1 auto}.drawer-container{min-height:100vh}.drawer{width:340px;padding:0 8px;box-sizing:border-box}mat-drawer-content{padding-right:16px;overflow:visible;padding-bottom:20px} diff --git a/webui/dist/bitmagnet/index.html b/webui/dist/bitmagnet/index.html deleted file mode 100644 index ef86de4..0000000 --- a/webui/dist/bitmagnet/index.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - - bitmagnet - - - - - - - - diff --git a/webui/dist/bitmagnet/main.838c6377232eb669.js b/webui/dist/bitmagnet/main.838c6377232eb669.js deleted file mode 100644 index 4829427..0000000 --- a/webui/dist/bitmagnet/main.838c6377232eb669.js +++ /dev/null @@ -1,237 +0,0 @@ -(self.webpackChunkbitmagnet=self.webpackChunkbitmagnet||[]).push([[792],{132:(dl,ns,ta)=>{"use strict";let Dt=null,rs=!1,na=1;const Mi=Symbol("SIGNAL");function Ne(t){const n=Dt;return Dt=t,n}const hl={version:0,lastCleanEpoch:0,dirty:!1,producerNode:void 0,producerLastReadVersion:void 0,producerIndexOfThis:void 0,nextProducerIndex:0,liveConsumerNode:void 0,liveConsumerIndexOfThis:void 0,consumerAllowSignalWrites:!1,consumerIsAlwaysLive:!1,producerMustRecompute:()=>!1,producerRecomputeValue:()=>{},consumerMarkedDirty:()=>{},consumerOnSignalRead:()=>{}};function nh(t){if((!$n(t)||t.dirty)&&(t.dirty||t.lastCleanEpoch!==na)){if(!t.producerMustRecompute(t)&&!Lr(t))return t.dirty=!1,void(t.lastCleanEpoch=na);t.producerRecomputeValue(t),t.dirty=!1,t.lastCleanEpoch=na}}function Pr(t){t.dirty=!0,function ra(t){if(void 0===t.liveConsumerNode)return;const n=rs;rs=!0;try{for(const e of t.liveConsumerNode)e.dirty||Pr(e)}finally{rs=n}}(t),t.consumerMarkedDirty?.(t)}function ft(t){return t&&(t.nextProducerIndex=0),Ne(t)}function ml(t,n){if(Ne(n),t&&void 0!==t.producerNode&&void 0!==t.producerIndexOfThis&&void 0!==t.producerLastReadVersion){if($n(t))for(let e=t.nextProducerIndex;et.nextProducerIndex;)t.producerNode.pop(),t.producerLastReadVersion.pop(),t.producerIndexOfThis.pop()}}function Lr(t){Vr(t);for(let n=0;n0}function Vr(t){t.producerNode??=[],t.producerIndexOfThis??=[],t.producerLastReadVersion??=[]}let gl=null;const aa=()=>{},uh={...hl,consumerIsAlwaysLive:!0,consumerAllowSignalWrites:!1,consumerMarkedDirty:t=>{null!==t.schedule&&t.schedule(t.ref)},hasRun:!1,cleanupFn:aa};function Qe(t){return"function"==typeof t}function ca(t){const e=t(i=>{Error.call(i),i.stack=(new Error).stack});return e.prototype=Object.create(Error.prototype),e.prototype.constructor=e,e}const po=ca(t=>function(e){t(this),this.message=e?`${e.length} errors occurred during unsubscription:\n${e.map((i,r)=>`${r+1}) ${i.toString()}`).join("\n ")}`:"",this.name="UnsubscriptionError",this.errors=e});function vt(t,n){if(t){const e=t.indexOf(n);0<=e&&t.splice(e,1)}}class Ae{constructor(n){this.initialTeardown=n,this.closed=!1,this._parentage=null,this._finalizers=null}unsubscribe(){let n;if(!this.closed){this.closed=!0;const{_parentage:e}=this;if(e)if(this._parentage=null,Array.isArray(e))for(const o of e)o.remove(this);else e.remove(this);const{initialTeardown:i}=this;if(Qe(i))try{i()}catch(o){n=o instanceof po?o.errors:[o]}const{_finalizers:r}=this;if(r){this._finalizers=null;for(const o of r)try{la(o)}catch(s){n=n??[],s instanceof po?n=[...n,...s.errors]:n.push(s)}}if(n)throw new po(n)}}add(n){var e;if(n&&n!==this)if(this.closed)la(n);else{if(n instanceof Ae){if(n.closed||n._hasParent(this))return;n._addParent(this)}(this._finalizers=null!==(e=this._finalizers)&&void 0!==e?e:[]).push(n)}}_hasParent(n){const{_parentage:e}=this;return e===n||Array.isArray(e)&&e.includes(n)}_addParent(n){const{_parentage:e}=this;this._parentage=Array.isArray(e)?(e.push(n),e):e?[e,n]:n}_removeParent(n){const{_parentage:e}=this;e===n?this._parentage=null:Array.isArray(e)&&vt(e,n)}remove(n){const{_finalizers:e}=this;e&&vt(e,n),n instanceof Ae&&n._removeParent(this)}}Ae.EMPTY=(()=>{const t=new Ae;return t.closed=!0,t})();const tt=Ae.EMPTY;function ss(t){return t instanceof Ae||t&&"closed"in t&&Qe(t.remove)&&Qe(t.add)&&Qe(t.unsubscribe)}function la(t){Qe(t)?t():t.unsubscribe()}const Ii={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1},da={setTimeout(t,n,...e){const{delegate:i}=da;return i?.setTimeout?i.setTimeout(t,n,...e):setTimeout(t,n,...e)},clearTimeout(t){const{delegate:n}=da;return(n?.clearTimeout||clearTimeout)(t)},delegate:void 0};function vl(t){da.setTimeout(()=>{const{onUnhandledError:n}=Ii;if(!n)throw t;n(t)})}function as(){}const hh=ua("C",void 0,void 0);function ua(t,n,e){return{kind:t,value:n,error:e}}let lr=null;function ha(t){if(Ii.useDeprecatedSynchronousErrorHandling){const n=!lr;if(n&&(lr={errorThrown:!1,error:null}),t(),n){const{errorThrown:e,error:i}=lr;if(lr=null,e)throw i}}else t()}class i_ extends Ae{constructor(n){super(),this.isStopped=!1,n?(this.destination=n,ss(n)&&n.add(this)):this.destination=FB}static create(n,e,i){return new yl(n,e,i)}next(n){this.isStopped?o_(function mh(t){return ua("N",t,void 0)}(n),this):this._next(n)}error(n){this.isStopped?o_(function fh(t){return ua("E",void 0,t)}(n),this):(this.isStopped=!0,this._error(n))}complete(){this.isStopped?o_(hh,this):(this.isStopped=!0,this._complete())}unsubscribe(){this.closed||(this.isStopped=!0,super.unsubscribe(),this.destination=null)}_next(n){this.destination.next(n)}_error(n){try{this.destination.error(n)}finally{this.unsubscribe()}}_complete(){try{this.destination.complete()}finally{this.unsubscribe()}}}const RB=Function.prototype.bind;function r_(t,n){return RB.call(t,n)}class OB{constructor(n){this.partialObserver=n}next(n){const{partialObserver:e}=this;if(e.next)try{e.next(n)}catch(i){ph(i)}}error(n){const{partialObserver:e}=this;if(e.error)try{e.error(n)}catch(i){ph(i)}else ph(n)}complete(){const{partialObserver:n}=this;if(n.complete)try{n.complete()}catch(e){ph(e)}}}class yl extends i_{constructor(n,e,i){let r;if(super(),Qe(n)||!n)r={next:n??void 0,error:e??void 0,complete:i??void 0};else{let o;this&&Ii.useDeprecatedNextContext?(o=Object.create(n),o.unsubscribe=()=>this.unsubscribe(),r={next:n.next&&r_(n.next,o),error:n.error&&r_(n.error,o),complete:n.complete&&r_(n.complete,o)}):r=n}this.destination=new OB(r)}}function ph(t){Ii.useDeprecatedSynchronousErrorHandling?function AB(t){Ii.useDeprecatedSynchronousErrorHandling&&lr&&(lr.errorThrown=!0,lr.error=t)}(t):vl(t)}function o_(t,n){const{onStoppedNotification:e}=Ii;e&&da.setTimeout(()=>e(t,n))}const FB={closed:!0,next:as,error:function NB(t){throw t},complete:as},gh="function"==typeof Symbol&&Symbol.observable||"@@observable";function go(t){return t}function gD(t){return 0===t.length?go:1===t.length?t[0]:function(e){return t.reduce((i,r)=>r(i),e)}}let Ye=(()=>{class t{constructor(e){e&&(this._subscribe=e)}lift(e){const i=new t;return i.source=this,i.operator=e,i}subscribe(e,i,r){const o=function VB(t){return t&&t instanceof i_||function LB(t){return t&&Qe(t.next)&&Qe(t.error)&&Qe(t.complete)}(t)&&ss(t)}(e)?e:new yl(e,i,r);return ha(()=>{const{operator:s,source:a}=this;o.add(s?s.call(o,a):a?this._subscribe(o):this._trySubscribe(o))}),o}_trySubscribe(e){try{return this._subscribe(e)}catch(i){e.error(i)}}forEach(e,i){return new(i=_D(i))((r,o)=>{const s=new yl({next:a=>{try{e(a)}catch(c){o(c),s.unsubscribe()}},error:o,complete:r});this.subscribe(s)})}_subscribe(e){var i;return null===(i=this.source)||void 0===i?void 0:i.subscribe(e)}[gh](){return this}pipe(...e){return gD(e)(this)}toPromise(e){return new(e=_D(e))((i,r)=>{let o;this.subscribe(s=>o=s,s=>r(s),()=>i(o))})}}return t.create=n=>new t(n),t})();function _D(t){var n;return null!==(n=t??Ii.Promise)&&void 0!==n?n:Promise}const BB=ca(t=>function(){t(this),this.name="ObjectUnsubscribedError",this.message="object unsubscribed"});let Z=(()=>{class t extends Ye{constructor(){super(),this.closed=!1,this.currentObservers=null,this.observers=[],this.isStopped=!1,this.hasError=!1,this.thrownError=null}lift(e){const i=new bD(this,this);return i.operator=e,i}_throwIfClosed(){if(this.closed)throw new BB}next(e){ha(()=>{if(this._throwIfClosed(),!this.isStopped){this.currentObservers||(this.currentObservers=Array.from(this.observers));for(const i of this.currentObservers)i.next(e)}})}error(e){ha(()=>{if(this._throwIfClosed(),!this.isStopped){this.hasError=this.isStopped=!0,this.thrownError=e;const{observers:i}=this;for(;i.length;)i.shift().error(e)}})}complete(){ha(()=>{if(this._throwIfClosed(),!this.isStopped){this.isStopped=!0;const{observers:e}=this;for(;e.length;)e.shift().complete()}})}unsubscribe(){this.isStopped=this.closed=!0,this.observers=this.currentObservers=null}get observed(){var e;return(null===(e=this.observers)||void 0===e?void 0:e.length)>0}_trySubscribe(e){return this._throwIfClosed(),super._trySubscribe(e)}_subscribe(e){return this._throwIfClosed(),this._checkFinalizedStatuses(e),this._innerSubscribe(e)}_innerSubscribe(e){const{hasError:i,isStopped:r,observers:o}=this;return i||r?tt:(this.currentObservers=null,o.push(e),new Ae(()=>{this.currentObservers=null,vt(o,e)}))}_checkFinalizedStatuses(e){const{hasError:i,thrownError:r,isStopped:o}=this;i?e.error(r):o&&e.complete()}asObservable(){const e=new Ye;return e.source=this,e}}return t.create=(n,e)=>new bD(n,e),t})();class bD extends Z{constructor(n,e){super(),this.destination=n,this.source=e}next(n){var e,i;null===(i=null===(e=this.destination)||void 0===e?void 0:e.next)||void 0===i||i.call(e,n)}error(n){var e,i;null===(i=null===(e=this.destination)||void 0===e?void 0:e.error)||void 0===i||i.call(e,n)}complete(){var n,e;null===(e=null===(n=this.destination)||void 0===n?void 0:n.complete)||void 0===e||e.call(n)}_subscribe(n){var e,i;return null!==(i=null===(e=this.source)||void 0===e?void 0:e.subscribe(n))&&void 0!==i?i:tt}}class ct extends Z{constructor(n){super(),this._value=n}get value(){return this.getValue()}_subscribe(n){const e=super._subscribe(n);return!e.closed&&n.next(this._value),e}getValue(){const{hasError:n,thrownError:e,_value:i}=this;if(n)throw e;return this._throwIfClosed(),i}next(n){super.next(this._value=n)}}function vD(t){return Qe(t?.lift)}function Lt(t){return n=>{if(vD(n))return n.lift(function(e){try{return t(e,this)}catch(i){this.error(i)}});throw new TypeError("Unable to lift unknown Observable type")}}function Rt(t,n,e,i,r){return new jB(t,n,e,i,r)}class jB extends i_{constructor(n,e,i,r,o,s){super(n),this.onFinalize=o,this.shouldUnsubscribe=s,this._next=e?function(a){try{e(a)}catch(c){n.error(c)}}:super._next,this._error=r?function(a){try{r(a)}catch(c){n.error(c)}finally{this.unsubscribe()}}:super._error,this._complete=i?function(){try{i()}catch(a){n.error(a)}finally{this.unsubscribe()}}:super._complete}unsubscribe(){var n;if(!this.shouldUnsubscribe||this.shouldUnsubscribe()){const{closed:e}=this;super.unsubscribe(),!e&&(null===(n=this.onFinalize)||void 0===n||n.call(this))}}}function ne(t,n){return Lt((e,i)=>{let r=0;e.subscribe(Rt(i,o=>{i.next(t.call(n,o,r++))}))})}const yD="https://g.co/ng/security#xss";class E extends Error{constructor(n,e){super(function Cn(t,n){return`NG0${Math.abs(t)}${n?": "+n:""}`}(n,e)),this.code=n}}function Br(t){return{toString:t}.toString()}const ma="__parameters__";function ga(t,n,e){return Br(()=>{const i=function s_(t){return function(...e){if(t){const i=t(...e);for(const r in i)this[r]=i[r]}}}(n);function r(...o){if(this instanceof r)return i.apply(this,o),this;const s=new r(...o);return a.annotation=s,a;function a(c,l,d){const u=c.hasOwnProperty(ma)?c[ma]:Object.defineProperty(c,ma,{value:[]})[ma];for(;u.length<=d;)u.push(null);return(u[d]=u[d]||[]).push(s),c}}return e&&(r.prototype=Object.create(e.prototype)),r.prototype.ngMetadataName=t,r.annotationCls=r,r})}const st=globalThis;function lt(t){for(let n in t)if(t[n]===lt)return n;throw Error("Could not find renamed property on target object.")}function HB(t,n){for(const e in n)n.hasOwnProperty(e)&&!t.hasOwnProperty(e)&&(t[e]=n[e])}function dn(t){if("string"==typeof t)return t;if(Array.isArray(t))return"["+t.map(dn).join(", ")+"]";if(null==t)return""+t;if(t.overriddenName)return`${t.overriddenName}`;if(t.name)return`${t.name}`;const n=t.toString();if(null==n)return""+n;const e=n.indexOf("\n");return-1===e?n:n.substring(0,e)}function a_(t,n){return null==t||""===t?null===n?"":n:null==n||""===n?t:t+" "+n}const zB=lt({__forward_ref__:lt});function Ze(t){return t.__forward_ref__=Ze,t.toString=function(){return dn(this())},t}function xe(t){return bh(t)?t():t}function bh(t){return"function"==typeof t&&t.hasOwnProperty(zB)&&t.__forward_ref__===Ze}function P(t){return{token:t.token,providedIn:t.providedIn||null,factory:t.factory,value:void 0}}function he(t){return{providers:t.providers||[],imports:t.imports||[]}}function vh(t){return DD(t,wh)||DD(t,ED)}function DD(t,n){return t.hasOwnProperty(n)?t[n]:null}function yh(t){return t&&(t.hasOwnProperty(c_)||t.hasOwnProperty(QB))?t[c_]:null}const wh=lt({\u0275prov:lt}),c_=lt({\u0275inj:lt}),ED=lt({ngInjectableDef:lt}),QB=lt({ngInjectorDef:lt});class M{constructor(n,e){this._desc=n,this.ngMetadataName="InjectionToken",this.\u0275prov=void 0,"number"==typeof e?this.__NG_ELEMENT_ID__=e:void 0!==e&&(this.\u0275prov=P({token:this,providedIn:e.providedIn||"root",factory:e.factory}))}get multi(){return this}toString(){return`InjectionToken ${this._desc}`}}function f_(t){return t&&!!t.\u0275providers}const wl=lt({\u0275cmp:lt}),m_=lt({\u0275dir:lt}),p_=lt({\u0275pipe:lt}),TD=lt({\u0275mod:lt}),jr=lt({\u0275fac:lt}),xl=lt({__NG_ELEMENT_ID__:lt}),SD=lt({__NG_ENV_ID__:lt});function Me(t){return"string"==typeof t?t:null==t?"":String(t)}function g_(t,n){throw new E(-201,!1)}var He=function(t){return t[t.Default=0]="Default",t[t.Host=1]="Host",t[t.Self=2]="Self",t[t.SkipSelf=4]="SkipSelf",t[t.Optional=8]="Optional",t}(He||{});let __;function MD(){return __}function ei(t){const n=__;return __=t,n}function ID(t,n,e){const i=vh(t);return i&&"root"==i.providedIn?void 0===i.value?i.value=i.factory():i.value:e&He.Optional?null:void 0!==n?n:void g_()}const Cl={},b_="__NG_DI_FLAG__",xh="ngTempTokenPath",ej=/\n/gm,AD="__source";let _a;function bo(t){const n=_a;return _a=t,n}function ij(t,n=He.Default){if(void 0===_a)throw new E(-203,!1);return null===_a?ID(t,void 0,n):_a.get(t,n&He.Optional?null:void 0,n)}function S(t,n=He.Default){return(MD()||ij)(xe(t),n)}function T(t,n=He.Default){return S(t,Ch(n))}function Ch(t){return typeof t>"u"||"number"==typeof t?t:(t.optional&&8)|(t.host&&1)|(t.self&&2)|(t.skipSelf&&4)}function v_(t){const n=[];for(let e=0;eArray.isArray(e)?ba(e,n):n(e))}function OD(t,n,e){n>=t.length?t.push(e):t.splice(n,0,e)}function Dh(t,n){return n>=t.length-1?t.pop():t.splice(n,1)[0]}function pi(t,n,e){let i=va(t,n);return i>=0?t[1|i]=e:(i=~i,function ND(t,n,e,i){let r=t.length;if(r==n)t.push(e,i);else if(1===r)t.push(i,t[0]),t[0]=e;else{for(r--,t.push(t[r-1],t[r]);r>n;)t[r]=t[r-2],r--;t[n]=e,t[n+1]=i}}(t,i,n,e)),i}function w_(t,n){const e=va(t,n);if(e>=0)return t[1|e]}function va(t,n){return function FD(t,n,e){let i=0,r=t.length>>e;for(;r!==i;){const o=i+(r-i>>1),s=t[o<n?r=o:i=o+1}return~(r<n){s=o-1;break}}}for(;o-1){let o;for(;++ro?"":r[d+1].toLowerCase(),2&i&&l!==u){if($i(i))return!1;s=!0}}}}else{if(!s&&!$i(i)&&!$i(c))return!1;if(s&&$i(c))continue;s=!1,i=c|1&i}}return $i(i)||s}function $i(t){return!(1&t)}function pj(t,n,e,i){if(null===n)return-1;let r=0;if(i||!e){let o=!1;for(;r-1)for(e++;e0?'="'+a+'"':"")+"]"}else 8&i?r+="."+s:4&i&&(r+=" "+s);else""!==r&&!$i(s)&&(n+=zD(o,r),r=""),i=s,o=o||!$i(i);e++}return""!==r&&(n+=zD(o,r)),n}function ue(t){return Br(()=>{const n=$D(t),e={...n,decls:t.decls,vars:t.vars,template:t.template,consts:t.consts||null,ngContentSelectors:t.ngContentSelectors,onPush:t.changeDetection===Th.OnPush,directiveDefs:null,pipeDefs:null,dependencies:n.standalone&&t.dependencies||null,getStandaloneInjector:null,signals:t.signals??!1,data:t.data||{},encapsulation:t.encapsulation||Ui.Emulated,styles:t.styles||Je,_:null,schemas:t.schemas||null,tView:null,id:""};qD(e);const i=t.dependencies;return e.directiveDefs=Sh(i,!1),e.pipeDefs=Sh(i,!0),e.id=function kj(t){let n=0;const e=[t.selectors,t.ngContentSelectors,t.hostVars,t.hostAttrs,t.consts,t.vars,t.decls,t.encapsulation,t.standalone,t.signals,t.exportAs,JSON.stringify(t.inputs),JSON.stringify(t.outputs),Object.getOwnPropertyNames(t.type.prototype),!!t.contentQueries,!!t.viewQuery].join("|");for(const r of e)n=Math.imul(31,n)+r.charCodeAt(0)|0;return n+=2147483648,"c"+n}(e),e})}function Cj(t){return Ve(t)||un(t)}function Dj(t){return null!==t}function ge(t){return Br(()=>({type:t.type,bootstrap:t.bootstrap||Je,declarations:t.declarations||Je,imports:t.imports||Je,exports:t.exports||Je,transitiveCompileScopes:null,schemas:t.schemas||null,id:t.id||null}))}function UD(t,n){if(null==t)return dr;const e={};for(const i in t)if(t.hasOwnProperty(i)){const r=t[i];let o,s,a=D.None;Array.isArray(r)?(a=r[0],o=r[1],s=r[2]??o):(o=r,s=r),n?(e[o]=a!==D.None?[i,a]:i,n[o]=s):e[o]=i}return e}function R(t){return Br(()=>{const n=$D(t);return qD(n),n})}function Mn(t){return{type:t.type,name:t.name,factory:null,pure:!1!==t.pure,standalone:!0===t.standalone,onDestroy:t.type.prototype.ngOnDestroy||null}}function Ve(t){return t[wl]||null}function un(t){return t[m_]||null}function Dn(t){return t[p_]||null}function In(t,n){const e=t[TD]||null;if(!e&&!0===n)throw new Error(`Type ${dn(t)} does not have '\u0275mod' property.`);return e}function $D(t){const n={};return{type:t.type,providersResolver:null,factory:null,hostBindings:t.hostBindings||null,hostVars:t.hostVars||0,hostAttrs:t.hostAttrs||null,contentQueries:t.contentQueries||null,declaredInputs:n,inputTransforms:null,inputConfig:t.inputs||dr,exportAs:t.exportAs||null,standalone:!0===t.standalone,signals:!0===t.signals,selectors:t.selectors||Je,viewQuery:t.viewQuery||null,features:t.features||null,setInput:null,findHostDirectiveDefs:null,hostDirectives:null,inputs:UD(t.inputs,n),outputs:UD(t.outputs),debugInfo:null}}function qD(t){t.features?.forEach(n=>n(t))}function Sh(t,n){if(!t)return null;const e=n?Dn:Cj;return()=>("function"==typeof t?t():t).map(i=>e(i)).filter(Dj)}function Tj(...t){return{\u0275providers:E_(0,t),\u0275fromNgModule:!0}}function E_(t,...n){const e=[],i=new Set;let r;const o=s=>{e.push(s)};return ba(n,s=>{const a=s;Mh(a,o,[],i)&&(r||=[],r.push(a))}),void 0!==r&&GD(r,o),e}function GD(t,n){for(let e=0;e{n(o,i)})}}function Mh(t,n,e,i){if(!(t=xe(t)))return!1;let r=null,o=yh(t);const s=!o&&Ve(t);if(o||s){if(s&&!s.standalone)return!1;r=t}else{const c=t.ngModule;if(o=yh(c),!o)return!1;r=c}const a=i.has(r);if(s){if(a)return!1;if(i.add(r),s.dependencies){const c="function"==typeof s.dependencies?s.dependencies():s.dependencies;for(const l of c)Mh(l,n,e,i)}}else{if(!o)return!1;{if(null!=o.imports&&!a){let l;i.add(r);try{ba(o.imports,d=>{Mh(d,n,e,i)&&(l||=[],l.push(d))})}finally{}void 0!==l&&GD(l,n)}if(!a){const l=ls(r)||(()=>new r);n({provide:r,useFactory:l,deps:Je},r),n({provide:x_,useValue:r,multi:!0},r),n({provide:ds,useValue:()=>S(r),multi:!0},r)}const c=o.providers;if(null!=c&&!a){const l=t;k_(c,d=>{n(d,l)})}}}return r!==t&&void 0!==t.providers}function k_(t,n){for(let e of t)f_(e)&&(e=e.\u0275providers),Array.isArray(e)?k_(e,n):n(e)}const Sj=lt({provide:String,useValue:lt});function T_(t){return null!==t&&"object"==typeof t&&Sj in t}function us(t){return"function"==typeof t}const S_=new M(""),Ih={},Ij={};let M_;function Ah(){return void 0===M_&&(M_=new kh),M_}class ni{}class ya extends ni{get destroyed(){return this._destroyed}constructor(n,e,i,r){super(),this.parent=e,this.source=i,this.scopes=r,this.records=new Map,this._ngOnDestroyHooks=new Set,this._onDestroyHooks=[],this._destroyed=!1,A_(n,s=>this.processProvider(s)),this.records.set(PD,wa(void 0,this)),r.has("environment")&&this.records.set(ni,wa(void 0,this));const o=this.records.get(S_);null!=o&&"string"==typeof o.value&&this.scopes.add(o.value),this.injectorDefTypes=new Set(this.get(x_,Je,He.Self))}destroy(){this.assertNotDestroyed(),this._destroyed=!0;const n=Ne(null);try{for(const i of this._ngOnDestroyHooks)i.ngOnDestroy();const e=this._onDestroyHooks;this._onDestroyHooks=[];for(const i of e)i()}finally{this.records.clear(),this._ngOnDestroyHooks.clear(),this.injectorDefTypes.clear(),Ne(n)}}onDestroy(n){return this.assertNotDestroyed(),this._onDestroyHooks.push(n),()=>this.removeOnDestroy(n)}runInContext(n){this.assertNotDestroyed();const e=bo(this),i=ei(void 0);try{return n()}finally{bo(e),ei(i)}}get(n,e=Cl,i=He.Default){if(this.assertNotDestroyed(),n.hasOwnProperty(SD))return n[SD](this);i=Ch(i);const o=bo(this),s=ei(void 0);try{if(!(i&He.SkipSelf)){let c=this.records.get(n);if(void 0===c){const l=function Fj(t){return"function"==typeof t||"object"==typeof t&&t instanceof M}(n)&&vh(n);c=l&&this.injectableDefInScope(l)?wa(I_(n),Ih):null,this.records.set(n,c)}if(null!=c)return this.hydrate(n,c)}return(i&He.Self?Ah():this.parent).get(n,e=i&He.Optional&&e===Cl?null:e)}catch(a){if("NullInjectorError"===a.name){if((a[xh]=a[xh]||[]).unshift(dn(n)),o)throw a;return function oj(t,n,e,i){const r=t[xh];throw n[AD]&&r.unshift(n[AD]),t.message=function sj(t,n,e,i=null){t=t&&"\n"===t.charAt(0)&&"\u0275"==t.charAt(1)?t.slice(2):t;let r=dn(n);if(Array.isArray(n))r=n.map(dn).join(" -> ");else if("object"==typeof n){let o=[];for(let s in n)if(n.hasOwnProperty(s)){let a=n[s];o.push(s+":"+("string"==typeof a?JSON.stringify(a):dn(a)))}r=`{${o.join(", ")}}`}return`${e}${i?"("+i+")":""}[${r}]: ${t.replace(ej,"\n ")}`}("\n"+t.message,r,e,i),t.ngTokenPath=r,t[xh]=null,t}(a,n,"R3InjectorError",this.source)}throw a}finally{ei(s),bo(o)}}resolveInjectorInitializers(){const n=Ne(null),e=bo(this),i=ei(void 0);try{const o=this.get(ds,Je,He.Self);for(const s of o)s()}finally{bo(e),ei(i),Ne(n)}}toString(){const n=[],e=this.records;for(const i of e.keys())n.push(dn(i));return`R3Injector[${n.join(", ")}]`}assertNotDestroyed(){if(this._destroyed)throw new E(205,!1)}processProvider(n){let e=us(n=xe(n))?n:xe(n&&n.provide);const i=function Rj(t){return T_(t)?wa(void 0,t.useValue):wa(YD(t),Ih)}(n);if(!us(n)&&!0===n.multi){let r=this.records.get(e);r||(r=wa(void 0,Ih,!0),r.factory=()=>v_(r.multi),this.records.set(e,r)),e=n,r.multi.push(n)}this.records.set(e,i)}hydrate(n,e){const i=Ne(null);try{return e.value===Ih&&(e.value=Ij,e.value=e.factory()),"object"==typeof e.value&&e.value&&function Nj(t){return null!==t&&"object"==typeof t&&"function"==typeof t.ngOnDestroy}(e.value)&&this._ngOnDestroyHooks.add(e.value),e.value}finally{Ne(i)}}injectableDefInScope(n){if(!n.providedIn)return!1;const e=xe(n.providedIn);return"string"==typeof e?"any"===e||this.scopes.has(e):this.injectorDefTypes.has(e)}removeOnDestroy(n){const e=this._onDestroyHooks.indexOf(n);-1!==e&&this._onDestroyHooks.splice(e,1)}}function I_(t){const n=vh(t),e=null!==n?n.factory:ls(t);if(null!==e)return e;if(t instanceof M)throw new E(204,!1);if(t instanceof Function)return function Aj(t){if(t.length>0)throw new E(204,!1);const e=function WB(t){return t&&(t[wh]||t[ED])||null}(t);return null!==e?()=>e.factory(t):()=>new t}(t);throw new E(204,!1)}function YD(t,n,e){let i;if(us(t)){const r=xe(t);return ls(r)||I_(r)}if(T_(t))i=()=>xe(t.useValue);else if(function QD(t){return!(!t||!t.useFactory)}(t))i=()=>t.useFactory(...v_(t.deps||[]));else if(function WD(t){return!(!t||!t.useExisting)}(t))i=()=>S(xe(t.useExisting));else{const r=xe(t&&(t.useClass||t.provide));if(!function Oj(t){return!!t.deps}(t))return ls(r)||I_(r);i=()=>new r(...v_(t.deps))}return i}function wa(t,n,e=!1){return{factory:t,value:n,multi:e?[]:void 0}}function A_(t,n){for(const e of t)Array.isArray(e)?A_(e,n):e&&f_(e)?A_(e.\u0275providers,n):n(e)}function ur(t,n){t instanceof ya&&t.assertNotDestroyed();const i=bo(t),r=ei(void 0);try{return n()}finally{bo(i),ei(r)}}function KD(){return void 0!==MD()||null!=function nj(){return _a}()}function Rh(t){if(!KD())throw new E(-203,!1)}const Nt=0,B=1,fe=2,$t=3,qi=4,An=5,gi=6,Ca=7,Et=8,_n=9,Gi=10,Ce=11,Ml=12,ZD=13,Da=14,Vt=15,Il=16,Ea=17,Hr=18,Al=19,JD=20,yo=21,Nh=22,hs=23,Ie=25,O_=1,hr=7,ka=9,qt=10;var N_=function(t){return t[t.None=0]="None",t[t.HasTransplantedViews=2]="HasTransplantedViews",t}(N_||{});function Rn(t){return Array.isArray(t)&&"object"==typeof t[O_]}function On(t){return Array.isArray(t)&&!0===t[O_]}function F_(t){return!!(4&t.flags)}function fs(t){return t.componentOffset>-1}function Ph(t){return!(1&~t.flags)}function Wi(t){return!!t.template}function P_(t){return!!(512&t[fe])}class Qj{constructor(n,e,i){this.previousValue=n,this.currentValue=e,this.firstChange=i}isFirstChange(){return this.firstChange}}function iE(t,n,e,i){null!==n?n.applyValueToInputSignal(n,i):t[e]=i}function Ft(){return rE}function rE(t){return t.type.prototype.ngOnChanges&&(t.setInput=Kj),Yj}function Yj(){const t=sE(this),n=t?.current;if(n){const e=t.previous;if(e===dr)t.previous=n;else for(let i in n)e[i]=n[i];t.current=null,this.ngOnChanges(n)}}function Kj(t,n,e,i,r){const o=this.declaredInputs[i],s=sE(t)||function Xj(t,n){return t[oE]=n}(t,{previous:dr,current:null}),a=s.current||(s.current={}),c=s.previous,l=c[o];a[o]=new Qj(l&&l.currentValue,e,c===dr),iE(t,n,r,e)}Ft.ngInherit=!0;const oE="__ngSimpleChanges__";function sE(t){return t[oE]||null}const fr=function(t,n,e){},aE="svg";let lE=!1;function mt(t){for(;Array.isArray(t);)t=t[Nt];return t}function Ol(t,n){return mt(n[t])}function qn(t,n){return mt(n[t.index])}function Nl(t,n){return t.data[n]}function Ta(t,n){return t[n]}function _i(t,n){const e=n[t];return Rn(e)?e:e[Nt]}function H_(t){return!(128&~t[fe])}function mr(t,n){return null==n?null:t[n]}function dE(t){t[Ea]=0}function iH(t){1024&t[fe]||(t[fe]|=1024,H_(t)&&Fl(t))}function z_(t){return!!(9216&t[fe]||t[hs]?.dirty)}function U_(t){t[Gi].changeDetectionScheduler?.notify(1),z_(t)?Fl(t):64&t[fe]&&(function Jj(){return lE}()?(t[fe]|=1024,Fl(t)):t[Gi].changeDetectionScheduler?.notify())}function Fl(t){t[Gi].changeDetectionScheduler?.notify();let n=ms(t);for(;null!==n&&!(8192&n[fe])&&(n[fe]|=8192,H_(n));)n=ms(n)}function Lh(t,n){if(!(256&~t[fe]))throw new E(911,!1);null===t[yo]&&(t[yo]=[]),t[yo].push(n)}function ms(t){const n=t[$t];return On(n)?n[$t]:n}const De={lFrame:yE(null),bindingsEnabled:!0,skipHydrationRootTNode:null};function fE(){return De.bindingsEnabled}function Sa(){return null!==De.skipHydrationRootTNode}function O(){return De.lFrame.lView}function ze(){return De.lFrame.tView}function ee(t){return De.lFrame.contextLView=t,t[Et]}function te(t){return De.lFrame.contextLView=null,t}function dt(){let t=mE();for(;null!==t&&64===t.type;)t=t.parent;return t}function mE(){return De.lFrame.currentTNode}function pr(t,n){const e=De.lFrame;e.currentTNode=t,e.isParent=n}function q_(){return De.lFrame.isParent}function G_(){De.lFrame.isParent=!1}function Gn(){const t=De.lFrame;let n=t.bindingRootIndex;return-1===n&&(n=t.bindingRootIndex=t.tView.bindingStartIndex),n}function zr(){return De.lFrame.bindingIndex}function Qi(){return De.lFrame.bindingIndex++}function Ur(t){const n=De.lFrame,e=n.bindingIndex;return n.bindingIndex=n.bindingIndex+t,e}function mH(t,n){const e=De.lFrame;e.bindingIndex=e.bindingRootIndex=t,W_(n)}function W_(t){De.lFrame.currentDirectiveIndex=t}function Q_(t){const n=De.lFrame.currentDirectiveIndex;return-1===n?null:t[n]}function Y_(){return De.lFrame.currentQueryIndex}function Vh(t){De.lFrame.currentQueryIndex=t}function gH(t){const n=t[B];return 2===n.type?n.declTNode:1===n.type?t[An]:null}function bE(t,n,e){if(e&He.SkipSelf){let r=n,o=t;for(;!(r=r.parent,null!==r||e&He.Host||(r=gH(o),null===r||(o=o[Da],10&r.type))););if(null===r)return!1;n=r,t=o}const i=De.lFrame=vE();return i.currentTNode=n,i.lView=t,!0}function K_(t){const n=vE(),e=t[B];De.lFrame=n,n.currentTNode=e.firstChild,n.lView=t,n.tView=e,n.contextLView=t,n.bindingIndex=e.bindingStartIndex,n.inI18n=!1}function vE(){const t=De.lFrame,n=null===t?null:t.child;return null===n?yE(t):n}function yE(t){const n={currentTNode:null,isParent:!0,lView:null,tView:null,selectedIndex:-1,contextLView:null,elementDepthCount:0,currentNamespace:null,currentDirectiveIndex:-1,bindingRootIndex:-1,bindingIndex:-1,currentQueryIndex:0,parent:t,child:null,inI18n:!1};return null!==t&&(t.child=n),n}function wE(){const t=De.lFrame;return De.lFrame=t.parent,t.currentTNode=null,t.lView=null,t}const xE=wE;function X_(){const t=wE();t.isParent=!0,t.tView=null,t.selectedIndex=-1,t.contextLView=null,t.elementDepthCount=0,t.currentDirectiveIndex=-1,t.currentNamespace=null,t.bindingRootIndex=-1,t.bindingIndex=-1,t.currentQueryIndex=0}function Nn(){return De.lFrame.selectedIndex}function ps(t){De.lFrame.selectedIndex=t}function kt(){const t=De.lFrame;return Nl(t.tView,t.selectedIndex)}function Ma(){De.lFrame.currentNamespace=aE}let EE=!0;function Ll(){return EE}function gr(t){EE=t}function Bh(t,n){for(let e=n.directiveStart,i=n.directiveEnd;e=i)break}else n[c]<0&&(t[Ea]+=65536),(a>14>16&&(3&t[fe])===n&&(t[fe]+=16384,TE(a,o)):TE(a,o)}const Ia=-1;class Vl{constructor(n,e,i){this.factory=n,this.resolving=!1,this.canSeeViewProviders=e,this.injectImpl=i}}function eb(t){return t!==Ia}function Bl(t){return 32767&t}function jl(t,n){let e=function kH(t){return t>>16}(t),i=n;for(;e>0;)i=i[Da],e--;return i}let tb=!0;function zh(t){const n=tb;return tb=t,n}const SE=255,ME=5;let TH=0;const _r={};function Uh(t,n){const e=IE(t,n);if(-1!==e)return e;const i=n[B];i.firstCreatePass&&(t.injectorIndex=n.length,nb(i.data,t),nb(n,null),nb(i.blueprint,null));const r=$h(t,n),o=t.injectorIndex;if(eb(r)){const s=Bl(r),a=jl(r,n),c=a[B].data;for(let l=0;l<8;l++)n[o+l]=a[s+l]|c[s+l]}return n[o+8]=r,o}function nb(t,n){t.push(0,0,0,0,0,0,0,0,n)}function IE(t,n){return-1===t.injectorIndex||t.parent&&t.parent.injectorIndex===t.injectorIndex||null===n[t.injectorIndex+8]?-1:t.injectorIndex}function $h(t,n){if(t.parent&&-1!==t.parent.injectorIndex)return t.parent.injectorIndex;let e=0,i=null,r=n;for(;null!==r;){if(i=LE(r),null===i)return Ia;if(e++,r=r[Da],-1!==i.injectorIndex)return i.injectorIndex|e<<16}return Ia}function ib(t,n,e){!function SH(t,n,e){let i;"string"==typeof e?i=e.charCodeAt(0)||0:e.hasOwnProperty(xl)&&(i=e[xl]),null==i&&(i=e[xl]=TH++);const r=i&SE;n.data[t+(r>>ME)]|=1<=0?n&SE:RH:n}(e);if("function"==typeof o){if(!bE(n,t,i))return i&He.Host?AE(r,0,i):RE(n,e,i,r);try{let s;if(s=o(i),null!=s||i&He.Optional)return s;g_()}finally{xE()}}else if("number"==typeof o){let s=null,a=IE(t,n),c=Ia,l=i&He.Host?n[Vt][An]:null;for((-1===a||i&He.SkipSelf)&&(c=-1===a?$h(t,n):n[a+8],c!==Ia&&PE(i,!1)?(s=n[B],a=Bl(c),n=jl(c,n)):a=-1);-1!==a;){const d=n[B];if(FE(o,a,d.data)){const u=IH(a,n,e,s,i,l);if(u!==_r)return u}c=n[a+8],c!==Ia&&PE(i,n[B].data[a+8]===l)&&FE(o,a,n)?(s=d,a=Bl(c),n=jl(c,n)):a=-1}}return r}function IH(t,n,e,i,r,o){const s=n[B],a=s.data[t+8],d=qh(a,s,e,null==i?fs(a)&&tb:i!=s&&!!(3&a.type),r&He.Host&&o===a);return null!==d?gs(n,s,d,a):_r}function qh(t,n,e,i,r){const o=t.providerIndexes,s=n.data,a=1048575&o,c=t.directiveStart,d=o>>20,h=r?a+d:t.directiveEnd;for(let f=i?a:a+d;f=c&&m.type===e)return f}if(r){const f=s[c];if(f&&Wi(f)&&f.type===e)return c}return null}function gs(t,n,e,i){let r=t[e];const o=n.data;if(function xH(t){return t instanceof Vl}(r)){const s=r;s.resolving&&function XB(t,n){throw n&&n.join(" > "),new E(-200,t)}(function nt(t){return"function"==typeof t?t.name||t.toString():"object"==typeof t&&null!=t&&"function"==typeof t.type?t.type.name||t.type.toString():Me(t)}(o[e]));const a=zh(s.canSeeViewProviders);s.resolving=!0;const l=s.injectImpl?ei(s.injectImpl):null;bE(t,i,He.Default);try{r=t[e]=s.factory(void 0,o,t,i),n.firstCreatePass&&e>=i.directiveStart&&function yH(t,n,e){const{ngOnChanges:i,ngOnInit:r,ngDoCheck:o}=n.type.prototype;if(i){const s=rE(n);(e.preOrderHooks??=[]).push(t,s),(e.preOrderCheckHooks??=[]).push(t,s)}r&&(e.preOrderHooks??=[]).push(0-t,r),o&&((e.preOrderHooks??=[]).push(t,o),(e.preOrderCheckHooks??=[]).push(t,o))}(e,o[e],n)}finally{null!==l&&ei(l),zh(a),s.resolving=!1,xE()}}return r}function FE(t,n,e){return!!(e[n+(t>>ME)]&1<{const n=t.prototype.constructor,e=n[jr]||rb(n),i=Object.prototype;let r=Object.getPrototypeOf(t.prototype).constructor;for(;r&&r!==i;){const o=r[jr]||rb(r);if(o&&o!==e)return o;r=Object.getPrototypeOf(r)}return o=>new o})}function rb(t){return bh(t)?()=>{const n=rb(xe(t));return n&&n()}:ls(t)}function LE(t){const n=t[B],e=n.type;return 2===e?n.declTNode:1===e?t[An]:null}function bi(t){return function MH(t,n){if("class"===n)return t.classes;if("style"===n)return t.styles;const e=t.attrs;if(e){const i=e.length;let r=0;for(;r{class t{static#e=this.THROW_IF_NOT_FOUND=Cl;static#t=this.NULL=new kh;static create(e,i){if(Array.isArray(e))return zE({name:""},i,e,"");{const r=e.name??"";return zE({name:r},e.parent,e.providers,r)}}static#n=this.\u0275prov=P({token:t,providedIn:"any",factory:()=>S(PD)});static#i=this.__NG_ELEMENT_ID__=-1}return t})();function sb(t){return t.ngOriginalError}class vi{constructor(){this._console=console}handleError(n){const e=this._findOriginalError(n);this._console.error("ERROR",n),e&&this._console.error("ORIGINAL ERROR",e)}_findOriginalError(n){let e=n&&sb(n);for(;e&&sb(e);)e=sb(e);return e||null}}const qE=new M("",{providedIn:"root",factory:()=>T(vi).handleError.bind(void 0)});let Oa=(()=>{class t{static#e=this.__NG_ELEMENT_ID__=zH;static#t=this.__NG_ENV_ID__=e=>e}return t})();class HH extends Oa{constructor(n){super(),this._lView=n}onDestroy(n){return Lh(this._lView,n),()=>function $_(t,n){if(null===t[yo])return;const e=t[yo].indexOf(n);-1!==e&&t[yo].splice(e,1)}(this._lView,n)}}function zH(){return new HH(O())}function UH(){return Na(dt(),O())}function Na(t,n){return new K(qn(t,n))}let K=(()=>{class t{constructor(e){this.nativeElement=e}static#e=this.__NG_ELEMENT_ID__=UH}return t})();function WE(t){return t instanceof K?t.nativeElement:t}function ab(t){return n=>{setTimeout(t,void 0,n)}}const G=class $H extends Z{constructor(n=!1){super(),this.destroyRef=void 0,this.__isAsync=n,KD()&&(this.destroyRef=T(Oa,{optional:!0})??void 0)}emit(n){const e=Ne(null);try{super.next(n)}finally{Ne(e)}}subscribe(n,e,i){let r=n,o=e||(()=>null),s=i;if(n&&"object"==typeof n){const c=n;r=c.next?.bind(c),o=c.error?.bind(c),s=c.complete?.bind(c)}this.__isAsync&&(o=ab(o),r&&(r=ab(r)),s&&(s=ab(s)));const a=super.subscribe({next:r,error:o,complete:s});return n instanceof Ae&&n.add(a),a}};function qH(){return this._results[Symbol.iterator]()}class $r{static#e=Symbol.iterator;get changes(){return this._changes??=new G}constructor(n=!1){this._emitDistinctChangesOnly=n,this.dirty=!0,this._onDirty=void 0,this._results=[],this._changesDetected=!1,this._changes=void 0,this.length=0,this.first=void 0,this.last=void 0;const e=$r.prototype;e[Symbol.iterator]||(e[Symbol.iterator]=qH)}get(n){return this._results[n]}map(n){return this._results.map(n)}filter(n){return this._results.filter(n)}find(n){return this._results.find(n)}reduce(n,e){return this._results.reduce(n,e)}forEach(n){this._results.forEach(n)}some(n){return this._results.some(n)}toArray(){return this._results.slice()}toString(){return this._results.toString()}reset(n,e){this.dirty=!1;const i=function ti(t){return t.flat(Number.POSITIVE_INFINITY)}(n);(this._changesDetected=!function dj(t,n,e){if(t.length!==n.length)return!1;for(let i=0;ifz}),fz="ng",fk=new M(""),br=new M("",{providedIn:"platform",factory:()=>"unknown"}),Bt=new M(""),hb=new M("",{providedIn:"root",factory:()=>function wo(){if(void 0!==ub)return ub;if(typeof document<"u")return document;throw new E(210,!1)}().body?.querySelector("[ngCspNonce]")?.getAttribute("ngCspNonce")||null}),mk={breakpoints:[16,32,48,64,96,128,256,384,640,750,828,1080,1200,1920,2048,3840],placeholderResolution:30,disableImageSizeWarning:!1,disableImageLazyLoadWarning:!1},pk=new M("",{providedIn:"root",factory:()=>mk});let gk=()=>null;function yb(t,n,e=!1){return gk(t,n,e)}const wk=new M("",{providedIn:"root",factory:()=>!1});let nf;function La(t){return function Db(){if(void 0===nf&&(nf=null,st.trustedTypes))try{nf=st.trustedTypes.createPolicy("angular",{createHTML:t=>t,createScript:t=>t,createScriptURL:t=>t})}catch{}return nf}()?.createHTML(t)||t}class _s{constructor(n){this.changingThisBreaksApplicationSecurity=n}toString(){return`SafeValue must use [property]=binding: ${this.changingThisBreaksApplicationSecurity} (see ${yD})`}}class Ez extends _s{getTypeName(){return"HTML"}}class kz extends _s{getTypeName(){return"Style"}}class Tz extends _s{getTypeName(){return"Script"}}class Sz extends _s{getTypeName(){return"URL"}}class Mz extends _s{getTypeName(){return"ResourceURL"}}function ri(t){return t instanceof _s?t.changingThisBreaksApplicationSecurity:t}function vr(t,n){const e=function Iz(t){return t instanceof _s&&t.getTypeName()||null}(t);if(null!=e&&e!==n){if("ResourceURL"===e&&"URL"===n)return!0;throw new Error(`Required a safe ${n}, got a ${e} (see ${yD})`)}return e===n}class Pz{constructor(n){this.inertDocumentHelper=n}getInertBodyElement(n){n=""+n;try{const e=(new window.DOMParser).parseFromString(La(n),"text/html").body;return null===e?this.inertDocumentHelper.getInertBodyElement(n):(e.removeChild(e.firstChild),e)}catch{return null}}}class Lz{constructor(n){this.defaultDoc=n,this.inertDocument=this.defaultDoc.implementation.createHTMLDocument("sanitization-inert")}getInertBodyElement(n){const e=this.inertDocument.createElement("template");return e.innerHTML=La(n),e}}const Bz=/^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:\/?#]*(?:[\/?#]|$))/i;function sf(t){return(t=String(t)).match(Bz)?t:"unsafe:"+t}function qr(t){const n={};for(const e of t.split(","))n[e]=!0;return n}function Ql(...t){const n={};for(const e of t)for(const i in e)e.hasOwnProperty(i)&&(n[i]=!0);return n}const Tk=qr("area,br,col,hr,img,wbr"),Sk=qr("colgroup,dd,dt,li,p,tbody,td,tfoot,th,thead,tr"),Mk=qr("rp,rt"),kb=Ql(Tk,Ql(Sk,qr("address,article,aside,blockquote,caption,center,del,details,dialog,dir,div,dl,figure,figcaption,footer,h1,h2,h3,h4,h5,h6,header,hgroup,hr,ins,main,map,menu,nav,ol,pre,section,summary,table,ul")),Ql(Mk,qr("a,abbr,acronym,audio,b,bdi,bdo,big,br,cite,code,del,dfn,em,font,i,img,ins,kbd,label,map,mark,picture,q,ruby,rp,rt,s,samp,small,source,span,strike,strong,sub,sup,time,track,tt,u,var,video")),Ql(Mk,Sk)),Tb=qr("background,cite,href,itemtype,longdesc,poster,src,xlink:href"),Ik=Ql(Tb,qr("abbr,accesskey,align,alt,autoplay,axis,bgcolor,border,cellpadding,cellspacing,class,clear,color,cols,colspan,compact,controls,coords,datetime,default,dir,download,face,headers,height,hidden,hreflang,hspace,ismap,itemscope,itemprop,kind,label,lang,language,loop,media,muted,nohref,nowrap,open,preload,rel,rev,role,rows,rowspan,rules,scope,scrolling,shape,size,sizes,span,srclang,srcset,start,summary,tabindex,target,title,translate,type,usemap,valign,value,vspace,width"),qr("aria-activedescendant,aria-atomic,aria-autocomplete,aria-busy,aria-checked,aria-colcount,aria-colindex,aria-colspan,aria-controls,aria-current,aria-describedby,aria-details,aria-disabled,aria-dropeffect,aria-errormessage,aria-expanded,aria-flowto,aria-grabbed,aria-haspopup,aria-hidden,aria-invalid,aria-keyshortcuts,aria-label,aria-labelledby,aria-level,aria-live,aria-modal,aria-multiline,aria-multiselectable,aria-orientation,aria-owns,aria-placeholder,aria-posinset,aria-pressed,aria-readonly,aria-relevant,aria-required,aria-roledescription,aria-rowcount,aria-rowindex,aria-rowspan,aria-selected,aria-setsize,aria-sort,aria-valuemax,aria-valuemin,aria-valuenow,aria-valuetext")),jz=qr("script,style,template");class Hz{constructor(){this.sanitizedSomething=!1,this.buf=[]}sanitizeChildren(n){let e=n.firstChild,i=!0,r=[];for(;e;)if(e.nodeType===Node.ELEMENT_NODE?i=this.startElement(e):e.nodeType===Node.TEXT_NODE?this.chars(e.nodeValue):this.sanitizedSomething=!0,i&&e.firstChild)r.push(e),e=$z(e);else for(;e;){e.nodeType===Node.ELEMENT_NODE&&this.endElement(e);let o=Uz(e);if(o){e=o;break}e=r.pop()}return this.buf.join("")}startElement(n){const e=Ak(n).toLowerCase();if(!kb.hasOwnProperty(e))return this.sanitizedSomething=!0,!jz.hasOwnProperty(e);this.buf.push("<"),this.buf.push(e);const i=n.attributes;for(let r=0;r"),!0}endElement(n){const e=Ak(n).toLowerCase();kb.hasOwnProperty(e)&&!Tk.hasOwnProperty(e)&&(this.buf.push(""))}chars(n){this.buf.push(Ok(n))}}function Uz(t){const n=t.nextSibling;if(n&&t!==n.previousSibling)throw Rk(n);return n}function $z(t){const n=t.firstChild;if(n&&function zz(t,n){return(t.compareDocumentPosition(n)&Node.DOCUMENT_POSITION_CONTAINED_BY)!==Node.DOCUMENT_POSITION_CONTAINED_BY}(t,n))throw Rk(n);return n}function Ak(t){const n=t.nodeName;return"string"==typeof n?n:"FORM"}function Rk(t){return new Error(`Failed to sanitize html because the element is clobbered: ${t.outerHTML}`)}const qz=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,Gz=/([^\#-~ |!])/g;function Ok(t){return t.replace(/&/g,"&").replace(qz,function(n){return"&#"+(1024*(n.charCodeAt(0)-55296)+(n.charCodeAt(1)-56320)+65536)+";"}).replace(Gz,function(n){return"&#"+n.charCodeAt(0)+";"}).replace(//g,">")}let af;function Nk(t,n){let e=null;try{af=af||function kk(t){const n=new Lz(t);return function Vz(){try{return!!(new window.DOMParser).parseFromString(La(""),"text/html")}catch{return!1}}()?new Pz(n):n}(t);let i=n?String(n):"";e=af.getInertBodyElement(i);let r=5,o=i;do{if(0===r)throw new Error("Failed to sanitize html because the input is unstable");r--,i=o,o=e.innerHTML,e=af.getInertBodyElement(i)}while(i!==o);return La((new Hz).sanitizeChildren(Sb(e)||e))}finally{if(e){const i=Sb(e)||e;for(;i.firstChild;)i.removeChild(i.firstChild)}}}function Sb(t){return"content"in t&&function Wz(t){return t.nodeType===Node.ELEMENT_NODE&&"TEMPLATE"===t.nodeName}(t)?t.content:null}var En=function(t){return t[t.NONE=0]="NONE",t[t.HTML=1]="HTML",t[t.STYLE=2]="STYLE",t[t.SCRIPT=3]="SCRIPT",t[t.URL=4]="URL",t[t.RESOURCE_URL=5]="RESOURCE_URL",t}(En||{});function cf(t){const n=function Yl(){const t=O();return t&&t[Gi].sanitizer}();return n?n.sanitize(En.URL,t)||"":vr(t,"URL")?ri(t):sf(Me(t))}const e3=/^>|^->||--!>|)/g,n3="\u200b$1\u200b";function yi(t){return t instanceof Function?t():t}var xo=function(t){return t[t.Important=1]="Important",t[t.DashCase=2]="DashCase",t}(xo||{});let Rb;function Ob(t,n){return Rb(t,n)}function Ba(t,n,e,i,r){if(null!=i){let o,s=!1;On(i)?o=i:Rn(i)&&(s=!0,i=i[Nt]);const a=mt(i);0===t&&null!==e?null==r?Qk(n,e,a):bs(n,e,a,r||null,!0):1===t&&null!==e?bs(n,e,a,r||null,!0):2===t?function Zl(t,n,e){const i=ff(t,n);i&&function x3(t,n,e,i){t.removeChild(n,e,i)}(t,i,n,e)}(n,a,s):3===t&&n.destroyNode(a),null!=o&&function E3(t,n,e,i,r){const o=e[hr];o!==mt(e)&&Ba(n,t,i,o,r);for(let a=qt;an.replace(t3,n3))}(n))}function uf(t,n,e){return t.createElement(n,e)}function qk(t,n){n[Gi].changeDetectionScheduler?.notify(1),pf(t,n,n[Ce],2,null,null)}function Gk(t,n){const e=t[ka],i=e.indexOf(n);e.splice(i,1)}function Kl(t,n){if(t.length<=qt)return;const e=qt+n,i=t[e];if(i){const r=i[Il];null!==r&&r!==t&&Gk(r,i),n>0&&(t[e-1][qi]=i[qi]);const o=Dh(t,qt+n);!function p3(t,n){qk(t,n),n[Nt]=null,n[An]=null}(i[B],i);const s=o[Hr];null!==s&&s.detachView(o[B]),i[$t]=null,i[qi]=null,i[fe]&=-129}return i}function hf(t,n){if(!(256&n[fe])){const e=n[Ce];e.destroyNode&&pf(t,n,e,3,null,null),function _3(t){let n=t[Ml];if(!n)return Pb(t[B],t);for(;n;){let e=null;if(Rn(n))e=n[Ml];else{const i=n[qt];i&&(e=i)}if(!e){for(;n&&!n[qi]&&n!==t;)Rn(n)&&Pb(n[B],n),n=n[$t];null===n&&(n=t),Rn(n)&&Pb(n[B],n),e=n&&n[qi]}n=e}}(n)}}function Pb(t,n){if(256&n[fe])return;const e=Ne(null);try{n[fe]&=-129,n[fe]|=256,n[hs]&&pl(n[hs]),function w3(t,n){let e;if(null!=t&&null!=(e=t.destroyHooks))for(let i=0;i=0?i[s]():i[-s].unsubscribe(),o+=2}else e[o].call(i[e[o+1]]);null!==i&&(n[Ca]=null);const r=n[yo];if(null!==r){n[yo]=null;for(let o=0;o-1){const{encapsulation:o}=t.data[i.directiveStart+r];if(o===Ui.None||o===Ui.Emulated)return null}return qn(i,e)}}(t,n.parent,e)}function bs(t,n,e,i,r){t.insertBefore(n,e,i,r)}function Qk(t,n,e){t.appendChild(n,e)}function Yk(t,n,e,i,r){null!==i?bs(t,n,e,i,r):Qk(t,n,e)}function ff(t,n){return t.parentNode(n)}function Kk(t,n,e){return Zk(t,n,e)}let Vb,Zk=function Xk(t,n,e){return 40&t.type?qn(t,e):null};function mf(t,n,e,i){const r=Lb(t,i,n),o=n[Ce],a=Kk(i.parent||n[An],i,n);if(null!=r)if(Array.isArray(e))for(let c=0;cIe&&oT(t,n,Ie,!1),fr(s?2:0,r),e(i,r)}finally{ps(o),fr(s?3:1,r)}}function zb(t,n,e){if(F_(n)){const i=Ne(null);try{const o=n.directiveEnd;for(let s=n.directiveStart;snull;function dT(t,n,e,i,r){for(let o in n){if(!n.hasOwnProperty(o))continue;const s=n[o];if(void 0===s)continue;i??={};let a,c=D.None;Array.isArray(s)?(a=s[0],c=s[1]):a=s;let l=o;if(null!==r){if(!r.hasOwnProperty(o))continue;l=r[o]}0===t?uT(i,e,l,a,c):uT(i,e,l,a)}return i}function uT(t,n,e,i,r){let o;t.hasOwnProperty(e)?(o=t[e]).push(n,i):o=t[e]=[n,i],void 0!==r&&o.push(r)}function oi(t,n,e,i,r,o,s,a){const c=qn(n,e);let d,l=n.inputs;!a&&null!=l&&(d=l[i])?(Kb(t,e,d,i,r),fs(n)&&function V3(t,n){const e=_i(n,t);16&e[fe]||(e[fe]|=64)}(e,n.index)):3&n.type&&(i=function L3(t){return"class"===t?"className":"for"===t?"htmlFor":"formaction"===t?"formAction":"innerHtml"===t?"innerHTML":"readonly"===t?"readOnly":"tabindex"===t?"tabIndex":t}(i),r=null!=s?s(r,n.value||"",i):r,o.setProperty(c,i,r))}function Gb(t,n,e,i){if(fE()){const r=null===i?null:{"":-1},o=function $3(t,n){const e=t.directiveRegistry;let i=null,r=null;if(e)for(let o=0;o0;){const e=t[--n];if("number"==typeof e&&e<0)return e}return 0})(s)!=a&&s.push(a),s.push(e,i,o)}}(t,n,i,Jl(t,e,r.hostVars,Re),r)}function yr(t,n,e,i,r,o){const s=qn(t,n);!function Qb(t,n,e,i,r,o,s){if(null==o)t.removeAttribute(n,r,e);else{const a=null==s?Me(o):s(o,i||"",r);t.setAttribute(n,r,a,e)}}(n[Ce],s,o,t.value,e,i,r)}function K3(t,n,e,i,r,o){const s=o[n];if(null!==s)for(let a=0;a0&&(e[r-1][qi]=n),i{Fl(t.lView)},consumerOnSignalRead(){this.lView[hs]=this}},xT=100;function yf(t,n=!0,e=0){const i=t[Gi],r=i.rendererFactory;r.begin?.();try{!function oU(t,n){Jb(t,n);let e=0;for(;z_(t);){if(e===xT)throw new E(103,!1);e++,Jb(t,1)}}(t,e)}catch(s){throw n&&vf(t,s),s}finally{r.end?.(),i.inlineEffectRunner?.flush()}}function sU(t,n,e,i){const r=n[fe];if(!(256&~r))return;n[Gi].inlineEffectRunner?.flush(),K_(n);let s=null,a=null;(function aU(t){return 2!==t.type})(t)&&(a=function tU(t){return t[hs]??function nU(t){const n=wT.pop()??Object.create(rU);return n.lView=t,n}(t)}(n),s=ft(a));try{dE(n),function gE(t){return De.lFrame.bindingIndex=t}(t.bindingStartIndex),null!==e&&aT(t,n,e,2,i);const c=!(3&~r);if(c){const u=t.preOrderCheckHooks;null!==u&&jh(n,u,null)}else{const u=t.preOrderHooks;null!==u&&Hh(n,u,0,null),Z_(n,0)}if(function cU(t){for(let n=ik(t);null!==n;n=rk(n)){if(!(n[fe]&N_.HasTransplantedViews))continue;const e=n[ka];for(let i=0;i-1&&(Kl(n,i),Dh(e,i))}this._attachedToViewContainer=!1}hf(this._lView[B],this._lView)}onDestroy(n){Lh(this._lView,n)}markForCheck(){id(this._cdRefInjectingView||this._lView)}detach(){this._lView[fe]&=-129}reattach(){U_(this._lView),this._lView[fe]|=128}detectChanges(){this._lView[fe]|=1024,yf(this._lView,this.notifyErrorHandler)}checkNoChanges(){}attachToViewContainerRef(){if(this._appRef)throw new E(902,!1);this._attachedToViewContainer=!0}detachFromAppRef(){this._appRef=null,qk(this._lView[B],this._lView)}attachToAppRef(n){if(this._attachedToViewContainer)throw new E(902,!1);this._appRef=n,U_(this._lView)}}let yt=(()=>{class t{static#e=this.__NG_ELEMENT_ID__=hU}return t})();const dU=yt,uU=class extends dU{constructor(n,e,i){super(),this._declarationLView=n,this._declarationTContainer=e,this.elementRef=i}get ssrId(){return this._declarationTContainer.tView?.ssrId||null}createEmbeddedView(n,e){return this.createEmbeddedViewImpl(n,e)}createEmbeddedViewImpl(n,e,i){const r=ed(this._declarationLView,this._declarationTContainer,n,{embeddedViewInjector:e,dehydratedView:i});return new rd(r)}};function hU(){return wf(dt(),O())}function wf(t,n){return 4&t.type?new uU(n,t,Na(t,n)):null}let AT=()=>null;function za(t,n){return AT(t,n)}class kf{}class PU{}class RT{}class VU{resolveComponentFactory(n){throw function LU(t){const n=Error(`No component factory found for ${dn(t)}.`);return n.ngComponent=t,n}(n)}}let vs=(()=>{class t{static#e=this.NULL=new VU}return t})();class ov{}let wr=(()=>{class t{constructor(){this.destroyNode=null}static#e=this.__NG_ELEMENT_ID__=()=>function BU(){const t=O(),e=_i(dt().index,t);return(Rn(e)?e:t)[Ce]}()}return t})(),jU=(()=>{class t{static#e=this.\u0275prov=P({token:t,providedIn:"root",factory:()=>null})}return t})();const sv={},NT=new Set;function Yi(t){NT.has(t)||(NT.add(t),performance?.mark?.("mark_feature_usage",{detail:{feature:t}}))}function FT(...t){}class W{constructor({enableLongStackTrace:n=!1,shouldCoalesceEventChangeDetection:e=!1,shouldCoalesceRunChangeDetection:i=!1}){if(this.hasPendingMacrotasks=!1,this.hasPendingMicrotasks=!1,this.isStable=!0,this.onUnstable=new G(!1),this.onMicrotaskEmpty=new G(!1),this.onStable=new G(!1),this.onError=new G(!1),typeof Zone>"u")throw new E(908,!1);Zone.assertZonePatched();const r=this;r._nesting=0,r._outer=r._inner=Zone.current,Zone.TaskTrackingZoneSpec&&(r._inner=r._inner.fork(new Zone.TaskTrackingZoneSpec)),n&&Zone.longStackTraceZoneSpec&&(r._inner=r._inner.fork(Zone.longStackTraceZoneSpec)),r.shouldCoalesceEventChangeDetection=!i&&e,r.shouldCoalesceRunChangeDetection=i,r.lastRequestAnimationFrameId=-1,r.nativeRequestAnimationFrame=function HU(){const t="function"==typeof st.requestAnimationFrame;let n=st[t?"requestAnimationFrame":"setTimeout"],e=st[t?"cancelAnimationFrame":"clearTimeout"];if(typeof Zone<"u"&&n&&e){const i=n[Zone.__symbol__("OriginalDelegate")];i&&(n=i);const r=e[Zone.__symbol__("OriginalDelegate")];r&&(e=r)}return{nativeRequestAnimationFrame:n,nativeCancelAnimationFrame:e}}().nativeRequestAnimationFrame,function $U(t){const n=()=>{!function UU(t){t.isCheckStableRunning||-1!==t.lastRequestAnimationFrameId||(t.lastRequestAnimationFrameId=t.nativeRequestAnimationFrame.call(st,()=>{t.fakeTopEventTask||(t.fakeTopEventTask=Zone.root.scheduleEventTask("fakeTopEventTask",()=>{t.lastRequestAnimationFrameId=-1,cv(t),t.isCheckStableRunning=!0,av(t),t.isCheckStableRunning=!1},void 0,()=>{},()=>{})),t.fakeTopEventTask.invoke()}),cv(t))}(t)};t._inner=t._inner.fork({name:"angular",properties:{isAngularZone:!0},onInvokeTask:(e,i,r,o,s,a)=>{if(function qU(t){return!(!Array.isArray(t)||1!==t.length)&&!0===t[0].data?.__ignore_ng_zone__}(a))return e.invokeTask(r,o,s,a);try{return PT(t),e.invokeTask(r,o,s,a)}finally{(t.shouldCoalesceEventChangeDetection&&"eventTask"===o.type||t.shouldCoalesceRunChangeDetection)&&n(),LT(t)}},onInvoke:(e,i,r,o,s,a,c)=>{try{return PT(t),e.invoke(r,o,s,a,c)}finally{t.shouldCoalesceRunChangeDetection&&n(),LT(t)}},onHasTask:(e,i,r,o)=>{e.hasTask(r,o),i===r&&("microTask"==o.change?(t._hasPendingMicrotasks=o.microTask,cv(t),av(t)):"macroTask"==o.change&&(t.hasPendingMacrotasks=o.macroTask))},onHandleError:(e,i,r,o)=>(e.handleError(r,o),t.runOutsideAngular(()=>t.onError.emit(o)),!1)})}(r)}static isInAngularZone(){return typeof Zone<"u"&&!0===Zone.current.get("isAngularZone")}static assertInAngularZone(){if(!W.isInAngularZone())throw new E(909,!1)}static assertNotInAngularZone(){if(W.isInAngularZone())throw new E(909,!1)}run(n,e,i){return this._inner.run(n,e,i)}runTask(n,e,i,r){const o=this._inner,s=o.scheduleEventTask("NgZoneEvent: "+r,n,zU,FT,FT);try{return o.runTask(s,e,i)}finally{o.cancelTask(s)}}runGuarded(n,e,i){return this._inner.runGuarded(n,e,i)}runOutsideAngular(n){return this._outer.run(n)}}const zU={};function av(t){if(0==t._nesting&&!t.hasPendingMicrotasks&&!t.isStable)try{t._nesting++,t.onMicrotaskEmpty.emit(null)}finally{if(t._nesting--,!t.hasPendingMicrotasks)try{t.runOutsideAngular(()=>t.onStable.emit(null))}finally{t.isStable=!0}}}function cv(t){t.hasPendingMicrotasks=!!(t._hasPendingMicrotasks||(t.shouldCoalesceEventChangeDetection||t.shouldCoalesceRunChangeDetection)&&-1!==t.lastRequestAnimationFrameId)}function PT(t){t._nesting++,t.isStable&&(t.isStable=!1,t.onUnstable.emit(null))}function LT(t){t._nesting--,av(t)}class VT{constructor(){this.hasPendingMicrotasks=!1,this.hasPendingMacrotasks=!1,this.isStable=!0,this.onUnstable=new G,this.onMicrotaskEmpty=new G,this.onStable=new G,this.onError=new G}run(n,e,i){return n.apply(e,i)}runGuarded(n,e,i){return n.apply(e,i)}runOutsideAngular(n){return n()}runTask(n,e,i,r){return n.apply(e,i)}}var ys=function(t){return t[t.EarlyRead=0]="EarlyRead",t[t.Write=1]="Write",t[t.MixedReadWrite=2]="MixedReadWrite",t[t.Read=3]="Read",t}(ys||{});const BT={destroy(){}};function jT(t,n){!n&&Rh();const e=n?.injector??T(Gt);if(!function Gr(t){return"browser"===(t??T(Gt)).get(br)}(e))return BT;Yi("NgAfterNextRender");const i=e.get(ld),r=i.handler??=new zT,o=n?.phase??ys.MixedReadWrite,s=()=>{r.unregister(c),a()},a=e.get(Oa).onDestroy(s),c=ur(e,()=>new HT(o,()=>{s(),t()}));return r.register(c),{destroy:s}}class HT{constructor(n,e){this.phase=n,this.callbackFn=e,this.zone=T(W),this.errorHandler=T(vi,{optional:!0}),T(kf,{optional:!0})?.notify(1)}invoke(){try{this.zone.runOutsideAngular(this.callbackFn)}catch(n){this.errorHandler?.handleError(n)}}}class zT{constructor(){this.executingCallbacks=!1,this.buckets={[ys.EarlyRead]:new Set,[ys.Write]:new Set,[ys.MixedReadWrite]:new Set,[ys.Read]:new Set},this.deferredCallbacks=new Set}register(n){(this.executingCallbacks?this.deferredCallbacks:this.buckets[n.phase]).add(n)}unregister(n){this.buckets[n.phase].delete(n),this.deferredCallbacks.delete(n)}execute(){this.executingCallbacks=!0;for(const n of Object.values(this.buckets))for(const e of n)e.invoke();this.executingCallbacks=!1;for(const n of this.deferredCallbacks)this.buckets[n.phase].add(n);this.deferredCallbacks.clear()}destroy(){for(const n of Object.values(this.buckets))n.clear();this.deferredCallbacks.clear()}}let ld=(()=>{class t{constructor(){this.handler=null,this.internalCallbacks=[]}execute(){this.executeInternalCallbacks(),this.handler?.execute()}executeInternalCallbacks(){const e=[...this.internalCallbacks];this.internalCallbacks.length=0;for(const i of e)i()}ngOnDestroy(){this.handler?.destroy(),this.handler=null,this.internalCallbacks.length=0}static#e=this.\u0275prov=P({token:t,providedIn:"root",factory:()=>new t})}return t})();function Sf(t,n,e){let i=e?t.styles:null,r=e?t.classes:null,o=0;if(null!==n)for(let s=0;s0&&iT(t,e,o.join(" "))}}(f,V,g,i),void 0!==e&&function r4(t,n,e){const i=t.projection=[];for(let r=0;r{class t{static#e=this.__NG_ELEMENT_ID__=s4}return t})();function s4(){return YT(dt(),O())}const a4=Tt,WT=class extends a4{constructor(n,e,i){super(),this._lContainer=n,this._hostTNode=e,this._hostLView=i}get element(){return Na(this._hostTNode,this._hostLView)}get injector(){return new fn(this._hostTNode,this._hostLView)}get parentInjector(){const n=$h(this._hostTNode,this._hostLView);if(eb(n)){const e=jl(n,this._hostLView),i=Bl(n);return new fn(e[B].data[i+8],e)}return new fn(null,this._hostLView)}clear(){for(;this.length>0;)this.remove(this.length-1)}get(n){const e=QT(this._lContainer);return null!==e&&e[n]||null}get length(){return this._lContainer.length-qt}createEmbeddedView(n,e,i){let r,o;"number"==typeof i?r=i:null!=i&&(r=i.index,o=i.injector);const s=za(this._lContainer,n.ssrId),a=n.createEmbeddedViewImpl(e||{},o,s);return this.insertImpl(a,r,Ha(this._hostTNode,s)),a}createComponent(n,e,i,r,o){const s=n&&!function Sl(t){return"function"==typeof t}(n);let a;if(s)a=e;else{const m=e||{};a=m.index,i=m.injector,r=m.projectableNodes,o=m.environmentInjector||m.ngModuleRef}const c=s?n:new hd(Ve(n)),l=i||this.parentInjector;if(!o&&null==c.ngModule){const g=(s?l:this.parentInjector).get(ni,null);g&&(o=g)}const d=Ve(c.componentType??{}),u=za(this._lContainer,d?.id??null),f=c.create(l,r,u?.firstChild??null,o);return this.insertImpl(f.hostView,a,Ha(this._hostTNode,u)),f}insert(n,e){return this.insertImpl(n,e,!0)}insertImpl(n,e,i){const r=n._lView;if(function nH(t){return On(t[$t])}(r)){const a=this.indexOf(n);if(-1!==a)this.detach(a);else{const c=r[$t],l=new WT(c,c[An],c[$t]);l.detach(l.indexOf(n))}}const o=this._adjustIndex(e),s=this._lContainer;return td(s,r,o,i),n.attachToViewContainerRef(),OD(hv(s),o,n),n}move(n,e){return this.insert(n,e)}indexOf(n){const e=QT(this._lContainer);return null!==e?e.indexOf(n):-1}remove(n){const e=this._adjustIndex(n,-1),i=Kl(this._lContainer,e);i&&(Dh(hv(this._lContainer),e),hf(i[B],i))}detach(n){const e=this._adjustIndex(n,-1),i=Kl(this._lContainer,e);return i&&null!=Dh(hv(this._lContainer),e)?new rd(i):null}_adjustIndex(n,e=0){return n??this.length+e}};function QT(t){return t[8]}function hv(t){return t[8]||(t[8]=[])}function YT(t,n){let e;const i=n[t.index];return On(i)?e=i:(e=mT(i,n,null,t),n[t.index]=e,bf(n,e)),KT(e,n,t,i),new WT(e,t,n)}let KT=function ZT(t,n,e,i){if(t[hr])return;let r;r=8&e.type?mt(i):function c4(t,n){const e=t[Ce],i=e.createComment(""),r=qn(n,t);return bs(e,ff(e,r),i,function C3(t,n){return t.nextSibling(n)}(e,r),!1),i}(n,e),t[hr]=r},fv=()=>!1;class mv{constructor(n){this.queryList=n,this.matches=null}clone(){return new mv(this.queryList)}setDirty(){this.queryList.setDirty()}}class pv{constructor(n=[]){this.queries=n}createEmbeddedView(n){const e=n.queries;if(null!==e){const i=null!==n.contentQueries?n.contentQueries[0]:e.length,r=[];for(let o=0;on.trim())}(n):n}}class gv{constructor(n=[]){this.queries=n}elementStart(n,e){for(let i=0;i0)i.push(s[a/2]);else{const l=o[a+1],d=n[-c];for(let u=qt;u=0;i--){const r=t[i];r.hostVars=n+=r.hostVars,r.hostAttrs=kl(r.hostAttrs,e=kl(e,r.hostAttrs))}}(i)}function S4(t,n){for(const e in n.inputs){if(!n.inputs.hasOwnProperty(e)||t.inputs.hasOwnProperty(e))continue;const i=n.inputs[e];if(void 0!==i&&(t.inputs[e]=i,t.declaredInputs[e]=n.declaredInputs[e],null!==n.inputTransforms)){const r=Array.isArray(i)?i[0]:i;if(!n.inputTransforms.hasOwnProperty(r))continue;t.inputTransforms??={},t.inputTransforms[r]=n.inputTransforms[r]}}}function Rf(t){return t===dr?{}:t===Je?[]:t}function I4(t,n){const e=t.viewQuery;t.viewQuery=e?(i,r)=>{n(i,r),e(i,r)}:n}function A4(t,n){const e=t.contentQueries;t.contentQueries=e?(i,r,o)=>{n(i,r,o),e(i,r,o)}:n}function R4(t,n){const e=t.hostBindings;t.hostBindings=e?(i,r)=>{n(i,r),e(i,r)}:n}function Fe(t){const n=t.inputConfig,e={};for(const i in n)if(n.hasOwnProperty(i)){const r=n[i];Array.isArray(r)&&r[3]&&(e[i]=r[3])}t.inputTransforms=e}class ws{}class xS{}class xv extends ws{constructor(n,e,i){super(),this._parent=e,this._bootstrapComponents=[],this.destroyCbs=[],this.componentFactoryResolver=new qT(this);const r=In(n);this._bootstrapComponents=yi(r.bootstrap),this._r3Injector=UE(n,e,[{provide:ws,useValue:this},{provide:vs,useValue:this.componentFactoryResolver},...i],dn(n),new Set(["environment"])),this._r3Injector.resolveInjectorInitializers(),this.instance=this._r3Injector.get(n)}get injector(){return this._r3Injector}destroy(){const n=this._r3Injector;!n.destroyed&&n.destroy(),this.destroyCbs.forEach(e=>e()),this.destroyCbs=null}onDestroy(n){this.destroyCbs.push(n)}}class Cv extends xS{constructor(n){super(),this.moduleType=n}create(n){return new xv(this.moduleType,n,[])}}class CS extends ws{constructor(n){super(),this.componentFactoryResolver=new qT(this),this.instance=null;const e=new ya([...n.providers,{provide:ws,useValue:this},{provide:vs,useValue:this.componentFactoryResolver}],n.parent||Ah(),n.debugName,new Set(["environment"]));this.injector=e,n.runEnvironmentInitializers&&e.resolveInjectorInitializers()}destroy(){this.injector.destroy()}onDestroy(n){this.injector.onDestroy(n)}}function Of(t,n,e=null){return new CS({providers:t,parent:n,debugName:e,runEnvironmentInitializers:!0}).injector}let Eo=(()=>{class t{constructor(){this.taskId=0,this.pendingTasks=new Set,this.hasPendingTasks=new ct(!1)}get _hasPendingTasks(){return this.hasPendingTasks.value}add(){this._hasPendingTasks||this.hasPendingTasks.next(!0);const e=this.taskId++;return this.pendingTasks.add(e),e}remove(e){this.pendingTasks.delete(e),0===this.pendingTasks.size&&this._hasPendingTasks&&this.hasPendingTasks.next(!1)}ngOnDestroy(){this.pendingTasks.clear(),this._hasPendingTasks&&this.hasPendingTasks.next(!1)}static#e=this.\u0275fac=function(i){return new(i||t)};static#t=this.\u0275prov=P({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function Ff(t){return!!Dv(t)&&(Array.isArray(t)||!(t instanceof Map)&&Symbol.iterator in t)}function Dv(t){return null!==t&&("function"==typeof t||"object"==typeof t)}function xr(t,n,e){return t[n]=e}function Wt(t,n,e){return!Object.is(t[n],e)&&(t[n]=e,!0)}function xs(t,n,e,i){const r=Wt(t,n,e);return Wt(t,n+1,i)||r}function H(t,n,e,i,r,o,s,a){const c=O(),l=ze(),d=t+Ie,u=l.firstCreatePass?function q4(t,n,e,i,r,o,s,a,c){const l=n.consts,d=ja(n,t,4,s||null,mr(l,a));Gb(n,e,d,mr(l,c)),Bh(n,d);const u=d.tView=qb(2,d,i,r,o,n.directiveRegistry,n.pipeRegistry,null,n.schemas,l,null);return null!==n.queries&&(n.queries.template(n,d),u.queries=n.queries.embeddedTView(d)),d}(d,l,c,n,e,i,r,o,s):l.data[d];pr(u,!1);const h=DS(l,c,u,t);Ll()&&mf(l,c,h,u),Fn(h,c);const f=mT(h,c,h,u);return c[d]=f,bf(c,f),function XT(t,n,e){return fv(t,n,e)}(f,u,c),Ph(u)&&Ub(l,c,u),null!=s&&$b(c,u,a),H}let DS=function ES(t,n,e,i){return gr(!0),n[Ce].createComment("")};function me(t,n,e,i){const r=O();return Wt(r,Qi(),n)&&(ze(),yr(kt(),r,t,n,e,i)),me}function Xa(t,n,e,i){return Wt(t,Qi(),e)?n+Me(e)+i:Re}function Ja(t,n,e,i,r,o,s,a){const l=function Pf(t,n,e,i,r){const o=xs(t,n,e,i);return Wt(t,n+2,r)||o}(t,zr(),e,r,s);return Ur(3),l?n+Me(e)+i+Me(r)+o+Me(s)+a:Re}function zf(t,n){return t<<17|n<<2}function To(t){return t>>17&32767}function Nv(t){return 2|t}function Ds(t){return(131068&t)>>2}function Fv(t,n){return-131069&t|n<<2}function Pv(t){return 1|t}function nM(t,n,e,i){const r=t[e+1],o=null===n;let s=i?To(r):Ds(r),a=!1;for(;0!==s&&(!1===a||o);){const l=t[s+1];A5(t[s],n)&&(a=!0,t[s+1]=i?Pv(l):Nv(l)),s=i?To(l):Ds(l)}a&&(t[e+1]=i?Nv(r):Pv(r))}function A5(t,n){return null===t||null==n||(Array.isArray(t)?t[1]:t)===n||!(!Array.isArray(t)||"string"!=typeof n)&&va(t,n)>=0}const mn={textEnd:0,key:0,keyEnd:0,value:0,valueEnd:0};function iM(t){return t.substring(mn.key,mn.keyEnd)}function rM(t,n){const e=mn.textEnd;return e===n?-1:(n=mn.keyEnd=function F5(t,n,e){for(;n32;)n++;return n}(t,mn.key=n,e),oc(t,n,e))}function oc(t,n,e){for(;n=0;e=rM(n,e))pi(t,iM(n),!0)}function Ki(t,n,e,i){const r=O(),o=ze(),s=Ur(2);o.firstUpdatePass&&dM(o,t,s,i),n!==Re&&Wt(r,s,n)&&hM(o,o.data[Nn()],r,r[Ce],t,r[s+1]=function G5(t,n){return null==t||""===t||("string"==typeof n?t+=n:"object"==typeof t&&(t=dn(ri(t)))),t}(n,e),i,s)}function Xi(t,n,e,i){const r=ze(),o=Ur(2);r.firstUpdatePass&&dM(r,null,o,i);const s=O();if(e!==Re&&Wt(s,o,e)){const a=r.data[Nn()];if(mM(a,i)&&!lM(r,o)){let c=i?a.classesWithoutHost:a.stylesWithoutHost;null!==c&&(e=a_(c,e||"")),Lv(r,a,s,e,i)}else!function q5(t,n,e,i,r,o,s,a){r===Re&&(r=Je);let c=0,l=0,d=0=t.expandoStartIndex}function dM(t,n,e,i){const r=t.data;if(null===r[e+1]){const o=r[Nn()],s=lM(t,e);mM(o,i)&&null===n&&!s&&(n=!1),n=function B5(t,n,e,i){const r=Q_(t);let o=i?n.residualClasses:n.residualStyles;if(null===r)0===(i?n.classBindings:n.styleBindings)&&(e=vd(e=Vv(null,t,n,e,i),n.attrs,i),o=null);else{const s=n.directiveStylingLast;if(-1===s||t[s]!==r)if(e=Vv(r,t,n,e,i),null===o){let c=function j5(t,n,e){const i=e?n.classBindings:n.styleBindings;if(0!==Ds(i))return t[To(i)]}(t,n,i);void 0!==c&&Array.isArray(c)&&(c=Vv(null,t,n,c[1],i),c=vd(c,n.attrs,i),function H5(t,n,e,i){t[To(e?n.classBindings:n.styleBindings)]=i}(t,n,i,c))}else o=function z5(t,n,e){let i;const r=n.directiveEnd;for(let o=1+n.directiveStylingLast;o0)&&(l=!0)):d=e,r)if(0!==c){const h=To(t[a+1]);t[i+1]=zf(h,a),0!==h&&(t[h+1]=Fv(t[h+1],i)),t[a+1]=function T5(t,n){return 131071&t|n<<17}(t[a+1],i)}else t[i+1]=zf(a,0),0!==a&&(t[a+1]=Fv(t[a+1],i)),a=i;else t[i+1]=zf(c,0),0===a?a=i:t[c+1]=Fv(t[c+1],i),c=i;l&&(t[i+1]=Nv(t[i+1])),nM(t,d,i,!0),nM(t,d,i,!1),function I5(t,n,e,i,r){const o=r?t.residualClasses:t.residualStyles;null!=o&&"string"==typeof n&&va(o,n)>=0&&(e[i+1]=Pv(e[i+1]))}(n,d,t,i,o),s=zf(a,c),o?n.classBindings=s:n.styleBindings=s}(r,o,n,e,s,i)}}function Vv(t,n,e,i,r){let o=null;const s=e.directiveEnd;let a=e.directiveStylingLast;for(-1===a?a=e.directiveStart:a++;a0;){const c=t[r],l=Array.isArray(c),d=l?c[1]:c,u=null===d;let h=e[r+1];h===Re&&(h=u?Je:void 0);let f=u?w_(h,i):d===i?h:void 0;if(l&&!Uf(f)&&(f=w_(c,i)),Uf(f)&&(a=f,s))return a;const m=t[r+1];r=s?To(m):Ds(m)}if(null!==n){let c=o?n.residualClasses:n.residualStyles;null!=c&&(a=w_(c,i))}return a}function Uf(t){return void 0!==t}function mM(t,n){return!!(t.flags&(n?8:16))}class n${destroy(n){}updateValue(n,e){}swap(n,e){const i=Math.min(n,e),r=Math.max(n,e),o=this.detach(r);if(r-i>1){const s=this.detach(i);this.attach(i,o),this.attach(r,s)}else this.attach(i,o)}move(n,e){this.attach(e,this.detach(n))}}function Bv(t,n,e,i,r){return t===e&&Object.is(n,i)?1:Object.is(r(t,n),r(e,i))?-1:0}function jv(t,n,e,i){return!(void 0===n||!n.has(i)||(t.attach(e,n.get(i)),n.delete(i),0))}function gM(t,n,e,i,r){if(jv(t,n,i,e(i,r)))t.updateValue(i,r);else{const o=t.create(i,r);t.attach(i,o)}}function _M(t,n,e,i){const r=new Set;for(let o=n;o<=e;o++)r.add(i(o,t.at(o)));return r}class bM{constructor(){this.kvMap=new Map,this._vMap=void 0}has(n){return this.kvMap.has(n)}delete(n){if(!this.has(n))return!1;const e=this.kvMap.get(n);return void 0!==this._vMap&&this._vMap.has(e)?(this.kvMap.set(n,this._vMap.get(e)),this._vMap.delete(e)):this.kvMap.delete(n),!0}get(n){return this.kvMap.get(n)}set(n,e){if(this.kvMap.has(n)){let i=this.kvMap.get(n);void 0===this._vMap&&(this._vMap=new Map);const r=this._vMap;for(;r.has(i);)i=r.get(i);r.set(i,e)}else this.kvMap.set(n,e)}forEach(n){for(let[e,i]of this.kvMap)if(n(i,e),void 0!==this._vMap){const r=this._vMap;for(;r.has(i);)i=r.get(i),n(i,e)}}}function X(t,n,e){Yi("NgControlFlow");const i=O(),r=Qi(),o=Hv(i,Ie+t);if(Wt(i,r,n)){const a=Ne(null);try{if(Zb(o,0),-1!==n){const c=zv(i[B],Ie+n),l=za(o,c.tView.ssrId);td(o,ed(i,c,e,{dehydratedView:l}),0,Ha(c,l))}}finally{Ne(a)}}else{const a=vT(o,0);void 0!==a&&(a[Et]=e)}}class r${constructor(n,e,i){this.lContainer=n,this.$implicit=e,this.$index=i}get $count(){return this.lContainer.length-qt}}function Qr(t,n){return n}class s${constructor(n,e,i){this.hasEmptyBlock=n,this.trackByFn=e,this.liveCollection=i}}function kn(t,n,e,i,r,o,s,a,c,l,d,u,h){Yi("NgControlFlow");const f=void 0!==c,m=O(),g=a?s.bind(m[Vt][Et]):s,_=new s$(f,g);m[Ie+t]=_,H(t+1,n,e,i,r,o),f&&H(t+2,c,l,d,u,h)}class a$ extends n${constructor(n,e,i){super(),this.lContainer=n,this.hostLView=e,this.templateTNode=i,this.needsIndexUpdate=!1}get length(){return this.lContainer.length-qt}at(n){return this.getLView(n)[Et].$implicit}attach(n,e){const i=e[gi];this.needsIndexUpdate||=n!==this.length,td(this.lContainer,e,n,Ha(this.templateTNode,i))}detach(n){return this.needsIndexUpdate||=n!==this.length-1,function c$(t,n){return Kl(t,n)}(this.lContainer,n)}create(n,e){const i=za(this.lContainer,this.templateTNode.tView.ssrId);return ed(this.hostLView,this.templateTNode,new r$(this.lContainer,e,n),{dehydratedView:i})}destroy(n){hf(n[B],n)}updateValue(n,e){this.getLView(n)[Et].$implicit=e}reset(){this.needsIndexUpdate=!1}updateIndexes(){if(this.needsIndexUpdate)for(let n=0;n{t.destroy(a)})}(s,t,o.trackByFn),s.updateIndexes(),o.hasEmptyBlock){const a=Qi(),c=0===s.length;if(Wt(i,a,c)){const l=e+2,d=Hv(i,l);if(c){const u=zv(r,l),h=za(d,u.tView.ssrId);td(d,ed(i,u,void 0,{dehydratedView:h}),0,Ha(u,h))}else Zb(d,0)}}}finally{Ne(n)}}function Hv(t,n){return t[n]}function zv(t,n){return Nl(t,n)}function y(t,n,e,i){const r=O(),o=ze(),s=Ie+t,a=r[Ce],c=o.firstCreatePass?function d$(t,n,e,i,r,o){const s=n.consts,c=ja(n,t,2,i,mr(s,r));return Gb(n,e,c,mr(s,o)),null!==c.attrs&&Sf(c,c.attrs,!1),null!==c.mergedAttrs&&Sf(c,c.mergedAttrs,!0),null!==n.queries&&n.queries.elementStart(n,c),c}(s,o,r,n,e,i):o.data[s],l=vM(o,r,c,a,n,t);r[s]=l;const d=Ph(c);return pr(c,!0),rT(a,l,c),!function pd(t){return!(32&~t.flags)}(c)&&Ll()&&mf(o,r,l,c),0===function rH(){return De.lFrame.elementDepthCount}()&&Fn(l,r),function oH(){De.lFrame.elementDepthCount++}(),d&&(Ub(o,r,c),zb(o,c,r)),null!==i&&$b(r,c),y}function w(){let t=dt();q_()?G_():(t=t.parent,pr(t,!1));const n=t;(function aH(t){return De.skipHydrationRootTNode===t})(n)&&function uH(){De.skipHydrationRootTNode=null}(),function sH(){De.lFrame.elementDepthCount--}();const e=ze();return e.firstCreatePass&&(Bh(e,t),F_(t)&&e.queries.elementEnd(t)),null!=n.classesWithoutHost&&function DH(t){return!!(8&t.flags)}(n)&&Lv(e,n,O(),n.classesWithoutHost,!0),null!=n.stylesWithoutHost&&function EH(t){return!!(16&t.flags)}(n)&&Lv(e,n,O(),n.stylesWithoutHost,!1),w}function re(t,n,e,i){return y(t,n,e,i),w(),re}let vM=(t,n,e,i,r,o)=>(gr(!0),uf(i,r,function DE(){return De.lFrame.currentNamespace}()));function Ln(t,n,e){const i=O(),r=ze(),o=t+Ie,s=r.firstCreatePass?function f$(t,n,e,i,r){const o=n.consts,s=mr(o,i),a=ja(n,t,8,"ng-container",s);return null!==s&&Sf(a,s,!0),Gb(n,e,a,mr(o,r)),null!==n.queries&&n.queries.elementStart(n,a),a}(o,r,i,n,e):r.data[o];pr(s,!0);const a=yM(r,i,s,t);return i[o]=a,Ll()&&mf(r,i,a,s),Fn(a,i),Ph(s)&&(Ub(r,i,s),zb(r,s,i)),null!=e&&$b(i,s),Ln}function Vn(){let t=dt();const n=ze();return q_()?G_():(t=t.parent,pr(t,!1)),n.firstCreatePass&&(Bh(n,t),F_(t)&&n.queries.elementEnd(t)),Vn}function Bn(t,n,e){return Ln(t,n,e),Vn(),Bn}let yM=(t,n,e,i)=>(gr(!0),Fb(n[Ce],""));function et(){return O()}function Zi(t,n,e){const i=O();return Wt(i,Qi(),n)&&oi(ze(),kt(),i,t,n,i[Ce],e,!0),Zi}function $f(t,n,e){const i=O();if(Wt(i,Qi(),n)){const o=ze(),s=kt();oi(o,s,i,t,n,bT(Q_(o.data),s,i),e,!0)}return $f}const Es=void 0;var _$=["en",[["a","p"],["AM","PM"],Es],[["AM","PM"],Es,Es],[["S","M","T","W","T","F","S"],["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],["Su","Mo","Tu","We","Th","Fr","Sa"]],Es,[["J","F","M","A","M","J","J","A","S","O","N","D"],["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],["January","February","March","April","May","June","July","August","September","October","November","December"]],Es,[["B","A"],["BC","AD"],["Before Christ","Anno Domini"]],0,[6,0],["M/d/yy","MMM d, y","MMMM d, y","EEEE, MMMM d, y"],["h:mm a","h:mm:ss a","h:mm:ss a z","h:mm:ss a zzzz"],["{1}, {0}",Es,"{1} 'at' {0}",Es],[".",",",";","%","+","-","E","\xd7","\u2030","\u221e","NaN",":"],["#,##0.###","#,##0%","\xa4#,##0.00","#E0"],"USD","$","US Dollar",{},"ltr",function g$(t){const e=Math.floor(Math.abs(t)),i=t.toString().replace(/^[^.]*\.?/,"").length;return 1===e&&0===i?1:5}];let sc={};function Wn(t){const n=function b$(t){return t.toLowerCase().replace(/_/g,"-")}(t);let e=xM(n);if(e)return e;const i=n.split("-")[0];if(e=xM(i),e)return e;if("en"===i)return _$;throw new E(701,!1)}function xM(t){return t in sc||(sc[t]=st.ng&&st.ng.common&&st.ng.common.locales&&st.ng.common.locales[t]),sc[t]}var St=function(t){return t[t.LocaleId=0]="LocaleId",t[t.DayPeriodsFormat=1]="DayPeriodsFormat",t[t.DayPeriodsStandalone=2]="DayPeriodsStandalone",t[t.DaysFormat=3]="DaysFormat",t[t.DaysStandalone=4]="DaysStandalone",t[t.MonthsFormat=5]="MonthsFormat",t[t.MonthsStandalone=6]="MonthsStandalone",t[t.Eras=7]="Eras",t[t.FirstDayOfWeek=8]="FirstDayOfWeek",t[t.WeekendRange=9]="WeekendRange",t[t.DateFormat=10]="DateFormat",t[t.TimeFormat=11]="TimeFormat",t[t.DateTimeFormat=12]="DateTimeFormat",t[t.NumberSymbols=13]="NumberSymbols",t[t.NumberFormats=14]="NumberFormats",t[t.CurrencyCode=15]="CurrencyCode",t[t.CurrencySymbol=16]="CurrencySymbol",t[t.CurrencyName=17]="CurrencyName",t[t.Currencies=18]="Currencies",t[t.Directionality=19]="Directionality",t[t.PluralCase=20]="PluralCase",t[t.ExtraData=21]="ExtraData",t}(St||{});const ac="en-US";let CM=ac;function q(t,n,e,i){const r=O(),o=ze(),s=dt();return qv(o,r,r[Ce],s,t,n,i),q}function Yf(t,n){const e=dt(),i=O(),r=ze();return qv(r,i,bT(Q_(r.data),e,i),e,t,n),Yf}function qv(t,n,e,i,r,o,s){const a=Ph(i),l=t.firstCreatePass&&_T(t),d=n[Et],u=gT(n);let h=!0;if(3&i.type||s){const g=qn(i,n),_=s?s(g):g,b=u.length,v=s?I=>s(mt(I[i.index])):i.index;let x=null;if(!s&&a&&(x=function m8(t,n,e,i){const r=t.cleanup;if(null!=r)for(let o=0;oc?a[c]:null}"string"==typeof s&&(o+=2)}return null}(t,n,r,i.index)),null!==x)(x.__ngLastListenerFn__||x).__ngNextListenerFn__=o,x.__ngLastListenerFn__=o,h=!1;else{o=KM(i,n,d,o,!1);const I=e.listen(_,r,o);u.push(o,I),l&&l.push(r,v,b,b+1)}}else o=KM(i,n,d,o,!1);const f=i.outputs;let m;if(h&&null!==f&&(m=f[r])){const g=m.length;if(g)for(let _=0;_-1?_i(t.index,n):n);let c=YM(n,e,i,s),l=o.__ngNextListenerFn__;for(;l;)c=YM(n,e,l,s)&&c,l=l.__ngNextListenerFn__;return r&&!1===c&&s.preventDefault(),c}}function L(t=1){return function _H(t){return(De.lFrame.contextLView=function uE(t,n){for(;t>0;)n=n[Da],t--;return n}(t,De.lFrame.contextLView))[Et]}(t)}function p8(t,n){let e=null;const i=function gj(t){const n=t.attrs;if(null!=n){const e=n.indexOf(5);if(!(1&e))return n[e+1]}return null}(t);for(let r=0;r(gr(!0),function Nb(t,n){return t.createText(n)}(n[Ce],i));function wt(t){return Ue("",t,""),wt}function Ue(t,n,e){const i=O(),r=Xa(i,t,n,e);return r!==Re&&Wr(i,Nn(),r),Ue}function So(t,n,e,i,r){const o=O(),s=function Za(t,n,e,i,r,o){const a=xs(t,zr(),e,r);return Ur(2),a?n+Me(e)+i+Me(r)+o:Re}(o,t,n,e,i,r);return s!==Re&&Wr(o,Nn(),s),So}function Wv(t,n,e,i,r,o,s){const a=O(),c=Ja(a,t,n,e,i,r,o,s);return c!==Re&&Wr(a,Nn(),c),Wv}function Qv(t,n,e,i,r){if(t=xe(t),Array.isArray(t))for(let o=0;o>20;if(us(t)||!t.multi){const f=new Vl(l,r,p),m=Kv(c,n,r?d:d+h,u);-1===m?(ib(Uh(a,s),o,c),Yv(o,t,n.length),n.push(c),a.directiveStart++,a.directiveEnd++,r&&(a.providerIndexes+=1048576),e.push(f),s.push(f)):(e[m]=f,s[m]=f)}else{const f=Kv(c,n,d+h,u),m=Kv(c,n,d,d+h),_=m>=0&&e[m];if(r&&!_||!r&&!(f>=0&&e[f])){ib(Uh(a,s),o,c);const b=function F8(t,n,e,i,r){const o=new Vl(t,e,p);return o.multi=[],o.index=n,o.componentProviders=0,CI(o,r,i&&!e),o}(r?N8:O8,e.length,r,i,l);!r&&_&&(e[m].providerFactory=b),Yv(o,t,n.length,0),n.push(c),a.directiveStart++,a.directiveEnd++,r&&(a.providerIndexes+=1048576),e.push(b),s.push(b)}else Yv(o,t,f>-1?f:m,CI(e[r?m:f],l,!r&&i));!r&&i&&_&&e[m].componentProviders++}}}function Yv(t,n,e,i){const r=us(n),o=function Mj(t){return!!t.useClass}(n);if(r||o){const c=(o?xe(n.useClass):n).prototype.ngOnDestroy;if(c){const l=t.destroyHooks||(t.destroyHooks=[]);if(!r&&n.multi){const d=l.indexOf(e);-1===d?l.push(e,[i,c]):l[d+1].push(i,c)}else l.push(e,c)}}}function CI(t,n,e){return e&&t.componentProviders++,t.multi.push(n)-1}function Kv(t,n,e,i){for(let r=e;r{e.providersResolver=(i,r)=>function R8(t,n,e){const i=ze();if(i.firstCreatePass){const r=Wi(t);Qv(e,i.data,i.blueprint,r,!0),Qv(n,i.data,i.blueprint,r,!1)}}(i,r?r(t):t,n)}}let P8=(()=>{class t{constructor(e){this._injector=e,this.cachedInjectors=new Map}getOrCreateStandaloneInjector(e){if(!e.standalone)return null;if(!this.cachedInjectors.has(e)){const i=E_(0,e.type),r=i.length>0?Of([i],this._injector,`Standalone[${e.type.name}]`):null;this.cachedInjectors.set(e,r)}return this.cachedInjectors.get(e)}ngOnDestroy(){try{for(const e of this.cachedInjectors.values())null!==e&&e.destroy()}finally{this.cachedInjectors.clear()}}static#e=this.\u0275prov=P({token:t,providedIn:"environment",factory:()=>new t(S(ni))})}return t})();function ve(t){Yi("NgStandalone"),t.getStandaloneInjector=n=>n.get(P8).getOrCreateStandaloneInjector(t)}function kd(t,n){const e=t[n];return e===Re?void 0:e}function SI(t,n,e,i,r,o){const s=n+e;return Wt(t,s,r)?xr(t,s+1,o?i.call(o,r):i(r)):kd(t,s+1)}function MI(t,n,e,i,r,o,s){const a=n+e;return xs(t,a,r,o)?xr(t,a+2,s?i.call(s,r,o):i(r,o)):kd(t,a+2)}function Mt(t,n){const e=ze();let i;const r=t+Ie;e.firstCreatePass?(i=function G8(t,n){if(n)for(let e=n.length-1;e>=0;e--){const i=n[e];if(t===i.name)return i}}(n,e.pipeRegistry),e.data[r]=i,i.onDestroy&&(e.destroyHooks??=[]).push(r,i.onDestroy)):i=e.data[r];const o=i.factory||(i.factory=ls(i.type)),a=ei(p);try{const c=zh(!1),l=o();return zh(c),function v8(t,n,e,i){e>=t.data.length&&(t.data[e]=null,t.blueprint[e]=null),n[e]=i}(e,O(),r,l),l}finally{ei(a)}}function Pt(t,n,e){const i=t+Ie,r=O(),o=Ta(r,i);return Td(r,i)?SI(r,Gn(),n,o.transform,e,o):o.transform(e)}function Zv(t,n,e,i){const r=t+Ie,o=O(),s=Ta(o,r);return Td(o,r)?MI(o,Gn(),n,s.transform,e,i,s):s.transform(e,i)}function Td(t,n){return t[B].data[n].pure}function OI(t,n){return wf(t,n)}let YI=(()=>{class t{log(e){console.log(e)}warn(e){console.warn(e)}static#e=this.\u0275fac=function(i){return new(i||t)};static#t=this.\u0275prov=P({token:t,factory:t.\u0275fac,providedIn:"platform"})}return t})();const eA=new M(""),em=new M("");let sy,ry=(()=>{class t{constructor(e,i,r){this._ngZone=e,this.registry=i,this._pendingCount=0,this._isZoneStable=!0,this._callbacks=[],this.taskTrackingZone=null,sy||(function zq(t){sy=t}(r),r.addToWindow(i)),this._watchAngularEvents(),e.run(()=>{this.taskTrackingZone=typeof Zone>"u"?null:Zone.current.get("TaskTrackingZone")})}_watchAngularEvents(){this._ngZone.onUnstable.subscribe({next:()=>{this._isZoneStable=!1}}),this._ngZone.runOutsideAngular(()=>{this._ngZone.onStable.subscribe({next:()=>{W.assertNotInAngularZone(),queueMicrotask(()=>{this._isZoneStable=!0,this._runCallbacksIfReady()})}})})}increasePendingRequestCount(){return this._pendingCount+=1,this._pendingCount}decreasePendingRequestCount(){if(this._pendingCount-=1,this._pendingCount<0)throw new Error("pending async requests below zero");return this._runCallbacksIfReady(),this._pendingCount}isStable(){return this._isZoneStable&&0===this._pendingCount&&!this._ngZone.hasPendingMacrotasks}_runCallbacksIfReady(){if(this.isStable())queueMicrotask(()=>{for(;0!==this._callbacks.length;){let e=this._callbacks.pop();clearTimeout(e.timeoutId),e.doneCb()}});else{let e=this.getPendingTasks();this._callbacks=this._callbacks.filter(i=>!i.updateCb||!i.updateCb(e)||(clearTimeout(i.timeoutId),!1))}}getPendingTasks(){return this.taskTrackingZone?this.taskTrackingZone.macroTasks.map(e=>({source:e.source,creationLocation:e.creationLocation,data:e.data})):[]}addCallback(e,i,r){let o=-1;i&&i>0&&(o=setTimeout(()=>{this._callbacks=this._callbacks.filter(s=>s.timeoutId!==o),e()},i)),this._callbacks.push({doneCb:e,timeoutId:o,updateCb:r})}whenStable(e,i,r){if(r&&!this.taskTrackingZone)throw new Error('Task tracking zone is required when passing an update callback to whenStable(). Is "zone.js/plugins/task-tracking" loaded?');this.addCallback(e,i,r),this._runCallbacksIfReady()}getPendingRequestCount(){return this._pendingCount}registerApplication(e){this.registry.registerApplication(e,this)}unregisterApplication(e){this.registry.unregisterApplication(e)}findProviders(e,i,r){return[]}static#e=this.\u0275fac=function(i){return new(i||t)(S(W),S(oy),S(em))};static#t=this.\u0275prov=P({token:t,factory:t.\u0275fac})}return t})(),oy=(()=>{class t{constructor(){this._applications=new Map}registerApplication(e,i){this._applications.set(e,i)}unregisterApplication(e){this._applications.delete(e)}unregisterAllApplications(){this._applications.clear()}getTestability(e){return this._applications.get(e)||null}getAllTestabilities(){return Array.from(this._applications.values())}getAllRootElements(){return Array.from(this._applications.keys())}findTestabilityInTree(e,i=!0){return sy?.findTestabilityInTree(this,e,i)??null}static#e=this.\u0275fac=function(i){return new(i||t)};static#t=this.\u0275prov=P({token:t,factory:t.\u0275fac,providedIn:"platform"})}return t})();function Id(t){return!!t&&"function"==typeof t.then}function tA(t){return!!t&&"function"==typeof t.subscribe}const ay=new M("");let cy=(()=>{class t{constructor(){this.initialized=!1,this.done=!1,this.donePromise=new Promise((e,i)=>{this.resolve=e,this.reject=i}),this.appInits=T(ay,{optional:!0})??[]}runInitializers(){if(this.initialized)return;const e=[];for(const r of this.appInits){const o=r();if(Id(o))e.push(o);else if(tA(o)){const s=new Promise((a,c)=>{o.subscribe({complete:a,error:c})});e.push(s)}}const i=()=>{this.done=!0,this.resolve()};Promise.all(e).then(()=>{i()}).catch(r=>{this.reject(r)}),0===e.length&&i(),this.initialized=!0}static#e=this.\u0275fac=function(i){return new(i||t)};static#t=this.\u0275prov=P({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();const ly=new M("");function rA(t,n){return Array.isArray(n)?n.reduce(rA,t):{...t,...n}}let Yr=(()=>{class t{constructor(){this._bootstrapListeners=[],this._runningTick=!1,this._destroyed=!1,this._destroyListeners=[],this._views=[],this.internalErrorHandler=T(qE),this.afterRenderEffectManager=T(ld),this.externalTestViews=new Set,this.beforeRender=new Z,this.afterTick=new Z,this.componentTypes=[],this.components=[],this.isStable=T(Eo).hasPendingTasks.pipe(ne(e=>!e)),this._injector=T(ni)}get destroyed(){return this._destroyed}get injector(){return this._injector}bootstrap(e,i){const r=e instanceof RT;if(!this._injector.get(cy).done)throw!r&&function vo(t){const n=Ve(t)||un(t)||Dn(t);return null!==n&&n.standalone}(e),new E(405,!1);let s;s=r?e:this._injector.get(vs).resolveComponentFactory(e),this.componentTypes.push(s.componentType);const a=function Uq(t){return t.isBoundToModule}(s)?void 0:this._injector.get(ws),l=s.create(Gt.NULL,[],i||s.selector,a),d=l.location.nativeElement,u=l.injector.get(eA,null);return u?.registerApplication(d),l.onDestroy(()=>{this.detachView(l.hostView),tm(this.components,l),u?.unregisterApplication(d)}),this._loadComponent(l),l}tick(){this._tick(!0)}_tick(e){if(this._runningTick)throw new E(101,!1);const i=Ne(null);try{this._runningTick=!0,this.detectChangesInAttachedViews(e)}catch(r){this.internalErrorHandler(r)}finally{this.afterTick.next(),this._runningTick=!1,Ne(i)}}detectChangesInAttachedViews(e){let i=0;const r=this.afterRenderEffectManager;for(;;){if(i===xT)throw new E(103,!1);if(e){const o=0===i;this.beforeRender.next(o);for(let{_lView:s,notifyErrorHandler:a}of this._views)qq(s,o,a)}if(i++,r.executeInternalCallbacks(),![...this.externalTestViews.keys(),...this._views].some(({_lView:o})=>dy(o))&&(r.execute(),![...this.externalTestViews.keys(),...this._views].some(({_lView:o})=>dy(o))))break}}attachView(e){const i=e;this._views.push(i),i.attachToAppRef(this)}detachView(e){const i=e;tm(this._views,i),i.detachFromAppRef()}_loadComponent(e){this.attachView(e.hostView),this.tick(),this.components.push(e);const i=this._injector.get(ly,[]);[...this._bootstrapListeners,...i].forEach(r=>r(e))}ngOnDestroy(){if(!this._destroyed)try{this._destroyListeners.forEach(e=>e()),this._views.slice().forEach(e=>e.destroy())}finally{this._destroyed=!0,this._views=[],this._bootstrapListeners=[],this._destroyListeners=[]}}onDestroy(e){return this._destroyListeners.push(e),()=>tm(this._destroyListeners,e)}destroy(){if(this._destroyed)throw new E(406,!1);const e=this._injector;e.destroy&&!e.destroyed&&e.destroy()}get viewCount(){return this._views.length}warnIfDestroyed(){}static#e=this.\u0275fac=function(i){return new(i||t)};static#t=this.\u0275prov=P({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function tm(t,n){const e=t.indexOf(n);e>-1&&t.splice(e,1)}function qq(t,n,e){!n&&!dy(t)||function Gq(t,n,e){let i;e?(i=0,t[fe]|=1024):i=64&t[fe]?0:1,yf(t,n,i)}(t,e,n)}function dy(t){return z_(t)}class Wq{constructor(n,e){this.ngModuleFactory=n,this.componentFactories=e}}let oA=(()=>{class t{compileModuleSync(e){return new Cv(e)}compileModuleAsync(e){return Promise.resolve(this.compileModuleSync(e))}compileModuleAndAllComponentsSync(e){const i=this.compileModuleSync(e),o=yi(In(e).declarations).reduce((s,a)=>{const c=Ve(a);return c&&s.push(new hd(c)),s},[]);return new Wq(i,o)}compileModuleAndAllComponentsAsync(e){return Promise.resolve(this.compileModuleAndAllComponentsSync(e))}clearCache(){}clearCacheFor(e){}getModuleId(e){}static#e=this.\u0275fac=function(i){return new(i||t)};static#t=this.\u0275prov=P({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),Kq=(()=>{class t{constructor(){this.zone=T(W),this.applicationRef=T(Yr)}initialize(){this._onMicrotaskEmptySubscription||(this._onMicrotaskEmptySubscription=this.zone.onMicrotaskEmpty.subscribe({next:()=>{this.zone.run(()=>{this.applicationRef.tick()})}}))}ngOnDestroy(){this._onMicrotaskEmptySubscription?.unsubscribe()}static#e=this.\u0275fac=function(i){return new(i||t)};static#t=this.\u0275prov=P({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function Xq(){const t=T(W),n=T(vi);return e=>t.runOutsideAngular(()=>n.handleError(e))}let Jq=(()=>{class t{constructor(){this.subscription=new Ae,this.initialized=!1,this.zone=T(W),this.pendingTasks=T(Eo)}initialize(){if(this.initialized)return;this.initialized=!0;let e=null;!this.zone.isStable&&!this.zone.hasPendingMacrotasks&&!this.zone.hasPendingMicrotasks&&(e=this.pendingTasks.add()),this.zone.runOutsideAngular(()=>{this.subscription.add(this.zone.onStable.subscribe(()=>{W.assertNotInAngularZone(),queueMicrotask(()=>{null!==e&&!this.zone.hasPendingMacrotasks&&!this.zone.hasPendingMicrotasks&&(this.pendingTasks.remove(e),e=null)})}))}),this.subscription.add(this.zone.onUnstable.subscribe(()=>{W.assertInAngularZone(),e??=this.pendingTasks.add()}))}ngOnDestroy(){this.subscription.unsubscribe()}static#e=this.\u0275fac=function(i){return new(i||t)};static#t=this.\u0275prov=P({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();const Er=new M("",{providedIn:"root",factory:()=>T(Er,He.Optional|He.SkipSelf)||function eG(){return typeof $localize<"u"&&$localize.locale||ac}()}),uy=new M("");let lA=(()=>{class t{constructor(e){this._injector=e,this._modules=[],this._destroyListeners=[],this._destroyed=!1}bootstrapModuleFactory(e,i){const r=function GU(t="zone.js",n){return"noop"===t?new VT:"zone.js"===t?new W(n):t}(i?.ngZone,function cA(t){return{enableLongStackTrace:!1,shouldCoalesceEventChangeDetection:t?.eventCoalescing??!1,shouldCoalesceRunChangeDetection:t?.runCoalescing??!1}}({eventCoalescing:i?.ngZoneEventCoalescing,runCoalescing:i?.ngZoneRunCoalescing}));return r.run(()=>{const o=function B4(t,n,e){return new xv(t,n,e)}(e.moduleType,this.injector,function aA(t){return[{provide:W,useFactory:t},{provide:ds,multi:!0,useFactory:()=>{const n=T(Kq,{optional:!0});return()=>n.initialize()}},{provide:ds,multi:!0,useFactory:()=>{const n=T(Jq);return()=>{n.initialize()}}},{provide:qE,useFactory:Xq}]}(()=>r)),s=o.injector.get(vi,null);return r.runOutsideAngular(()=>{const a=r.onError.subscribe({next:c=>{s.handleError(c)}});o.onDestroy(()=>{tm(this._modules,o),a.unsubscribe()})}),function iA(t,n,e){try{const i=e();return Id(i)?i.catch(r=>{throw n.runOutsideAngular(()=>t.handleError(r)),r}):i}catch(i){throw n.runOutsideAngular(()=>t.handleError(i)),i}}(s,r,()=>{const a=o.injector.get(cy);return a.runInitializers(),a.donePromise.then(()=>(function DM(t){"string"==typeof t&&(CM=t.toLowerCase().replace(/_/g,"-"))}(o.injector.get(Er,ac)||ac),this._moduleDoBootstrap(o),o))})})}bootstrapModule(e,i=[]){const r=rA({},i);return function Yq(t,n,e){const i=new Cv(e);return Promise.resolve(i)}(0,0,e).then(o=>this.bootstrapModuleFactory(o,r))}_moduleDoBootstrap(e){const i=e.injector.get(Yr);if(e._bootstrapComponents.length>0)e._bootstrapComponents.forEach(r=>i.bootstrap(r));else{if(!e.instance.ngDoBootstrap)throw new E(-403,!1);e.instance.ngDoBootstrap(i)}this._modules.push(e)}onDestroy(e){this._destroyListeners.push(e)}get injector(){return this._injector}destroy(){if(this._destroyed)throw new E(404,!1);this._modules.slice().forEach(i=>i.destroy()),this._destroyListeners.forEach(i=>i());const e=this._injector.get(uy,null);e&&(e.forEach(i=>i()),e.clear()),this._destroyed=!0}get destroyed(){return this._destroyed}static#e=this.\u0275fac=function(i){return new(i||t)(S(Gt))};static#t=this.\u0275prov=P({token:t,factory:t.\u0275fac,providedIn:"platform"})}return t})(),Mo=null;const dA=new M("");function uA(t,n,e=[]){const i=`Platform: ${n}`,r=new M(i);return(o=[])=>{let s=hy();if(!s||s.injector.get(dA,!1)){const a=[...e,...o,{provide:r,useValue:!0}];t?t(a):function iG(t){if(Mo&&!Mo.get(dA,!1))throw new E(400,!1);(function nA(){!function ch(t){gl=t}(()=>{throw new E(600,!1)})})(),Mo=t;const n=t.get(lA);(function fA(t){t.get(fk,null)?.forEach(e=>e())})(t)}(function hA(t=[],n){return Gt.create({name:n,providers:[{provide:S_,useValue:"platform"},{provide:uy,useValue:new Set([()=>Mo=null])},...t]})}(a,i))}return function rG(t){const n=hy();if(!n)throw new E(401,!1);return n}()}}function hy(){return Mo?.get(lA)??null}let Ke=(()=>{class t{static#e=this.__NG_ELEMENT_ID__=sG}return t})();function sG(t){return function aG(t,n,e){if(fs(t)&&!e){const i=_i(t.index,n);return new rd(i,i)}return 47&t.type?new rd(n[Vt],n):null}(dt(),O(),!(16&~t))}class bA{constructor(){}supports(n){return Ff(n)}create(n){return new hG(n)}}const uG=(t,n)=>n;class hG{constructor(n){this.length=0,this._linkedRecords=null,this._unlinkedRecords=null,this._previousItHead=null,this._itHead=null,this._itTail=null,this._additionsHead=null,this._additionsTail=null,this._movesHead=null,this._movesTail=null,this._removalsHead=null,this._removalsTail=null,this._identityChangesHead=null,this._identityChangesTail=null,this._trackByFn=n||uG}forEachItem(n){let e;for(e=this._itHead;null!==e;e=e._next)n(e)}forEachOperation(n){let e=this._itHead,i=this._removalsHead,r=0,o=null;for(;e||i;){const s=!i||e&&e.currentIndex{s=this._trackByFn(r,a),null!==e&&Object.is(e.trackById,s)?(i&&(e=this._verifyReinsertion(e,a,s,r)),Object.is(e.item,a)||this._addIdentityChange(e,a)):(e=this._mismatch(e,a,s,r),i=!0),e=e._next,r++}),this.length=r;return this._truncate(e),this.collection=n,this.isDirty}get isDirty(){return null!==this._additionsHead||null!==this._movesHead||null!==this._removalsHead||null!==this._identityChangesHead}_reset(){if(this.isDirty){let n;for(n=this._previousItHead=this._itHead;null!==n;n=n._next)n._nextPrevious=n._next;for(n=this._additionsHead;null!==n;n=n._nextAdded)n.previousIndex=n.currentIndex;for(this._additionsHead=this._additionsTail=null,n=this._movesHead;null!==n;n=n._nextMoved)n.previousIndex=n.currentIndex;this._movesHead=this._movesTail=null,this._removalsHead=this._removalsTail=null,this._identityChangesHead=this._identityChangesTail=null}}_mismatch(n,e,i,r){let o;return null===n?o=this._itTail:(o=n._prev,this._remove(n)),null!==(n=null===this._unlinkedRecords?null:this._unlinkedRecords.get(i,null))?(Object.is(n.item,e)||this._addIdentityChange(n,e),this._reinsertAfter(n,o,r)):null!==(n=null===this._linkedRecords?null:this._linkedRecords.get(i,r))?(Object.is(n.item,e)||this._addIdentityChange(n,e),this._moveAfter(n,o,r)):n=this._addAfter(new fG(e,i),o,r),n}_verifyReinsertion(n,e,i,r){let o=null===this._unlinkedRecords?null:this._unlinkedRecords.get(i,null);return null!==o?n=this._reinsertAfter(o,n._prev,r):n.currentIndex!=r&&(n.currentIndex=r,this._addToMoves(n,r)),n}_truncate(n){for(;null!==n;){const e=n._next;this._addToRemovals(this._unlink(n)),n=e}null!==this._unlinkedRecords&&this._unlinkedRecords.clear(),null!==this._additionsTail&&(this._additionsTail._nextAdded=null),null!==this._movesTail&&(this._movesTail._nextMoved=null),null!==this._itTail&&(this._itTail._next=null),null!==this._removalsTail&&(this._removalsTail._nextRemoved=null),null!==this._identityChangesTail&&(this._identityChangesTail._nextIdentityChange=null)}_reinsertAfter(n,e,i){null!==this._unlinkedRecords&&this._unlinkedRecords.remove(n);const r=n._prevRemoved,o=n._nextRemoved;return null===r?this._removalsHead=o:r._nextRemoved=o,null===o?this._removalsTail=r:o._prevRemoved=r,this._insertAfter(n,e,i),this._addToMoves(n,i),n}_moveAfter(n,e,i){return this._unlink(n),this._insertAfter(n,e,i),this._addToMoves(n,i),n}_addAfter(n,e,i){return this._insertAfter(n,e,i),this._additionsTail=null===this._additionsTail?this._additionsHead=n:this._additionsTail._nextAdded=n,n}_insertAfter(n,e,i){const r=null===e?this._itHead:e._next;return n._next=r,n._prev=e,null===r?this._itTail=n:r._prev=n,null===e?this._itHead=n:e._next=n,null===this._linkedRecords&&(this._linkedRecords=new vA),this._linkedRecords.put(n),n.currentIndex=i,n}_remove(n){return this._addToRemovals(this._unlink(n))}_unlink(n){null!==this._linkedRecords&&this._linkedRecords.remove(n);const e=n._prev,i=n._next;return null===e?this._itHead=i:e._next=i,null===i?this._itTail=e:i._prev=e,n}_addToMoves(n,e){return n.previousIndex===e||(this._movesTail=null===this._movesTail?this._movesHead=n:this._movesTail._nextMoved=n),n}_addToRemovals(n){return null===this._unlinkedRecords&&(this._unlinkedRecords=new vA),this._unlinkedRecords.put(n),n.currentIndex=null,n._nextRemoved=null,null===this._removalsTail?(this._removalsTail=this._removalsHead=n,n._prevRemoved=null):(n._prevRemoved=this._removalsTail,this._removalsTail=this._removalsTail._nextRemoved=n),n}_addIdentityChange(n,e){return n.item=e,this._identityChangesTail=null===this._identityChangesTail?this._identityChangesHead=n:this._identityChangesTail._nextIdentityChange=n,n}}class fG{constructor(n,e){this.item=n,this.trackById=e,this.currentIndex=null,this.previousIndex=null,this._nextPrevious=null,this._prev=null,this._next=null,this._prevDup=null,this._nextDup=null,this._prevRemoved=null,this._nextRemoved=null,this._nextAdded=null,this._nextMoved=null,this._nextIdentityChange=null}}class mG{constructor(){this._head=null,this._tail=null}add(n){null===this._head?(this._head=this._tail=n,n._nextDup=null,n._prevDup=null):(this._tail._nextDup=n,n._prevDup=this._tail,n._nextDup=null,this._tail=n)}get(n,e){let i;for(i=this._head;null!==i;i=i._nextDup)if((null===e||e<=i.currentIndex)&&Object.is(i.trackById,n))return i;return null}remove(n){const e=n._prevDup,i=n._nextDup;return null===e?this._head=i:e._nextDup=i,null===i?this._tail=e:i._prevDup=e,null===this._head}}class vA{constructor(){this.map=new Map}put(n){const e=n.trackById;let i=this.map.get(e);i||(i=new mG,this.map.set(e,i)),i.add(n)}get(n,e){const r=this.map.get(n);return r?r.get(n,e):null}remove(n){const e=n.trackById;return this.map.get(e).remove(n)&&this.map.delete(e),n}get isEmpty(){return 0===this.map.size}clear(){this.map.clear()}}function yA(t,n,e){const i=t.previousIndex;if(null===i)return i;let r=0;return e&&i{if(e&&e.key===r)this._maybeAddToChanges(e,i),this._appendAfter=e,e=e._next;else{const o=this._getOrCreateRecordForKey(r,i);e=this._insertBeforeOrAppend(e,o)}}),e){e._prev&&(e._prev._next=null),this._removalsHead=e;for(let i=e;null!==i;i=i._nextRemoved)i===this._mapHead&&(this._mapHead=null),this._records.delete(i.key),i._nextRemoved=i._next,i.previousValue=i.currentValue,i.currentValue=null,i._prev=null,i._next=null}return this._changesTail&&(this._changesTail._nextChanged=null),this._additionsTail&&(this._additionsTail._nextAdded=null),this.isDirty}_insertBeforeOrAppend(n,e){if(n){const i=n._prev;return e._next=n,e._prev=i,n._prev=e,i&&(i._next=e),n===this._mapHead&&(this._mapHead=e),this._appendAfter=n,n}return this._appendAfter?(this._appendAfter._next=e,e._prev=this._appendAfter):this._mapHead=e,this._appendAfter=e,null}_getOrCreateRecordForKey(n,e){if(this._records.has(n)){const r=this._records.get(n);this._maybeAddToChanges(r,e);const o=r._prev,s=r._next;return o&&(o._next=s),s&&(s._prev=o),r._next=null,r._prev=null,r}const i=new gG(n);return this._records.set(n,i),i.currentValue=e,this._addToAdditions(i),i}_reset(){if(this.isDirty){let n;for(this._previousMapHead=this._mapHead,n=this._previousMapHead;null!==n;n=n._next)n._nextPrevious=n._next;for(n=this._changesHead;null!==n;n=n._nextChanged)n.previousValue=n.currentValue;for(n=this._additionsHead;null!=n;n=n._nextAdded)n.previousValue=n.currentValue;this._changesHead=this._changesTail=null,this._additionsHead=this._additionsTail=null,this._removalsHead=null}}_maybeAddToChanges(n,e){Object.is(e,n.currentValue)||(n.previousValue=n.currentValue,n.currentValue=e,this._addToChanges(n))}_addToAdditions(n){null===this._additionsHead?this._additionsHead=this._additionsTail=n:(this._additionsTail._nextAdded=n,this._additionsTail=n)}_addToChanges(n){null===this._changesHead?this._changesHead=this._changesTail=n:(this._changesTail._nextChanged=n,this._changesTail=n)}_forEach(n,e){n instanceof Map?n.forEach(e):Object.keys(n).forEach(i=>e(n[i],i))}}class gG{constructor(n){this.key=n,this.previousValue=null,this.currentValue=null,this._nextPrevious=null,this._next=null,this._prev=null,this._nextAdded=null,this._nextRemoved=null,this._nextChanged=null}}function xA(){return new Io([new bA])}let Io=(()=>{class t{static#e=this.\u0275prov=P({token:t,providedIn:"root",factory:xA});constructor(e){this.factories=e}static create(e,i){if(null!=i){const r=i.factories.slice();e=e.concat(r)}return new t(e)}static extend(e){return{provide:t,useFactory:i=>t.create(e,i||xA()),deps:[[t,new El,new cs]]}}find(e){const i=this.factories.find(r=>r.supports(e));if(null!=i)return i;throw new E(901,!1)}}return t})();function CA(){return new om([new wA])}let om=(()=>{class t{static#e=this.\u0275prov=P({token:t,providedIn:"root",factory:CA});constructor(e){this.factories=e}static create(e,i){if(i){const r=i.factories.slice();e=e.concat(r)}return new t(e)}static extend(e){return{provide:t,useFactory:i=>t.create(e,i||CA()),deps:[[t,new El,new cs]]}}find(e){const i=this.factories.find(r=>r.supports(e));if(i)return i;throw new E(901,!1)}}return t})();const vG=uA(null,"core",[]);let yG=(()=>{class t{constructor(e){}static#e=this.\u0275fac=function(i){return new(i||t)(S(Yr))};static#t=this.\u0275mod=ge({type:t});static#n=this.\u0275inj=he({})}return t})();function j(t){return"boolean"==typeof t?t:null!=t&&"false"!==t}function Jt(t,n=NaN){return isNaN(parseFloat(t))||isNaN(Number(t))?n:Number(t)}function qA(t){const n=Ne(null);try{return t()}finally{Ne(n)}}const KG=new M("",{providedIn:"root",factory:()=>T(XG)});let XG=(()=>{class t{static#e=this.\u0275prov=P({token:t,providedIn:"root",factory:()=>new ZG})}return t})();class ZG{constructor(){this.queuedEffectCount=0,this.queues=new Map,this.pendingTasks=T(Eo),this.taskId=null}scheduleEffect(n){if(this.enqueue(n),null===this.taskId){const e=this.taskId=this.pendingTasks.add();queueMicrotask(()=>{this.flush(),this.pendingTasks.remove(e),this.taskId=null})}}enqueue(n){const e=n.creationZone;this.queues.has(e)||this.queues.set(e,new Set);const i=this.queues.get(e);i.has(n)||(this.queuedEffectCount++,i.add(n))}flush(){for(;this.queuedEffectCount>0;)for(const[n,e]of this.queues)null===n?this.flushQueue(e):n.run(()=>this.flushQueue(e))}flushQueue(n){for(const e of n)n.delete(e),this.queuedEffectCount--,e.run()}}class JG{constructor(n,e,i,r,o,s){this.scheduler=n,this.effectFn=e,this.creationZone=i,this.injector=o,this.watcher=function dh(t,n,e){const i=Object.create(uh);e&&(i.consumerAllowSignalWrites=!0),i.fn=t,i.schedule=n;const r=c=>{i.cleanupFn=c};return i.ref={notify:()=>Pr(i),run:()=>{if(null===i.fn)return;if(function ia(){return rs}())throw new Error("Schedulers cannot synchronously execute watches while scheduling.");if(i.dirty=!1,i.hasRun&&!Lr(i))return;i.hasRun=!0;const c=ft(i);try{i.cleanupFn(),i.cleanupFn=aa,i.fn(r)}finally{ml(i,c)}},cleanup:()=>i.cleanupFn(),destroy:()=>function s(c){(function o(c){return null===c.fn&&null===c.schedule})(c)||(pl(c),c.cleanupFn(),c.fn=null,c.schedule=null,c.cleanupFn=aa)}(i),[Mi]:i},i.ref}(a=>this.runEffect(a),()=>this.schedule(),s),this.unregisterOnDestroy=r?.onDestroy(()=>this.destroy())}runEffect(n){try{this.effectFn(n)}catch(e){this.injector.get(vi,null,{optional:!0})?.handleError(e)}}run(){this.watcher.run()}schedule(){this.scheduler.scheduleEffect(this)}destroy(){this.watcher.destroy(),this.unregisterOnDestroy?.()}}let WA=null;function Ao(){return WA}class n6{}const _e=new M("");let vy=(()=>{class t{historyGo(e){throw new Error("")}static#e=this.\u0275fac=function(i){return new(i||t)};static#t=this.\u0275prov=P({token:t,factory:()=>T(r6),providedIn:"platform"})}return t})();const i6=new M("");let r6=(()=>{class t extends vy{constructor(){super(),this._doc=T(_e),this._location=window.location,this._history=window.history}getBaseHrefFromDOM(){return Ao().getBaseHref(this._doc)}onPopState(e){const i=Ao().getGlobalEventTarget(this._doc,"window");return i.addEventListener("popstate",e,!1),()=>i.removeEventListener("popstate",e)}onHashChange(e){const i=Ao().getGlobalEventTarget(this._doc,"window");return i.addEventListener("hashchange",e,!1),()=>i.removeEventListener("hashchange",e)}get href(){return this._location.href}get protocol(){return this._location.protocol}get hostname(){return this._location.hostname}get port(){return this._location.port}get pathname(){return this._location.pathname}get search(){return this._location.search}get hash(){return this._location.hash}set pathname(e){this._location.pathname=e}pushState(e,i,r){this._history.pushState(e,i,r)}replaceState(e,i,r){this._history.replaceState(e,i,r)}forward(){this._history.forward()}back(){this._history.back()}historyGo(e=0){this._history.go(e)}getState(){return this._history.state}static#e=this.\u0275fac=function(i){return new(i||t)};static#t=this.\u0275prov=P({token:t,factory:()=>new t,providedIn:"platform"})}return t})();function yy(t,n){if(0==t.length)return n;if(0==n.length)return t;let e=0;return t.endsWith("/")&&e++,n.startsWith("/")&&e++,2==e?t+n.substring(1):1==e?t+n:t+"/"+n}function QA(t){const n=t.match(/#|\?|$/),e=n&&n.index||t.length;return t.slice(0,e-("/"===t[e-1]?1:0))+t.slice(e)}function Kr(t){return t&&"?"!==t[0]?"?"+t:t}let Ss=(()=>{class t{historyGo(e){throw new Error("")}static#e=this.\u0275fac=function(i){return new(i||t)};static#t=this.\u0275prov=P({token:t,factory:()=>T(KA),providedIn:"root"})}return t})();const YA=new M("");let KA=(()=>{class t extends Ss{constructor(e,i){super(),this._platformLocation=e,this._removeListenerFns=[],this._baseHref=i??this._platformLocation.getBaseHrefFromDOM()??T(_e).location?.origin??""}ngOnDestroy(){for(;this._removeListenerFns.length;)this._removeListenerFns.pop()()}onPopState(e){this._removeListenerFns.push(this._platformLocation.onPopState(e),this._platformLocation.onHashChange(e))}getBaseHref(){return this._baseHref}prepareExternalUrl(e){return yy(this._baseHref,e)}path(e=!1){const i=this._platformLocation.pathname+Kr(this._platformLocation.search),r=this._platformLocation.hash;return r&&e?`${i}${r}`:i}pushState(e,i,r,o){const s=this.prepareExternalUrl(r+Kr(o));this._platformLocation.pushState(e,i,s)}replaceState(e,i,r,o){const s=this.prepareExternalUrl(r+Kr(o));this._platformLocation.replaceState(e,i,s)}forward(){this._platformLocation.forward()}back(){this._platformLocation.back()}getState(){return this._platformLocation.getState()}historyGo(e=0){this._platformLocation.historyGo?.(e)}static#e=this.\u0275fac=function(i){return new(i||t)(S(vy),S(YA,8))};static#t=this.\u0275prov=P({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),o6=(()=>{class t extends Ss{constructor(e,i){super(),this._platformLocation=e,this._baseHref="",this._removeListenerFns=[],null!=i&&(this._baseHref=i)}ngOnDestroy(){for(;this._removeListenerFns.length;)this._removeListenerFns.pop()()}onPopState(e){this._removeListenerFns.push(this._platformLocation.onPopState(e),this._platformLocation.onHashChange(e))}getBaseHref(){return this._baseHref}path(e=!1){const i=this._platformLocation.hash??"#";return i.length>0?i.substring(1):i}prepareExternalUrl(e){const i=yy(this._baseHref,e);return i.length>0?"#"+i:i}pushState(e,i,r,o){let s=this.prepareExternalUrl(r+Kr(o));0==s.length&&(s=this._platformLocation.pathname),this._platformLocation.pushState(e,i,s)}replaceState(e,i,r,o){let s=this.prepareExternalUrl(r+Kr(o));0==s.length&&(s=this._platformLocation.pathname),this._platformLocation.replaceState(e,i,s)}forward(){this._platformLocation.forward()}back(){this._platformLocation.back()}getState(){return this._platformLocation.getState()}historyGo(e=0){this._platformLocation.historyGo?.(e)}static#e=this.\u0275fac=function(i){return new(i||t)(S(vy),S(YA,8))};static#t=this.\u0275prov=P({token:t,factory:t.\u0275fac})}return t})(),uc=(()=>{class t{constructor(e){this._subject=new G,this._urlChangeListeners=[],this._urlChangeSubscription=null,this._locationStrategy=e;const i=this._locationStrategy.getBaseHref();this._basePath=function c6(t){if(new RegExp("^(https?:)?//").test(t)){const[,e]=t.split(/\/\/[^\/]+/);return e}return t}(QA(XA(i))),this._locationStrategy.onPopState(r=>{this._subject.emit({url:this.path(!0),pop:!0,state:r.state,type:r.type})})}ngOnDestroy(){this._urlChangeSubscription?.unsubscribe(),this._urlChangeListeners=[]}path(e=!1){return this.normalize(this._locationStrategy.path(e))}getState(){return this._locationStrategy.getState()}isCurrentPathEqualTo(e,i=""){return this.path()==this.normalize(e+Kr(i))}normalize(e){return t.stripTrailingSlash(function a6(t,n){if(!t||!n.startsWith(t))return n;const e=n.substring(t.length);return""===e||["/",";","?","#"].includes(e[0])?e:n}(this._basePath,XA(e)))}prepareExternalUrl(e){return e&&"/"!==e[0]&&(e="/"+e),this._locationStrategy.prepareExternalUrl(e)}go(e,i="",r=null){this._locationStrategy.pushState(r,"",e,i),this._notifyUrlChangeListeners(this.prepareExternalUrl(e+Kr(i)),r)}replaceState(e,i="",r=null){this._locationStrategy.replaceState(r,"",e,i),this._notifyUrlChangeListeners(this.prepareExternalUrl(e+Kr(i)),r)}forward(){this._locationStrategy.forward()}back(){this._locationStrategy.back()}historyGo(e=0){this._locationStrategy.historyGo?.(e)}onUrlChange(e){return this._urlChangeListeners.push(e),this._urlChangeSubscription??=this.subscribe(i=>{this._notifyUrlChangeListeners(i.url,i.state)}),()=>{const i=this._urlChangeListeners.indexOf(e);this._urlChangeListeners.splice(i,1),0===this._urlChangeListeners.length&&(this._urlChangeSubscription?.unsubscribe(),this._urlChangeSubscription=null)}}_notifyUrlChangeListeners(e="",i){this._urlChangeListeners.forEach(r=>r(e,i))}subscribe(e,i,r){return this._subject.subscribe({next:e,error:i,complete:r})}static#e=this.normalizeQueryParams=Kr;static#t=this.joinWithSlash=yy;static#n=this.stripTrailingSlash=QA;static#i=this.\u0275fac=function(i){return new(i||t)(S(Ss))};static#r=this.\u0275prov=P({token:t,factory:()=>function s6(){return new uc(S(Ss))}(),providedIn:"root"})}return t})();function XA(t){return t.replace(/\/index.html$/,"")}var um=function(t){return t[t.Decimal=0]="Decimal",t[t.Percent=1]="Percent",t[t.Currency=2]="Currency",t[t.Scientific=3]="Scientific",t}(um||{});const en={Decimal:0,Group:1,List:2,PercentSign:3,PlusSign:4,MinusSign:5,Exponential:6,SuperscriptingExponent:7,PerMille:8,Infinity:9,NaN:10,TimeSeparator:11,CurrencyDecimal:12,CurrencyGroup:13};function Ri(t,n){const e=Wn(t),i=e[St.NumberSymbols][n];if(typeof i>"u"){if(n===en.CurrencyDecimal)return e[St.NumberSymbols][en.Decimal];if(n===en.CurrencyGroup)return e[St.NumberSymbols][en.Group]}return i}const F6=/^(\d+)?\.((\d+)(-(\d+))?)?$/;function Sy(t){const n=parseInt(t);if(isNaN(n))throw new Error("Invalid integer literal when parsing "+t);return n}function a1(t,n){n=encodeURIComponent(n);for(const e of t.split(";")){const i=e.indexOf("="),[r,o]=-1==i?[e,""]:[e.slice(0,i),e.slice(i+1)];if(r.trim()===n)return decodeURIComponent(o)}return null}const Iy=/\s+/,c1=[];let Ay=(()=>{class t{constructor(e,i){this._ngEl=e,this._renderer=i,this.initialClasses=c1,this.stateMap=new Map}set klass(e){this.initialClasses=null!=e?e.trim().split(Iy):c1}set ngClass(e){this.rawClass="string"==typeof e?e.trim().split(Iy):e}ngDoCheck(){for(const i of this.initialClasses)this._updateState(i,!0);const e=this.rawClass;if(Array.isArray(e)||e instanceof Set)for(const i of e)this._updateState(i,!0);else if(null!=e)for(const i of Object.keys(e))this._updateState(i,!!e[i]);this._applyStateDiff()}_updateState(e,i){const r=this.stateMap.get(e);void 0!==r?(r.enabled!==i&&(r.changed=!0,r.enabled=i),r.touched=!0):this.stateMap.set(e,{enabled:i,changed:!0,touched:!0})}_applyStateDiff(){for(const e of this.stateMap){const i=e[0],r=e[1];r.changed?(this._toggleClass(i,r.enabled),r.changed=!1):r.touched||(r.enabled&&this._toggleClass(i,!1),this.stateMap.delete(i)),r.touched=!1}}_toggleClass(e,i){(e=e.trim()).length>0&&e.split(Iy).forEach(r=>{i?this._renderer.addClass(this._ngEl.nativeElement,r):this._renderer.removeClass(this._ngEl.nativeElement,r)})}static#e=this.\u0275fac=function(i){return new(i||t)(p(K),p(wr))};static#t=this.\u0275dir=R({type:t,selectors:[["","ngClass",""]],inputs:{klass:[D.None,"class","klass"],ngClass:"ngClass"},standalone:!0})}return t})();class W6{constructor(n,e,i,r){this.$implicit=n,this.ngForOf=e,this.index=i,this.count=r}get first(){return 0===this.index}get last(){return this.index===this.count-1}get even(){return this.index%2==0}get odd(){return!this.even}}let d1=(()=>{class t{set ngForOf(e){this._ngForOf=e,this._ngForOfDirty=!0}set ngForTrackBy(e){this._trackByFn=e}get ngForTrackBy(){return this._trackByFn}constructor(e,i,r){this._viewContainer=e,this._template=i,this._differs=r,this._ngForOf=null,this._ngForOfDirty=!0,this._differ=null}set ngForTemplate(e){e&&(this._template=e)}ngDoCheck(){if(this._ngForOfDirty){this._ngForOfDirty=!1;const e=this._ngForOf;!this._differ&&e&&(this._differ=this._differs.find(e).create(this.ngForTrackBy))}if(this._differ){const e=this._differ.diff(this._ngForOf);e&&this._applyChanges(e)}}_applyChanges(e){const i=this._viewContainer;e.forEachOperation((r,o,s)=>{if(null==r.previousIndex)i.createEmbeddedView(this._template,new W6(r.item,this._ngForOf,-1,-1),null===s?void 0:s);else if(null==s)i.remove(null===o?void 0:o);else if(null!==o){const a=i.get(o);i.move(a,s),u1(a,r)}});for(let r=0,o=i.length;r{u1(i.get(r.currentIndex),r)})}static ngTemplateContextGuard(e,i){return!0}static#e=this.\u0275fac=function(i){return new(i||t)(p(Tt),p(yt),p(Io))};static#t=this.\u0275dir=R({type:t,selectors:[["","ngFor","","ngForOf",""]],inputs:{ngForOf:"ngForOf",ngForTrackBy:"ngForTrackBy",ngForTemplate:"ngForTemplate"},standalone:!0})}return t})();function u1(t,n){t.context.$implicit=n.item}let m1=(()=>{class t{constructor(e){this._viewContainerRef=e,this._viewRef=null,this.ngTemplateOutletContext=null,this.ngTemplateOutlet=null,this.ngTemplateOutletInjector=null}ngOnChanges(e){if(this._shouldRecreateView(e)){const i=this._viewContainerRef;if(this._viewRef&&i.remove(i.indexOf(this._viewRef)),!this.ngTemplateOutlet)return void(this._viewRef=null);const r=this._createContextForwardProxy();this._viewRef=i.createEmbeddedView(this.ngTemplateOutlet,r,{injector:this.ngTemplateOutletInjector??void 0})}}_shouldRecreateView(e){return!!e.ngTemplateOutlet||!!e.ngTemplateOutletInjector}_createContextForwardProxy(){return new Proxy({},{set:(e,i,r)=>!!this.ngTemplateOutletContext&&Reflect.set(this.ngTemplateOutletContext,i,r),get:(e,i,r)=>{if(this.ngTemplateOutletContext)return Reflect.get(this.ngTemplateOutletContext,i,r)}})}static#e=this.\u0275fac=function(i){return new(i||t)(p(Tt))};static#t=this.\u0275dir=R({type:t,selectors:[["","ngTemplateOutlet",""]],inputs:{ngTemplateOutletContext:"ngTemplateOutletContext",ngTemplateOutlet:"ngTemplateOutlet",ngTemplateOutletInjector:"ngTemplateOutletInjector"},standalone:!0,features:[Ft]})}return t})();function er(t,n){return new E(2100,!1)}class tW{createSubscription(n,e){return qA(()=>n.subscribe({next:e,error:i=>{throw i}}))}dispose(n){qA(()=>n.unsubscribe())}}class nW{createSubscription(n,e){return n.then(e,i=>{throw i})}dispose(n){}}const iW=new nW,rW=new tW;let p1=(()=>{class t{constructor(e){this._latestValue=null,this.markForCheckOnValueUpdate=!0,this._subscription=null,this._obj=null,this._strategy=null,this._ref=e}ngOnDestroy(){this._subscription&&this._dispose(),this._ref=null}transform(e){if(!this._obj){if(e)try{this.markForCheckOnValueUpdate=!1,this._subscribe(e)}finally{this.markForCheckOnValueUpdate=!0}return this._latestValue}return e!==this._obj?(this._dispose(),this.transform(e)):this._latestValue}_subscribe(e){this._obj=e,this._strategy=this._selectStrategy(e),this._subscription=this._strategy.createSubscription(e,i=>this._updateLatestValue(e,i))}_selectStrategy(e){if(Id(e))return iW;if(tA(e))return rW;throw er()}_dispose(){this._strategy.dispose(this._subscription),this._latestValue=null,this._subscription=null,this._obj=null}_updateLatestValue(e,i){e===this._obj&&(this._latestValue=i,this.markForCheckOnValueUpdate&&this._ref?.markForCheck())}static#e=this.\u0275fac=function(i){return new(i||t)(p(Ke,16))};static#t=this.\u0275pipe=Mn({name:"async",type:t,pure:!1,standalone:!0})}return t})(),g1=(()=>{class t{constructor(e){this.differs=e,this.keyValues=[],this.compareFn=_1}transform(e,i=_1){if(!e||!(e instanceof Map)&&"object"!=typeof e)return null;this.differ??=this.differs.find(e).create();const r=this.differ.diff(e),o=i!==this.compareFn;return r&&(this.keyValues=[],r.forEachItem(s=>{this.keyValues.push(function _W(t,n){return{key:t,value:n}}(s.key,s.currentValue))})),(r||o)&&(this.keyValues.sort(i),this.compareFn=i),this.keyValues}static#e=this.\u0275fac=function(i){return new(i||t)(p(om,16))};static#t=this.\u0275pipe=Mn({name:"keyvalue",type:t,pure:!1,standalone:!0})}return t})();function _1(t,n){const e=t.key,i=n.key;if(e===i)return 0;if(void 0===e)return 1;if(void 0===i)return-1;if(null===e)return 1;if(null===i)return-1;if("string"==typeof e&&"string"==typeof i)return e{class t{constructor(e){this._locale=e}transform(e,i,r){if(!function Ny(t){return!(null==t||""===t||t!=t)}(e))return null;r||=this._locale;try{return function H6(t,n,e){return function ky(t,n,e,i,r,o,s=!1){let a="",c=!1;if(isFinite(t)){let l=function U6(t){let i,r,o,s,a,n=Math.abs(t)+"",e=0;for((r=n.indexOf("."))>-1&&(n=n.replace(".","")),(o=n.search(/e/i))>0?(r<0&&(r=o),r+=+n.slice(o+1),n=n.substring(0,o)):r<0&&(r=n.length),o=0;"0"===n.charAt(o);o++);if(o===(a=n.length))i=[0],r=1;else{for(a--;"0"===n.charAt(a);)a--;for(r-=o,i=[],s=0;o<=a;o++,s++)i[s]=Number(n.charAt(o))}return r>22&&(i=i.splice(0,21),e=r-1,r=1),{digits:i,exponent:e,integerLen:r}}(t);s&&(l=function z6(t){if(0===t.digits[0])return t;const n=t.digits.length-t.integerLen;return t.exponent?t.exponent+=2:(0===n?t.digits.push(0,0):1===n&&t.digits.push(0),t.integerLen+=2),t}(l));let d=n.minInt,u=n.minFrac,h=n.maxFrac;if(o){const v=o.match(F6);if(null===v)throw new Error(`${o} is not a valid digit info`);const x=v[1],I=v[3],N=v[5];null!=x&&(d=Sy(x)),null!=I&&(u=Sy(I)),null!=N?h=Sy(N):null!=I&&u>h&&(h=u)}!function $6(t,n,e){if(n>e)throw new Error(`The minimum number of digits after fraction (${n}) is higher than the maximum (${e}).`);let i=t.digits,r=i.length-t.integerLen;const o=Math.min(Math.max(n,r),e);let s=o+t.integerLen,a=i[s];if(s>0){i.splice(Math.max(t.integerLen,s));for(let u=s;u=5)if(s-1<0){for(let u=0;u>s;u--)i.unshift(0),t.integerLen++;i.unshift(1),t.integerLen++}else i[s-1]++;for(;r=l?m.pop():c=!1),h>=10?1:0},0);d&&(i.unshift(d),t.integerLen++)}(l,u,h);let f=l.digits,m=l.integerLen;const g=l.exponent;let _=[];for(c=f.every(v=>!v);m0?_=f.splice(m,f.length):(_=f,f=[0]);const b=[];for(f.length>=n.lgSize&&b.unshift(f.splice(-n.lgSize,f.length).join(""));f.length>n.gSize;)b.unshift(f.splice(-n.gSize,f.length).join(""));f.length&&b.unshift(f.join("")),a=b.join(Ri(e,i)),_.length&&(a+=Ri(e,r)+_.join("")),g&&(a+=Ri(e,en.Exponential)+"+"+g)}else a=Ri(e,en.Infinity);return a=t<0&&!c?n.negPre+a+n.negSuf:n.posPre+a+n.posSuf,a}(t,function Ty(t,n="-"){const e={minInt:1,minFrac:0,maxFrac:0,posPre:"",posSuf:"",negPre:"",negSuf:"",gSize:0,lgSize:0},i=t.split(";"),r=i[0],o=i[1],s=-1!==r.indexOf(".")?r.split("."):[r.substring(0,r.lastIndexOf("0")+1),r.substring(r.lastIndexOf("0")+1)],a=s[0],c=s[1]||"";e.posPre=a.substring(0,a.indexOf("#"));for(let d=0;d{class t{static#e=this.\u0275fac=function(i){return new(i||t)};static#t=this.\u0275mod=ge({type:t});static#n=this.\u0275inj=he({})}return t})();const b1="browser";function v1(t){return t===b1}function Py(t){return"server"===t}let CW=(()=>{class t{static#e=this.\u0275prov=P({token:t,providedIn:"root",factory:()=>v1(T(br))?new DW(T(_e),window):new kW})}return t})();class DW{constructor(n,e){this.document=n,this.window=e,this.offset=()=>[0,0]}setOffset(n){this.offset=Array.isArray(n)?()=>n:n}getScrollPosition(){return[this.window.scrollX,this.window.scrollY]}scrollToPosition(n){this.window.scrollTo(n[0],n[1])}scrollToAnchor(n){const e=function EW(t,n){const e=t.getElementById(n)||t.getElementsByName(n)[0];if(e)return e;if("function"==typeof t.createTreeWalker&&t.body&&"function"==typeof t.body.attachShadow){const i=t.createTreeWalker(t.body,NodeFilter.SHOW_ELEMENT);let r=i.currentNode;for(;r;){const o=r.shadowRoot;if(o){const s=o.getElementById(n)||o.querySelector(`[name="${n}"]`);if(s)return s}r=i.nextNode()}}return null}(this.document,n);e&&(this.scrollToElement(e),e.focus())}setHistoryScrollRestoration(n){this.window.history.scrollRestoration=n}scrollToElement(n){const e=n.getBoundingClientRect(),i=e.left+this.window.pageXOffset,r=e.top+this.window.pageYOffset,o=this.offset();this.window.scrollTo(i-o[0],r-o[1])}}class kW{setOffset(n){}getScrollPosition(){return[0,0]}scrollToPosition(n){}scrollToAnchor(n){}setHistoryScrollRestoration(n){}}class y1{}const mc=t=>t.src,Ly=new M("",{providedIn:"root",factory:()=>mc}),QW=new M("NG_OPTIMIZED_PRELOADED_IMAGES",{providedIn:"root",factory:()=>new Set});let YW=(()=>{class t{constructor(){this.preloadedImages=T(QW),this.document=T(_e)}createPreloadLinkTag(e,i,r,o){if(this.preloadedImages.has(i))return;this.preloadedImages.add(i);const s=e.createElement("link");e.setAttribute(s,"as","image"),e.setAttribute(s,"href",i),e.setAttribute(s,"rel","preload"),e.setAttribute(s,"fetchpriority","high"),o&&e.setAttribute(s,"imageSizes",o),r&&e.setAttribute(s,"imageSrcset",r),e.appendChild(this.document.head,s)}static#e=this.\u0275fac=function(i){return new(i||t)};static#t=this.\u0275prov=P({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();const T1=/^((\s*\d+w\s*(,|$)){1,})$/,XW=[1,2];let nQ=(()=>{class t{constructor(){this.imageLoader=T(Ly),this.config=function iQ(t){let n={};return t.breakpoints&&(n.breakpoints=t.breakpoints.sort((e,i)=>e-i)),Object.assign({},mk,t,n)}(T(pk)),this.renderer=T(wr),this.imgElement=T(K).nativeElement,this.injector=T(Gt),this.isServer=Py(T(br)),this.preloadLinkCreator=T(YW),this.lcpObserver=null,this._renderedSrc=null,this.priority=!1,this.disableOptimizedSrcset=!1,this.fill=!1}ngOnInit(){Yi("NgOptimizedImage"),this.placeholder&&this.removePlaceholderOnLoad(this.imgElement),this.setHostAttributes()}setHostAttributes(){this.fill?this.sizes||="100vw":(this.setHostAttribute("width",this.width.toString()),this.setHostAttribute("height",this.height.toString())),this.setHostAttribute("loading",this.getLoadingBehavior()),this.setHostAttribute("fetchpriority",this.getFetchPriority()),this.setHostAttribute("ng-img","true");const e=this.updateSrcAndSrcset();this.sizes&&this.setHostAttribute("sizes",this.sizes),this.isServer&&this.priority&&this.preloadLinkCreator.createPreloadLinkTag(this.renderer,this.getRewrittenSrc(),e,this.sizes)}ngOnChanges(e){if(e.ngSrc&&!e.ngSrc.isFirstChange()){const i=this._renderedSrc;this.updateSrcAndSrcset(!0);const r=this._renderedSrc;null!==this.lcpObserver&&i&&r&&i!==r&&this.injector.get(W).runOutsideAngular(()=>{this.lcpObserver?.updateImage(i,r)})}}callImageLoader(e){let i=e;return this.loaderParams&&(i.loaderParams=this.loaderParams),this.imageLoader(i)}getLoadingBehavior(){return this.priority||void 0===this.loading?this.priority?"eager":"lazy":this.loading}getFetchPriority(){return this.priority?"high":"auto"}getRewrittenSrc(){return this._renderedSrc||(this._renderedSrc=this.callImageLoader({src:this.ngSrc})),this._renderedSrc}getRewrittenSrcset(){const e=T1.test(this.ngSrcset);return this.ngSrcset.split(",").filter(r=>""!==r).map(r=>{r=r.trim();const o=e?parseFloat(r):parseFloat(r)*this.width;return`${this.callImageLoader({src:this.ngSrc,width:o})} ${r}`}).join(", ")}getAutomaticSrcset(){return this.sizes?this.getResponsiveSrcset():this.getFixedSrcset()}getResponsiveSrcset(){const{breakpoints:e}=this.config;let i=e;return"100vw"===this.sizes?.trim()&&(i=e.filter(o=>o>=640)),i.map(o=>`${this.callImageLoader({src:this.ngSrc,width:o})} ${o}w`).join(", ")}updateSrcAndSrcset(e=!1){e&&(this._renderedSrc=null);const i=this.getRewrittenSrc();let r;return this.setHostAttribute("src",i),this.ngSrcset?r=this.getRewrittenSrcset():this.shouldGenerateAutomaticSrcset()&&(r=this.getAutomaticSrcset()),r&&this.setHostAttribute("srcset",r),r}getFixedSrcset(){return XW.map(i=>`${this.callImageLoader({src:this.ngSrc,width:this.width*i})} ${i}x`).join(", ")}shouldGenerateAutomaticSrcset(){let e=!1;return this.sizes||(e=this.width>1920||this.height>1080),!this.disableOptimizedSrcset&&!this.srcset&&this.imageLoader!==mc&&!e}generatePlaceholder(e){const{placeholderResolution:i}=this.config;return!0===e?`url(${this.callImageLoader({src:this.ngSrc,width:i,isPlaceholder:!0})})`:"string"==typeof e&&e.startsWith("data:")?`url(${e})`:null}shouldBlurPlaceholder(e){return!e||!e.hasOwnProperty("blur")||!!e.blur}removePlaceholderOnLoad(e){const i=()=>{const s=this.injector.get(Ke);r(),o(),this.placeholder=!1,s.markForCheck()},r=this.renderer.listen(e,"load",i),o=this.renderer.listen(e,"error",i)}ngOnDestroy(){}setHostAttribute(e,i){this.renderer.setAttribute(this.imgElement,e,i)}static#e=this.\u0275fac=function(i){return new(i||t)};static#t=this.\u0275dir=R({type:t,selectors:[["img","ngSrc",""]],hostVars:18,hostBindings:function(i,r){2&i&&Pn("position",r.fill?"absolute":null)("width",r.fill?"100%":null)("height",r.fill?"100%":null)("inset",r.fill?"0":null)("background-size",r.placeholder?"cover":null)("background-position",r.placeholder?"50% 50%":null)("background-repeat",r.placeholder?"no-repeat":null)("background-image",r.placeholder?r.generatePlaceholder(r.placeholder):null)("filter",r.placeholder&&r.shouldBlurPlaceholder(r.placeholderConfig)?"blur(15px)":null)},inputs:{ngSrc:[D.HasDecoratorInputTransform,"ngSrc","ngSrc",dQ],ngSrcset:"ngSrcset",sizes:"sizes",width:[D.HasDecoratorInputTransform,"width","width",Jt],height:[D.HasDecoratorInputTransform,"height","height",Jt],loading:"loading",priority:[D.HasDecoratorInputTransform,"priority","priority",j],loaderParams:"loaderParams",disableOptimizedSrcset:[D.HasDecoratorInputTransform,"disableOptimizedSrcset","disableOptimizedSrcset",j],fill:[D.HasDecoratorInputTransform,"fill","fill",j],placeholder:[D.HasDecoratorInputTransform,"placeholder","placeholder",uQ],placeholderConfig:"placeholderConfig",src:"src",srcset:"srcset"},standalone:!0,features:[Fe,Ft]})}return t})();function dQ(t){return"string"==typeof t?t:ri(t)}function uQ(t){return"string"==typeof t&&t.startsWith("data:")?t:j(t)}class hQ extends n6{constructor(){super(...arguments),this.supportsDOMEvents=!0}}class By extends hQ{static makeCurrent(){!function t6(t){WA??=t}(new By)}onAndCancel(n,e,i){return n.addEventListener(e,i),()=>{n.removeEventListener(e,i)}}dispatchEvent(n,e){n.dispatchEvent(e)}remove(n){n.parentNode&&n.parentNode.removeChild(n)}createElement(n,e){return(e=e||this.getDefaultDocument()).createElement(n)}createHtmlDocument(){return document.implementation.createHTMLDocument("fakeTitle")}getDefaultDocument(){return document}isElementNode(n){return n.nodeType===Node.ELEMENT_NODE}isShadowRoot(n){return n instanceof DocumentFragment}getGlobalEventTarget(n,e){return"window"===e?window:"document"===e?n:"body"===e?n.body:null}getBaseHref(n){const e=function fQ(){return Fd=Fd||document.querySelector("base"),Fd?Fd.getAttribute("href"):null}();return null==e?null:function mQ(t){return new URL(t,document.baseURI).pathname}(e)}resetBaseElement(){Fd=null}getUserAgent(){return window.navigator.userAgent}getCookie(n){return a1(document.cookie,n)}}let Fd=null,gQ=(()=>{class t{build(){return new XMLHttpRequest}static#e=this.\u0275fac=function(i){return new(i||t)};static#t=this.\u0275prov=P({token:t,factory:t.\u0275fac})}return t})();const jy=new M("");let R1=(()=>{class t{constructor(e,i){this._zone=i,this._eventNameToPlugin=new Map,e.forEach(r=>{r.manager=this}),this._plugins=e.slice().reverse()}addEventListener(e,i,r){return this._findPluginFor(i).addEventListener(e,i,r)}getZone(){return this._zone}_findPluginFor(e){let i=this._eventNameToPlugin.get(e);if(i)return i;if(i=this._plugins.find(o=>o.supports(e)),!i)throw new E(5101,!1);return this._eventNameToPlugin.set(e,i),i}static#e=this.\u0275fac=function(i){return new(i||t)(S(jy),S(W))};static#t=this.\u0275prov=P({token:t,factory:t.\u0275fac})}return t})();class O1{constructor(n){this._doc=n}}const Hy="ng-app-id";let N1=(()=>{class t{constructor(e,i,r,o={}){this.doc=e,this.appId=i,this.nonce=r,this.platformId=o,this.styleRef=new Map,this.hostNodes=new Set,this.styleNodesInDOM=this.collectServerRenderedStyles(),this.platformIsServer=Py(o),this.resetHostNodes()}addStyles(e){for(const i of e)1===this.changeUsageCount(i,1)&&this.onStyleAdded(i)}removeStyles(e){for(const i of e)this.changeUsageCount(i,-1)<=0&&this.onStyleRemoved(i)}ngOnDestroy(){const e=this.styleNodesInDOM;e&&(e.forEach(i=>i.remove()),e.clear());for(const i of this.getAllStyles())this.onStyleRemoved(i);this.resetHostNodes()}addHost(e){this.hostNodes.add(e);for(const i of this.getAllStyles())this.addStyleToHost(e,i)}removeHost(e){this.hostNodes.delete(e)}getAllStyles(){return this.styleRef.keys()}onStyleAdded(e){for(const i of this.hostNodes)this.addStyleToHost(i,e)}onStyleRemoved(e){const i=this.styleRef;i.get(e)?.elements?.forEach(r=>r.remove()),i.delete(e)}collectServerRenderedStyles(){const e=this.doc.head?.querySelectorAll(`style[${Hy}="${this.appId}"]`);if(e?.length){const i=new Map;return e.forEach(r=>{null!=r.textContent&&i.set(r.textContent,r)}),i}return null}changeUsageCount(e,i){const r=this.styleRef;if(r.has(e)){const o=r.get(e);return o.usage+=i,o.usage}return r.set(e,{usage:i,elements:[]}),i}getStyleElement(e,i){const r=this.styleNodesInDOM,o=r?.get(i);if(o?.parentNode===e)return r.delete(i),o.removeAttribute(Hy),o;{const s=this.doc.createElement("style");return this.nonce&&s.setAttribute("nonce",this.nonce),s.textContent=i,this.platformIsServer&&s.setAttribute(Hy,this.appId),e.appendChild(s),s}}addStyleToHost(e,i){const r=this.getStyleElement(e,i),o=this.styleRef,s=o.get(i)?.elements;s?s.push(r):o.set(i,{elements:[r],usage:1})}resetHostNodes(){const e=this.hostNodes;e.clear(),e.add(this.doc.head)}static#e=this.\u0275fac=function(i){return new(i||t)(S(_e),S(Ul),S(hb,8),S(br))};static#t=this.\u0275prov=P({token:t,factory:t.\u0275fac})}return t})();const zy={svg:"http://www.w3.org/2000/svg",xhtml:"http://www.w3.org/1999/xhtml",xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/",math:"http://www.w3.org/1998/MathML/"},Uy=/%COMP%/g,yQ=new M("",{providedIn:"root",factory:()=>!0});function P1(t,n){return n.map(e=>e.replace(Uy,t))}let $y=(()=>{class t{constructor(e,i,r,o,s,a,c,l=null){this.eventManager=e,this.sharedStylesHost=i,this.appId=r,this.removeStylesOnCompDestroy=o,this.doc=s,this.platformId=a,this.ngZone=c,this.nonce=l,this.rendererByCompId=new Map,this.platformIsServer=Py(a),this.defaultRenderer=new qy(e,s,c,this.platformIsServer)}createRenderer(e,i){if(!e||!i)return this.defaultRenderer;this.platformIsServer&&i.encapsulation===Ui.ShadowDom&&(i={...i,encapsulation:Ui.Emulated});const r=this.getOrCreateRenderer(e,i);return r instanceof V1?r.applyToHost(e):r instanceof Gy&&r.applyStyles(),r}getOrCreateRenderer(e,i){const r=this.rendererByCompId;let o=r.get(i.id);if(!o){const s=this.doc,a=this.ngZone,c=this.eventManager,l=this.sharedStylesHost,d=this.removeStylesOnCompDestroy,u=this.platformIsServer;switch(i.encapsulation){case Ui.Emulated:o=new V1(c,l,i,this.appId,d,s,a,u);break;case Ui.ShadowDom:return new DQ(c,l,e,i,s,a,this.nonce,u);default:o=new Gy(c,l,i,d,s,a,u)}r.set(i.id,o)}return o}ngOnDestroy(){this.rendererByCompId.clear()}static#e=this.\u0275fac=function(i){return new(i||t)(S(R1),S(N1),S(Ul),S(yQ),S(_e),S(br),S(W),S(hb))};static#t=this.\u0275prov=P({token:t,factory:t.\u0275fac})}return t})();class qy{constructor(n,e,i,r){this.eventManager=n,this.doc=e,this.ngZone=i,this.platformIsServer=r,this.data=Object.create(null),this.throwOnSyntheticProps=!0,this.destroyNode=null}destroy(){}createElement(n,e){return e?this.doc.createElementNS(zy[e]||e,n):this.doc.createElement(n)}createComment(n){return this.doc.createComment(n)}createText(n){return this.doc.createTextNode(n)}appendChild(n,e){(L1(n)?n.content:n).appendChild(e)}insertBefore(n,e,i){n&&(L1(n)?n.content:n).insertBefore(e,i)}removeChild(n,e){n&&n.removeChild(e)}selectRootElement(n,e){let i="string"==typeof n?this.doc.querySelector(n):n;if(!i)throw new E(-5104,!1);return e||(i.textContent=""),i}parentNode(n){return n.parentNode}nextSibling(n){return n.nextSibling}setAttribute(n,e,i,r){if(r){e=r+":"+e;const o=zy[r];o?n.setAttributeNS(o,e,i):n.setAttribute(e,i)}else n.setAttribute(e,i)}removeAttribute(n,e,i){if(i){const r=zy[i];r?n.removeAttributeNS(r,e):n.removeAttribute(`${i}:${e}`)}else n.removeAttribute(e)}addClass(n,e){n.classList.add(e)}removeClass(n,e){n.classList.remove(e)}setStyle(n,e,i,r){r&(xo.DashCase|xo.Important)?n.style.setProperty(e,i,r&xo.Important?"important":""):n.style[e]=i}removeStyle(n,e,i){i&xo.DashCase?n.style.removeProperty(e):n.style[e]=""}setProperty(n,e,i){null!=n&&(n[e]=i)}setValue(n,e){n.nodeValue=e}listen(n,e,i){if("string"==typeof n&&!(n=Ao().getGlobalEventTarget(this.doc,n)))throw new Error(`Unsupported event target ${n} for event ${e}`);return this.eventManager.addEventListener(n,e,this.decoratePreventDefault(i))}decoratePreventDefault(n){return e=>{if("__ngUnwrap__"===e)return n;!1===(this.platformIsServer?this.ngZone.runGuarded(()=>n(e)):n(e))&&e.preventDefault()}}}function L1(t){return"TEMPLATE"===t.tagName&&void 0!==t.content}class DQ extends qy{constructor(n,e,i,r,o,s,a,c){super(n,o,s,c),this.sharedStylesHost=e,this.hostEl=i,this.shadowRoot=i.attachShadow({mode:"open"}),this.sharedStylesHost.addHost(this.shadowRoot);const l=P1(r.id,r.styles);for(const d of l){const u=document.createElement("style");a&&u.setAttribute("nonce",a),u.textContent=d,this.shadowRoot.appendChild(u)}}nodeOrShadowRoot(n){return n===this.hostEl?this.shadowRoot:n}appendChild(n,e){return super.appendChild(this.nodeOrShadowRoot(n),e)}insertBefore(n,e,i){return super.insertBefore(this.nodeOrShadowRoot(n),e,i)}removeChild(n,e){return super.removeChild(this.nodeOrShadowRoot(n),e)}parentNode(n){return this.nodeOrShadowRoot(super.parentNode(this.nodeOrShadowRoot(n)))}destroy(){this.sharedStylesHost.removeHost(this.shadowRoot)}}class Gy extends qy{constructor(n,e,i,r,o,s,a,c){super(n,o,s,a),this.sharedStylesHost=e,this.removeStylesOnCompDestroy=r,this.styles=c?P1(c,i.styles):i.styles}applyStyles(){this.sharedStylesHost.addStyles(this.styles)}destroy(){this.removeStylesOnCompDestroy&&this.sharedStylesHost.removeStyles(this.styles)}}class V1 extends Gy{constructor(n,e,i,r,o,s,a,c){const l=r+"-"+i.id;super(n,e,i,o,s,a,c,l),this.contentAttr=function wQ(t){return"_ngcontent-%COMP%".replace(Uy,t)}(l),this.hostAttr=function xQ(t){return"_nghost-%COMP%".replace(Uy,t)}(l)}applyToHost(n){this.applyStyles(),this.setAttribute(n,this.hostAttr,"")}createElement(n,e){const i=super.createElement(n,e);return super.setAttribute(i,this.contentAttr,""),i}}let EQ=(()=>{class t extends O1{constructor(e){super(e)}supports(e){return!0}addEventListener(e,i,r){return e.addEventListener(i,r,!1),()=>this.removeEventListener(e,i,r)}removeEventListener(e,i,r){return e.removeEventListener(i,r)}static#e=this.\u0275fac=function(i){return new(i||t)(S(_e))};static#t=this.\u0275prov=P({token:t,factory:t.\u0275fac})}return t})();const B1=["alt","control","meta","shift"],kQ={"\b":"Backspace","\t":"Tab","\x7f":"Delete","\x1b":"Escape",Del:"Delete",Esc:"Escape",Left:"ArrowLeft",Right:"ArrowRight",Up:"ArrowUp",Down:"ArrowDown",Menu:"ContextMenu",Scroll:"ScrollLock",Win:"OS"},TQ={alt:t=>t.altKey,control:t=>t.ctrlKey,meta:t=>t.metaKey,shift:t=>t.shiftKey};let SQ=(()=>{class t extends O1{constructor(e){super(e)}supports(e){return null!=t.parseEventName(e)}addEventListener(e,i,r){const o=t.parseEventName(i),s=t.eventCallback(o.fullKey,r,this.manager.getZone());return this.manager.getZone().runOutsideAngular(()=>Ao().onAndCancel(e,o.domEventName,s))}static parseEventName(e){const i=e.toLowerCase().split("."),r=i.shift();if(0===i.length||"keydown"!==r&&"keyup"!==r)return null;const o=t._normalizeKey(i.pop());let s="",a=i.indexOf("code");if(a>-1&&(i.splice(a,1),s="code."),B1.forEach(l=>{const d=i.indexOf(l);d>-1&&(i.splice(d,1),s+=l+".")}),s+=o,0!=i.length||0===o.length)return null;const c={};return c.domEventName=r,c.fullKey=s,c}static matchEventFullKeyCode(e,i){let r=kQ[e.key]||e.key,o="";return i.indexOf("code.")>-1&&(r=e.code,o="code."),!(null==r||!r)&&(r=r.toLowerCase()," "===r?r="space":"."===r&&(r="dot"),B1.forEach(s=>{s!==r&&(0,TQ[s])(e)&&(o+=s+".")}),o+=r,o===i)}static eventCallback(e,i,r){return o=>{t.matchEventFullKeyCode(o,e)&&r.runGuarded(()=>i(o))}}static _normalizeKey(e){return"esc"===e?"escape":e}static#e=this.\u0275fac=function(i){return new(i||t)(S(_e))};static#t=this.\u0275prov=P({token:t,factory:t.\u0275fac})}return t})();const H1=[{provide:br,useValue:b1},{provide:fk,useValue:function MQ(){By.makeCurrent()},multi:!0},{provide:_e,useFactory:function AQ(){return function hz(t){ub=t}(document),document},deps:[]}],RQ=uA(vG,"browser",H1),OQ=new M(""),z1=[{provide:em,useClass:class pQ{addToWindow(n){st.getAngularTestability=(i,r=!0)=>{const o=n.findTestabilityInTree(i,r);if(null==o)throw new E(5103,!1);return o},st.getAllAngularTestabilities=()=>n.getAllTestabilities(),st.getAllAngularRootElements=()=>n.getAllRootElements(),st.frameworkStabilizers||(st.frameworkStabilizers=[]),st.frameworkStabilizers.push(i=>{const r=st.getAllAngularTestabilities();let o=r.length;const s=function(){o--,0==o&&i()};r.forEach(a=>{a.whenStable(s)})})}findTestabilityInTree(n,e,i){return null==e?null:n.getTestability(e)??(i?Ao().isShadowRoot(e)?this.findTestabilityInTree(n,e.host,!0):this.findTestabilityInTree(n,e.parentElement,!0):null)}},deps:[]},{provide:eA,useClass:ry,deps:[W,oy,em]},{provide:ry,useClass:ry,deps:[W,oy,em]}],U1=[{provide:S_,useValue:"root"},{provide:vi,useFactory:function IQ(){return new vi},deps:[]},{provide:jy,useClass:EQ,multi:!0,deps:[_e,W,br]},{provide:jy,useClass:SQ,multi:!0,deps:[_e]},$y,N1,R1,{provide:ov,useExisting:$y},{provide:y1,useClass:gQ,deps:[]},[]];let $1=(()=>{class t{constructor(e){}static withServerTransition(e){return{ngModule:t,providers:[{provide:Ul,useValue:e.appId}]}}static#e=this.\u0275fac=function(i){return new(i||t)(S(OQ,12))};static#t=this.\u0275mod=ge({type:t});static#n=this.\u0275inj=he({providers:[...U1,...z1],imports:[Ni,yG]})}return t})(),NQ=(()=>{class t{constructor(e){this._doc=e}getTitle(){return this._doc.title}setTitle(e){this._doc.title=e||""}static#e=this.\u0275fac=function(i){return new(i||t)(S(_e))};static#t=this.\u0275prov=P({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),km=(()=>{class t{static#e=this.\u0275fac=function(i){return new(i||t)};static#t=this.\u0275prov=P({token:t,factory:function(i){let r=null;return r=i?new(i||t):S(VQ),r},providedIn:"root"})}return t})(),VQ=(()=>{class t extends km{constructor(e){super(),this._doc=e}sanitize(e,i){if(null==i)return null;switch(e){case En.NONE:return i;case En.HTML:return vr(i,"HTML")?ri(i):Nk(this._doc,String(i)).toString();case En.STYLE:return vr(i,"Style")?ri(i):i;case En.SCRIPT:if(vr(i,"Script"))return ri(i);throw new E(5200,!1);case En.URL:return vr(i,"URL")?ri(i):sf(String(i));case En.RESOURCE_URL:if(vr(i,"ResourceURL"))return ri(i);throw new E(5201,!1);default:throw new E(5202,!1)}}bypassSecurityTrustHtml(e){return function Az(t){return new Ez(t)}(e)}bypassSecurityTrustStyle(e){return function Rz(t){return new kz(t)}(e)}bypassSecurityTrustScript(e){return function Oz(t){return new Tz(t)}(e)}bypassSecurityTrustUrl(e){return function Nz(t){return new Sz(t)}(e)}bypassSecurityTrustResourceUrl(e){return function Fz(t){return new Mz(t)}(e)}static#e=this.\u0275fac=function(i){return new(i||t)(S(_e))};static#t=this.\u0275prov=P({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function Q1(t){return t&&Qe(t.schedule)}function Wy(t){return t[t.length-1]}function Y1(t){return Qe(Wy(t))?t.pop():void 0}function Ld(t){return Q1(Wy(t))?t.pop():void 0}var Qy=function(t,n){return(Qy=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,i){e.__proto__=i}||function(e,i){for(var r in i)Object.prototype.hasOwnProperty.call(i,r)&&(e[r]=i[r])})(t,n)};function Fi(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function e(){this.constructor=t}Qy(t,n),t.prototype=null===n?Object.create(n):(e.prototype=n.prototype,new e)}var k=function(){return k=Object.assign||function(n){for(var e,i=1,r=arguments.length;i0&&o[o.length-1])&&(6===l[0]||2===l[0])){e=0;continue}if(3===l[0]&&(!o||l[1]>o[0]&&l[1]=t.length&&(t=void 0),{value:t&&t[i++],done:!t}}};throw new TypeError(n?"Object is not iterable.":"Symbol.iterator is not defined.")}(t),e={},i("next"),i("throw"),i("return"),e[Symbol.asyncIterator]=function(){return this},e);function i(o){e[o]=t[o]&&function(s){return new Promise(function(a,c){!function r(o,s,a,c){Promise.resolve(c).then(function(l){o({value:l,done:a})},s)}(a,c,(s=t[o](s)).done,s.value)})}}}"function"==typeof SuppressedError&&SuppressedError;const Xy=t=>t&&"number"==typeof t.length&&"function"!=typeof t;function J1(t){return Qe(t?.then)}function eR(t){return Qe(t[gh])}function tR(t){return Symbol.asyncIterator&&Qe(t?.[Symbol.asyncIterator])}function nR(t){return new TypeError(`You provided ${null!==t&&"object"==typeof t?"an invalid object":`'${t}'`} where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.`)}const iR=function i7(){return"function"==typeof Symbol&&Symbol.iterator?Symbol.iterator:"@@iterator"}();function rR(t){return Qe(t?.[iR])}function oR(t){return function X1(t,n,e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var r,i=e.apply(t,n||[]),o=[];return r={},s("next"),s("throw"),s("return"),r[Symbol.asyncIterator]=function(){return this},r;function s(h){i[h]&&(r[h]=function(f){return new Promise(function(m,g){o.push([h,f,m,g])>1||a(h,f)})})}function a(h,f){try{!function c(h){h.value instanceof Ro?Promise.resolve(h.value.v).then(l,d):u(o[0][2],h)}(i[h](f))}catch(m){u(o[0][3],m)}}function l(h){a("next",h)}function d(h){a("throw",h)}function u(h,f){h(f),o.shift(),o.length&&a(o[0][0],o[0][1])}}(this,arguments,function*(){const e=t.getReader();try{for(;;){const{value:i,done:r}=yield Ro(e.read());if(r)return yield Ro(void 0);yield yield Ro(i)}}finally{e.releaseLock()}})}function sR(t){return Qe(t?.getReader)}function jn(t){if(t instanceof Ye)return t;if(null!=t){if(eR(t))return function r7(t){return new Ye(n=>{const e=t[gh]();if(Qe(e.subscribe))return e.subscribe(n);throw new TypeError("Provided object does not correctly implement Symbol.observable")})}(t);if(Xy(t))return function o7(t){return new Ye(n=>{for(let e=0;e{t.then(e=>{n.closed||(n.next(e),n.complete())},e=>n.error(e)).then(null,vl)})}(t);if(tR(t))return aR(t);if(rR(t))return function a7(t){return new Ye(n=>{for(const e of t)if(n.next(e),n.closed)return;n.complete()})}(t);if(sR(t))return function c7(t){return aR(oR(t))}(t)}throw nR(t)}function aR(t){return new Ye(n=>{(function l7(t,n){var e,i,r,o;return kr(this,void 0,void 0,function*(){try{for(e=Z1(t);!(i=yield e.next()).done;)if(n.next(i.value),n.closed)return}catch(s){r={error:s}}finally{try{i&&!i.done&&(o=e.return)&&(yield o.call(e))}finally{if(r)throw r.error}}n.complete()})})(t,n).catch(e=>n.error(e))})}function to(t,n,e,i=0,r=!1){const o=n.schedule(function(){e(),r?t.add(this.schedule(null,i)):this.unsubscribe()},i);if(t.add(o),!r)return o}function Zy(t,n=0){return Lt((e,i)=>{e.subscribe(Rt(i,r=>to(i,t,()=>i.next(r),n),()=>to(i,t,()=>i.complete(),n),r=>to(i,t,()=>i.error(r),n)))})}function cR(t,n=0){return Lt((e,i)=>{i.add(t.schedule(()=>e.subscribe(i),n))})}function lR(t,n){if(!t)throw new Error("Iterable cannot be null");return new Ye(e=>{to(e,n,()=>{const i=t[Symbol.asyncIterator]();to(e,n,()=>{i.next().then(r=>{r.done?e.complete():e.next(r.value)})},0,!0)})})}function jt(t,n){return n?function p7(t,n){if(null!=t){if(eR(t))return function d7(t,n){return jn(t).pipe(cR(n),Zy(n))}(t,n);if(Xy(t))return function h7(t,n){return new Ye(e=>{let i=0;return n.schedule(function(){i===t.length?e.complete():(e.next(t[i++]),e.closed||this.schedule())})})}(t,n);if(J1(t))return function u7(t,n){return jn(t).pipe(cR(n),Zy(n))}(t,n);if(tR(t))return lR(t,n);if(rR(t))return function f7(t,n){return new Ye(e=>{let i;return to(e,n,()=>{i=t[iR](),to(e,n,()=>{let r,o;try{({value:r,done:o}=i.next())}catch(s){return void e.error(s)}o?e.complete():e.next(r)},0,!0)}),()=>Qe(i?.return)&&i.return()})}(t,n);if(sR(t))return function m7(t,n){return lR(oR(t),n)}(t,n)}throw nR(t)}(t,n):jn(t)}function se(...t){return jt(t,Ld(t))}function vn(t,n,e=1/0){return Qe(n)?vn((i,r)=>ne((o,s)=>n(i,o,r,s))(jn(t(i,r))),e):("number"==typeof n&&(e=n),Lt((i,r)=>function g7(t,n,e,i,r,o,s,a){const c=[];let l=0,d=0,u=!1;const h=()=>{u&&!c.length&&!l&&n.complete()},f=g=>l{o&&n.next(g),l++;let _=!1;jn(e(g,d++)).subscribe(Rt(n,b=>{r?.(b),o?f(b):n.next(b)},()=>{_=!0},void 0,()=>{if(_)try{for(l--;c.length&&lm(b)):m(b)}h()}catch(b){n.error(b)}}))};return t.subscribe(Rt(n,f,()=>{u=!0,h()})),()=>{a?.()}}(i,r,t,e)))}function pc(t,n){return Qe(n)?vn(t,n,1):vn(t,1)}function Ge(t,n){return Lt((e,i)=>{let r=0;e.subscribe(Rt(i,o=>t.call(n,o,r++)&&i.next(o)))})}function gc(t){return Lt((n,e)=>{try{n.subscribe(e)}finally{e.add(t)}})}function nn(t,n){return Lt((e,i)=>{let r=null,o=0,s=!1;const a=()=>s&&!r&&i.complete();e.subscribe(Rt(i,c=>{r?.unsubscribe();let l=0;const d=o++;jn(t(c,d)).subscribe(r=Rt(i,u=>i.next(n?n(c,u,d,l++):u),()=>{r=null,a()}))},()=>{s=!0,a()}))})}class Tm{}class Sm{}class ci{constructor(n){this.normalizedNames=new Map,this.lazyUpdate=null,n?"string"==typeof n?this.lazyInit=()=>{this.headers=new Map,n.split("\n").forEach(e=>{const i=e.indexOf(":");if(i>0){const r=e.slice(0,i),o=r.toLowerCase(),s=e.slice(i+1).trim();this.maybeSetNormalizedName(r,o),this.headers.has(o)?this.headers.get(o).push(s):this.headers.set(o,[s])}})}:typeof Headers<"u"&&n instanceof Headers?(this.headers=new Map,n.forEach((e,i)=>{this.setHeaderEntries(i,e)})):this.lazyInit=()=>{this.headers=new Map,Object.entries(n).forEach(([e,i])=>{this.setHeaderEntries(e,i)})}:this.headers=new Map}has(n){return this.init(),this.headers.has(n.toLowerCase())}get(n){this.init();const e=this.headers.get(n.toLowerCase());return e&&e.length>0?e[0]:null}keys(){return this.init(),Array.from(this.normalizedNames.values())}getAll(n){return this.init(),this.headers.get(n.toLowerCase())||null}append(n,e){return this.clone({name:n,value:e,op:"a"})}set(n,e){return this.clone({name:n,value:e,op:"s"})}delete(n,e){return this.clone({name:n,value:e,op:"d"})}maybeSetNormalizedName(n,e){this.normalizedNames.has(e)||this.normalizedNames.set(e,n)}init(){this.lazyInit&&(this.lazyInit instanceof ci?this.copyFrom(this.lazyInit):this.lazyInit(),this.lazyInit=null,this.lazyUpdate&&(this.lazyUpdate.forEach(n=>this.applyUpdate(n)),this.lazyUpdate=null))}copyFrom(n){n.init(),Array.from(n.headers.keys()).forEach(e=>{this.headers.set(e,n.headers.get(e)),this.normalizedNames.set(e,n.normalizedNames.get(e))})}clone(n){const e=new ci;return e.lazyInit=this.lazyInit&&this.lazyInit instanceof ci?this.lazyInit:this,e.lazyUpdate=(this.lazyUpdate||[]).concat([n]),e}applyUpdate(n){const e=n.name.toLowerCase();switch(n.op){case"a":case"s":let i=n.value;if("string"==typeof i&&(i=[i]),0===i.length)return;this.maybeSetNormalizedName(n.name,e);const r=("a"===n.op?this.headers.get(e):void 0)||[];r.push(...i),this.headers.set(e,r);break;case"d":const o=n.value;if(o){let s=this.headers.get(e);if(!s)return;s=s.filter(a=>-1===o.indexOf(a)),0===s.length?(this.headers.delete(e),this.normalizedNames.delete(e)):this.headers.set(e,s)}else this.headers.delete(e),this.normalizedNames.delete(e)}}setHeaderEntries(n,e){const i=(Array.isArray(e)?e:[e]).map(o=>o.toString()),r=n.toLowerCase();this.headers.set(r,i),this.maybeSetNormalizedName(n,r)}forEach(n){this.init(),Array.from(this.normalizedNames.keys()).forEach(e=>n(this.normalizedNames.get(e),this.headers.get(e)))}}class _7{encodeKey(n){return dR(n)}encodeValue(n){return dR(n)}decodeKey(n){return decodeURIComponent(n)}decodeValue(n){return decodeURIComponent(n)}}const v7=/%(\d[a-f0-9])/gi,y7={40:"@","3A":":",24:"$","2C":",","3B":";","3D":"=","3F":"?","2F":"/"};function dR(t){return encodeURIComponent(t).replace(v7,(n,e)=>y7[e]??n)}function Mm(t){return`${t}`}class Oo{constructor(n={}){if(this.updates=null,this.cloneFrom=null,this.encoder=n.encoder||new _7,n.fromString){if(n.fromObject)throw new Error("Cannot specify both fromString and fromObject.");this.map=function b7(t,n){const e=new Map;return t.length>0&&t.replace(/^\?/,"").split("&").forEach(r=>{const o=r.indexOf("="),[s,a]=-1==o?[n.decodeKey(r),""]:[n.decodeKey(r.slice(0,o)),n.decodeValue(r.slice(o+1))],c=e.get(s)||[];c.push(a),e.set(s,c)}),e}(n.fromString,this.encoder)}else n.fromObject?(this.map=new Map,Object.keys(n.fromObject).forEach(e=>{const i=n.fromObject[e],r=Array.isArray(i)?i.map(Mm):[Mm(i)];this.map.set(e,r)})):this.map=null}has(n){return this.init(),this.map.has(n)}get(n){this.init();const e=this.map.get(n);return e?e[0]:null}getAll(n){return this.init(),this.map.get(n)||null}keys(){return this.init(),Array.from(this.map.keys())}append(n,e){return this.clone({param:n,value:e,op:"a"})}appendAll(n){const e=[];return Object.keys(n).forEach(i=>{const r=n[i];Array.isArray(r)?r.forEach(o=>{e.push({param:i,value:o,op:"a"})}):e.push({param:i,value:r,op:"a"})}),this.clone(e)}set(n,e){return this.clone({param:n,value:e,op:"s"})}delete(n,e){return this.clone({param:n,value:e,op:"d"})}toString(){return this.init(),this.keys().map(n=>{const e=this.encoder.encodeKey(n);return this.map.get(n).map(i=>e+"="+this.encoder.encodeValue(i)).join("&")}).filter(n=>""!==n).join("&")}clone(n){const e=new Oo({encoder:this.encoder});return e.cloneFrom=this.cloneFrom||this,e.updates=(this.updates||[]).concat(n),e}init(){null===this.map&&(this.map=new Map),null!==this.cloneFrom&&(this.cloneFrom.init(),this.cloneFrom.keys().forEach(n=>this.map.set(n,this.cloneFrom.map.get(n))),this.updates.forEach(n=>{switch(n.op){case"a":case"s":const e=("a"===n.op?this.map.get(n.param):void 0)||[];e.push(Mm(n.value)),this.map.set(n.param,e);break;case"d":if(void 0===n.value){this.map.delete(n.param);break}{let i=this.map.get(n.param)||[];const r=i.indexOf(Mm(n.value));-1!==r&&i.splice(r,1),i.length>0?this.map.set(n.param,i):this.map.delete(n.param)}}}),this.cloneFrom=this.updates=null)}}class w7{constructor(){this.map=new Map}set(n,e){return this.map.set(n,e),this}get(n){return this.map.has(n)||this.map.set(n,n.defaultValue()),this.map.get(n)}delete(n){return this.map.delete(n),this}has(n){return this.map.has(n)}keys(){return this.map.keys()}}function uR(t){return typeof ArrayBuffer<"u"&&t instanceof ArrayBuffer}function hR(t){return typeof Blob<"u"&&t instanceof Blob}function fR(t){return typeof FormData<"u"&&t instanceof FormData}class Vd{constructor(n,e,i,r){let o;if(this.url=e,this.body=null,this.reportProgress=!1,this.withCredentials=!1,this.responseType="json",this.method=n.toUpperCase(),function x7(t){switch(t){case"DELETE":case"GET":case"HEAD":case"OPTIONS":case"JSONP":return!1;default:return!0}}(this.method)||r?(this.body=void 0!==i?i:null,o=r):o=i,o&&(this.reportProgress=!!o.reportProgress,this.withCredentials=!!o.withCredentials,o.responseType&&(this.responseType=o.responseType),o.headers&&(this.headers=o.headers),o.context&&(this.context=o.context),o.params&&(this.params=o.params),this.transferCache=o.transferCache),this.headers??=new ci,this.context??=new w7,this.params){const s=this.params.toString();if(0===s.length)this.urlWithParams=e;else{const a=e.indexOf("?");this.urlWithParams=e+(-1===a?"?":ah.set(f,n.setHeaders[f]),l)),n.setParams&&(d=Object.keys(n.setParams).reduce((h,f)=>h.set(f,n.setParams[f]),d)),new Vd(e,i,s,{params:d,headers:l,context:u,reportProgress:c,responseType:r,withCredentials:a,transferCache:o})}}var No=function(t){return t[t.Sent=0]="Sent",t[t.UploadProgress=1]="UploadProgress",t[t.ResponseHeader=2]="ResponseHeader",t[t.DownloadProgress=3]="DownloadProgress",t[t.Response=4]="Response",t[t.User=5]="User",t}(No||{});class Jy{constructor(n,e=Bd.Ok,i="OK"){this.headers=n.headers||new ci,this.status=void 0!==n.status?n.status:e,this.statusText=n.statusText||i,this.url=n.url||null,this.ok=this.status>=200&&this.status<300}}class Im extends Jy{constructor(n={}){super(n),this.type=No.ResponseHeader}clone(n={}){return new Im({headers:n.headers||this.headers,status:void 0!==n.status?n.status:this.status,statusText:n.statusText||this.statusText,url:n.url||this.url||void 0})}}class Ms extends Jy{constructor(n={}){super(n),this.type=No.Response,this.body=void 0!==n.body?n.body:null}clone(n={}){return new Ms({body:void 0!==n.body?n.body:this.body,headers:n.headers||this.headers,status:void 0!==n.status?n.status:this.status,statusText:n.statusText||this.statusText,url:n.url||this.url||void 0})}}class _c extends Jy{constructor(n){super(n,0,"Unknown Error"),this.name="HttpErrorResponse",this.ok=!1,this.message=this.status>=200&&this.status<300?`Http failure during parsing for ${n.url||"(unknown url)"}`:`Http failure response for ${n.url||"(unknown url)"}: ${n.status} ${n.statusText}`,this.error=n.error||null}}var Bd=function(t){return t[t.Continue=100]="Continue",t[t.SwitchingProtocols=101]="SwitchingProtocols",t[t.Processing=102]="Processing",t[t.EarlyHints=103]="EarlyHints",t[t.Ok=200]="Ok",t[t.Created=201]="Created",t[t.Accepted=202]="Accepted",t[t.NonAuthoritativeInformation=203]="NonAuthoritativeInformation",t[t.NoContent=204]="NoContent",t[t.ResetContent=205]="ResetContent",t[t.PartialContent=206]="PartialContent",t[t.MultiStatus=207]="MultiStatus",t[t.AlreadyReported=208]="AlreadyReported",t[t.ImUsed=226]="ImUsed",t[t.MultipleChoices=300]="MultipleChoices",t[t.MovedPermanently=301]="MovedPermanently",t[t.Found=302]="Found",t[t.SeeOther=303]="SeeOther",t[t.NotModified=304]="NotModified",t[t.UseProxy=305]="UseProxy",t[t.Unused=306]="Unused",t[t.TemporaryRedirect=307]="TemporaryRedirect",t[t.PermanentRedirect=308]="PermanentRedirect",t[t.BadRequest=400]="BadRequest",t[t.Unauthorized=401]="Unauthorized",t[t.PaymentRequired=402]="PaymentRequired",t[t.Forbidden=403]="Forbidden",t[t.NotFound=404]="NotFound",t[t.MethodNotAllowed=405]="MethodNotAllowed",t[t.NotAcceptable=406]="NotAcceptable",t[t.ProxyAuthenticationRequired=407]="ProxyAuthenticationRequired",t[t.RequestTimeout=408]="RequestTimeout",t[t.Conflict=409]="Conflict",t[t.Gone=410]="Gone",t[t.LengthRequired=411]="LengthRequired",t[t.PreconditionFailed=412]="PreconditionFailed",t[t.PayloadTooLarge=413]="PayloadTooLarge",t[t.UriTooLong=414]="UriTooLong",t[t.UnsupportedMediaType=415]="UnsupportedMediaType",t[t.RangeNotSatisfiable=416]="RangeNotSatisfiable",t[t.ExpectationFailed=417]="ExpectationFailed",t[t.ImATeapot=418]="ImATeapot",t[t.MisdirectedRequest=421]="MisdirectedRequest",t[t.UnprocessableEntity=422]="UnprocessableEntity",t[t.Locked=423]="Locked",t[t.FailedDependency=424]="FailedDependency",t[t.TooEarly=425]="TooEarly",t[t.UpgradeRequired=426]="UpgradeRequired",t[t.PreconditionRequired=428]="PreconditionRequired",t[t.TooManyRequests=429]="TooManyRequests",t[t.RequestHeaderFieldsTooLarge=431]="RequestHeaderFieldsTooLarge",t[t.UnavailableForLegalReasons=451]="UnavailableForLegalReasons",t[t.InternalServerError=500]="InternalServerError",t[t.NotImplemented=501]="NotImplemented",t[t.BadGateway=502]="BadGateway",t[t.ServiceUnavailable=503]="ServiceUnavailable",t[t.GatewayTimeout=504]="GatewayTimeout",t[t.HttpVersionNotSupported=505]="HttpVersionNotSupported",t[t.VariantAlsoNegotiates=506]="VariantAlsoNegotiates",t[t.InsufficientStorage=507]="InsufficientStorage",t[t.LoopDetected=508]="LoopDetected",t[t.NotExtended=510]="NotExtended",t[t.NetworkAuthenticationRequired=511]="NetworkAuthenticationRequired",t}(Bd||{});function e0(t,n){return{body:n,headers:t.headers,context:t.context,observe:t.observe,params:t.params,reportProgress:t.reportProgress,responseType:t.responseType,withCredentials:t.withCredentials,transferCache:t.transferCache}}let Am=(()=>{class t{constructor(e){this.handler=e}request(e,i,r={}){let o;if(e instanceof Vd)o=e;else{let c,l;c=r.headers instanceof ci?r.headers:new ci(r.headers),r.params&&(l=r.params instanceof Oo?r.params:new Oo({fromObject:r.params})),o=new Vd(e,i,void 0!==r.body?r.body:null,{headers:c,context:r.context,params:l,reportProgress:r.reportProgress,responseType:r.responseType||"json",withCredentials:r.withCredentials,transferCache:r.transferCache})}const s=se(o).pipe(pc(c=>this.handler.handle(c)));if(e instanceof Vd||"events"===r.observe)return s;const a=s.pipe(Ge(c=>c instanceof Ms));switch(r.observe||"body"){case"body":switch(o.responseType){case"arraybuffer":return a.pipe(ne(c=>{if(null!==c.body&&!(c.body instanceof ArrayBuffer))throw new Error("Response is not an ArrayBuffer.");return c.body}));case"blob":return a.pipe(ne(c=>{if(null!==c.body&&!(c.body instanceof Blob))throw new Error("Response is not a Blob.");return c.body}));case"text":return a.pipe(ne(c=>{if(null!==c.body&&"string"!=typeof c.body)throw new Error("Response is not a string.");return c.body}));default:return a.pipe(ne(c=>c.body))}case"response":return a;default:throw new Error(`Unreachable: unhandled observe type ${r.observe}}`)}}delete(e,i={}){return this.request("DELETE",e,i)}get(e,i={}){return this.request("GET",e,i)}head(e,i={}){return this.request("HEAD",e,i)}jsonp(e,i){return this.request("JSONP",e,{params:(new Oo).append(i,"JSONP_CALLBACK"),observe:"body",responseType:"json"})}options(e,i={}){return this.request("OPTIONS",e,i)}patch(e,i,r={}){return this.request("PATCH",e,e0(r,i))}post(e,i,r={}){return this.request("POST",e,e0(r,i))}put(e,i,r={}){return this.request("PUT",e,e0(r,i))}static#e=this.\u0275fac=function(i){return new(i||t)(S(Tm))};static#t=this.\u0275prov=P({token:t,factory:t.\u0275fac})}return t})();function pR(t,n){return n(t)}function S7(t,n){return(e,i)=>n.intercept(e,{handle:r=>t(r,i)})}const I7=new M(""),jd=new M(""),gR=new M(""),_R=new M("");function A7(){let t=null;return(n,e)=>{null===t&&(t=(T(I7,{optional:!0})??[]).reduceRight(S7,pR));const i=T(Eo),r=i.add();return t(n,e).pipe(gc(()=>i.remove(r)))}}let bR=(()=>{class t extends Tm{constructor(e,i){super(),this.backend=e,this.injector=i,this.chain=null,this.pendingTasks=T(Eo);const r=T(_R,{optional:!0});this.backend=r??e}handle(e){if(null===this.chain){const r=Array.from(new Set([...this.injector.get(jd),...this.injector.get(gR,[])]));this.chain=r.reduceRight((o,s)=>function M7(t,n,e){return(i,r)=>ur(e,()=>n(i,o=>t(o,r)))}(o,s,this.injector),pR)}const i=this.pendingTasks.add();return this.chain(e,r=>this.backend.handle(r)).pipe(gc(()=>this.pendingTasks.remove(i)))}static#e=this.\u0275fac=function(i){return new(i||t)(S(Sm),S(ni))};static#t=this.\u0275prov=P({token:t,factory:t.\u0275fac})}return t})();const P7=/^\)\]\}',?\n/;let yR=(()=>{class t{constructor(e){this.xhrFactory=e}handle(e){if("JSONP"===e.method)throw new E(-2800,!1);const i=this.xhrFactory;return(i.\u0275loadImpl?jt(i.\u0275loadImpl()):se(null)).pipe(nn(()=>new Ye(o=>{const s=i.build();if(s.open(e.method,e.urlWithParams),e.withCredentials&&(s.withCredentials=!0),e.headers.forEach((g,_)=>s.setRequestHeader(g,_.join(","))),e.headers.has("Accept")||s.setRequestHeader("Accept","application/json, text/plain, */*"),!e.headers.has("Content-Type")){const g=e.detectContentTypeHeader();null!==g&&s.setRequestHeader("Content-Type",g)}if(e.responseType){const g=e.responseType.toLowerCase();s.responseType="json"!==g?g:"text"}const a=e.serializeBody();let c=null;const l=()=>{if(null!==c)return c;const g=s.statusText||"OK",_=new ci(s.getAllResponseHeaders()),b=function L7(t){return"responseURL"in t&&t.responseURL?t.responseURL:/^X-Request-URL:/m.test(t.getAllResponseHeaders())?t.getResponseHeader("X-Request-URL"):null}(s)||e.url;return c=new Im({headers:_,status:s.status,statusText:g,url:b}),c},d=()=>{let{headers:g,status:_,statusText:b,url:v}=l(),x=null;_!==Bd.NoContent&&(x=typeof s.response>"u"?s.responseText:s.response),0===_&&(_=x?Bd.Ok:0);let I=_>=200&&_<300;if("json"===e.responseType&&"string"==typeof x){const N=x;x=x.replace(P7,"");try{x=""!==x?JSON.parse(x):null}catch(V){x=N,I&&(I=!1,x={error:V,text:x})}}I?(o.next(new Ms({body:x,headers:g,status:_,statusText:b,url:v||void 0})),o.complete()):o.error(new _c({error:x,headers:g,status:_,statusText:b,url:v||void 0}))},u=g=>{const{url:_}=l(),b=new _c({error:g,status:s.status||0,statusText:s.statusText||"Unknown Error",url:_||void 0});o.error(b)};let h=!1;const f=g=>{h||(o.next(l()),h=!0);let _={type:No.DownloadProgress,loaded:g.loaded};g.lengthComputable&&(_.total=g.total),"text"===e.responseType&&s.responseText&&(_.partialText=s.responseText),o.next(_)},m=g=>{let _={type:No.UploadProgress,loaded:g.loaded};g.lengthComputable&&(_.total=g.total),o.next(_)};return s.addEventListener("load",d),s.addEventListener("error",u),s.addEventListener("timeout",u),s.addEventListener("abort",u),e.reportProgress&&(s.addEventListener("progress",f),null!==a&&s.upload&&s.upload.addEventListener("progress",m)),s.send(a),o.next({type:No.Sent}),()=>{s.removeEventListener("error",u),s.removeEventListener("abort",u),s.removeEventListener("load",d),s.removeEventListener("timeout",u),e.reportProgress&&(s.removeEventListener("progress",f),null!==a&&s.upload&&s.upload.removeEventListener("progress",m)),s.readyState!==s.DONE&&s.abort()}})))}static#e=this.\u0275fac=function(i){return new(i||t)(S(y1))};static#t=this.\u0275prov=P({token:t,factory:t.\u0275fac})}return t})();const r0=new M(""),wR=new M("",{providedIn:"root",factory:()=>"XSRF-TOKEN"}),xR=new M("",{providedIn:"root",factory:()=>"X-XSRF-TOKEN"});class CR{}let j7=(()=>{class t{constructor(e,i,r){this.doc=e,this.platform=i,this.cookieName=r,this.lastCookieString="",this.lastToken=null,this.parseCount=0}getToken(){if("server"===this.platform)return null;const e=this.doc.cookie||"";return e!==this.lastCookieString&&(this.parseCount++,this.lastToken=a1(e,this.cookieName),this.lastCookieString=e),this.lastToken}static#e=this.\u0275fac=function(i){return new(i||t)(S(_e),S(br),S(wR))};static#t=this.\u0275prov=P({token:t,factory:t.\u0275fac})}return t})();function H7(t,n){const e=t.url.toLowerCase();if(!T(r0)||"GET"===t.method||"HEAD"===t.method||e.startsWith("http://")||e.startsWith("https://"))return n(t);const i=T(CR).getToken(),r=T(xR);return null!=i&&!t.headers.has(r)&&(t=t.clone({headers:t.headers.set(r,i)})),n(t)}var Fo=function(t){return t[t.Interceptors=0]="Interceptors",t[t.LegacyInterceptors=1]="LegacyInterceptors",t[t.CustomXsrfConfiguration=2]="CustomXsrfConfiguration",t[t.NoXsrfProtection=3]="NoXsrfProtection",t[t.JsonpSupport=4]="JsonpSupport",t[t.RequestsMadeViaParent=5]="RequestsMadeViaParent",t[t.Fetch=6]="Fetch",t}(Fo||{});function z7(...t){const n=[Am,yR,bR,{provide:Tm,useExisting:bR},{provide:Sm,useExisting:yR},{provide:jd,useValue:H7,multi:!0},{provide:r0,useValue:!0},{provide:CR,useClass:j7}];for(const e of t)n.push(...e.\u0275providers);return function Tl(t){return{\u0275providers:t}}(n)}const DR=new M("");function U7(){return function Is(t,n){return{\u0275kind:t,\u0275providers:n}}(Fo.LegacyInterceptors,[{provide:DR,useFactory:A7},{provide:jd,useExisting:DR,multi:!0}])}let $7=(()=>{class t{static#e=this.\u0275fac=function(i){return new(i||t)};static#t=this.\u0275mod=ge({type:t});static#n=this.\u0275inj=he({providers:[z7(U7())]})}return t})();var Ee=function(t){return t[t.State=0]="State",t[t.Transition=1]="Transition",t[t.Sequence=2]="Sequence",t[t.Group=3]="Group",t[t.Animate=4]="Animate",t[t.Keyframes=5]="Keyframes",t[t.Style=6]="Style",t[t.Trigger=7]="Trigger",t[t.Reference=8]="Reference",t[t.AnimateChild=9]="AnimateChild",t[t.AnimateRef=10]="AnimateRef",t[t.Query=11]="Query",t[t.Stagger=12]="Stagger",t}(Ee||{});const no="*";function Ci(t,n){return{type:Ee.Trigger,name:t,definitions:n,options:{}}}function Kt(t,n=null){return{type:Ee.Animate,styles:n,timings:t}}function K7(t,n=null){return{type:Ee.Group,steps:t,options:n}}function Xe(t){return{type:Ee.Style,styles:t,offset:null}}function rn(t,n,e){return{type:Ee.State,name:t,styles:n,options:e}}function Xt(t,n,e=null){return{type:Ee.Transition,expr:t,animation:n,options:e}}function Z7(t=null){return{type:Ee.AnimateChild,options:t}}function J7(t,n,e=null){return{type:Ee.Query,selector:t,animation:n,options:e}}class Hd{constructor(n=0,e=0){this._onDoneFns=[],this._onStartFns=[],this._onDestroyFns=[],this._originalOnDoneFns=[],this._originalOnStartFns=[],this._started=!1,this._destroyed=!1,this._finished=!1,this._position=0,this.parentPlayer=null,this.totalTime=n+e}_onFinish(){this._finished||(this._finished=!0,this._onDoneFns.forEach(n=>n()),this._onDoneFns=[])}onStart(n){this._originalOnStartFns.push(n),this._onStartFns.push(n)}onDone(n){this._originalOnDoneFns.push(n),this._onDoneFns.push(n)}onDestroy(n){this._onDestroyFns.push(n)}hasStarted(){return this._started}init(){}play(){this.hasStarted()||(this._onStart(),this.triggerMicrotask()),this._started=!0}triggerMicrotask(){queueMicrotask(()=>this._onFinish())}_onStart(){this._onStartFns.forEach(n=>n()),this._onStartFns=[]}pause(){}restart(){}finish(){this._onFinish()}destroy(){this._destroyed||(this._destroyed=!0,this.hasStarted()||this._onStart(),this.finish(),this._onDestroyFns.forEach(n=>n()),this._onDestroyFns=[])}reset(){this._started=!1,this._finished=!1,this._onStartFns=this._originalOnStartFns,this._onDoneFns=this._originalOnDoneFns}setPosition(n){this._position=this.totalTime?n*this.totalTime:1}getPosition(){return this.totalTime?this._position/this.totalTime:1}triggerCallback(n){const e="start"==n?this._onStartFns:this._onDoneFns;e.forEach(i=>i()),e.length=0}}class RR{constructor(n){this._onDoneFns=[],this._onStartFns=[],this._finished=!1,this._started=!1,this._destroyed=!1,this._onDestroyFns=[],this.parentPlayer=null,this.totalTime=0,this.players=n;let e=0,i=0,r=0;const o=this.players.length;0==o?queueMicrotask(()=>this._onFinish()):this.players.forEach(s=>{s.onDone(()=>{++e==o&&this._onFinish()}),s.onDestroy(()=>{++i==o&&this._onDestroy()}),s.onStart(()=>{++r==o&&this._onStart()})}),this.totalTime=this.players.reduce((s,a)=>Math.max(s,a.totalTime),0)}_onFinish(){this._finished||(this._finished=!0,this._onDoneFns.forEach(n=>n()),this._onDoneFns=[])}init(){this.players.forEach(n=>n.init())}onStart(n){this._onStartFns.push(n)}_onStart(){this.hasStarted()||(this._started=!0,this._onStartFns.forEach(n=>n()),this._onStartFns=[])}onDone(n){this._onDoneFns.push(n)}onDestroy(n){this._onDestroyFns.push(n)}hasStarted(){return this._started}play(){this.parentPlayer||this.init(),this._onStart(),this.players.forEach(n=>n.play())}pause(){this.players.forEach(n=>n.pause())}restart(){this.players.forEach(n=>n.restart())}finish(){this._onFinish(),this.players.forEach(n=>n.finish())}destroy(){this._onDestroy()}_onDestroy(){this._destroyed||(this._destroyed=!0,this._onFinish(),this.players.forEach(n=>n.destroy()),this._onDestroyFns.forEach(n=>n()),this._onDestroyFns=[])}reset(){this.players.forEach(n=>n.reset()),this._destroyed=!1,this._finished=!1,this._started=!1}setPosition(n){const e=n*this.totalTime;this.players.forEach(i=>{const r=i.totalTime?Math.min(1,e/i.totalTime):1;i.setPosition(r)})}getPosition(){const n=this.players.reduce((e,i)=>null===e||i.totalTime>e.totalTime?i:e,null);return null!=n?n.getPosition():0}beforeDestroy(){this.players.forEach(n=>{n.beforeDestroy&&n.beforeDestroy()})}triggerCallback(n){const e="start"==n?this._onStartFns:this._onDoneFns;e.forEach(i=>i()),e.length=0}}function OR(t){return new E(3e3,!1)}function Po(t){switch(t.length){case 0:return new Hd;case 1:return t[0];default:return new RR(t)}}function NR(t,n,e=new Map,i=new Map){const r=[],o=[];let s=-1,a=null;if(n.forEach(c=>{const l=c.get("offset"),d=l==s,u=d&&a||new Map;c.forEach((h,f)=>{let m=f,g=h;if("offset"!==f)switch(m=t.normalizePropertyName(m,r),g){case"!":g=e.get(f);break;case no:g=i.get(f);break;default:g=t.normalizeStyleValue(f,m,g,r)}u.set(m,g)}),d||o.push(u),a=u,s=l}),r.length)throw function k9(t){return new E(3502,!1)}();return o}function s0(t,n,e,i){switch(n){case"start":t.onStart(()=>i(e&&a0(e,"start",t)));break;case"done":t.onDone(()=>i(e&&a0(e,"done",t)));break;case"destroy":t.onDestroy(()=>i(e&&a0(e,"destroy",t)))}}function a0(t,n,e){const o=c0(t.element,t.triggerName,t.fromState,t.toState,n||t.phaseName,e.totalTime??t.totalTime,!!e.disabled),s=t._data;return null!=s&&(o._data=s),o}function c0(t,n,e,i,r="",o=0,s){return{element:t,triggerName:n,fromState:e,toState:i,phaseName:r,totalTime:o,disabled:!!s}}function Di(t,n,e){let i=t.get(n);return i||t.set(n,i=e),i}function FR(t){const n=t.indexOf(":");return[t.substring(1,n),t.slice(n+1)]}const V9=typeof document>"u"?null:document.documentElement;function l0(t){const n=t.parentNode||t.host||null;return n===V9?null:n}let As=null,PR=!1;function LR(t,n){for(;n;){if(n===t)return!0;n=l0(n)}return!1}function VR(t,n,e){if(e)return Array.from(t.querySelectorAll(n));const i=t.querySelector(n);return i?[i]:[]}let d0=(()=>{class t{validateStyleProperty(e){return function j9(t){As||(As=function H9(){return typeof document<"u"?document.body:null}()||{},PR=!!As.style&&"WebkitAppearance"in As.style);let n=!0;return As.style&&!function B9(t){return"ebkit"==t.substring(1,6)}(t)&&(n=t in As.style,!n&&PR&&(n="Webkit"+t.charAt(0).toUpperCase()+t.slice(1)in As.style)),n}(e)}matchesElement(e,i){return!1}containsElement(e,i){return LR(e,i)}getParentElement(e){return l0(e)}query(e,i,r){return VR(e,i,r)}computeStyle(e,i,r){return r||""}animate(e,i,r,o,s,a=[],c){return new Hd(r,o)}static#e=this.\u0275fac=function(i){return new(i||t)};static#t=this.\u0275prov=P({token:t,factory:t.\u0275fac})}return t})();class u0{static#e=this.NOOP=new d0}class h0{}const U9=1e3,f0="ng-enter",Om="ng-leave",Nm="ng-trigger",Fm=".ng-trigger",jR="ng-animating",m0=".ng-animating";function io(t){if("number"==typeof t)return t;const n=t.match(/^(-?[\.\d]+)(m?s)/);return!n||n.length<2?0:p0(parseFloat(n[1]),n[2])}function p0(t,n){return"s"===n?t*U9:t}function Pm(t,n,e){return t.hasOwnProperty("duration")?t:function q9(t,n,e){let r,o=0,s="";if("string"==typeof t){const a=t.match(/^(-?[\.\d]+)(m?s)(?:\s+(-?[\.\d]+)(m?s))?(?:\s+([-a-z]+(?:\(.+?\))?))?$/i);if(null===a)return n.push(OR()),{duration:0,delay:0,easing:""};r=p0(parseFloat(a[1]),a[2]);const c=a[3];null!=c&&(o=p0(parseFloat(c),a[4]));const l=a[5];l&&(s=l)}else r=t;if(!e){let a=!1,c=n.length;r<0&&(n.push(function r9(){return new E(3100,!1)}()),a=!0),o<0&&(n.push(function o9(){return new E(3101,!1)}()),a=!0),a&&n.splice(c,0,OR())}return{duration:r,delay:o,easing:s}}(t,n,e)}function Tr(t,n,e){n.forEach((i,r)=>{const o=_0(r);e&&!e.has(r)&&e.set(r,t.style[o]),t.style[o]=i})}function Rs(t,n){n.forEach((e,i)=>{const r=_0(i);t.style[r]=""})}function zd(t){return Array.isArray(t)?1==t.length?t[0]:function X7(t,n=null){return{type:Ee.Sequence,steps:t,options:n}}(t):t}const g0=new RegExp("{{\\s*(.+?)\\s*}}","g");function zR(t){let n=[];if("string"==typeof t){let e;for(;e=g0.exec(t);)n.push(e[1]);g0.lastIndex=0}return n}function Ud(t,n,e){const i=`${t}`,r=i.replace(g0,(o,s)=>{let a=n[s];return null==a&&(e.push(function a9(t){return new E(3003,!1)}()),a=""),a.toString()});return r==i?t:r}const Q9=/-+([a-z0-9])/g;function _0(t){return t.replace(Q9,(...n)=>n[1].toUpperCase())}function Ei(t,n,e){switch(n.type){case Ee.Trigger:return t.visitTrigger(n,e);case Ee.State:return t.visitState(n,e);case Ee.Transition:return t.visitTransition(n,e);case Ee.Sequence:return t.visitSequence(n,e);case Ee.Group:return t.visitGroup(n,e);case Ee.Animate:return t.visitAnimate(n,e);case Ee.Keyframes:return t.visitKeyframes(n,e);case Ee.Style:return t.visitStyle(n,e);case Ee.Reference:return t.visitReference(n,e);case Ee.AnimateChild:return t.visitAnimateChild(n,e);case Ee.AnimateRef:return t.visitAnimateRef(n,e);case Ee.Query:return t.visitQuery(n,e);case Ee.Stagger:return t.visitStagger(n,e);default:throw function c9(t){return new E(3004,!1)}()}}function b0(t,n){return window.getComputedStyle(t)[n]}const X9=new Set(["width","height","minWidth","minHeight","maxWidth","maxHeight","left","top","bottom","right","fontSize","outlineWidth","outlineOffset","paddingTop","paddingLeft","paddingBottom","paddingRight","marginTop","marginLeft","marginBottom","marginRight","borderRadius","borderWidth","borderTopWidth","borderLeftWidth","borderRightWidth","borderBottomWidth","textIndent","perspective"]);class UR extends h0{normalizePropertyName(n,e){return _0(n)}normalizeStyleValue(n,e,i,r){let o="";const s=i.toString().trim();if(X9.has(e)&&0!==i&&"0"!==i)if("number"==typeof i)o="px";else{const a=i.match(/^[+-]?[\d\.]+([a-z]*)$/);a&&0==a[1].length&&r.push(function l9(t,n){return new E(3005,!1)}())}return s+o}}const Lm="*";const Vm=new Set(["true","1"]),Bm=new Set(["false","0"]);function $R(t,n){const e=Vm.has(t)||Bm.has(t),i=Vm.has(n)||Bm.has(n);return(r,o)=>{let s=t==Lm||t==r,a=n==Lm||n==o;return!s&&e&&"boolean"==typeof r&&(s=r?Vm.has(t):Bm.has(t)),!a&&i&&"boolean"==typeof o&&(a=o?Vm.has(n):Bm.has(n)),s&&a}}const tY=new RegExp("s*:selfs*,?","g");function v0(t,n,e,i){return new nY(t).build(n,e,i)}class nY{constructor(n){this._driver=n}build(n,e,i){const r=new oY(e);return this._resetContextStyleTimingState(r),Ei(this,zd(n),r)}_resetContextStyleTimingState(n){n.currentQuerySelector="",n.collectedStyles=new Map,n.collectedStyles.set("",new Map),n.currentTime=0}visitTrigger(n,e){let i=e.queryCount=0,r=e.depCount=0;const o=[],s=[];return"@"==n.name.charAt(0)&&e.errors.push(function d9(){return new E(3006,!1)}()),n.definitions.forEach(a=>{if(this._resetContextStyleTimingState(e),a.type==Ee.State){const c=a,l=c.name;l.toString().split(/\s*,\s*/).forEach(d=>{c.name=d,o.push(this.visitState(c,e))}),c.name=l}else if(a.type==Ee.Transition){const c=this.visitTransition(a,e);i+=c.queryCount,r+=c.depCount,s.push(c)}else e.errors.push(function u9(){return new E(3007,!1)}())}),{type:Ee.Trigger,name:n.name,states:o,transitions:s,queryCount:i,depCount:r,options:null}}visitState(n,e){const i=this.visitStyle(n.styles,e),r=n.options&&n.options.params||null;if(i.containsDynamicStyles){const o=new Set,s=r||{};i.styles.forEach(a=>{a instanceof Map&&a.forEach(c=>{zR(c).forEach(l=>{s.hasOwnProperty(l)||o.add(l)})})}),o.size&&e.errors.push(function h9(t,n){return new E(3008,!1)}(0,o.values()))}return{type:Ee.State,name:n.name,style:i,options:r?{params:r}:null}}visitTransition(n,e){e.queryCount=0,e.depCount=0;const i=Ei(this,zd(n.animation),e),r=function Z9(t,n){const e=[];return"string"==typeof t?t.split(/\s*,\s*/).forEach(i=>function J9(t,n,e){if(":"==t[0]){const c=function eY(t,n){switch(t){case":enter":return"void => *";case":leave":return"* => void";case":increment":return(e,i)=>parseFloat(i)>parseFloat(e);case":decrement":return(e,i)=>parseFloat(i) *"}}(t,e);if("function"==typeof c)return void n.push(c);t=c}const i=t.match(/^(\*|[-\w]+)\s*()\s*(\*|[-\w]+)$/);if(null==i||i.length<4)return e.push(function w9(t){return new E(3015,!1)}()),n;const r=i[1],o=i[2],s=i[3];n.push($R(r,s)),"<"==o[0]&&(r!=Lm||s!=Lm)&&n.push($R(s,r))}(i,e,n)):e.push(t),e}(n.expr,e.errors);return{type:Ee.Transition,matchers:r,animation:i,queryCount:e.queryCount,depCount:e.depCount,options:Os(n.options)}}visitSequence(n,e){return{type:Ee.Sequence,steps:n.steps.map(i=>Ei(this,i,e)),options:Os(n.options)}}visitGroup(n,e){const i=e.currentTime;let r=0;const o=n.steps.map(s=>{e.currentTime=i;const a=Ei(this,s,e);return r=Math.max(r,e.currentTime),a});return e.currentTime=r,{type:Ee.Group,steps:o,options:Os(n.options)}}visitAnimate(n,e){const i=function aY(t,n){if(t.hasOwnProperty("duration"))return t;if("number"==typeof t)return y0(Pm(t,n).duration,0,"");const e=t;if(e.split(/\s+/).some(o=>"{"==o.charAt(0)&&"{"==o.charAt(1))){const o=y0(0,0,"");return o.dynamic=!0,o.strValue=e,o}const r=Pm(e,n);return y0(r.duration,r.delay,r.easing)}(n.timings,e.errors);e.currentAnimateTimings=i;let r,o=n.styles?n.styles:Xe({});if(o.type==Ee.Keyframes)r=this.visitKeyframes(o,e);else{let s=n.styles,a=!1;if(!s){a=!0;const l={};i.easing&&(l.easing=i.easing),s=Xe(l)}e.currentTime+=i.duration+i.delay;const c=this.visitStyle(s,e);c.isEmptyStep=a,r=c}return e.currentAnimateTimings=null,{type:Ee.Animate,timings:i,style:r,options:null}}visitStyle(n,e){const i=this._makeStyleAst(n,e);return this._validateStyleAst(i,e),i}_makeStyleAst(n,e){const i=[],r=Array.isArray(n.styles)?n.styles:[n.styles];for(let a of r)"string"==typeof a?a===no?i.push(a):e.errors.push(new E(3002,!1)):i.push(new Map(Object.entries(a)));let o=!1,s=null;return i.forEach(a=>{if(a instanceof Map&&(a.has("easing")&&(s=a.get("easing"),a.delete("easing")),!o))for(let c of a.values())if(c.toString().indexOf("{{")>=0){o=!0;break}}),{type:Ee.Style,styles:i,easing:s,offset:n.offset,containsDynamicStyles:o,options:null}}_validateStyleAst(n,e){const i=e.currentAnimateTimings;let r=e.currentTime,o=e.currentTime;i&&o>0&&(o-=i.duration+i.delay),n.styles.forEach(s=>{"string"!=typeof s&&s.forEach((a,c)=>{const l=e.collectedStyles.get(e.currentQuerySelector),d=l.get(c);let u=!0;d&&(o!=r&&o>=d.startTime&&r<=d.endTime&&(e.errors.push(function m9(t,n,e,i,r){return new E(3010,!1)}()),u=!1),o=d.startTime),u&&l.set(c,{startTime:o,endTime:r}),e.options&&function W9(t,n,e){const i=n.params||{},r=zR(t);r.length&&r.forEach(o=>{i.hasOwnProperty(o)||e.push(function s9(t){return new E(3001,!1)}())})}(a,e.options,e.errors)})})}visitKeyframes(n,e){const i={type:Ee.Keyframes,styles:[],options:null};if(!e.currentAnimateTimings)return e.errors.push(function p9(){return new E(3011,!1)}()),i;let o=0;const s=[];let a=!1,c=!1,l=0;const d=n.steps.map(b=>{const v=this._makeStyleAst(b,e);let x=null!=v.offset?v.offset:function sY(t){if("string"==typeof t)return null;let n=null;if(Array.isArray(t))t.forEach(e=>{if(e instanceof Map&&e.has("offset")){const i=e;n=parseFloat(i.get("offset")),i.delete("offset")}});else if(t instanceof Map&&t.has("offset")){const e=t;n=parseFloat(e.get("offset")),e.delete("offset")}return n}(v.styles),I=0;return null!=x&&(o++,I=v.offset=x),c=c||I<0||I>1,a=a||I0&&o{const x=h>0?v==f?1:h*v:s[v],I=x*_;e.currentTime=m+g.delay+I,g.duration=I,this._validateStyleAst(b,e),b.offset=x,i.styles.push(b)}),i}visitReference(n,e){return{type:Ee.Reference,animation:Ei(this,zd(n.animation),e),options:Os(n.options)}}visitAnimateChild(n,e){return e.depCount++,{type:Ee.AnimateChild,options:Os(n.options)}}visitAnimateRef(n,e){return{type:Ee.AnimateRef,animation:this.visitReference(n.animation,e),options:Os(n.options)}}visitQuery(n,e){const i=e.currentQuerySelector,r=n.options||{};e.queryCount++,e.currentQuery=n;const[o,s]=function iY(t){const n=!!t.split(/\s*,\s*/).find(e=>":self"==e);return n&&(t=t.replace(tY,"")),t=t.replace(/@\*/g,Fm).replace(/@\w+/g,e=>Fm+"-"+e.slice(1)).replace(/:animating/g,m0),[t,n]}(n.selector);e.currentQuerySelector=i.length?i+" "+o:o,Di(e.collectedStyles,e.currentQuerySelector,new Map);const a=Ei(this,zd(n.animation),e);return e.currentQuery=null,e.currentQuerySelector=i,{type:Ee.Query,selector:o,limit:r.limit||0,optional:!!r.optional,includeSelf:s,animation:a,originalSelector:n.selector,options:Os(n.options)}}visitStagger(n,e){e.currentQuery||e.errors.push(function v9(){return new E(3013,!1)}());const i="full"===n.timings?{duration:0,delay:0,easing:"full"}:Pm(n.timings,e.errors,!0);return{type:Ee.Stagger,animation:Ei(this,zd(n.animation),e),timings:i,options:null}}}class oY{constructor(n){this.errors=n,this.queryCount=0,this.depCount=0,this.currentTransition=null,this.currentQuery=null,this.currentQuerySelector=null,this.currentAnimateTimings=null,this.currentTime=0,this.collectedStyles=new Map,this.options=null,this.unsupportedCSSPropertiesFound=new Set}}function Os(t){return t?(t={...t}).params&&(t.params=function rY(t){return t?{...t}:null}(t.params)):t={},t}function y0(t,n,e){return{duration:t,delay:n,easing:e}}function w0(t,n,e,i,r,o,s=null,a=!1){return{type:1,element:t,keyframes:n,preStyleProps:e,postStyleProps:i,duration:r,delay:o,totalTime:r+o,easing:s,subTimeline:a}}class jm{constructor(){this._map=new Map}get(n){return this._map.get(n)||[]}append(n,e){let i=this._map.get(n);i||this._map.set(n,i=[]),i.push(...e)}has(n){return this._map.has(n)}clear(){this._map.clear()}}const dY=new RegExp(":enter","g"),hY=new RegExp(":leave","g");function x0(t,n,e,i,r,o=new Map,s=new Map,a,c,l=[]){return(new fY).buildKeyframes(t,n,e,i,r,o,s,a,c,l)}class fY{buildKeyframes(n,e,i,r,o,s,a,c,l,d=[]){l=l||new jm;const u=new C0(n,e,l,r,o,d,[]);u.options=c;const h=c.delay?io(c.delay):0;u.currentTimeline.delayNextStep(h),u.currentTimeline.setStyles([s],null,u.errors,c),Ei(this,i,u);const f=u.timelines.filter(m=>m.containsAnimation());if(f.length&&a.size){let m;for(let g=f.length-1;g>=0;g--){const _=f[g];if(_.element===e){m=_;break}}m&&!m.allowOnlyTimelineStyles()&&m.setStyles([a],null,u.errors,c)}return f.length?f.map(m=>m.buildKeyframes()):[w0(e,[],[],[],0,h,"",!1)]}visitTrigger(n,e){}visitState(n,e){}visitTransition(n,e){}visitAnimateChild(n,e){const i=e.subInstructions.get(e.element);if(i){const r=e.createSubContext(n.options),o=e.currentTimeline.currentTime,s=this._visitSubInstructions(i,r,r.options);o!=s&&e.transformIntoNewTimeline(s)}e.previousNode=n}visitAnimateRef(n,e){const i=e.createSubContext(n.options);i.transformIntoNewTimeline(),this._applyAnimationRefDelays([n.options,n.animation.options],e,i),this.visitReference(n.animation,i),e.transformIntoNewTimeline(i.currentTimeline.currentTime),e.previousNode=n}_applyAnimationRefDelays(n,e,i){for(const r of n){const o=r?.delay;if(o){const s="number"==typeof o?o:io(Ud(o,r?.params??{},e.errors));i.delayNextStep(s)}}}_visitSubInstructions(n,e,i){let o=e.currentTimeline.currentTime;const s=null!=i.duration?io(i.duration):null,a=null!=i.delay?io(i.delay):null;return 0!==s&&n.forEach(c=>{const l=e.appendInstructionToTimeline(c,s,a);o=Math.max(o,l.duration+l.delay)}),o}visitReference(n,e){e.updateOptions(n.options,!0),Ei(this,n.animation,e),e.previousNode=n}visitSequence(n,e){const i=e.subContextCount;let r=e;const o=n.options;if(o&&(o.params||o.delay)&&(r=e.createSubContext(o),r.transformIntoNewTimeline(),null!=o.delay)){r.previousNode.type==Ee.Style&&(r.currentTimeline.snapshotCurrentStyles(),r.previousNode=Hm);const s=io(o.delay);r.delayNextStep(s)}n.steps.length&&(n.steps.forEach(s=>Ei(this,s,r)),r.currentTimeline.applyStylesToKeyframe(),r.subContextCount>i&&r.transformIntoNewTimeline()),e.previousNode=n}visitGroup(n,e){const i=[];let r=e.currentTimeline.currentTime;const o=n.options&&n.options.delay?io(n.options.delay):0;n.steps.forEach(s=>{const a=e.createSubContext(n.options);o&&a.delayNextStep(o),Ei(this,s,a),r=Math.max(r,a.currentTimeline.currentTime),i.push(a.currentTimeline)}),i.forEach(s=>e.currentTimeline.mergeTimelineCollectedStyles(s)),e.transformIntoNewTimeline(r),e.previousNode=n}_visitTiming(n,e){if(n.dynamic){const i=n.strValue;return Pm(e.params?Ud(i,e.params,e.errors):i,e.errors)}return{duration:n.duration,delay:n.delay,easing:n.easing}}visitAnimate(n,e){const i=e.currentAnimateTimings=this._visitTiming(n.timings,e),r=e.currentTimeline;i.delay&&(e.incrementTime(i.delay),r.snapshotCurrentStyles());const o=n.style;o.type==Ee.Keyframes?this.visitKeyframes(o,e):(e.incrementTime(i.duration),this.visitStyle(o,e),r.applyStylesToKeyframe()),e.currentAnimateTimings=null,e.previousNode=n}visitStyle(n,e){const i=e.currentTimeline,r=e.currentAnimateTimings;!r&&i.hasCurrentStyleProperties()&&i.forwardFrame();const o=r&&r.easing||n.easing;n.isEmptyStep?i.applyEmptyStep(o):i.setStyles(n.styles,o,e.errors,e.options),e.previousNode=n}visitKeyframes(n,e){const i=e.currentAnimateTimings,r=e.currentTimeline.duration,o=i.duration,a=e.createSubContext().currentTimeline;a.easing=i.easing,n.styles.forEach(c=>{a.forwardTime((c.offset||0)*o),a.setStyles(c.styles,c.easing,e.errors,e.options),a.applyStylesToKeyframe()}),e.currentTimeline.mergeTimelineCollectedStyles(a),e.transformIntoNewTimeline(r+o),e.previousNode=n}visitQuery(n,e){const i=e.currentTimeline.currentTime,r=n.options||{},o=r.delay?io(r.delay):0;o&&(e.previousNode.type===Ee.Style||0==i&&e.currentTimeline.hasCurrentStyleProperties())&&(e.currentTimeline.snapshotCurrentStyles(),e.previousNode=Hm);let s=i;const a=e.invokeQuery(n.selector,n.originalSelector,n.limit,n.includeSelf,!!r.optional,e.errors);e.currentQueryTotal=a.length;let c=null;a.forEach((l,d)=>{e.currentQueryIndex=d;const u=e.createSubContext(n.options,l);o&&u.delayNextStep(o),l===e.element&&(c=u.currentTimeline),Ei(this,n.animation,u),u.currentTimeline.applyStylesToKeyframe(),s=Math.max(s,u.currentTimeline.currentTime)}),e.currentQueryIndex=0,e.currentQueryTotal=0,e.transformIntoNewTimeline(s),c&&(e.currentTimeline.mergeTimelineCollectedStyles(c),e.currentTimeline.snapshotCurrentStyles()),e.previousNode=n}visitStagger(n,e){const i=e.parentContext,r=e.currentTimeline,o=n.timings,s=Math.abs(o.duration),a=s*(e.currentQueryTotal-1);let c=s*e.currentQueryIndex;switch(o.duration<0?"reverse":o.easing){case"reverse":c=a-c;break;case"full":c=i.currentStaggerTime}const d=e.currentTimeline;c&&d.delayNextStep(c);const u=d.currentTime;Ei(this,n.animation,e),e.previousNode=n,i.currentStaggerTime=r.currentTime-u+(r.startTime-i.currentTimeline.startTime)}}const Hm={};class C0{constructor(n,e,i,r,o,s,a,c){this._driver=n,this.element=e,this.subInstructions=i,this._enterClassName=r,this._leaveClassName=o,this.errors=s,this.timelines=a,this.parentContext=null,this.currentAnimateTimings=null,this.previousNode=Hm,this.subContextCount=0,this.options={},this.currentQueryIndex=0,this.currentQueryTotal=0,this.currentStaggerTime=0,this.currentTimeline=c||new zm(this._driver,e,0),a.push(this.currentTimeline)}get params(){return this.options.params}updateOptions(n,e){if(!n)return;const i=n;let r=this.options;null!=i.duration&&(r.duration=io(i.duration)),null!=i.delay&&(r.delay=io(i.delay));const o=i.params;if(o){let s=r.params;s||(s=this.options.params={}),Object.keys(o).forEach(a=>{(!e||!s.hasOwnProperty(a))&&(s[a]=Ud(o[a],s,this.errors))})}}_copyOptions(){const n={};if(this.options){const e=this.options.params;if(e){const i=n.params={};Object.keys(e).forEach(r=>{i[r]=e[r]})}}return n}createSubContext(n=null,e,i){const r=e||this.element,o=new C0(this._driver,r,this.subInstructions,this._enterClassName,this._leaveClassName,this.errors,this.timelines,this.currentTimeline.fork(r,i||0));return o.previousNode=this.previousNode,o.currentAnimateTimings=this.currentAnimateTimings,o.options=this._copyOptions(),o.updateOptions(n),o.currentQueryIndex=this.currentQueryIndex,o.currentQueryTotal=this.currentQueryTotal,o.parentContext=this,this.subContextCount++,o}transformIntoNewTimeline(n){return this.previousNode=Hm,this.currentTimeline=this.currentTimeline.fork(this.element,n),this.timelines.push(this.currentTimeline),this.currentTimeline}appendInstructionToTimeline(n,e,i){const r={duration:e??n.duration,delay:this.currentTimeline.currentTime+(i??0)+n.delay,easing:""},o=new mY(this._driver,n.element,n.keyframes,n.preStyleProps,n.postStyleProps,r,n.stretchStartingKeyframe);return this.timelines.push(o),r}incrementTime(n){this.currentTimeline.forwardTime(this.currentTimeline.duration+n)}delayNextStep(n){n>0&&this.currentTimeline.delayNextStep(n)}invokeQuery(n,e,i,r,o,s){let a=[];if(r&&a.push(this.element),n.length>0){n=(n=n.replace(dY,"."+this._enterClassName)).replace(hY,"."+this._leaveClassName);let l=this._driver.query(this.element,n,1!=i);0!==i&&(l=i<0?l.slice(l.length+i,l.length):l.slice(0,i)),a.push(...l)}return!o&&0==a.length&&s.push(function y9(t){return new E(3014,!1)}()),a}}class zm{constructor(n,e,i,r){this._driver=n,this.element=e,this.startTime=i,this._elementTimelineStylesLookup=r,this.duration=0,this.easing=null,this._previousKeyframe=new Map,this._currentKeyframe=new Map,this._keyframes=new Map,this._styleSummary=new Map,this._localTimelineStyles=new Map,this._pendingStyles=new Map,this._backFill=new Map,this._currentEmptyStepKeyframe=null,this._elementTimelineStylesLookup||(this._elementTimelineStylesLookup=new Map),this._globalTimelineStyles=this._elementTimelineStylesLookup.get(e),this._globalTimelineStyles||(this._globalTimelineStyles=this._localTimelineStyles,this._elementTimelineStylesLookup.set(e,this._localTimelineStyles)),this._loadKeyframe()}containsAnimation(){switch(this._keyframes.size){case 0:return!1;case 1:return this.hasCurrentStyleProperties();default:return!0}}hasCurrentStyleProperties(){return this._currentKeyframe.size>0}get currentTime(){return this.startTime+this.duration}delayNextStep(n){const e=1===this._keyframes.size&&this._pendingStyles.size;this.duration||e?(this.forwardTime(this.currentTime+n),e&&this.snapshotCurrentStyles()):this.startTime+=n}fork(n,e){return this.applyStylesToKeyframe(),new zm(this._driver,n,e||this.currentTime,this._elementTimelineStylesLookup)}_loadKeyframe(){this._currentKeyframe&&(this._previousKeyframe=this._currentKeyframe),this._currentKeyframe=this._keyframes.get(this.duration),this._currentKeyframe||(this._currentKeyframe=new Map,this._keyframes.set(this.duration,this._currentKeyframe))}forwardFrame(){this.duration+=1,this._loadKeyframe()}forwardTime(n){this.applyStylesToKeyframe(),this.duration=n,this._loadKeyframe()}_updateStyle(n,e){this._localTimelineStyles.set(n,e),this._globalTimelineStyles.set(n,e),this._styleSummary.set(n,{time:this.currentTime,value:e})}allowOnlyTimelineStyles(){return this._currentEmptyStepKeyframe!==this._currentKeyframe}applyEmptyStep(n){n&&this._previousKeyframe.set("easing",n);for(let[e,i]of this._globalTimelineStyles)this._backFill.set(e,i||no),this._currentKeyframe.set(e,no);this._currentEmptyStepKeyframe=this._currentKeyframe}setStyles(n,e,i,r){e&&this._previousKeyframe.set("easing",e);const o=r&&r.params||{},s=function pY(t,n){const e=new Map;let i;return t.forEach(r=>{if("*"===r){i??=n.keys();for(let o of i)e.set(o,no)}else for(let[o,s]of r)e.set(o,s)}),e}(n,this._globalTimelineStyles);for(let[a,c]of s){const l=Ud(c,o,i);this._pendingStyles.set(a,l),this._localTimelineStyles.has(a)||this._backFill.set(a,this._globalTimelineStyles.get(a)??no),this._updateStyle(a,l)}}applyStylesToKeyframe(){0!=this._pendingStyles.size&&(this._pendingStyles.forEach((n,e)=>{this._currentKeyframe.set(e,n)}),this._pendingStyles.clear(),this._localTimelineStyles.forEach((n,e)=>{this._currentKeyframe.has(e)||this._currentKeyframe.set(e,n)}))}snapshotCurrentStyles(){for(let[n,e]of this._localTimelineStyles)this._pendingStyles.set(n,e),this._updateStyle(n,e)}getFinalKeyframe(){return this._keyframes.get(this.duration)}get properties(){const n=[];for(let e in this._currentKeyframe)n.push(e);return n}mergeTimelineCollectedStyles(n){n._styleSummary.forEach((e,i)=>{const r=this._styleSummary.get(i);(!r||e.time>r.time)&&this._updateStyle(i,e.value)})}buildKeyframes(){this.applyStylesToKeyframe();const n=new Set,e=new Set,i=1===this._keyframes.size&&0===this.duration;let r=[];this._keyframes.forEach((a,c)=>{const l=new Map([...this._backFill,...a]);l.forEach((d,u)=>{"!"===d?n.add(u):d===no&&e.add(u)}),i||l.set("offset",c/this.duration),r.push(l)});const o=[...n.values()],s=[...e.values()];if(i){const a=r[0],c=new Map(a);a.set("offset",0),c.set("offset",1),r=[a,c]}return w0(this.element,r,o,s,this.duration,this.startTime,this.easing,!1)}}class mY extends zm{constructor(n,e,i,r,o,s,a=!1){super(n,e,s.delay),this.keyframes=i,this.preStyleProps=r,this.postStyleProps=o,this._stretchStartingKeyframe=a,this.timings={duration:s.duration,delay:s.delay,easing:s.easing}}containsAnimation(){return this.keyframes.length>1}buildKeyframes(){let n=this.keyframes,{delay:e,duration:i,easing:r}=this.timings;if(this._stretchStartingKeyframe&&e){const o=[],s=i+e,a=e/s,c=new Map(n[0]);c.set("offset",0),o.push(c);const l=new Map(n[0]);l.set("offset",WR(a)),o.push(l);const d=n.length-1;for(let u=1;u<=d;u++){let h=new Map(n[u]);const f=h.get("offset");h.set("offset",WR((e+f*i)/s)),o.push(h)}i=s,e=0,r="",n=o}return w0(this.element,n,this.preStyleProps,this.postStyleProps,i,e,r,!0)}}function WR(t,n=3){const e=Math.pow(10,n-1);return Math.round(t*e)/e}function QR(t,n,e,i,r,o,s,a,c,l,d,u,h){return{type:0,element:t,triggerName:n,isRemovalTransition:r,fromState:e,fromStyles:o,toState:i,toStyles:s,timelines:a,queriedElements:c,preStyleProps:l,postStyleProps:d,totalTime:u,errors:h}}const D0={};class YR{constructor(n,e,i){this._triggerName=n,this.ast=e,this._stateStyles=i}match(n,e,i,r){return function gY(t,n,e,i,r){return t.some(o=>o(n,e,i,r))}(this.ast.matchers,n,e,i,r)}buildStyles(n,e,i){let r=this._stateStyles.get("*");return void 0!==n&&(r=this._stateStyles.get(n?.toString())||r),r?r.buildStyles(e,i):new Map}build(n,e,i,r,o,s,a,c,l,d){const u=[],h=this.ast.options&&this.ast.options.params||D0,m=this.buildStyles(i,a&&a.params||D0,u),g=c&&c.params||D0,_=this.buildStyles(r,g,u),b=new Set,v=new Map,x=new Map,I="void"===r,N={params:KR(g,h),delay:this.ast.options?.delay},V=d?[]:x0(n,e,this.ast.animation,o,s,m,_,N,l,u);let Q=0;return V.forEach(le=>{Q=Math.max(le.duration+le.delay,Q)}),u.length?QR(e,this._triggerName,i,r,I,m,_,[],[],v,x,Q,u):(V.forEach(le=>{const je=le.element,ot=Di(v,je,new Set);le.preStyleProps.forEach(hi=>ot.add(hi));const mo=Di(x,je,new Set);le.postStyleProps.forEach(hi=>mo.add(hi)),je!==e&&b.add(je)}),QR(e,this._triggerName,i,r,I,m,_,V,[...b.values()],v,x,Q))}}function KR(t,n){const e={...n};return Object.entries(t).forEach(([i,r])=>{null!=r&&(e[i]=r)}),e}class _Y{constructor(n,e,i){this.styles=n,this.defaultParams=e,this.normalizer=i}buildStyles(n,e){const i=new Map,r=KR(n,this.defaultParams);return this.styles.styles.forEach(o=>{"string"!=typeof o&&o.forEach((s,a)=>{s&&(s=Ud(s,r,e));const c=this.normalizer.normalizePropertyName(a,e);s=this.normalizer.normalizeStyleValue(a,c,s,e),i.set(a,s)})}),i}}class vY{constructor(n,e,i){this.name=n,this.ast=e,this._normalizer=i,this.transitionFactories=[],this.states=new Map,e.states.forEach(r=>{this.states.set(r.name,new _Y(r.style,r.options&&r.options.params||{},i))}),XR(this.states,"true","1"),XR(this.states,"false","0"),e.transitions.forEach(r=>{this.transitionFactories.push(new YR(n,r,this.states))}),this.fallbackTransition=function yY(t,n,e){return new YR(t,{type:Ee.Transition,animation:{type:Ee.Sequence,steps:[],options:null},matchers:[(s,a)=>!0],options:null,queryCount:0,depCount:0},n)}(n,this.states)}get containsQueries(){return this.ast.queryCount>0}matchTransition(n,e,i,r){return this.transitionFactories.find(s=>s.match(n,e,i,r))||null}matchStyles(n,e,i){return this.fallbackTransition.buildStyles(n,e,i)}}function XR(t,n,e){t.has(n)?t.has(e)||t.set(e,t.get(n)):t.has(e)&&t.set(n,t.get(e))}const wY=new jm;class xY{constructor(n,e,i){this.bodyNode=n,this._driver=e,this._normalizer=i,this._animations=new Map,this._playersById=new Map,this.players=[]}register(n,e){const i=[],o=v0(this._driver,e,i,[]);if(i.length)throw function T9(t){return new E(3503,!1)}();this._animations.set(n,o)}_buildPlayer(n,e,i){const r=n.element,o=NR(this._normalizer,n.keyframes,e,i);return this._driver.animate(r,o,n.duration,n.delay,n.easing,[],!0)}create(n,e,i={}){const r=[],o=this._animations.get(n);let s;const a=new Map;if(o?(s=x0(this._driver,e,o,f0,Om,new Map,new Map,i,wY,r),s.forEach(d=>{const u=Di(a,d.element,new Map);d.postStyleProps.forEach(h=>u.set(h,null))})):(r.push(function S9(){return new E(3300,!1)}()),s=[]),r.length)throw function M9(t){return new E(3504,!1)}();a.forEach((d,u)=>{d.forEach((h,f)=>{d.set(f,this._driver.computeStyle(u,f,no))})});const l=Po(s.map(d=>{const u=a.get(d.element);return this._buildPlayer(d,new Map,u)}));return this._playersById.set(n,l),l.onDestroy(()=>this.destroy(n)),this.players.push(l),l}destroy(n){const e=this._getPlayer(n);e.destroy(),this._playersById.delete(n);const i=this.players.indexOf(e);i>=0&&this.players.splice(i,1)}_getPlayer(n){const e=this._playersById.get(n);if(!e)throw function I9(t){return new E(3301,!1)}();return e}listen(n,e,i,r){const o=c0(e,"","","");return s0(this._getPlayer(n),i,o,r),()=>{}}command(n,e,i,r){if("register"==i)return void this.register(n,r[0]);if("create"==i)return void this.create(n,e,r[0]||{});const o=this._getPlayer(n);switch(i){case"play":o.play();break;case"pause":o.pause();break;case"reset":o.reset();break;case"restart":o.restart();break;case"finish":o.finish();break;case"init":o.init();break;case"setPosition":o.setPosition(parseFloat(r[0]));break;case"destroy":this.destroy(n)}}}const ZR="ng-animate-queued",E0="ng-animate-disabled",TY=[],JR={namespaceId:"",setForRemoval:!1,setForMove:!1,hasAnimation:!1,removedBeforeQueried:!1},SY={namespaceId:"",setForMove:!1,setForRemoval:!1,hasAnimation:!1,removedBeforeQueried:!0},tr="__ng_removed";class k0{get params(){return this.options.params}constructor(n,e=""){this.namespaceId=e;const i=n&&n.hasOwnProperty("value");if(this.value=function RY(t){return t??null}(i?n.value:n),i){const{value:o,...s}=n;this.options=s}else this.options={};this.options.params||(this.options.params={})}absorbOptions(n){const e=n.params;if(e){const i=this.options.params;Object.keys(e).forEach(r=>{null==i[r]&&(i[r]=e[r])})}}}const $d="void",T0=new k0($d);class MY{constructor(n,e,i){this.id=n,this.hostElement=e,this._engine=i,this.players=[],this._triggers=new Map,this._queue=[],this._elementListeners=new Map,this._hostClassName="ng-tns-"+n,Li(e,this._hostClassName)}listen(n,e,i,r){if(!this._triggers.has(e))throw function A9(t,n){return new E(3302,!1)}();if(null==i||0==i.length)throw function R9(t){return new E(3303,!1)}();if(!function OY(t){return"start"==t||"done"==t}(i))throw function O9(t,n){return new E(3400,!1)}();const o=Di(this._elementListeners,n,[]),s={name:e,phase:i,callback:r};o.push(s);const a=Di(this._engine.statesByElement,n,new Map);return a.has(e)||(Li(n,Nm),Li(n,Nm+"-"+e),a.set(e,T0)),()=>{this._engine.afterFlush(()=>{const c=o.indexOf(s);c>=0&&o.splice(c,1),this._triggers.has(e)||a.delete(e)})}}register(n,e){return!this._triggers.has(n)&&(this._triggers.set(n,e),!0)}_getTrigger(n){const e=this._triggers.get(n);if(!e)throw function N9(t){return new E(3401,!1)}();return e}trigger(n,e,i,r=!0){const o=this._getTrigger(e),s=new S0(this.id,e,n);let a=this._engine.statesByElement.get(n);a||(Li(n,Nm),Li(n,Nm+"-"+e),this._engine.statesByElement.set(n,a=new Map));let c=a.get(e);const l=new k0(i,this.id);if(!(i&&i.hasOwnProperty("value"))&&c&&l.absorbOptions(c.options),a.set(e,l),c||(c=T0),l.value!==$d&&c.value===l.value){if(!function PY(t,n){const e=Object.keys(t),i=Object.keys(n);if(e.length!=i.length)return!1;for(let r=0;r{Rs(n,_),Tr(n,b)})}return}const h=Di(this._engine.playersByElement,n,[]);h.forEach(g=>{g.namespaceId==this.id&&g.triggerName==e&&g.queued&&g.destroy()});let f=o.matchTransition(c.value,l.value,n,l.params),m=!1;if(!f){if(!r)return;f=o.fallbackTransition,m=!0}return this._engine.totalQueuedPlayers++,this._queue.push({element:n,triggerName:e,transition:f,fromState:c,toState:l,player:s,isFallbackTransition:m}),m||(Li(n,ZR),s.onStart(()=>{bc(n,ZR)})),s.onDone(()=>{let g=this.players.indexOf(s);g>=0&&this.players.splice(g,1);const _=this._engine.playersByElement.get(n);if(_){let b=_.indexOf(s);b>=0&&_.splice(b,1)}}),this.players.push(s),h.push(s),s}deregister(n){this._triggers.delete(n),this._engine.statesByElement.forEach(e=>e.delete(n)),this._elementListeners.forEach((e,i)=>{this._elementListeners.set(i,e.filter(r=>r.name!=n))})}clearElementCache(n){this._engine.statesByElement.delete(n),this._elementListeners.delete(n);const e=this._engine.playersByElement.get(n);e&&(e.forEach(i=>i.destroy()),this._engine.playersByElement.delete(n))}_signalRemovalForInnerTriggers(n,e){const i=this._engine.driver.query(n,Fm,!0);i.forEach(r=>{if(r[tr])return;const o=this._engine.fetchNamespacesByElement(r);o.size?o.forEach(s=>s.triggerLeaveAnimation(r,e,!1,!0)):this.clearElementCache(r)}),this._engine.afterFlushAnimationsDone(()=>i.forEach(r=>this.clearElementCache(r)))}triggerLeaveAnimation(n,e,i,r){const o=this._engine.statesByElement.get(n),s=new Map;if(o){const a=[];if(o.forEach((c,l)=>{if(s.set(l,c.value),this._triggers.has(l)){const d=this.trigger(n,l,$d,r);d&&a.push(d)}}),a.length)return this._engine.markElementAsRemoved(this.id,n,!0,e,s),i&&Po(a).onDone(()=>this._engine.processLeaveNode(n)),!0}return!1}prepareLeaveAnimationListeners(n){const e=this._elementListeners.get(n),i=this._engine.statesByElement.get(n);if(e&&i){const r=new Set;e.forEach(o=>{const s=o.name;if(r.has(s))return;r.add(s);const c=this._triggers.get(s).fallbackTransition,l=i.get(s)||T0,d=new k0($d),u=new S0(this.id,s,n);this._engine.totalQueuedPlayers++,this._queue.push({element:n,triggerName:s,transition:c,fromState:l,toState:d,player:u,isFallbackTransition:!0})})}}removeNode(n,e){const i=this._engine;if(n.childElementCount&&this._signalRemovalForInnerTriggers(n,e),this.triggerLeaveAnimation(n,e,!0))return;let r=!1;if(i.totalAnimations){const o=i.players.length?i.playersByQueriedElement.get(n):[];if(o&&o.length)r=!0;else{let s=n;for(;s=s.parentNode;)if(i.statesByElement.get(s)){r=!0;break}}}if(this.prepareLeaveAnimationListeners(n),r)i.markElementAsRemoved(this.id,n,!1,e);else{const o=n[tr];(!o||o===JR)&&(i.afterFlush(()=>this.clearElementCache(n)),i.destroyInnerAnimations(n),i._onRemovalComplete(n,e))}}insertNode(n,e){Li(n,this._hostClassName)}drainQueuedTransitions(n){const e=[];return this._queue.forEach(i=>{const r=i.player;if(r.destroyed)return;const o=i.element,s=this._elementListeners.get(o);s&&s.forEach(a=>{if(a.name==i.triggerName){const c=c0(o,i.triggerName,i.fromState.value,i.toState.value);c._data=n,s0(i.player,a.phase,c,a.callback)}}),r.markedForDestroy?this._engine.afterFlush(()=>{r.destroy()}):e.push(i)}),this._queue=[],e.sort((i,r)=>{const o=i.transition.ast.depCount,s=r.transition.ast.depCount;return 0==o||0==s?o-s:this._engine.driver.containsElement(i.element,r.element)?1:-1})}destroy(n){this.players.forEach(e=>e.destroy()),this._signalRemovalForInnerTriggers(this.hostElement,n)}}class IY{_onRemovalComplete(n,e){this.onRemovalComplete(n,e)}constructor(n,e,i,r){this.bodyNode=n,this.driver=e,this._normalizer=i,this.scheduler=r,this.players=[],this.newHostElements=new Map,this.playersByElement=new Map,this.playersByQueriedElement=new Map,this.statesByElement=new Map,this.disabledNodes=new Set,this.totalAnimations=0,this.totalQueuedPlayers=0,this._namespaceLookup={},this._namespaceList=[],this._flushFns=[],this._whenQuietFns=[],this.namespacesByHostElement=new Map,this.collectedEnterElements=[],this.collectedLeaveElements=[],this.onRemovalComplete=(o,s)=>{}}get queuedPlayers(){const n=[];return this._namespaceList.forEach(e=>{e.players.forEach(i=>{i.queued&&n.push(i)})}),n}createNamespace(n,e){const i=new MY(n,e,this);return this.bodyNode&&this.driver.containsElement(this.bodyNode,e)?this._balanceNamespaceList(i,e):(this.newHostElements.set(e,i),this.collectEnterElement(e)),this._namespaceLookup[n]=i}_balanceNamespaceList(n,e){const i=this._namespaceList,r=this.namespacesByHostElement;if(i.length-1>=0){let s=!1,a=this.driver.getParentElement(e);for(;a;){const c=r.get(a);if(c){const l=i.indexOf(c);i.splice(l+1,0,n),s=!0;break}a=this.driver.getParentElement(a)}s||i.unshift(n)}else i.push(n);return r.set(e,n),n}register(n,e){let i=this._namespaceLookup[n];return i||(i=this.createNamespace(n,e)),i}registerTrigger(n,e,i){let r=this._namespaceLookup[n];r&&r.register(e,i)&&this.totalAnimations++}destroy(n,e){n&&(this.afterFlush(()=>{}),this.afterFlushAnimationsDone(()=>{const i=this._fetchNamespace(n);this.namespacesByHostElement.delete(i.hostElement);const r=this._namespaceList.indexOf(i);r>=0&&this._namespaceList.splice(r,1),i.destroy(e),delete this._namespaceLookup[n]}))}_fetchNamespace(n){return this._namespaceLookup[n]}fetchNamespacesByElement(n){const e=new Set,i=this.statesByElement.get(n);if(i)for(let r of i.values())if(r.namespaceId){const o=this._fetchNamespace(r.namespaceId);o&&e.add(o)}return e}trigger(n,e,i,r){if(Um(e)){const o=this._fetchNamespace(n);if(o)return o.trigger(e,i,r),!0}return!1}insertNode(n,e,i,r){if(!Um(e))return;const o=e[tr];if(o&&o.setForRemoval){o.setForRemoval=!1,o.setForMove=!0;const s=this.collectedLeaveElements.indexOf(e);s>=0&&this.collectedLeaveElements.splice(s,1)}if(n){const s=this._fetchNamespace(n);s&&s.insertNode(e,i)}r&&this.collectEnterElement(e)}collectEnterElement(n){this.collectedEnterElements.push(n)}markElementAsDisabled(n,e){e?this.disabledNodes.has(n)||(this.disabledNodes.add(n),Li(n,E0)):this.disabledNodes.has(n)&&(this.disabledNodes.delete(n),bc(n,E0))}removeNode(n,e,i){if(Um(e)){this.scheduler?.notify();const r=n?this._fetchNamespace(n):null;r?r.removeNode(e,i):this.markElementAsRemoved(n,e,!1,i);const o=this.namespacesByHostElement.get(e);o&&o.id!==n&&o.removeNode(e,i)}else this._onRemovalComplete(e,i)}markElementAsRemoved(n,e,i,r,o){this.collectedLeaveElements.push(e),e[tr]={namespaceId:n,setForRemoval:r,hasAnimation:i,removedBeforeQueried:!1,previousTriggersValues:o}}listen(n,e,i,r,o){return Um(e)?this._fetchNamespace(n).listen(e,i,r,o):()=>{}}_buildInstruction(n,e,i,r,o){return n.transition.build(this.driver,n.element,n.fromState.value,n.toState.value,i,r,n.fromState.options,n.toState.options,e,o)}destroyInnerAnimations(n){let e=this.driver.query(n,Fm,!0);e.forEach(i=>this.destroyActiveAnimationsForElement(i)),0!=this.playersByQueriedElement.size&&(e=this.driver.query(n,m0,!0),e.forEach(i=>this.finishActiveQueriedAnimationOnElement(i)))}destroyActiveAnimationsForElement(n){const e=this.playersByElement.get(n);e&&e.forEach(i=>{i.queued?i.markedForDestroy=!0:i.destroy()})}finishActiveQueriedAnimationOnElement(n){const e=this.playersByQueriedElement.get(n);e&&e.forEach(i=>i.finish())}whenRenderingDone(){return new Promise(n=>{if(this.players.length)return Po(this.players).onDone(()=>n());n()})}processLeaveNode(n){const e=n[tr];if(e&&e.setForRemoval){if(n[tr]=JR,e.namespaceId){this.destroyInnerAnimations(n);const i=this._fetchNamespace(e.namespaceId);i&&i.clearElementCache(n)}this._onRemovalComplete(n,e.setForRemoval)}n.classList?.contains(E0)&&this.markElementAsDisabled(n,!1),this.driver.query(n,".ng-animate-disabled",!0).forEach(i=>{this.markElementAsDisabled(i,!1)})}flush(n=-1){let e=[];if(this.newHostElements.size&&(this.newHostElements.forEach((i,r)=>this._balanceNamespaceList(i,r)),this.newHostElements.clear()),this.totalAnimations&&this.collectedEnterElements.length)for(let i=0;ii()),this._flushFns=[],this._whenQuietFns.length){const i=this._whenQuietFns;this._whenQuietFns=[],e.length?Po(e).onDone(()=>{i.forEach(r=>r())}):i.forEach(r=>r())}}reportError(n){throw function F9(t){return new E(3402,!1)}()}_flushAnimations(n,e){const i=new jm,r=[],o=new Map,s=[],a=new Map,c=new Map,l=new Map,d=new Set;this.disabledNodes.forEach(oe=>{d.add(oe);const be=this.driver.query(oe,".ng-animate-queued",!0);for(let ye=0;ye{const ye=f0+g++;m.set(be,ye),oe.forEach(Se=>Li(Se,ye))});const _=[],b=new Set,v=new Set;for(let oe=0;oeb.add(Se)):v.add(be))}const x=new Map,I=nO(h,Array.from(b));I.forEach((oe,be)=>{const ye=Om+g++;x.set(be,ye),oe.forEach(Se=>Li(Se,ye))}),n.push(()=>{f.forEach((oe,be)=>{const ye=m.get(be);oe.forEach(Se=>bc(Se,ye))}),I.forEach((oe,be)=>{const ye=x.get(be);oe.forEach(Se=>bc(Se,ye))}),_.forEach(oe=>{this.processLeaveNode(oe)})});const N=[],V=[];for(let oe=this._namespaceList.length-1;oe>=0;oe--)this._namespaceList[oe].drainQueuedTransitions(e).forEach(ye=>{const Se=ye.player,cn=ye.element;if(N.push(Se),this.collectedEnterElements.length){const Un=cn[tr];if(Un&&Un.setForMove){if(Un.previousTriggersValues&&Un.previousTriggersValues.has(ye.triggerName)){const ea=Un.previousTriggersValues.get(ye.triggerName),Hi=this.statesByElement.get(ye.element);if(Hi&&Hi.has(ye.triggerName)){const Gg=Hi.get(ye.triggerName);Gg.value=ea,Hi.set(ye.triggerName,Gg)}}return void Se.destroy()}}const Si=!u||!this.driver.containsElement(u,cn),ln=x.get(cn),ji=m.get(cn),At=this._buildInstruction(ye,i,ji,ln,Si);if(At.errors&&At.errors.length)return void V.push(At);if(Si)return Se.onStart(()=>Rs(cn,At.fromStyles)),Se.onDestroy(()=>Tr(cn,At.toStyles)),void r.push(Se);if(ye.isFallbackTransition)return Se.onStart(()=>Rs(cn,At.fromStyles)),Se.onDestroy(()=>Tr(cn,At.toStyles)),void r.push(Se);const IB=[];At.timelines.forEach(Un=>{Un.stretchStartingKeyframe=!0,this.disabledNodes.has(Un.element)||IB.push(Un)}),At.timelines=IB,i.append(cn,At.timelines),s.push({instruction:At,player:Se,element:cn}),At.queriedElements.forEach(Un=>Di(a,Un,[]).push(Se)),At.preStyleProps.forEach((Un,ea)=>{if(Un.size){let Hi=c.get(ea);Hi||c.set(ea,Hi=new Set),Un.forEach((Gg,mD)=>Hi.add(mD))}}),At.postStyleProps.forEach((Un,ea)=>{let Hi=l.get(ea);Hi||l.set(ea,Hi=new Set),Un.forEach((Gg,mD)=>Hi.add(mD))})});if(V.length){const oe=[];V.forEach(be=>{oe.push(function P9(t,n){return new E(3505,!1)}())}),N.forEach(be=>be.destroy()),this.reportError(oe)}const Q=new Map,le=new Map;s.forEach(oe=>{const be=oe.element;i.has(be)&&(le.set(be,be),this._beforeAnimationBuild(oe.player.namespaceId,oe.instruction,Q))}),r.forEach(oe=>{const be=oe.element;this._getPreviousPlayers(be,!1,oe.namespaceId,oe.triggerName,null).forEach(Se=>{Di(Q,be,[]).push(Se),Se.destroy()})});const je=_.filter(oe=>rO(oe,c,l)),ot=new Map;tO(ot,this.driver,v,l,no).forEach(oe=>{rO(oe,c,l)&&je.push(oe)});const hi=new Map;f.forEach((oe,be)=>{tO(hi,this.driver,new Set(oe),c,"!")}),je.forEach(oe=>{const be=ot.get(oe),ye=hi.get(oe);ot.set(oe,new Map([...be?.entries()??[],...ye?.entries()??[]]))});const an=[],cr=[],ll={};s.forEach(oe=>{const{element:be,player:ye,instruction:Se}=oe;if(i.has(be)){if(d.has(be))return ye.onDestroy(()=>Tr(be,Se.toStyles)),ye.disabled=!0,ye.overrideTotalTime(Se.totalTime),void r.push(ye);let cn=ll;if(le.size>1){let ln=be;const ji=[];for(;ln=ln.parentNode;){const At=le.get(ln);if(At){cn=At;break}ji.push(ln)}ji.forEach(At=>le.set(At,cn))}const Si=this._buildAnimation(ye.namespaceId,Se,Q,o,hi,ot);if(ye.setRealPlayer(Si),cn===ll)an.push(ye);else{const ln=this.playersByElement.get(cn);ln&&ln.length&&(ye.parentPlayer=Po(ln)),r.push(ye)}}else Rs(be,Se.fromStyles),ye.onDestroy(()=>Tr(be,Se.toStyles)),cr.push(ye),d.has(be)&&r.push(ye)}),cr.forEach(oe=>{const be=o.get(oe.element);if(be&&be.length){const ye=Po(be);oe.setRealPlayer(ye)}}),r.forEach(oe=>{oe.parentPlayer?oe.syncPlayerEvents(oe.parentPlayer):oe.destroy()});for(let oe=0;oe<_.length;oe++){const be=_[oe],ye=be[tr];if(bc(be,Om),ye&&ye.hasAnimation)continue;let Se=[];if(a.size){let Si=a.get(be);Si&&Si.length&&Se.push(...Si);let ln=this.driver.query(be,m0,!0);for(let ji=0;ji!Si.destroyed);cn.length?NY(this,be,cn):this.processLeaveNode(be)}return _.length=0,an.forEach(oe=>{this.players.push(oe),oe.onDone(()=>{oe.destroy();const be=this.players.indexOf(oe);this.players.splice(be,1)}),oe.play()}),an}afterFlush(n){this._flushFns.push(n)}afterFlushAnimationsDone(n){this._whenQuietFns.push(n)}_getPreviousPlayers(n,e,i,r,o){let s=[];if(e){const a=this.playersByQueriedElement.get(n);a&&(s=a)}else{const a=this.playersByElement.get(n);if(a){const c=!o||o==$d;a.forEach(l=>{l.queued||!c&&l.triggerName!=r||s.push(l)})}}return(i||r)&&(s=s.filter(a=>!(i&&i!=a.namespaceId||r&&r!=a.triggerName))),s}_beforeAnimationBuild(n,e,i){const o=e.element,s=e.isRemovalTransition?void 0:n,a=e.isRemovalTransition?void 0:e.triggerName;for(const c of e.timelines){const l=c.element,d=l!==o,u=Di(i,l,[]);this._getPreviousPlayers(l,d,s,a,e.toState).forEach(f=>{const m=f.getRealPlayer();m.beforeDestroy&&m.beforeDestroy(),f.destroy(),u.push(f)})}Rs(o,e.fromStyles)}_buildAnimation(n,e,i,r,o,s){const a=e.triggerName,c=e.element,l=[],d=new Set,u=new Set,h=e.timelines.map(m=>{const g=m.element;d.add(g);const _=g[tr];if(_&&_.removedBeforeQueried)return new Hd(m.duration,m.delay);const b=g!==c,v=function FY(t){const n=[];return iO(t,n),n}((i.get(g)||TY).map(Q=>Q.getRealPlayer())).filter(Q=>!!Q.element&&Q.element===g),x=o.get(g),I=s.get(g),N=NR(this._normalizer,m.keyframes,x,I),V=this._buildPlayer(m,N,v);if(m.subTimeline&&r&&u.add(g),b){const Q=new S0(n,a,g);Q.setRealPlayer(V),l.push(Q)}return V});l.forEach(m=>{Di(this.playersByQueriedElement,m.element,[]).push(m),m.onDone(()=>function AY(t,n,e){let i=t.get(n);if(i){if(i.length){const r=i.indexOf(e);i.splice(r,1)}0==i.length&&t.delete(n)}return i}(this.playersByQueriedElement,m.element,m))}),d.forEach(m=>Li(m,jR));const f=Po(h);return f.onDestroy(()=>{d.forEach(m=>bc(m,jR)),Tr(c,e.toStyles)}),u.forEach(m=>{Di(r,m,[]).push(f)}),f}_buildPlayer(n,e,i){return e.length>0?this.driver.animate(n.element,e,n.duration,n.delay,n.easing,i):new Hd(n.duration,n.delay)}}class S0{constructor(n,e,i){this.namespaceId=n,this.triggerName=e,this.element=i,this._player=new Hd,this._containsRealPlayer=!1,this._queuedCallbacks=new Map,this.destroyed=!1,this.parentPlayer=null,this.markedForDestroy=!1,this.disabled=!1,this.queued=!0,this.totalTime=0}setRealPlayer(n){this._containsRealPlayer||(this._player=n,this._queuedCallbacks.forEach((e,i)=>{e.forEach(r=>s0(n,i,void 0,r))}),this._queuedCallbacks.clear(),this._containsRealPlayer=!0,this.overrideTotalTime(n.totalTime),this.queued=!1)}getRealPlayer(){return this._player}overrideTotalTime(n){this.totalTime=n}syncPlayerEvents(n){const e=this._player;e.triggerCallback&&n.onStart(()=>e.triggerCallback("start")),n.onDone(()=>this.finish()),n.onDestroy(()=>this.destroy())}_queueEvent(n,e){Di(this._queuedCallbacks,n,[]).push(e)}onDone(n){this.queued&&this._queueEvent("done",n),this._player.onDone(n)}onStart(n){this.queued&&this._queueEvent("start",n),this._player.onStart(n)}onDestroy(n){this.queued&&this._queueEvent("destroy",n),this._player.onDestroy(n)}init(){this._player.init()}hasStarted(){return!this.queued&&this._player.hasStarted()}play(){!this.queued&&this._player.play()}pause(){!this.queued&&this._player.pause()}restart(){!this.queued&&this._player.restart()}finish(){this._player.finish()}destroy(){this.destroyed=!0,this._player.destroy()}reset(){!this.queued&&this._player.reset()}setPosition(n){this.queued||this._player.setPosition(n)}getPosition(){return this.queued?0:this._player.getPosition()}triggerCallback(n){const e=this._player;e.triggerCallback&&e.triggerCallback(n)}}function Um(t){return t&&1===t.nodeType}function eO(t,n){const e=t.style.display;return t.style.display=n??"none",e}function tO(t,n,e,i,r){const o=[];e.forEach(c=>o.push(eO(c)));const s=[];i.forEach((c,l)=>{const d=new Map;c.forEach(u=>{const h=n.computeStyle(l,u,r);d.set(u,h),(!h||0==h.length)&&(l[tr]=SY,s.push(l))}),t.set(l,d)});let a=0;return e.forEach(c=>eO(c,o[a++])),s}function nO(t,n){const e=new Map;if(t.forEach(a=>e.set(a,[])),0==n.length)return e;const r=new Set(n),o=new Map;function s(a){if(!a)return 1;let c=o.get(a);if(c)return c;const l=a.parentNode;return c=e.has(l)?l:r.has(l)?1:s(l),o.set(a,c),c}return n.forEach(a=>{const c=s(a);1!==c&&e.get(c).push(a)}),e}function Li(t,n){t.classList?.add(n)}function bc(t,n){t.classList?.remove(n)}function NY(t,n,e){Po(e).onDone(()=>t.processLeaveNode(n))}function iO(t,n){for(let e=0;er.add(o)):n.set(t,i),e.delete(t),!0}class qd{constructor(n,e,i,r){this._driver=e,this._normalizer=i,this._triggerCache={},this.onRemovalComplete=(o,s)=>{},this._transitionEngine=new IY(n.body,e,i,r),this._timelineEngine=new xY(n.body,e,i),this._transitionEngine.onRemovalComplete=(o,s)=>this.onRemovalComplete(o,s)}registerTrigger(n,e,i,r,o){const s=n+"-"+r;let a=this._triggerCache[s];if(!a){const c=[],d=v0(this._driver,o,c,[]);if(c.length)throw function E9(t,n){return new E(3404,!1)}();a=function bY(t,n,e){return new vY(t,n,e)}(r,d,this._normalizer),this._triggerCache[s]=a}this._transitionEngine.registerTrigger(e,r,a)}register(n,e){this._transitionEngine.register(n,e)}destroy(n,e){this._transitionEngine.destroy(n,e)}onInsert(n,e,i,r){this._transitionEngine.insertNode(n,e,i,r)}onRemove(n,e,i){this._transitionEngine.removeNode(n,e,i)}disableAnimations(n,e){this._transitionEngine.markElementAsDisabled(n,e)}process(n,e,i,r){if("@"==i.charAt(0)){const[o,s]=FR(i);this._timelineEngine.command(o,e,s,r)}else this._transitionEngine.trigger(n,e,i,r)}listen(n,e,i,r,o){if("@"==i.charAt(0)){const[s,a]=FR(i);return this._timelineEngine.listen(s,e,a,o)}return this._transitionEngine.listen(n,e,i,r,o)}flush(n=-1){this._transitionEngine.flush(n)}get players(){return[...this._transitionEngine.players,...this._timelineEngine.players]}whenRenderingDone(){return this._transitionEngine.whenRenderingDone()}afterFlushAnimationsDone(n){this._transitionEngine.afterFlushAnimationsDone(n)}}class Gd{static#e=this.initialStylesByElement=new WeakMap;constructor(n,e,i){this._element=n,this._startStyles=e,this._endStyles=i,this._state=0;let r=Gd.initialStylesByElement.get(n);r||Gd.initialStylesByElement.set(n,r=new Map),this._initialStyles=r}start(){this._state<1&&(this._startStyles&&Tr(this._element,this._startStyles,this._initialStyles),this._state=1)}finish(){this.start(),this._state<2&&(Tr(this._element,this._initialStyles),this._endStyles&&(Tr(this._element,this._endStyles),this._endStyles=null),this._state=1)}destroy(){this.finish(),this._state<3&&(Gd.initialStylesByElement.delete(this._element),this._startStyles&&(Rs(this._element,this._startStyles),this._endStyles=null),this._endStyles&&(Rs(this._element,this._endStyles),this._endStyles=null),Tr(this._element,this._initialStyles),this._state=3)}}function M0(t){let n=null;return t.forEach((e,i)=>{(function VY(t){return"display"===t||"position"===t})(i)&&(n=n||new Map,n.set(i,e))}),n}class oO{constructor(n,e,i,r){this.element=n,this.keyframes=e,this.options=i,this._specialStyles=r,this._onDoneFns=[],this._onStartFns=[],this._onDestroyFns=[],this._initialized=!1,this._finished=!1,this._started=!1,this._destroyed=!1,this._originalOnDoneFns=[],this._originalOnStartFns=[],this.time=0,this.parentPlayer=null,this.currentSnapshot=new Map,this._duration=i.duration,this._delay=i.delay||0,this.time=this._duration+this._delay}_onFinish(){this._finished||(this._finished=!0,this._onDoneFns.forEach(n=>n()),this._onDoneFns=[])}init(){this._buildPlayer(),this._preparePlayerBeforeStart()}_buildPlayer(){if(this._initialized)return;this._initialized=!0;const n=this.keyframes;this.domPlayer=this._triggerWebAnimation(this.element,n,this.options),this._finalKeyframe=n.length?n[n.length-1]:new Map;const e=()=>this._onFinish();this.domPlayer.addEventListener("finish",e),this.onDestroy(()=>{this.domPlayer.removeEventListener("finish",e)})}_preparePlayerBeforeStart(){this._delay?this._resetDomPlayerState():this.domPlayer.pause()}_convertKeyframesToObject(n){const e=[];return n.forEach(i=>{e.push(Object.fromEntries(i))}),e}_triggerWebAnimation(n,e,i){return n.animate(this._convertKeyframesToObject(e),i)}onStart(n){this._originalOnStartFns.push(n),this._onStartFns.push(n)}onDone(n){this._originalOnDoneFns.push(n),this._onDoneFns.push(n)}onDestroy(n){this._onDestroyFns.push(n)}play(){this._buildPlayer(),this.hasStarted()||(this._onStartFns.forEach(n=>n()),this._onStartFns=[],this._started=!0,this._specialStyles&&this._specialStyles.start()),this.domPlayer.play()}pause(){this.init(),this.domPlayer.pause()}finish(){this.init(),this._specialStyles&&this._specialStyles.finish(),this._onFinish(),this.domPlayer.finish()}reset(){this._resetDomPlayerState(),this._destroyed=!1,this._finished=!1,this._started=!1,this._onStartFns=this._originalOnStartFns,this._onDoneFns=this._originalOnDoneFns}_resetDomPlayerState(){this.domPlayer&&this.domPlayer.cancel()}restart(){this.reset(),this.play()}hasStarted(){return this._started}destroy(){this._destroyed||(this._destroyed=!0,this._resetDomPlayerState(),this._onFinish(),this._specialStyles&&this._specialStyles.destroy(),this._onDestroyFns.forEach(n=>n()),this._onDestroyFns=[])}setPosition(n){void 0===this.domPlayer&&this.init(),this.domPlayer.currentTime=n*this.time}getPosition(){return+(this.domPlayer.currentTime??0)/this.time}get totalTime(){return this._delay+this._duration}beforeDestroy(){const n=new Map;this.hasStarted()&&this._finalKeyframe.forEach((i,r)=>{"offset"!==r&&n.set(r,this._finished?i:b0(this.element,r))}),this.currentSnapshot=n}triggerCallback(n){const e="start"===n?this._onStartFns:this._onDoneFns;e.forEach(i=>i()),e.length=0}}class sO{validateStyleProperty(n){return!0}validateAnimatableStyleProperty(n){return!0}matchesElement(n,e){return!1}containsElement(n,e){return LR(n,e)}getParentElement(n){return l0(n)}query(n,e,i){return VR(n,e,i)}computeStyle(n,e,i){return b0(n,e)}animate(n,e,i,r,o,s=[]){const c={duration:i,delay:r,fill:0==r?"both":"forwards"};o&&(c.easing=o);const l=new Map,d=s.filter(f=>f instanceof oO);(function Y9(t,n){return 0===t||0===n})(i,r)&&d.forEach(f=>{f.currentSnapshot.forEach((m,g)=>l.set(g,m))});let u=function G9(t){return t.length?t[0]instanceof Map?t:t.map(n=>new Map(Object.entries(n))):[]}(e).map(f=>new Map(f));u=function K9(t,n,e){if(e.size&&n.length){let i=n[0],r=[];if(e.forEach((o,s)=>{i.has(s)||r.push(s),i.set(s,o)}),r.length)for(let o=1;os.set(a,b0(t,a)))}}return n}(n,u,l);const h=function LY(t,n){let e=null,i=null;return Array.isArray(n)&&n.length?(e=M0(n[0]),n.length>1&&(i=M0(n[n.length-1]))):n instanceof Map&&(e=M0(n)),e||i?new Gd(t,e,i):null}(n,u);return new oO(n,u,c,h)}}const aO="@.disabled";class cO{constructor(n,e,i,r){this.namespaceId=n,this.delegate=e,this.engine=i,this._onDestroy=r,this.\u0275type=0}get data(){return this.delegate.data}destroyNode(n){this.delegate.destroyNode?.(n)}destroy(){this.engine.destroy(this.namespaceId,this.delegate),this.engine.afterFlushAnimationsDone(()=>{queueMicrotask(()=>{this.delegate.destroy()})}),this._onDestroy?.()}createElement(n,e){return this.delegate.createElement(n,e)}createComment(n){return this.delegate.createComment(n)}createText(n){return this.delegate.createText(n)}appendChild(n,e){this.delegate.appendChild(n,e),this.engine.onInsert(this.namespaceId,e,n,!1)}insertBefore(n,e,i,r=!0){this.delegate.insertBefore(n,e,i),this.engine.onInsert(this.namespaceId,e,n,r)}removeChild(n,e,i){this.engine.onRemove(this.namespaceId,e,this.delegate)}selectRootElement(n,e){return this.delegate.selectRootElement(n,e)}parentNode(n){return this.delegate.parentNode(n)}nextSibling(n){return this.delegate.nextSibling(n)}setAttribute(n,e,i,r){this.delegate.setAttribute(n,e,i,r)}removeAttribute(n,e,i){this.delegate.removeAttribute(n,e,i)}addClass(n,e){this.delegate.addClass(n,e)}removeClass(n,e){this.delegate.removeClass(n,e)}setStyle(n,e,i,r){this.delegate.setStyle(n,e,i,r)}removeStyle(n,e,i){this.delegate.removeStyle(n,e,i)}setProperty(n,e,i){"@"==e.charAt(0)&&e==aO?this.disableAnimations(n,!!i):this.delegate.setProperty(n,e,i)}setValue(n,e){this.delegate.setValue(n,e)}listen(n,e,i){return this.delegate.listen(n,e,i)}disableAnimations(n,e){this.engine.disableAnimations(n,e)}}class BY extends cO{constructor(n,e,i,r,o){super(e,i,r,o),this.factory=n,this.namespaceId=e}setProperty(n,e,i){"@"==e.charAt(0)?"."==e.charAt(1)&&e==aO?this.disableAnimations(n,i=void 0===i||!!i):this.engine.process(this.namespaceId,n,e.slice(1),i):this.delegate.setProperty(n,e,i)}listen(n,e,i){if("@"==e.charAt(0)){const r=function jY(t){switch(t){case"body":return document.body;case"document":return document;case"window":return window;default:return t}}(n);let o=e.slice(1),s="";return"@"!=o.charAt(0)&&([o,s]=function HY(t){const n=t.indexOf(".");return[t.substring(0,n),t.slice(n+1)]}(o)),this.engine.listen(this.namespaceId,r,o,s,a=>{this.factory.scheduleListenerCallback(a._data||-1,i,a)})}return this.delegate.listen(n,e,i)}}class zY{constructor(n,e,i){this.delegate=n,this.engine=e,this._zone=i,this._currentId=0,this._microtaskId=1,this._animationCallbacksBuffer=[],this._rendererCache=new Map,this._cdRecurDepth=0,e.onRemovalComplete=(r,o)=>{const s=o?.parentNode(r);s&&o.removeChild(s,r)}}createRenderer(n,e){const r=this.delegate.createRenderer(n,e);if(!n||!e?.data?.animation){const l=this._rendererCache;let d=l.get(r);return d||(d=new cO("",r,this.engine,()=>l.delete(r)),l.set(r,d)),d}const o=e.id,s=e.id+"-"+this._currentId;this._currentId++,this.engine.register(s,n);const a=l=>{Array.isArray(l)?l.forEach(a):this.engine.registerTrigger(o,s,n,l.name,l)};return e.data.animation.forEach(a),new BY(this,s,r,this.engine)}begin(){this._cdRecurDepth++,this.delegate.begin&&this.delegate.begin()}_scheduleCountTask(){queueMicrotask(()=>{this._microtaskId++})}scheduleListenerCallback(n,e,i){if(n>=0&&ne(i));const r=this._animationCallbacksBuffer;0==r.length&&queueMicrotask(()=>{this._zone.run(()=>{r.forEach(o=>{const[s,a]=o;s(a)}),this._animationCallbacksBuffer=[]})}),r.push([e,i])}end(){this._cdRecurDepth--,0==this._cdRecurDepth&&this._zone.runOutsideAngular(()=>{this._scheduleCountTask(),this.engine.flush(this._microtaskId)}),this.delegate.end&&this.delegate.end()}whenRenderingDone(){return this.engine.whenRenderingDone()}}let UY=(()=>{class t extends qd{constructor(e,i,r){super(e,i,r,T(kf,{optional:!0}))}ngOnDestroy(){this.flush()}static#e=this.\u0275fac=function(i){return new(i||t)(S(_e),S(u0),S(h0))};static#t=this.\u0275prov=P({token:t,factory:t.\u0275fac})}return t})();const lO=[{provide:h0,useFactory:function $Y(){return new UR}},{provide:qd,useClass:UY},{provide:ov,useFactory:function qY(t,n,e){return new zY(t,n,e)},deps:[$y,qd,W]}],I0=[{provide:u0,useFactory:()=>new sO},{provide:Bt,useValue:"BrowserAnimations"},...lO],dO=[{provide:u0,useClass:d0},{provide:Bt,useValue:"NoopAnimations"},...lO];let A0,uO=(()=>{class t{static withConfig(e){return{ngModule:t,providers:e.disableAnimations?dO:I0}}static#e=this.\u0275fac=function(i){return new(i||t)};static#t=this.\u0275mod=ge({type:t});static#n=this.\u0275inj=he({providers:I0,imports:[$1]})}return t})();try{A0=typeof Intl<"u"&&Intl.v8BreakIterator}catch{A0=!1}let vc,ut=(()=>{class t{constructor(e){this._platformId=e,this.isBrowser=this._platformId?v1(this._platformId):"object"==typeof document&&!!document,this.EDGE=this.isBrowser&&/(edge)/i.test(navigator.userAgent),this.TRIDENT=this.isBrowser&&/(msie|trident)/i.test(navigator.userAgent),this.BLINK=this.isBrowser&&!(!window.chrome&&!A0)&&typeof CSS<"u"&&!this.EDGE&&!this.TRIDENT,this.WEBKIT=this.isBrowser&&/AppleWebKit/i.test(navigator.userAgent)&&!this.BLINK&&!this.EDGE&&!this.TRIDENT,this.IOS=this.isBrowser&&/iPad|iPhone|iPod/.test(navigator.userAgent)&&!("MSStream"in window),this.FIREFOX=this.isBrowser&&/(firefox|minefield)/i.test(navigator.userAgent),this.ANDROID=this.isBrowser&&/android/i.test(navigator.userAgent)&&!this.TRIDENT,this.SAFARI=this.isBrowser&&/safari/i.test(navigator.userAgent)&&this.WEBKIT}static#e=this.\u0275fac=function(i){return new(i||t)(S(br))};static#t=this.\u0275prov=P({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();const hO=["color","button","checkbox","date","datetime-local","email","file","hidden","image","month","number","password","radio","range","reset","search","submit","tel","text","time","url","week"];function fO(){if(vc)return vc;if("object"!=typeof document||!document)return vc=new Set(hO),vc;let t=document.createElement("input");return vc=new Set(hO.filter(n=>(t.setAttribute("type",n),t.type===n))),vc}let Wd;function Lo(t){return function GY(){if(null==Wd&&typeof window<"u")try{window.addEventListener("test",null,Object.defineProperty({},"passive",{get:()=>Wd=!0}))}finally{Wd=Wd||!1}return Wd}()?t:!!t.capture}var Sr=function(t){return t[t.NORMAL=0]="NORMAL",t[t.NEGATED=1]="NEGATED",t[t.INVERTED=2]="INVERTED",t}(Sr||{});let qm,Ns,R0;function mO(){if(null==Ns){if("object"!=typeof document||!document||"function"!=typeof Element||!Element)return Ns=!1,Ns;if("scrollBehavior"in document.documentElement.style)Ns=!0;else{const t=Element.prototype.scrollTo;Ns=!!t&&!/\{\s*\[native code\]\s*\}/.test(t.toString())}}return Ns}function Qd(){if("object"!=typeof document||!document)return Sr.NORMAL;if(null==qm){const t=document.createElement("div"),n=t.style;t.dir="rtl",n.width="1px",n.overflow="auto",n.visibility="hidden",n.pointerEvents="none",n.position="absolute";const e=document.createElement("div"),i=e.style;i.width="2px",i.height="1px",t.appendChild(e),document.body.appendChild(t),qm=Sr.NORMAL,0===t.scrollLeft&&(t.scrollLeft=1,qm=0===t.scrollLeft?Sr.NEGATED:Sr.INVERTED),t.remove()}return qm}function ro(t){return t.composedPath?t.composedPath()[0]:t.target}function O0(){return typeof __karma__<"u"&&!!__karma__||typeof jasmine<"u"&&!!jasmine||typeof jest<"u"&&!!jest||typeof Mocha<"u"&&!!Mocha}function Kn(t,...n){return n.length?n.some(e=>t[e]):t.altKey||t.shiftKey||t.ctrlKey||t.metaKey}function pt(t,n,e){const i=Qe(t)||n||e?{next:t,error:n,complete:e}:t;return i?Lt((r,o)=>{var s;null===(s=i.subscribe)||void 0===s||s.call(i);let a=!0;r.subscribe(Rt(o,c=>{var l;null===(l=i.next)||void 0===l||l.call(i,c),o.next(c)},()=>{var c;a=!1,null===(c=i.complete)||void 0===c||c.call(i),o.complete()},c=>{var l;a=!1,null===(l=i.error)||void 0===l||l.call(i,c),o.error(c)},()=>{var c,l;a&&(null===(c=i.unsubscribe)||void 0===c||c.call(i)),null===(l=i.finalize)||void 0===l||l.call(i)}))}):go}class cK extends Ae{constructor(n,e){super()}schedule(n,e=0){return this}}const Ym={setInterval(t,n,...e){const{delegate:i}=Ym;return i?.setInterval?i.setInterval(t,n,...e):setInterval(t,n,...e)},clearInterval(t){const{delegate:n}=Ym;return(n?.clearInterval||clearInterval)(t)},delegate:void 0};class Km extends cK{constructor(n,e){super(n,e),this.scheduler=n,this.work=e,this.pending=!1}schedule(n,e=0){var i;if(this.closed)return this;this.state=n;const r=this.id,o=this.scheduler;return null!=r&&(this.id=this.recycleAsyncId(o,r,e)),this.pending=!0,this.delay=e,this.id=null!==(i=this.id)&&void 0!==i?i:this.requestAsyncId(o,this.id,e),this}requestAsyncId(n,e,i=0){return Ym.setInterval(n.flush.bind(n,this),i)}recycleAsyncId(n,e,i=0){if(null!=i&&this.delay===i&&!1===this.pending)return e;null!=e&&Ym.clearInterval(e)}execute(n,e){if(this.closed)return new Error("executing a cancelled action");this.pending=!1;const i=this._execute(n,e);if(i)return i;!1===this.pending&&null!=this.id&&(this.id=this.recycleAsyncId(this.scheduler,this.id,null))}_execute(n,e){let r,i=!1;try{this.work(n)}catch(o){i=!0,r=o||new Error("Scheduled action threw falsy error")}if(i)return this.unsubscribe(),r}unsubscribe(){if(!this.closed){const{id:n,scheduler:e}=this,{actions:i}=e;this.work=this.state=this.scheduler=null,this.pending=!1,vt(i,this),null!=n&&(this.id=this.recycleAsyncId(e,n,null)),this.delay=null,super.unsubscribe()}}}const F0={now:()=>(F0.delegate||Date).now(),delegate:void 0};class Kd{constructor(n,e=Kd.now){this.schedulerActionCtor=n,this.now=e}schedule(n,e=0,i){return new this.schedulerActionCtor(this,n).schedule(i,e)}}Kd.now=F0.now;class Xm extends Kd{constructor(n,e=Kd.now){super(n,e),this.actions=[],this._active=!1}flush(n){const{actions:e}=this;if(this._active)return void e.push(n);let i;this._active=!0;do{if(i=n.execute(n.state,n.delay))break}while(n=e.shift());if(this._active=!1,i){for(;n=e.shift();)n.unsubscribe();throw i}}}const Zm=new Xm(Km),lK=Zm;function Jm(t,n=Zm){return Lt((e,i)=>{let r=null,o=null,s=null;const a=()=>{if(r){r.unsubscribe(),r=null;const l=o;o=null,i.next(l)}};function c(){const l=s+t,d=n.now();if(d{o=l,s=n.now(),r||(r=n.schedule(c,t),i.add(r))},()=>{a(),i.complete()},void 0,()=>{o=r=null}))})}const Zt=new Ye(t=>t.complete());function gt(t){return t<=0?()=>Zt:Lt((n,e)=>{let i=0;n.subscribe(Rt(e,r=>{++i<=t&&(e.next(r),t<=i&&e.complete())}))})}function P0(t){return Ge((n,e)=>t<=e)}function ep(t,n=go){return t=t??uK,Lt((e,i)=>{let r,o=!0;e.subscribe(Rt(i,s=>{const a=n(s);(o||!t(r,a))&&(o=!1,r=a,i.next(s))}))})}function uK(t,n){return t===n}function pe(t){return Lt((n,e)=>{jn(t).subscribe(Rt(e,()=>e.complete(),as)),!e.closed&&n.subscribe(e)})}function ki(t){return null!=t&&"false"!=`${t}`}function L0(t,n=0){return function _O(t){return!isNaN(parseFloat(t))&&!isNaN(Number(t))}(t)?Number(t):n}function tp(t){return Array.isArray(t)?t:[t]}function on(t){return null==t?"":"string"==typeof t?t:`${t}px`}function oo(t){return t instanceof K?t.nativeElement:t}let bO=(()=>{class t{create(e){return typeof MutationObserver>"u"?null:new MutationObserver(e)}static#e=this.\u0275fac=function(i){return new(i||t)};static#t=this.\u0275prov=P({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),fK=(()=>{class t{constructor(e){this._mutationObserverFactory=e,this._observedElements=new Map}ngOnDestroy(){this._observedElements.forEach((e,i)=>this._cleanupObserver(i))}observe(e){const i=oo(e);return new Ye(r=>{const s=this._observeElement(i).pipe(ne(a=>a.filter(c=>!function hK(t){if("characterData"===t.type&&t.target instanceof Comment)return!0;if("childList"===t.type){for(let n=0;n!!a.length)).subscribe(r);return()=>{s.unsubscribe(),this._unobserveElement(i)}})}_observeElement(e){if(this._observedElements.has(e))this._observedElements.get(e).count++;else{const i=new Z,r=this._mutationObserverFactory.create(o=>i.next(o));r&&r.observe(e,{characterData:!0,childList:!0,subtree:!0}),this._observedElements.set(e,{observer:r,stream:i,count:1})}return this._observedElements.get(e).stream}_unobserveElement(e){this._observedElements.has(e)&&(this._observedElements.get(e).count--,this._observedElements.get(e).count||this._cleanupObserver(e))}_cleanupObserver(e){if(this._observedElements.has(e)){const{observer:i,stream:r}=this._observedElements.get(e);i&&i.disconnect(),r.complete(),this._observedElements.delete(e)}}static#e=this.\u0275fac=function(i){return new(i||t)(S(bO))};static#t=this.\u0275prov=P({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),mK=(()=>{class t{get disabled(){return this._disabled}set disabled(e){this._disabled=e,this._disabled?this._unsubscribe():this._subscribe()}get debounce(){return this._debounce}set debounce(e){this._debounce=L0(e),this._subscribe()}constructor(e,i,r){this._contentObserver=e,this._elementRef=i,this._ngZone=r,this.event=new G,this._disabled=!1,this._currentSubscription=null}ngAfterContentInit(){!this._currentSubscription&&!this.disabled&&this._subscribe()}ngOnDestroy(){this._unsubscribe()}_subscribe(){this._unsubscribe();const e=this._contentObserver.observe(this._elementRef);this._ngZone.runOutsideAngular(()=>{this._currentSubscription=(this.debounce?e.pipe(Jm(this.debounce)):e).subscribe(this.event)})}_unsubscribe(){this._currentSubscription?.unsubscribe()}static#e=this.\u0275fac=function(i){return new(i||t)(p(fK),p(K),p(W))};static#t=this.\u0275dir=R({type:t,selectors:[["","cdkObserveContent",""]],inputs:{disabled:[D.HasDecoratorInputTransform,"cdkObserveContentDisabled","disabled",j],debounce:"debounce"},outputs:{event:"cdkObserveContent"},exportAs:["cdkObserveContent"],standalone:!0,features:[Fe]})}return t})(),vO=(()=>{class t{static#e=this.\u0275fac=function(i){return new(i||t)};static#t=this.\u0275mod=ge({type:t});static#n=this.\u0275inj=he({providers:[bO]})}return t})();const{isArray:pK}=Array,{getPrototypeOf:gK,prototype:_K,keys:bK}=Object;function yO(t){if(1===t.length){const n=t[0];if(pK(n))return{args:n,keys:null};if(function vK(t){return t&&"object"==typeof t&&gK(t)===_K}(n)){const e=bK(n);return{args:e.map(i=>n[i]),keys:e}}}return{args:t,keys:null}}const{isArray:yK}=Array;function V0(t){return ne(n=>function wK(t,n){return yK(n)?t(...n):t(n)}(t,n))}function wO(t,n){return t.reduce((e,i,r)=>(e[i]=n[r],e),{})}function Fs(...t){const n=Ld(t),e=Y1(t),{args:i,keys:r}=yO(t);if(0===i.length)return jt([],n);const o=new Ye(function xK(t,n,e=go){return i=>{xO(n,()=>{const{length:r}=t,o=new Array(r);let s=r,a=r;for(let c=0;c{const l=jt(t[c],n);let d=!1;l.subscribe(Rt(i,u=>{o[c]=u,d||(d=!0,a--),a||i.next(e(o.slice()))},()=>{--s||i.complete()}))},i)},i)}}(i,n,r?s=>wO(r,s):go));return e?o.pipe(V0(e)):o}function xO(t,n,e){t?to(e,t,n):n()}function xc(t=1/0){return vn(go,t)}function Xd(...t){return function CK(){return xc(1)}()(jt(t,Ld(t)))}function gn(...t){const n=Ld(t);return Lt((e,i)=>{(n?Xd(t,e,n):Xd(t,e)).subscribe(i)})}const CO=new Set;let Ps,DK=(()=>{class t{constructor(e,i){this._platform=e,this._nonce=i,this._matchMedia=this._platform.isBrowser&&window.matchMedia?window.matchMedia.bind(window):kK}matchMedia(e){return(this._platform.WEBKIT||this._platform.BLINK)&&function EK(t,n){if(!CO.has(t))try{Ps||(Ps=document.createElement("style"),n&&Ps.setAttribute("nonce",n),Ps.setAttribute("type","text/css"),document.head.appendChild(Ps)),Ps.sheet&&(Ps.sheet.insertRule(`@media ${t} {body{ }}`,0),CO.add(t))}catch(e){console.error(e)}}(e,this._nonce),this._matchMedia(e)}static#e=this.\u0275fac=function(i){return new(i||t)(S(ut),S(hb,8))};static#t=this.\u0275prov=P({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function kK(t){return{matches:"all"===t||""===t,media:t,addListener:()=>{},removeListener:()=>{}}}let DO=(()=>{class t{constructor(e,i){this._mediaMatcher=e,this._zone=i,this._queries=new Map,this._destroySubject=new Z}ngOnDestroy(){this._destroySubject.next(),this._destroySubject.complete()}isMatched(e){return EO(tp(e)).some(r=>this._registerQuery(r).mql.matches)}observe(e){let o=Fs(EO(tp(e)).map(s=>this._registerQuery(s).observable));return o=Xd(o.pipe(gt(1)),o.pipe(P0(1),Jm(0))),o.pipe(ne(s=>{const a={matches:!1,breakpoints:{}};return s.forEach(({matches:c,query:l})=>{a.matches=a.matches||c,a.breakpoints[l]=c}),a}))}_registerQuery(e){if(this._queries.has(e))return this._queries.get(e);const i=this._mediaMatcher.matchMedia(e),o={observable:new Ye(s=>{const a=c=>this._zone.run(()=>s.next(c));return i.addListener(a),()=>{i.removeListener(a)}}).pipe(gn(i),ne(({matches:s})=>({query:e,matches:s})),pe(this._destroySubject)),mql:i};return this._queries.set(e,o),o}static#e=this.\u0275fac=function(i){return new(i||t)(S(DK),S(W))};static#t=this.\u0275prov=P({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function EO(t){return t.map(n=>n.split(",")).reduce((n,e)=>n.concat(e)).map(n=>n.trim())}function np(t,n,e){const i=ip(t,n);e=e.trim(),!i.some(r=>r.trim()===e)&&(i.push(e),t.setAttribute(n,i.join(" ")))}function Cc(t,n,e){const i=ip(t,n);e=e.trim();const r=i.filter(o=>o!==e);r.length?t.setAttribute(n,r.join(" ")):t.removeAttribute(n)}function ip(t,n){return t.getAttribute(n)?.match(/\S+/g)??[]}const TO="cdk-describedby-message",rp="cdk-describedby-host";let B0=0,SK=(()=>{class t{constructor(e,i){this._platform=i,this._messageRegistry=new Map,this._messagesContainer=null,this._id=""+B0++,this._document=e,this._id=T(Ul)+"-"+B0++}describe(e,i,r){if(!this._canBeDescribed(e,i))return;const o=j0(i,r);"string"!=typeof i?(SO(i,this._id),this._messageRegistry.set(o,{messageElement:i,referenceCount:0})):this._messageRegistry.has(o)||this._createMessageElement(i,r),this._isElementDescribedByMessage(e,o)||this._addMessageReference(e,o)}removeDescription(e,i,r){if(!i||!this._isElementNode(e))return;const o=j0(i,r);if(this._isElementDescribedByMessage(e,o)&&this._removeMessageReference(e,o),"string"==typeof i){const s=this._messageRegistry.get(o);s&&0===s.referenceCount&&this._deleteMessageElement(o)}0===this._messagesContainer?.childNodes.length&&(this._messagesContainer.remove(),this._messagesContainer=null)}ngOnDestroy(){const e=this._document.querySelectorAll(`[${rp}="${this._id}"]`);for(let i=0;i0!=r.indexOf(TO));e.setAttribute("aria-describedby",i.join(" "))}_addMessageReference(e,i){const r=this._messageRegistry.get(i);np(e,"aria-describedby",r.messageElement.id),e.setAttribute(rp,this._id),r.referenceCount++}_removeMessageReference(e,i){const r=this._messageRegistry.get(i);r.referenceCount--,Cc(e,"aria-describedby",r.messageElement.id),e.removeAttribute(rp)}_isElementDescribedByMessage(e,i){const r=ip(e,"aria-describedby"),o=this._messageRegistry.get(i),s=o&&o.messageElement.id;return!!s&&-1!=r.indexOf(s)}_canBeDescribed(e,i){if(!this._isElementNode(e))return!1;if(i&&"object"==typeof i)return!0;const r=null==i?"":`${i}`.trim(),o=e.getAttribute("aria-label");return!(!r||o&&o.trim()===r)}_isElementNode(e){return e.nodeType===this._document.ELEMENT_NODE}static#e=this.\u0275fac=function(i){return new(i||t)(S(_e),S(ut))};static#t=this.\u0275prov=P({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function j0(t,n){return"string"==typeof t?`${n||""}/${t}`:t}function SO(t,n){t.id||(t.id=`${TO}-${n}-${B0++}`)}class MO{constructor(n,e){this._items=n,this._activeItemIndex=-1,this._activeItem=null,this._wrap=!1,this._letterKeyStream=new Z,this._typeaheadSubscription=Ae.EMPTY,this._vertical=!0,this._allowedModifierKeys=[],this._homeAndEnd=!1,this._pageUpAndDown={enabled:!1,delta:10},this._skipPredicateFn=i=>i.disabled,this._pressedLetters=[],this.tabOut=new Z,this.change=new Z,n instanceof $r?this._itemChangesSubscription=n.changes.subscribe(i=>this._itemsChanged(i.toArray())):If(n)&&(this._effectRef=function GA(t,n){Yi("NgSignals"),!n?.injector&&Rh();const e=n?.injector??T(Gt),i=!0!==n?.manualCleanup?e.get(Oa):null,r=new JG(e.get(KG),t,typeof Zone>"u"?null:Zone.current,i,e,n?.allowSignalWrites??!1),o=e.get(Ke,null,{optional:!0});return o&&8&o._lView[fe]?(o._lView[Nh]??=[]).push(r.watcher.notify):r.watcher.notify(),r}(()=>this._itemsChanged(n()),{injector:e}))}skipPredicate(n){return this._skipPredicateFn=n,this}withWrap(n=!0){return this._wrap=n,this}withVerticalOrientation(n=!0){return this._vertical=n,this}withHorizontalOrientation(n){return this._horizontal=n,this}withAllowedModifierKeys(n){return this._allowedModifierKeys=n,this}withTypeAhead(n=200){return this._typeaheadSubscription.unsubscribe(),this._typeaheadSubscription=this._letterKeyStream.pipe(pt(e=>this._pressedLetters.push(e)),Jm(n),Ge(()=>this._pressedLetters.length>0),ne(()=>this._pressedLetters.join(""))).subscribe(e=>{const i=this._getItemsArray();for(let r=1;r!n[o]||this._allowedModifierKeys.indexOf(o)>-1);switch(e){case 9:return void this.tabOut.next();case 40:if(this._vertical&&r){this.setNextItemActive();break}return;case 38:if(this._vertical&&r){this.setPreviousItemActive();break}return;case 39:if(this._horizontal&&r){"rtl"===this._horizontal?this.setPreviousItemActive():this.setNextItemActive();break}return;case 37:if(this._horizontal&&r){"rtl"===this._horizontal?this.setNextItemActive():this.setPreviousItemActive();break}return;case 36:if(this._homeAndEnd&&r){this.setFirstItemActive();break}return;case 35:if(this._homeAndEnd&&r){this.setLastItemActive();break}return;case 33:if(this._pageUpAndDown.enabled&&r){const o=this._activeItemIndex-this._pageUpAndDown.delta;this._setActiveItemByIndex(o>0?o:0,1);break}return;case 34:if(this._pageUpAndDown.enabled&&r){const o=this._activeItemIndex+this._pageUpAndDown.delta,s=this._getItemsArray().length;this._setActiveItemByIndex(o=65&&e<=90||e>=48&&e<=57)&&this._letterKeyStream.next(String.fromCharCode(e))))}this._pressedLetters=[],n.preventDefault()}get activeItemIndex(){return this._activeItemIndex}get activeItem(){return this._activeItem}isTyping(){return this._pressedLetters.length>0}setFirstItemActive(){this._setActiveItemByIndex(0,1)}setLastItemActive(){this._setActiveItemByIndex(this._getItemsArray().length-1,-1)}setNextItemActive(){this._activeItemIndex<0?this.setFirstItemActive():this._setActiveItemByDelta(1)}setPreviousItemActive(){this._activeItemIndex<0&&this._wrap?this.setLastItemActive():this._setActiveItemByDelta(-1)}updateActiveItem(n){const e=this._getItemsArray(),i="number"==typeof n?n:e.indexOf(n);this._activeItem=e[i]??null,this._activeItemIndex=i}destroy(){this._typeaheadSubscription.unsubscribe(),this._itemChangesSubscription?.unsubscribe(),this._effectRef?.destroy(),this._letterKeyStream.complete(),this.tabOut.complete(),this.change.complete(),this._pressedLetters=[]}_setActiveItemByDelta(n){this._wrap?this._setActiveInWrapMode(n):this._setActiveInDefaultMode(n)}_setActiveInWrapMode(n){const e=this._getItemsArray();for(let i=1;i<=e.length;i++){const r=(this._activeItemIndex+n*i+e.length)%e.length;if(!this._skipPredicateFn(e[r]))return void this.setActiveItem(r)}}_setActiveInDefaultMode(n){this._setActiveItemByIndex(this._activeItemIndex+n,n)}_setActiveItemByIndex(n,e){const i=this._getItemsArray();if(i[n]){for(;this._skipPredicateFn(i[n]);)if(!i[n+=e])return;this.setActiveItem(n)}}_getItemsArray(){return If(this._items)?this._items():this._items instanceof $r?this._items.toArray():this._items}_itemsChanged(n){if(this._activeItem){const e=n.indexOf(this._activeItem);e>-1&&e!==this._activeItemIndex&&(this._activeItemIndex=e)}}}class IO extends MO{setActiveItem(n){this.activeItem&&this.activeItem.setInactiveStyles(),super.setActiveItem(n),this.activeItem&&this.activeItem.setActiveStyles()}}class H0 extends MO{constructor(){super(...arguments),this._origin="program"}setFocusOrigin(n){return this._origin=n,this}setActiveItem(n){super.setActiveItem(n),this.activeItem&&this.activeItem.focus(this._origin)}}let AO=(()=>{class t{constructor(e){this._platform=e}isDisabled(e){return e.hasAttribute("disabled")}isVisible(e){return function IK(t){return!!(t.offsetWidth||t.offsetHeight||"function"==typeof t.getClientRects&&t.getClientRects().length)}(e)&&"visible"===getComputedStyle(e).visibility}isTabbable(e){if(!this._platform.isBrowser)return!1;const i=function MK(t){try{return t.frameElement}catch{return null}}(function VK(t){return t.ownerDocument&&t.ownerDocument.defaultView||window}(e));if(i&&(-1===OO(i)||!this.isVisible(i)))return!1;let r=e.nodeName.toLowerCase(),o=OO(e);return e.hasAttribute("contenteditable")?-1!==o:!("iframe"===r||"object"===r||this._platform.WEBKIT&&this._platform.IOS&&!function PK(t){let n=t.nodeName.toLowerCase(),e="input"===n&&t.type;return"text"===e||"password"===e||"select"===n||"textarea"===n}(e))&&("audio"===r?!!e.hasAttribute("controls")&&-1!==o:"video"===r?-1!==o&&(null!==o||this._platform.FIREFOX||e.hasAttribute("controls")):e.tabIndex>=0)}isFocusable(e,i){return function LK(t){return!function RK(t){return function NK(t){return"input"==t.nodeName.toLowerCase()}(t)&&"hidden"==t.type}(t)&&(function AK(t){let n=t.nodeName.toLowerCase();return"input"===n||"select"===n||"button"===n||"textarea"===n}(t)||function OK(t){return function FK(t){return"a"==t.nodeName.toLowerCase()}(t)&&t.hasAttribute("href")}(t)||t.hasAttribute("contenteditable")||RO(t))}(e)&&!this.isDisabled(e)&&(i?.ignoreVisibility||this.isVisible(e))}static#e=this.\u0275fac=function(i){return new(i||t)(S(ut))};static#t=this.\u0275prov=P({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function RO(t){if(!t.hasAttribute("tabindex")||void 0===t.tabIndex)return!1;let n=t.getAttribute("tabindex");return!(!n||isNaN(parseInt(n,10)))}function OO(t){if(!RO(t))return null;const n=parseInt(t.getAttribute("tabindex")||"",10);return isNaN(n)?-1:n}class NO{get enabled(){return this._enabled}set enabled(n){this._enabled=n,this._startAnchor&&this._endAnchor&&(this._toggleAnchorTabIndex(n,this._startAnchor),this._toggleAnchorTabIndex(n,this._endAnchor))}constructor(n,e,i,r,o=!1){this._element=n,this._checker=e,this._ngZone=i,this._document=r,this._hasAttached=!1,this.startAnchorListener=()=>this.focusLastTabbableElement(),this.endAnchorListener=()=>this.focusFirstTabbableElement(),this._enabled=!0,o||this.attachAnchors()}destroy(){const n=this._startAnchor,e=this._endAnchor;n&&(n.removeEventListener("focus",this.startAnchorListener),n.remove()),e&&(e.removeEventListener("focus",this.endAnchorListener),e.remove()),this._startAnchor=this._endAnchor=null,this._hasAttached=!1}attachAnchors(){return!!this._hasAttached||(this._ngZone.runOutsideAngular(()=>{this._startAnchor||(this._startAnchor=this._createAnchor(),this._startAnchor.addEventListener("focus",this.startAnchorListener)),this._endAnchor||(this._endAnchor=this._createAnchor(),this._endAnchor.addEventListener("focus",this.endAnchorListener))}),this._element.parentNode&&(this._element.parentNode.insertBefore(this._startAnchor,this._element),this._element.parentNode.insertBefore(this._endAnchor,this._element.nextSibling),this._hasAttached=!0),this._hasAttached)}focusInitialElementWhenReady(n){return new Promise(e=>{this._executeOnStable(()=>e(this.focusInitialElement(n)))})}focusFirstTabbableElementWhenReady(n){return new Promise(e=>{this._executeOnStable(()=>e(this.focusFirstTabbableElement(n)))})}focusLastTabbableElementWhenReady(n){return new Promise(e=>{this._executeOnStable(()=>e(this.focusLastTabbableElement(n)))})}_getRegionBoundary(n){const e=this._element.querySelectorAll(`[cdk-focus-region-${n}], [cdkFocusRegion${n}], [cdk-focus-${n}]`);return"start"==n?e.length?e[0]:this._getFirstTabbableElement(this._element):e.length?e[e.length-1]:this._getLastTabbableElement(this._element)}focusInitialElement(n){const e=this._element.querySelector("[cdk-focus-initial], [cdkFocusInitial]");if(e){if(!this._checker.isFocusable(e)){const i=this._getFirstTabbableElement(e);return i?.focus(n),!!i}return e.focus(n),!0}return this.focusFirstTabbableElement(n)}focusFirstTabbableElement(n){const e=this._getRegionBoundary("start");return e&&e.focus(n),!!e}focusLastTabbableElement(n){const e=this._getRegionBoundary("end");return e&&e.focus(n),!!e}hasAttached(){return this._hasAttached}_getFirstTabbableElement(n){if(this._checker.isFocusable(n)&&this._checker.isTabbable(n))return n;const e=n.children;for(let i=0;i=0;i--){const r=e[i].nodeType===this._document.ELEMENT_NODE?this._getLastTabbableElement(e[i]):null;if(r)return r}return null}_createAnchor(){const n=this._document.createElement("div");return this._toggleAnchorTabIndex(this._enabled,n),n.classList.add("cdk-visually-hidden"),n.classList.add("cdk-focus-trap-anchor"),n.setAttribute("aria-hidden","true"),n}_toggleAnchorTabIndex(n,e){n?e.setAttribute("tabindex","0"):e.removeAttribute("tabindex")}toggleAnchors(n){this._startAnchor&&this._endAnchor&&(this._toggleAnchorTabIndex(n,this._startAnchor),this._toggleAnchorTabIndex(n,this._endAnchor))}_executeOnStable(n){this._ngZone.isStable?n():this._ngZone.onStable.pipe(gt(1)).subscribe(n)}}let BK=(()=>{class t{constructor(e,i,r){this._checker=e,this._ngZone=i,this._document=r}create(e,i=!1){return new NO(e,this._checker,this._ngZone,this._document,i)}static#e=this.\u0275fac=function(i){return new(i||t)(S(AO),S(W),S(_e))};static#t=this.\u0275prov=P({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function z0(t){return 0===t.buttons||0===t.detail}function U0(t){const n=t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0];return!(!n||-1!==n.identifier||null!=n.radiusX&&1!==n.radiusX||null!=n.radiusY&&1!==n.radiusY)}const jK=new M("cdk-input-modality-detector-options"),HK={ignoreKeys:[18,17,224,91,16]},Dc=Lo({passive:!0,capture:!0});let zK=(()=>{class t{get mostRecentModality(){return this._modality.value}constructor(e,i,r,o){this._platform=e,this._mostRecentTarget=null,this._modality=new ct(null),this._lastTouchMs=0,this._onKeydown=s=>{this._options?.ignoreKeys?.some(a=>a===s.keyCode)||(this._modality.next("keyboard"),this._mostRecentTarget=ro(s))},this._onMousedown=s=>{Date.now()-this._lastTouchMs<650||(this._modality.next(z0(s)?"keyboard":"mouse"),this._mostRecentTarget=ro(s))},this._onTouchstart=s=>{U0(s)?this._modality.next("keyboard"):(this._lastTouchMs=Date.now(),this._modality.next("touch"),this._mostRecentTarget=ro(s))},this._options={...HK,...o},this.modalityDetected=this._modality.pipe(P0(1)),this.modalityChanged=this.modalityDetected.pipe(ep()),e.isBrowser&&i.runOutsideAngular(()=>{r.addEventListener("keydown",this._onKeydown,Dc),r.addEventListener("mousedown",this._onMousedown,Dc),r.addEventListener("touchstart",this._onTouchstart,Dc)})}ngOnDestroy(){this._modality.complete(),this._platform.isBrowser&&(document.removeEventListener("keydown",this._onKeydown,Dc),document.removeEventListener("mousedown",this._onMousedown,Dc),document.removeEventListener("touchstart",this._onTouchstart,Dc))}static#e=this.\u0275fac=function(i){return new(i||t)(S(ut),S(W),S(_e),S(jK,8))};static#t=this.\u0275prov=P({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();const UK=new M("liveAnnouncerElement",{providedIn:"root",factory:function $K(){return null}}),qK=new M("LIVE_ANNOUNCER_DEFAULT_OPTIONS");let GK=0,PO=(()=>{class t{constructor(e,i,r,o){this._ngZone=i,this._defaultOptions=o,this._document=r,this._liveElement=e||this._createLiveElement()}announce(e,...i){const r=this._defaultOptions;let o,s;return 1===i.length&&"number"==typeof i[0]?s=i[0]:[o,s]=i,this.clear(),clearTimeout(this._previousTimeout),o||(o=r&&r.politeness?r.politeness:"polite"),null==s&&r&&(s=r.duration),this._liveElement.setAttribute("aria-live",o),this._liveElement.id&&this._exposeAnnouncerToModals(this._liveElement.id),this._ngZone.runOutsideAngular(()=>(this._currentPromise||(this._currentPromise=new Promise(a=>this._currentResolve=a)),clearTimeout(this._previousTimeout),this._previousTimeout=setTimeout(()=>{this._liveElement.textContent=e,"number"==typeof s&&(this._previousTimeout=setTimeout(()=>this.clear(),s)),this._currentResolve?.(),this._currentPromise=this._currentResolve=void 0},100),this._currentPromise))}clear(){this._liveElement&&(this._liveElement.textContent="")}ngOnDestroy(){clearTimeout(this._previousTimeout),this._liveElement?.remove(),this._liveElement=null,this._currentResolve?.(),this._currentPromise=this._currentResolve=void 0}_createLiveElement(){const e="cdk-live-announcer-element",i=this._document.getElementsByClassName(e),r=this._document.createElement("div");for(let o=0;o .cdk-overlay-container [aria-modal="true"]');for(let r=0;r{class t{constructor(e,i,r,o,s){this._ngZone=e,this._platform=i,this._inputModalityDetector=r,this._origin=null,this._windowFocused=!1,this._originFromTouchInteraction=!1,this._elementInfo=new Map,this._monitoredElementCount=0,this._rootNodeFocusListenerCount=new Map,this._windowFocusListener=()=>{this._windowFocused=!0,this._windowFocusTimeoutId=window.setTimeout(()=>this._windowFocused=!1)},this._stopInputModalityDetector=new Z,this._rootNodeFocusAndBlurListener=a=>{for(let l=ro(a);l;l=l.parentElement)"focus"===a.type?this._onFocus(a,l):this._onBlur(a,l)},this._document=o,this._detectionMode=s?.detectionMode||op.IMMEDIATE}monitor(e,i=!1){const r=oo(e);if(!this._platform.isBrowser||1!==r.nodeType)return se();const o=function QY(t){if(function WY(){if(null==R0){const t=typeof document<"u"?document.head:null;R0=!(!t||!t.createShadowRoot&&!t.attachShadow)}return R0}()){const n=t.getRootNode?t.getRootNode():null;if(typeof ShadowRoot<"u"&&ShadowRoot&&n instanceof ShadowRoot)return n}return null}(r)||this._getDocument(),s=this._elementInfo.get(r);if(s)return i&&(s.checkChildren=!0),s.subject;const a={checkChildren:i,subject:new Z,rootNode:o};return this._elementInfo.set(r,a),this._registerGlobalListeners(a),a.subject}stopMonitoring(e){const i=oo(e),r=this._elementInfo.get(i);r&&(r.subject.complete(),this._setClasses(i),this._elementInfo.delete(i),this._removeGlobalListeners(r))}focusVia(e,i,r){const o=oo(e);o===this._getDocument().activeElement?this._getClosestElementsInfo(o).forEach(([a,c])=>this._originChanged(a,i,c)):(this._setOrigin(i),"function"==typeof o.focus&&o.focus(r))}ngOnDestroy(){this._elementInfo.forEach((e,i)=>this.stopMonitoring(i))}_getDocument(){return this._document||document}_getWindow(){return this._getDocument().defaultView||window}_getFocusOrigin(e){return this._origin?this._originFromTouchInteraction?this._shouldBeAttributedToTouch(e)?"touch":"program":this._origin:this._windowFocused&&this._lastFocusOrigin?this._lastFocusOrigin:e&&this._isLastInteractionFromInputLabel(e)?"mouse":"program"}_shouldBeAttributedToTouch(e){return this._detectionMode===op.EVENTUAL||!!e?.contains(this._inputModalityDetector._mostRecentTarget)}_setClasses(e,i){e.classList.toggle("cdk-focused",!!i),e.classList.toggle("cdk-touch-focused","touch"===i),e.classList.toggle("cdk-keyboard-focused","keyboard"===i),e.classList.toggle("cdk-mouse-focused","mouse"===i),e.classList.toggle("cdk-program-focused","program"===i)}_setOrigin(e,i=!1){this._ngZone.runOutsideAngular(()=>{this._origin=e,this._originFromTouchInteraction="touch"===e&&i,this._detectionMode===op.IMMEDIATE&&(clearTimeout(this._originTimeoutId),this._originTimeoutId=setTimeout(()=>this._origin=null,this._originFromTouchInteraction?650:1))})}_onFocus(e,i){const r=this._elementInfo.get(i),o=ro(e);!r||!r.checkChildren&&i!==o||this._originChanged(i,this._getFocusOrigin(o),r)}_onBlur(e,i){const r=this._elementInfo.get(i);!r||r.checkChildren&&e.relatedTarget instanceof Node&&i.contains(e.relatedTarget)||(this._setClasses(i),this._emitOrigin(r,null))}_emitOrigin(e,i){e.subject.observers.length&&this._ngZone.run(()=>e.subject.next(i))}_registerGlobalListeners(e){if(!this._platform.isBrowser)return;const i=e.rootNode,r=this._rootNodeFocusListenerCount.get(i)||0;r||this._ngZone.runOutsideAngular(()=>{i.addEventListener("focus",this._rootNodeFocusAndBlurListener,sp),i.addEventListener("blur",this._rootNodeFocusAndBlurListener,sp)}),this._rootNodeFocusListenerCount.set(i,r+1),1==++this._monitoredElementCount&&(this._ngZone.runOutsideAngular(()=>{this._getWindow().addEventListener("focus",this._windowFocusListener)}),this._inputModalityDetector.modalityDetected.pipe(pe(this._stopInputModalityDetector)).subscribe(o=>{this._setOrigin(o,!0)}))}_removeGlobalListeners(e){const i=e.rootNode;if(this._rootNodeFocusListenerCount.has(i)){const r=this._rootNodeFocusListenerCount.get(i);r>1?this._rootNodeFocusListenerCount.set(i,r-1):(i.removeEventListener("focus",this._rootNodeFocusAndBlurListener,sp),i.removeEventListener("blur",this._rootNodeFocusAndBlurListener,sp),this._rootNodeFocusListenerCount.delete(i))}--this._monitoredElementCount||(this._getWindow().removeEventListener("focus",this._windowFocusListener),this._stopInputModalityDetector.next(),clearTimeout(this._windowFocusTimeoutId),clearTimeout(this._originTimeoutId))}_originChanged(e,i,r){this._setClasses(e,i),this._emitOrigin(r,i),this._lastFocusOrigin=i}_getClosestElementsInfo(e){const i=[];return this._elementInfo.forEach((r,o)=>{(o===e||r.checkChildren&&o.contains(e))&&i.push([o,r])}),i}_isLastInteractionFromInputLabel(e){const{_mostRecentTarget:i,mostRecentModality:r}=this._inputModalityDetector;if("mouse"!==r||!i||i===e||"INPUT"!==e.nodeName&&"TEXTAREA"!==e.nodeName||e.disabled)return!1;const o=e.labels;if(o)for(let s=0;s{class t{constructor(e,i){this._elementRef=e,this._focusMonitor=i,this._focusOrigin=null,this.cdkFocusChange=new G}get focusOrigin(){return this._focusOrigin}ngAfterViewInit(){const e=this._elementRef.nativeElement;this._monitorSubscription=this._focusMonitor.monitor(e,1===e.nodeType&&e.hasAttribute("cdkMonitorSubtreeFocus")).subscribe(i=>{this._focusOrigin=i,this.cdkFocusChange.emit(i)})}ngOnDestroy(){this._focusMonitor.stopMonitoring(this._elementRef),this._monitorSubscription&&this._monitorSubscription.unsubscribe()}static#e=this.\u0275fac=function(i){return new(i||t)(p(K),p(Mr))};static#t=this.\u0275dir=R({type:t,selectors:[["","cdkMonitorElementFocus",""],["","cdkMonitorSubtreeFocus",""]],outputs:{cdkFocusChange:"cdkFocusChange"},exportAs:["cdkMonitorFocus"],standalone:!0})}return t})();var Ls=function(t){return t[t.NONE=0]="NONE",t[t.BLACK_ON_WHITE=1]="BLACK_ON_WHITE",t[t.WHITE_ON_BLACK=2]="WHITE_ON_BLACK",t}(Ls||{});const LO="cdk-high-contrast-black-on-white",VO="cdk-high-contrast-white-on-black",$0="cdk-high-contrast-active";let BO=(()=>{class t{constructor(e,i){this._platform=e,this._document=i,this._breakpointSubscription=T(DO).observe("(forced-colors: active)").subscribe(()=>{this._hasCheckedHighContrastMode&&(this._hasCheckedHighContrastMode=!1,this._applyBodyHighContrastModeCssClasses())})}getHighContrastMode(){if(!this._platform.isBrowser)return Ls.NONE;const e=this._document.createElement("div");e.style.backgroundColor="rgb(1,2,3)",e.style.position="absolute",this._document.body.appendChild(e);const i=this._document.defaultView||window,r=i&&i.getComputedStyle?i.getComputedStyle(e):null,o=(r&&r.backgroundColor||"").replace(/ /g,"");switch(e.remove(),o){case"rgb(0,0,0)":case"rgb(45,50,54)":case"rgb(32,32,32)":return Ls.WHITE_ON_BLACK;case"rgb(255,255,255)":case"rgb(255,250,239)":return Ls.BLACK_ON_WHITE}return Ls.NONE}ngOnDestroy(){this._breakpointSubscription.unsubscribe()}_applyBodyHighContrastModeCssClasses(){if(!this._hasCheckedHighContrastMode&&this._platform.isBrowser&&this._document.body){const e=this._document.body.classList;e.remove($0,LO,VO),this._hasCheckedHighContrastMode=!0;const i=this.getHighContrastMode();i===Ls.BLACK_ON_WHITE?e.add($0,LO):i===Ls.WHITE_ON_BLACK&&e.add($0,VO)}}static#e=this.\u0275fac=function(i){return new(i||t)(S(ut),S(_e))};static#t=this.\u0275prov=P({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),YK=(()=>{class t{constructor(e){e._applyBodyHighContrastModeCssClasses()}static#e=this.\u0275fac=function(i){return new(i||t)(S(BO))};static#t=this.\u0275mod=ge({type:t});static#n=this.\u0275inj=he({imports:[vO]})}return t})();const KK=new M("cdk-dir-doc",{providedIn:"root",factory:function XK(){return T(_e)}}),ZK=/^(ar|ckb|dv|he|iw|fa|nqo|ps|sd|ug|ur|yi|.*[-_](Adlm|Arab|Hebr|Nkoo|Rohg|Thaa))(?!.*[-_](Latn|Cyrl)($|-|_))($|-|_)/i;let Xn=(()=>{class t{constructor(e){this.value="ltr",this.change=new G,e&&(this.value=function JK(t){const n=t?.toLowerCase()||"";return"auto"===n&&typeof navigator<"u"&&navigator?.language?ZK.test(navigator.language)?"rtl":"ltr":"rtl"===n?"rtl":"ltr"}((e.body?e.body.dir:null)||(e.documentElement?e.documentElement.dir:null)||"ltr"))}ngOnDestroy(){this.change.complete()}static#e=this.\u0275fac=function(i){return new(i||t)(S(KK,8))};static#t=this.\u0275prov=P({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),Zd=(()=>{class t{static#e=this.\u0275fac=function(i){return new(i||t)};static#t=this.\u0275mod=ge({type:t});static#n=this.\u0275inj=he({})}return t})();const eX=["text"],tX=[[["mat-icon"]],"*"],nX=["mat-icon","*"];function iX(t,n){if(1&t&&re(0,"mat-pseudo-checkbox",1),2&t){const e=L();z("disabled",e.disabled)("state",e.selected?"checked":"unchecked")}}function rX(t,n){1&t&&re(0,"mat-pseudo-checkbox",3),2&t&&z("disabled",L().disabled)}function oX(t,n){if(1&t&&(y(0,"span",4),A(1),w()),2&t){const e=L();C(),Ue("(",e.group.label,")")}}const sX=["mat-internal-form-field",""],aX=["*"],lX=new M("mat-sanity-checks",{providedIn:"root",factory:function cX(){return!0}});let Te=(()=>{class t{constructor(e,i,r){this._sanityChecks=i,this._document=r,this._hasDoneGlobalChecks=!1,e._applyBodyHighContrastModeCssClasses(),this._hasDoneGlobalChecks||(this._hasDoneGlobalChecks=!0)}_checkIsEnabled(e){return!O0()&&("boolean"==typeof this._sanityChecks?this._sanityChecks:!!this._sanityChecks[e])}static#e=this.\u0275fac=function(i){return new(i||t)(S(BO),S(lX,8),S(_e))};static#t=this.\u0275mod=ge({type:t});static#n=this.\u0275inj=he({imports:[Zd,Zd]})}return t})();class ap{constructor(n,e,i,r,o){this._defaultMatcher=n,this.ngControl=e,this._parentFormGroup=i,this._parentForm=r,this._stateChanges=o,this.errorState=!1}updateErrorState(){const n=this.errorState,e=this._parentFormGroup||this._parentForm,i=this.matcher||this._defaultMatcher,r=this.ngControl?this.ngControl.control:null,o=i?.isErrorState(r,e)??!1;o!==n&&(this.errorState=o,this._stateChanges.next())}}let cp=(()=>{class t{isErrorState(e,i){return!!(e&&e.invalid&&(e.touched||i&&i.submitted))}static#e=this.\u0275fac=function(i){return new(i||t)};static#t=this.\u0275prov=P({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),zO=(()=>{class t{static#e=this.\u0275fac=function(i){return new(i||t)};static#t=this.\u0275mod=ge({type:t});static#n=this.\u0275inj=he({imports:[Te,Te]})}return t})();var Vi=function(t){return t[t.FADING_IN=0]="FADING_IN",t[t.VISIBLE=1]="VISIBLE",t[t.FADING_OUT=2]="FADING_OUT",t[t.HIDDEN=3]="HIDDEN",t}(Vi||{});class pX{constructor(n,e,i,r=!1){this._renderer=n,this.element=e,this.config=i,this._animationForciblyDisabledThroughCss=r,this.state=Vi.HIDDEN}fadeOut(){this._renderer.fadeOutRipple(this)}}const UO=Lo({passive:!0,capture:!0});class gX{constructor(){this._events=new Map,this._delegateEventHandler=n=>{const e=ro(n);e&&this._events.get(n.type)?.forEach((i,r)=>{(r===e||r.contains(e))&&i.forEach(o=>o.handleEvent(n))})}}addHandler(n,e,i,r){const o=this._events.get(e);if(o){const s=o.get(i);s?s.add(r):o.set(i,new Set([r]))}else this._events.set(e,new Map([[i,new Set([r])]])),n.runOutsideAngular(()=>{document.addEventListener(e,this._delegateEventHandler,UO)})}removeHandler(n,e,i){const r=this._events.get(n);if(!r)return;const o=r.get(e);o&&(o.delete(i),0===o.size&&r.delete(e),0===r.size&&(this._events.delete(n),document.removeEventListener(n,this._delegateEventHandler,UO)))}}const $O={enterDuration:225,exitDuration:150},qO=Lo({passive:!0,capture:!0}),GO=["mousedown","touchstart"],WO=["mouseup","mouseleave","touchend","touchcancel"];class lp{static#e=this._eventManager=new gX;constructor(n,e,i,r){this._target=n,this._ngZone=e,this._platform=r,this._isPointerDown=!1,this._activeRipples=new Map,this._pointerUpEventsRegistered=!1,r.isBrowser&&(this._containerElement=oo(i))}fadeInRipple(n,e,i={}){const r=this._containerRect=this._containerRect||this._containerElement.getBoundingClientRect(),o={...$O,...i.animation};i.centered&&(n=r.left+r.width/2,e=r.top+r.height/2);const s=i.radius||function bX(t,n,e){const i=Math.max(Math.abs(t-e.left),Math.abs(t-e.right)),r=Math.max(Math.abs(n-e.top),Math.abs(n-e.bottom));return Math.sqrt(i*i+r*r)}(n,e,r),a=n-r.left,c=e-r.top,l=o.enterDuration,d=document.createElement("div");d.classList.add("mat-ripple-element"),d.style.left=a-s+"px",d.style.top=c-s+"px",d.style.height=2*s+"px",d.style.width=2*s+"px",null!=i.color&&(d.style.backgroundColor=i.color),d.style.transitionDuration=`${l}ms`,this._containerElement.appendChild(d);const u=window.getComputedStyle(d),f=u.transitionDuration,m="none"===u.transitionProperty||"0s"===f||"0s, 0s"===f||0===r.width&&0===r.height,g=new pX(this,d,i,m);d.style.transform="scale3d(1, 1, 1)",g.state=Vi.FADING_IN,i.persistent||(this._mostRecentTransientRipple=g);let _=null;return!m&&(l||o.exitDuration)&&this._ngZone.runOutsideAngular(()=>{const b=()=>this._finishRippleTransition(g),v=()=>this._destroyRipple(g);d.addEventListener("transitionend",b),d.addEventListener("transitioncancel",v),_={onTransitionEnd:b,onTransitionCancel:v}}),this._activeRipples.set(g,_),(m||!l)&&this._finishRippleTransition(g),g}fadeOutRipple(n){if(n.state===Vi.FADING_OUT||n.state===Vi.HIDDEN)return;const e=n.element,i={...$O,...n.config.animation};e.style.transitionDuration=`${i.exitDuration}ms`,e.style.opacity="0",n.state=Vi.FADING_OUT,(n._animationForciblyDisabledThroughCss||!i.exitDuration)&&this._finishRippleTransition(n)}fadeOutAll(){this._getActiveRipples().forEach(n=>n.fadeOut())}fadeOutAllNonPersistent(){this._getActiveRipples().forEach(n=>{n.config.persistent||n.fadeOut()})}setupTriggerEvents(n){const e=oo(n);!this._platform.isBrowser||!e||e===this._triggerElement||(this._removeTriggerEvents(),this._triggerElement=e,GO.forEach(i=>{lp._eventManager.addHandler(this._ngZone,i,e,this)}))}handleEvent(n){"mousedown"===n.type?this._onMousedown(n):"touchstart"===n.type?this._onTouchStart(n):this._onPointerUp(),this._pointerUpEventsRegistered||(this._ngZone.runOutsideAngular(()=>{WO.forEach(e=>{this._triggerElement.addEventListener(e,this,qO)})}),this._pointerUpEventsRegistered=!0)}_finishRippleTransition(n){n.state===Vi.FADING_IN?this._startFadeOutTransition(n):n.state===Vi.FADING_OUT&&this._destroyRipple(n)}_startFadeOutTransition(n){const e=n===this._mostRecentTransientRipple,{persistent:i}=n.config;n.state=Vi.VISIBLE,!i&&(!e||!this._isPointerDown)&&n.fadeOut()}_destroyRipple(n){const e=this._activeRipples.get(n)??null;this._activeRipples.delete(n),this._activeRipples.size||(this._containerRect=null),n===this._mostRecentTransientRipple&&(this._mostRecentTransientRipple=null),n.state=Vi.HIDDEN,null!==e&&(n.element.removeEventListener("transitionend",e.onTransitionEnd),n.element.removeEventListener("transitioncancel",e.onTransitionCancel)),n.element.remove()}_onMousedown(n){const e=z0(n),i=this._lastTouchStartEvent&&Date.now(){!n.config.persistent&&(n.state===Vi.VISIBLE||n.config.terminateOnPointerUp&&n.state===Vi.FADING_IN)&&n.fadeOut()}))}_getActiveRipples(){return Array.from(this._activeRipples.keys())}_removeTriggerEvents(){const n=this._triggerElement;n&&(GO.forEach(e=>lp._eventManager.removeHandler(e,n,this)),this._pointerUpEventsRegistered&&WO.forEach(e=>n.removeEventListener(e,this,qO)))}}const dp=new M("mat-ripple-global-options");let Bo=(()=>{class t{get disabled(){return this._disabled}set disabled(e){e&&this.fadeOutAllNonPersistent(),this._disabled=e,this._setupTriggerEventsIfEnabled()}get trigger(){return this._trigger||this._elementRef.nativeElement}set trigger(e){this._trigger=e,this._setupTriggerEventsIfEnabled()}constructor(e,i,r,o,s){this._elementRef=e,this._animationMode=s,this.radius=0,this._disabled=!1,this._isInitialized=!1,this._globalOptions=o||{},this._rippleRenderer=new lp(this,i,e,r)}ngOnInit(){this._isInitialized=!0,this._setupTriggerEventsIfEnabled()}ngOnDestroy(){this._rippleRenderer._removeTriggerEvents()}fadeOutAll(){this._rippleRenderer.fadeOutAll()}fadeOutAllNonPersistent(){this._rippleRenderer.fadeOutAllNonPersistent()}get rippleConfig(){return{centered:this.centered,radius:this.radius,color:this.color,animation:{...this._globalOptions.animation,..."NoopAnimations"===this._animationMode?{enterDuration:0,exitDuration:0}:{},...this.animation},terminateOnPointerUp:this._globalOptions.terminateOnPointerUp}}get rippleDisabled(){return this.disabled||!!this._globalOptions.disabled}_setupTriggerEventsIfEnabled(){!this.disabled&&this._isInitialized&&this._rippleRenderer.setupTriggerEvents(this.trigger)}launch(e,i=0,r){return"number"==typeof e?this._rippleRenderer.fadeInRipple(e,i,{...this.rippleConfig,...r}):this._rippleRenderer.fadeInRipple(0,0,{...this.rippleConfig,...e})}static#e=this.\u0275fac=function(i){return new(i||t)(p(K),p(W),p(ut),p(dp,8),p(Bt,8))};static#t=this.\u0275dir=R({type:t,selectors:[["","mat-ripple",""],["","matRipple",""]],hostAttrs:[1,"mat-ripple"],hostVars:2,hostBindings:function(i,r){2&i&&de("mat-ripple-unbounded",r.unbounded)},inputs:{color:[D.None,"matRippleColor","color"],unbounded:[D.None,"matRippleUnbounded","unbounded"],centered:[D.None,"matRippleCentered","centered"],radius:[D.None,"matRippleRadius","radius"],animation:[D.None,"matRippleAnimation","animation"],disabled:[D.None,"matRippleDisabled","disabled"],trigger:[D.None,"matRippleTrigger","trigger"]},exportAs:["matRipple"],standalone:!0})}return t})(),eu=(()=>{class t{static#e=this.\u0275fac=function(i){return new(i||t)};static#t=this.\u0275mod=ge({type:t});static#n=this.\u0275inj=he({imports:[Te,Te]})}return t})(),vX=(()=>{class t{constructor(e){this._animationMode=e,this.state="unchecked",this.disabled=!1,this.appearance="full"}static#e=this.\u0275fac=function(i){return new(i||t)(p(Bt,8))};static#t=this.\u0275cmp=ue({type:t,selectors:[["mat-pseudo-checkbox"]],hostAttrs:[1,"mat-pseudo-checkbox"],hostVars:12,hostBindings:function(i,r){2&i&&de("mat-pseudo-checkbox-indeterminate","indeterminate"===r.state)("mat-pseudo-checkbox-checked","checked"===r.state)("mat-pseudo-checkbox-disabled",r.disabled)("mat-pseudo-checkbox-minimal","minimal"===r.appearance)("mat-pseudo-checkbox-full","full"===r.appearance)("_mat-animation-noopable","NoopAnimations"===r._animationMode)},inputs:{state:"state",disabled:"disabled",appearance:"appearance"},standalone:!0,features:[ve],decls:0,vars:0,template:function(i,r){},styles:['.mat-pseudo-checkbox{border-radius:2px;cursor:pointer;display:inline-block;vertical-align:middle;box-sizing:border-box;position:relative;flex-shrink:0;transition:border-color 90ms cubic-bezier(0, 0, 0.2, 0.1),background-color 90ms cubic-bezier(0, 0, 0.2, 0.1)}.mat-pseudo-checkbox::after{position:absolute;opacity:0;content:"";border-bottom:2px solid currentColor;transition:opacity 90ms cubic-bezier(0, 0, 0.2, 0.1)}.mat-pseudo-checkbox._mat-animation-noopable{transition:none !important;animation:none !important}.mat-pseudo-checkbox._mat-animation-noopable::after{transition:none}.mat-pseudo-checkbox-disabled{cursor:default}.mat-pseudo-checkbox-indeterminate::after{left:1px;opacity:1;border-radius:2px}.mat-pseudo-checkbox-checked::after{left:1px;border-left:2px solid currentColor;transform:rotate(-45deg);opacity:1;box-sizing:content-box}.mat-pseudo-checkbox-minimal.mat-pseudo-checkbox-checked::after,.mat-pseudo-checkbox-minimal.mat-pseudo-checkbox-indeterminate::after{color:var(--mat-minimal-pseudo-checkbox-selected-checkmark-color)}.mat-pseudo-checkbox-minimal.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-disabled::after,.mat-pseudo-checkbox-minimal.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-disabled::after{color:var(--mat-minimal-pseudo-checkbox-disabled-selected-checkmark-color)}.mat-pseudo-checkbox-full{border-color:var(--mat-full-pseudo-checkbox-unselected-icon-color);border-width:2px;border-style:solid}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-disabled{border-color:var(--mat-full-pseudo-checkbox-disabled-unselected-icon-color)}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-checked,.mat-pseudo-checkbox-full.mat-pseudo-checkbox-indeterminate{background-color:var(--mat-full-pseudo-checkbox-selected-icon-color);border-color:rgba(0,0,0,0)}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-checked::after,.mat-pseudo-checkbox-full.mat-pseudo-checkbox-indeterminate::after{color:var(--mat-full-pseudo-checkbox-selected-checkmark-color)}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-disabled,.mat-pseudo-checkbox-full.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-disabled{background-color:var(--mat-full-pseudo-checkbox-disabled-selected-icon-color)}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-disabled::after,.mat-pseudo-checkbox-full.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-disabled::after{color:var(--mat-full-pseudo-checkbox-disabled-selected-checkmark-color)}.mat-pseudo-checkbox{width:18px;height:18px}.mat-pseudo-checkbox-minimal.mat-pseudo-checkbox-checked::after{width:14px;height:6px;transform-origin:center;top:-4.2426406871px;left:0;bottom:0;right:0;margin:auto}.mat-pseudo-checkbox-minimal.mat-pseudo-checkbox-indeterminate::after{top:8px;width:16px}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-checked::after{width:10px;height:4px;transform-origin:center;top:-2.8284271247px;left:0;bottom:0;right:0;margin:auto}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-indeterminate::after{top:6px;width:12px}'],encapsulation:2,changeDetection:0})}return t})(),yX=(()=>{class t{static#e=this.\u0275fac=function(i){return new(i||t)};static#t=this.\u0275mod=ge({type:t});static#n=this.\u0275inj=he({imports:[Te]})}return t})();const q0=new M("MAT_OPTION_PARENT_COMPONENT"),G0=new M("MatOptgroup");let wX=0;class QO{constructor(n,e=!1){this.source=n,this.isUserInput=e}}let Ec=(()=>{class t{get multiple(){return this._parent&&this._parent.multiple}get selected(){return this._selected}get disabled(){return this.group&&this.group.disabled||this._disabled}set disabled(e){this._disabled=e}get disableRipple(){return!(!this._parent||!this._parent.disableRipple)}get hideSingleSelectionIndicator(){return!(!this._parent||!this._parent.hideSingleSelectionIndicator)}constructor(e,i,r,o){this._element=e,this._changeDetectorRef=i,this._parent=r,this.group=o,this._selected=!1,this._active=!1,this._disabled=!1,this._mostRecentViewValue="",this.id="mat-option-"+wX++,this.onSelectionChange=new G,this._stateChanges=new Z}get active(){return this._active}get viewValue(){return(this._text?.nativeElement.textContent||"").trim()}select(e=!0){this._selected||(this._selected=!0,this._changeDetectorRef.markForCheck(),e&&this._emitSelectionChangeEvent())}deselect(e=!0){this._selected&&(this._selected=!1,this._changeDetectorRef.markForCheck(),e&&this._emitSelectionChangeEvent())}focus(e,i){const r=this._getHostElement();"function"==typeof r.focus&&r.focus(i)}setActiveStyles(){this._active||(this._active=!0,this._changeDetectorRef.markForCheck())}setInactiveStyles(){this._active&&(this._active=!1,this._changeDetectorRef.markForCheck())}getLabel(){return this.viewValue}_handleKeydown(e){(13===e.keyCode||32===e.keyCode)&&!Kn(e)&&(this._selectViaInteraction(),e.preventDefault())}_selectViaInteraction(){this.disabled||(this._selected=!this.multiple||!this._selected,this._changeDetectorRef.markForCheck(),this._emitSelectionChangeEvent(!0))}_getTabIndex(){return this.disabled?"-1":"0"}_getHostElement(){return this._element.nativeElement}ngAfterViewChecked(){if(this._selected){const e=this.viewValue;e!==this._mostRecentViewValue&&(this._mostRecentViewValue&&this._stateChanges.next(),this._mostRecentViewValue=e)}}ngOnDestroy(){this._stateChanges.complete()}_emitSelectionChangeEvent(e=!1){this.onSelectionChange.emit(new QO(this,e))}static#e=this.\u0275fac=function(i){return new(i||t)(p(K),p(Ke),p(q0,8),p(G0,8))};static#t=this.\u0275cmp=ue({type:t,selectors:[["mat-option"]],viewQuery:function(i,r){if(1&i&&Le(eX,7),2&i){let o;U(o=$())&&(r._text=o.first)}},hostAttrs:["role","option",1,"mat-mdc-option","mdc-list-item"],hostVars:11,hostBindings:function(i,r){1&i&&q("click",function(){return r._selectViaInteraction()})("keydown",function(s){return r._handleKeydown(s)}),2&i&&(Zi("id",r.id),me("aria-selected",r.selected)("aria-disabled",r.disabled.toString()),de("mdc-list-item--selected",r.selected)("mat-mdc-option-multiple",r.multiple)("mat-mdc-option-active",r.active)("mdc-list-item--disabled",r.disabled))},inputs:{value:"value",id:"id",disabled:[D.HasDecoratorInputTransform,"disabled","disabled",j]},outputs:{onSelectionChange:"onSelectionChange"},exportAs:["matOption"],standalone:!0,features:[Fe,ve],ngContentSelectors:nX,decls:8,vars:5,consts:[["text",""],["aria-hidden","true",1,"mat-mdc-option-pseudo-checkbox",3,"disabled","state"],[1,"mdc-list-item__primary-text"],["state","checked","aria-hidden","true","appearance","minimal",1,"mat-mdc-option-pseudo-checkbox",3,"disabled"],[1,"cdk-visually-hidden"],["aria-hidden","true","mat-ripple","",1,"mat-mdc-option-ripple","mat-mdc-focus-indicator",3,"matRippleTrigger","matRippleDisabled"]],template:function(i,r){1&i&&($e(tX),H(0,iX,1,2,"mat-pseudo-checkbox",1),Y(1),y(2,"span",2,0),Y(4,1),w(),H(5,rX,1,1,"mat-pseudo-checkbox",3)(6,oX,2,1,"span",4),re(7,"div",5)),2&i&&(X(0,r.multiple?0:-1),C(5),X(5,r.multiple||!r.selected||r.hideSingleSelectionIndicator?-1:5),C(),X(6,r.group&&r.group._inert?6:-1),C(),z("matRippleTrigger",r._getHostElement())("matRippleDisabled",r.disabled||r.disableRipple))},dependencies:[vX,Bo],styles:['.mat-mdc-option{display:flex;position:relative;align-items:center;justify-content:flex-start;overflow:hidden;padding:0;padding-left:16px;padding-right:16px;-webkit-user-select:none;user-select:none;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0);color:var(--mat-option-label-text-color);font-family:var(--mat-option-label-text-font);line-height:var(--mat-option-label-text-line-height);font-size:var(--mat-option-label-text-size);letter-spacing:var(--mat-option-label-text-tracking);font-weight:var(--mat-option-label-text-weight);min-height:48px}.mat-mdc-option:focus{outline:none}[dir=rtl] .mat-mdc-option,.mat-mdc-option[dir=rtl]{padding-left:16px;padding-right:16px}.mat-mdc-option:hover:not(.mdc-list-item--disabled){background-color:var(--mat-option-hover-state-layer-color)}.mat-mdc-option:focus.mdc-list-item,.mat-mdc-option.mat-mdc-option-active.mdc-list-item{background-color:var(--mat-option-focus-state-layer-color)}.mat-mdc-option.mdc-list-item--selected:not(.mdc-list-item--disabled) .mdc-list-item__primary-text{color:var(--mat-option-selected-state-label-text-color)}.mat-mdc-option.mdc-list-item--selected:not(.mdc-list-item--disabled):not(.mat-mdc-option-multiple){background-color:var(--mat-option-selected-state-layer-color)}.mat-mdc-option.mdc-list-item{align-items:center;background:rgba(0,0,0,0)}.mat-mdc-option.mdc-list-item--disabled{cursor:default;pointer-events:none}.mat-mdc-option.mdc-list-item--disabled .mat-mdc-option-pseudo-checkbox,.mat-mdc-option.mdc-list-item--disabled .mdc-list-item__primary-text,.mat-mdc-option.mdc-list-item--disabled>mat-icon{opacity:.38}.mat-mdc-optgroup .mat-mdc-option:not(.mat-mdc-option-multiple){padding-left:32px}[dir=rtl] .mat-mdc-optgroup .mat-mdc-option:not(.mat-mdc-option-multiple){padding-left:16px;padding-right:32px}.mat-mdc-option .mat-icon,.mat-mdc-option .mat-pseudo-checkbox-full{margin-right:16px;flex-shrink:0}[dir=rtl] .mat-mdc-option .mat-icon,[dir=rtl] .mat-mdc-option .mat-pseudo-checkbox-full{margin-right:0;margin-left:16px}.mat-mdc-option .mat-pseudo-checkbox-minimal{margin-left:16px;flex-shrink:0}[dir=rtl] .mat-mdc-option .mat-pseudo-checkbox-minimal{margin-right:16px;margin-left:0}.mat-mdc-option .mat-mdc-option-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}.mat-mdc-option .mdc-list-item__primary-text{white-space:normal;font-size:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;font-family:inherit;text-decoration:inherit;text-transform:inherit;margin-right:auto}[dir=rtl] .mat-mdc-option .mdc-list-item__primary-text{margin-right:0;margin-left:auto}.cdk-high-contrast-active .mat-mdc-option.mdc-list-item--selected:not(.mat-mdc-option-multiple)::after{content:"";position:absolute;top:50%;right:16px;transform:translateY(-50%);width:10px;height:0;border-bottom:solid 10px;border-radius:10px}[dir=rtl] .cdk-high-contrast-active .mat-mdc-option.mdc-list-item--selected:not(.mat-mdc-option-multiple)::after{right:auto;left:16px}.mat-mdc-option-multiple{--mdc-list-list-item-selected-container-color:var(--mdc-list-list-item-container-color, transparent)}.mat-mdc-option-active .mat-mdc-focus-indicator::before{content:""}'],encapsulation:2,changeDetection:0})}return t})();function YO(t,n,e){if(e.length){let i=n.toArray(),r=e.toArray(),o=0;for(let s=0;se+i?Math.max(0,t-i+n):e}let tu=(()=>{class t{static#e=this.\u0275fac=function(i){return new(i||t)};static#t=this.\u0275mod=ge({type:t});static#n=this.\u0275inj=he({imports:[eu,Te,yX]})}return t})();const XO={capture:!0},ZO=["focus","click","mouseenter","touchstart"],W0="mat-ripple-loader-uninitialized",Q0="mat-ripple-loader-class-name",JO="mat-ripple-loader-centered",up="mat-ripple-loader-disabled";let eN=(()=>{class t{constructor(){this._document=T(_e,{optional:!0}),this._animationMode=T(Bt,{optional:!0}),this._globalRippleOptions=T(dp,{optional:!0}),this._platform=T(ut),this._ngZone=T(W),this._hosts=new Map,this._onInteraction=e=>{if(!(e.target instanceof HTMLElement))return;const r=e.target.closest(`[${W0}]`);r&&this._createRipple(r)},this._ngZone.runOutsideAngular(()=>{for(const e of ZO)this._document?.addEventListener(e,this._onInteraction,XO)})}ngOnDestroy(){const e=this._hosts.keys();for(const i of e)this.destroyRipple(i);for(const i of ZO)this._document?.removeEventListener(i,this._onInteraction,XO)}configureRipple(e,i){e.setAttribute(W0,""),(i.className||!e.hasAttribute(Q0))&&e.setAttribute(Q0,i.className||""),i.centered&&e.setAttribute(JO,""),i.disabled&&e.setAttribute(up,"")}getRipple(e){return this._hosts.get(e)||this._createRipple(e)}setDisabled(e,i){const r=this._hosts.get(e);r?r.disabled=i:i?e.setAttribute(up,""):e.removeAttribute(up)}_createRipple(e){if(!this._document)return;const i=this._hosts.get(e);if(i)return i;e.querySelector(".mat-ripple")?.remove();const r=this._document.createElement("span");r.classList.add("mat-ripple",e.getAttribute(Q0)),e.append(r);const o=new Bo(new K(r),this._ngZone,this._platform,this._globalRippleOptions?this._globalRippleOptions:void 0,this._animationMode?this._animationMode:void 0);return o._isInitialized=!0,o.trigger=e,o.centered=e.hasAttribute(JO),o.disabled=e.hasAttribute(up),this.attachRipple(e,o),o}attachRipple(e,i){e.removeAttribute(W0),this._hosts.set(e,i)}destroyRipple(e){const i=this._hosts.get(e);i&&(i.ngOnDestroy(),this._hosts.delete(e))}static#e=this.\u0275fac=function(i){return new(i||t)};static#t=this.\u0275prov=P({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),tN=(()=>{class t{static#e=this.\u0275fac=function(i){return new(i||t)};static#t=this.\u0275cmp=ue({type:t,selectors:[["div","mat-internal-form-field",""]],hostAttrs:[1,"mdc-form-field","mat-internal-form-field"],hostVars:2,hostBindings:function(i,r){2&i&&de("mdc-form-field--align-end","before"===r.labelPosition)},inputs:{labelPosition:"labelPosition"},standalone:!0,features:[ve],attrs:sX,ngContentSelectors:aX,decls:1,vars:0,template:function(i,r){1&i&&($e(),Y(0))},styles:[".mdc-form-field{display:inline-flex;align-items:center;vertical-align:middle}.mdc-form-field[hidden]{display:none}.mdc-form-field>label{margin-left:0;margin-right:auto;padding-left:4px;padding-right:0;order:0}[dir=rtl] .mdc-form-field>label,.mdc-form-field>label[dir=rtl]{margin-left:auto;margin-right:0}[dir=rtl] .mdc-form-field>label,.mdc-form-field>label[dir=rtl]{padding-left:0;padding-right:4px}.mdc-form-field--nowrap>label{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.mdc-form-field--align-end>label{margin-left:auto;margin-right:0;padding-left:0;padding-right:4px;order:-1}[dir=rtl] .mdc-form-field--align-end>label,.mdc-form-field--align-end>label[dir=rtl]{margin-left:0;margin-right:auto}[dir=rtl] .mdc-form-field--align-end>label,.mdc-form-field--align-end>label[dir=rtl]{padding-left:4px;padding-right:0}.mdc-form-field--space-between{justify-content:space-between}.mdc-form-field--space-between>label{margin:0}[dir=rtl] .mdc-form-field--space-between>label,.mdc-form-field--space-between>label[dir=rtl]{margin:0}.mdc-form-field{font-family:var(--mdc-form-field-label-text-font);line-height:var(--mdc-form-field-label-text-line-height);font-size:var(--mdc-form-field-label-text-size);font-weight:var(--mdc-form-field-label-text-weight);letter-spacing:var(--mdc-form-field-label-text-tracking);color:var(--mdc-form-field-label-text-color)}.mat-internal-form-field{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}"],encapsulation:2,changeDetection:0})}return t})();function nu(t,n){const e=Qe(t)?t:()=>t,i=r=>r.error(e());return new Ye(n?r=>n.schedule(i,0,r):i)}function nN(...t){const n=Y1(t),{args:e,keys:i}=yO(t),r=new Ye(o=>{const{length:s}=e;if(!s)return void o.complete();const a=new Array(s);let c=s,l=s;for(let d=0;d{u||(u=!0,l--),a[d]=h},()=>c--,void 0,()=>{(!c||!u)&&(l||o.next(i?wO(i,a):a),o.complete())}))}});return n?r.pipe(V0(n)):r}function di(t){return Lt((n,e)=>{let o,i=null,r=!1;i=n.subscribe(Rt(e,void 0,void 0,s=>{o=jn(t(s,di(t)(n))),i?(i.unsubscribe(),i=null,o.subscribe(e)):r=!0})),r&&(i.unsubscribe(),i=null,o.subscribe(e))})}function iN(t={}){const{connector:n=(()=>new Z),resetOnError:e=!0,resetOnComplete:i=!0,resetOnRefCountZero:r=!0}=t;return o=>{let s,a,c,l=0,d=!1,u=!1;const h=()=>{a?.unsubscribe(),a=void 0},f=()=>{h(),s=c=void 0,d=u=!1},m=()=>{const g=s;f(),g?.unsubscribe()};return Lt((g,_)=>{l++,!u&&!d&&h();const b=c=c??n();_.add(()=>{l--,0===l&&!u&&!d&&(a=Y0(m,r))}),b.subscribe(_),!s&&l>0&&(s=new yl({next:v=>b.next(v),error:v=>{u=!0,h(),a=Y0(f,e,v),b.error(v)},complete:()=>{d=!0,h(),a=Y0(f,i),b.complete()}}),jn(g).subscribe(s))})(o)}}function Y0(t,n,...e){if(!0===n)return void t();if(!1===n)return;const i=new yl({next:()=>{i.unsubscribe(),t()}});return jn(n(...e)).subscribe(i)}const xX=["*"];let hp;function iu(t){return function CX(){if(void 0===hp&&(hp=null,typeof window<"u")){const t=window;void 0!==t.trustedTypes&&(hp=t.trustedTypes.createPolicy("angular#components",{createHTML:n=>n}))}return hp}()?.createHTML(t)||t}function rN(t){return Error(`Unable to find icon with the name "${t}"`)}function oN(t){return Error(`The URL provided to MatIconRegistry was not trusted as a resource URL via Angular's DomSanitizer. Attempted URL was "${t}".`)}function sN(t){return Error(`The literal provided to MatIconRegistry was not trusted as safe HTML by Angular's DomSanitizer. Attempted literal was "${t}".`)}class Vs{constructor(n,e,i){this.url=n,this.svgText=e,this.options=i}}let ru=(()=>{class t{constructor(e,i,r,o){this._httpClient=e,this._sanitizer=i,this._errorHandler=o,this._svgIconConfigs=new Map,this._iconSetConfigs=new Map,this._cachedIconsByUrl=new Map,this._inProgressUrlFetches=new Map,this._fontCssClassesByAlias=new Map,this._resolvers=[],this._defaultFontSetClass=["material-icons","mat-ligature-font"],this._document=r}addSvgIcon(e,i,r){return this.addSvgIconInNamespace("",e,i,r)}addSvgIconLiteral(e,i,r){return this.addSvgIconLiteralInNamespace("",e,i,r)}addSvgIconInNamespace(e,i,r,o){return this._addSvgIconConfig(e,i,new Vs(r,null,o))}addSvgIconResolver(e){return this._resolvers.push(e),this}addSvgIconLiteralInNamespace(e,i,r,o){const s=this._sanitizer.sanitize(En.HTML,r);if(!s)throw sN(r);const a=iu(s);return this._addSvgIconConfig(e,i,new Vs("",a,o))}addSvgIconSet(e,i){return this.addSvgIconSetInNamespace("",e,i)}addSvgIconSetLiteral(e,i){return this.addSvgIconSetLiteralInNamespace("",e,i)}addSvgIconSetInNamespace(e,i,r){return this._addSvgIconSetConfig(e,new Vs(i,null,r))}addSvgIconSetLiteralInNamespace(e,i,r){const o=this._sanitizer.sanitize(En.HTML,i);if(!o)throw sN(i);const s=iu(o);return this._addSvgIconSetConfig(e,new Vs("",s,r))}registerFontClassAlias(e,i=e){return this._fontCssClassesByAlias.set(e,i),this}classNameForFontAlias(e){return this._fontCssClassesByAlias.get(e)||e}setDefaultFontSetClass(...e){return this._defaultFontSetClass=e,this}getDefaultFontSetClass(){return this._defaultFontSetClass}getSvgIconFromUrl(e){const i=this._sanitizer.sanitize(En.RESOURCE_URL,e);if(!i)throw oN(e);const r=this._cachedIconsByUrl.get(i);return r?se(fp(r)):this._loadSvgIconFromConfig(new Vs(e,null)).pipe(pt(o=>this._cachedIconsByUrl.set(i,o)),ne(o=>fp(o)))}getNamedSvgIcon(e,i=""){const r=aN(i,e);let o=this._svgIconConfigs.get(r);if(o)return this._getSvgFromConfig(o);if(o=this._getIconConfigFromResolvers(i,e),o)return this._svgIconConfigs.set(r,o),this._getSvgFromConfig(o);const s=this._iconSetConfigs.get(i);return s?this._getSvgFromIconSetConfigs(e,s):nu(rN(r))}ngOnDestroy(){this._resolvers=[],this._svgIconConfigs.clear(),this._iconSetConfigs.clear(),this._cachedIconsByUrl.clear()}_getSvgFromConfig(e){return e.svgText?se(fp(this._svgElementFromConfig(e))):this._loadSvgIconFromConfig(e).pipe(ne(i=>fp(i)))}_getSvgFromIconSetConfigs(e,i){const r=this._extractIconWithNameFromAnySet(e,i);return r?se(r):nN(i.filter(s=>!s.svgText).map(s=>this._loadSvgIconSetFromConfig(s).pipe(di(a=>{const l=`Loading icon set URL: ${this._sanitizer.sanitize(En.RESOURCE_URL,s.url)} failed: ${a.message}`;return this._errorHandler.handleError(new Error(l)),se(null)})))).pipe(ne(()=>{const s=this._extractIconWithNameFromAnySet(e,i);if(!s)throw rN(e);return s}))}_extractIconWithNameFromAnySet(e,i){for(let r=i.length-1;r>=0;r--){const o=i[r];if(o.svgText&&o.svgText.toString().indexOf(e)>-1){const s=this._svgElementFromConfig(o),a=this._extractSvgIconFromSet(s,e,o.options);if(a)return a}}return null}_loadSvgIconFromConfig(e){return this._fetchIcon(e).pipe(pt(i=>e.svgText=i),ne(()=>this._svgElementFromConfig(e)))}_loadSvgIconSetFromConfig(e){return e.svgText?se(null):this._fetchIcon(e).pipe(pt(i=>e.svgText=i))}_extractSvgIconFromSet(e,i,r){const o=e.querySelector(`[id="${i}"]`);if(!o)return null;const s=o.cloneNode(!0);if(s.removeAttribute("id"),"svg"===s.nodeName.toLowerCase())return this._setSvgAttributes(s,r);if("symbol"===s.nodeName.toLowerCase())return this._setSvgAttributes(this._toSvgElement(s),r);const a=this._svgElementFromString(iu(""));return a.appendChild(s),this._setSvgAttributes(a,r)}_svgElementFromString(e){const i=this._document.createElement("DIV");i.innerHTML=e;const r=i.querySelector("svg");if(!r)throw Error(" tag not found");return r}_toSvgElement(e){const i=this._svgElementFromString(iu("")),r=e.attributes;for(let o=0;oiu(l)),gc(()=>this._inProgressUrlFetches.delete(s)),iN());return this._inProgressUrlFetches.set(s,c),c}_addSvgIconConfig(e,i,r){return this._svgIconConfigs.set(aN(e,i),r),this}_addSvgIconSetConfig(e,i){const r=this._iconSetConfigs.get(e);return r?r.push(i):this._iconSetConfigs.set(e,[i]),this}_svgElementFromConfig(e){if(!e.svgElement){const i=this._svgElementFromString(e.svgText);this._setSvgAttributes(i,e.options),e.svgElement=i}return e.svgElement}_getIconConfigFromResolvers(e,i){for(let r=0;rn?n.pathname+n.search:""}}}),cN=["clip-path","color-profile","src","cursor","fill","filter","marker","marker-start","marker-mid","marker-end","mask","stroke"],IX=cN.map(t=>`[${t}]`).join(", "),AX=/^url\(['"]?#(.*?)['"]?\)$/;let ou=(()=>{class t{get color(){return this._color||this._defaultColor}set color(e){this._color=e}get svgIcon(){return this._svgIcon}set svgIcon(e){e!==this._svgIcon&&(e?this._updateSvgIcon(e):this._svgIcon&&this._clearSvgElement(),this._svgIcon=e)}get fontSet(){return this._fontSet}set fontSet(e){const i=this._cleanupFontValue(e);i!==this._fontSet&&(this._fontSet=i,this._updateFontIconClasses())}get fontIcon(){return this._fontIcon}set fontIcon(e){const i=this._cleanupFontValue(e);i!==this._fontIcon&&(this._fontIcon=i,this._updateFontIconClasses())}constructor(e,i,r,o,s,a){this._elementRef=e,this._iconRegistry=i,this._location=o,this._errorHandler=s,this.inline=!1,this._previousFontSetClass=[],this._currentIconFetch=Ae.EMPTY,a&&(a.color&&(this.color=this._defaultColor=a.color),a.fontSet&&(this.fontSet=a.fontSet)),r||e.nativeElement.setAttribute("aria-hidden","true")}_splitIconName(e){if(!e)return["",""];const i=e.split(":");switch(i.length){case 1:return["",i[0]];case 2:return i;default:throw Error(`Invalid icon name: "${e}"`)}}ngOnInit(){this._updateFontIconClasses()}ngAfterViewChecked(){const e=this._elementsWithExternalReferences;if(e&&e.size){const i=this._location.getPathname();i!==this._previousPath&&(this._previousPath=i,this._prependPathToReferences(i))}}ngOnDestroy(){this._currentIconFetch.unsubscribe(),this._elementsWithExternalReferences&&this._elementsWithExternalReferences.clear()}_usingFontIcon(){return!this.svgIcon}_setSvgElement(e){this._clearSvgElement();const i=this._location.getPathname();this._previousPath=i,this._cacheChildrenWithExternalReferences(e),this._prependPathToReferences(i),this._elementRef.nativeElement.appendChild(e)}_clearSvgElement(){const e=this._elementRef.nativeElement;let i=e.childNodes.length;for(this._elementsWithExternalReferences&&this._elementsWithExternalReferences.clear();i--;){const r=e.childNodes[i];(1!==r.nodeType||"svg"===r.nodeName.toLowerCase())&&r.remove()}}_updateFontIconClasses(){if(!this._usingFontIcon())return;const e=this._elementRef.nativeElement,i=(this.fontSet?this._iconRegistry.classNameForFontAlias(this.fontSet).split(/ +/):this._iconRegistry.getDefaultFontSetClass()).filter(r=>r.length>0);this._previousFontSetClass.forEach(r=>e.classList.remove(r)),i.forEach(r=>e.classList.add(r)),this._previousFontSetClass=i,this.fontIcon!==this._previousFontIconClass&&!i.includes("mat-ligature-font")&&(this._previousFontIconClass&&e.classList.remove(this._previousFontIconClass),this.fontIcon&&e.classList.add(this.fontIcon),this._previousFontIconClass=this.fontIcon)}_cleanupFontValue(e){return"string"==typeof e?e.trim().split(" ")[0]:e}_prependPathToReferences(e){const i=this._elementsWithExternalReferences;i&&i.forEach((r,o)=>{r.forEach(s=>{o.setAttribute(s.name,`url('${e}#${s.value}')`)})})}_cacheChildrenWithExternalReferences(e){const i=e.querySelectorAll(IX),r=this._elementsWithExternalReferences=this._elementsWithExternalReferences||new Map;for(let o=0;o{const a=i[o],c=a.getAttribute(s),l=c?c.match(AX):null;if(l){let d=r.get(a);d||(d=[],r.set(a,d)),d.push({name:s,value:l[1]})}})}_updateSvgIcon(e){if(this._svgNamespace=null,this._svgName=null,this._currentIconFetch.unsubscribe(),e){const[i,r]=this._splitIconName(e);i&&(this._svgNamespace=i),r&&(this._svgName=r),this._currentIconFetch=this._iconRegistry.getNamedSvgIcon(r,i).pipe(gt(1)).subscribe(o=>this._setSvgElement(o),o=>{this._errorHandler.handleError(new Error(`Error retrieving icon ${i}:${r}! ${o.message}`))})}}static#e=this.\u0275fac=function(i){return new(i||t)(p(K),p(ru),bi("aria-hidden"),p(SX),p(vi),p(TX,8))};static#t=this.\u0275cmp=ue({type:t,selectors:[["mat-icon"]],hostAttrs:["role","img",1,"mat-icon","notranslate"],hostVars:10,hostBindings:function(i,r){2&i&&(me("data-mat-icon-type",r._usingFontIcon()?"font":"svg")("data-mat-icon-name",r._svgName||r.fontIcon)("data-mat-icon-namespace",r._svgNamespace||r.fontSet)("fontIcon",r._usingFontIcon()?r.fontIcon:null),bn(r.color?"mat-"+r.color:""),de("mat-icon-inline",r.inline)("mat-icon-no-color","primary"!==r.color&&"accent"!==r.color&&"warn"!==r.color))},inputs:{color:"color",inline:[D.HasDecoratorInputTransform,"inline","inline",j],svgIcon:"svgIcon",fontSet:"fontSet",fontIcon:"fontIcon"},exportAs:["matIcon"],standalone:!0,features:[Fe,ve],ngContentSelectors:xX,decls:1,vars:0,template:function(i,r){1&i&&($e(),Y(0))},styles:["mat-icon,mat-icon.mat-primary,mat-icon.mat-accent,mat-icon.mat-warn{color:var(--mat-icon-color)}.mat-icon{-webkit-user-select:none;user-select:none;background-repeat:no-repeat;display:inline-block;fill:currentColor;height:24px;width:24px;overflow:hidden}.mat-icon.mat-icon-inline{font-size:inherit;height:inherit;line-height:inherit;width:inherit}.mat-icon.mat-ligature-font[fontIcon]::before{content:attr(fontIcon)}[dir=rtl] .mat-icon-rtl-mirror{transform:scale(-1, 1)}.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-prefix .mat-icon,.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mat-icon{display:block}.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-prefix .mat-icon-button .mat-icon,.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mat-icon-button .mat-icon{margin:auto}"],encapsulation:2,changeDetection:0})}return t})(),K0=(()=>{class t{static#e=this.\u0275fac=function(i){return new(i||t)};static#t=this.\u0275mod=ge({type:t});static#n=this.\u0275inj=he({imports:[Te,Te]})}return t})();const lN=["mat-button",""],X0=[[["",8,"material-icons",3,"iconPositionEnd",""],["mat-icon",3,"iconPositionEnd",""],["","matButtonIcon","",3,"iconPositionEnd",""]],"*",[["","iconPositionEnd","",8,"material-icons"],["mat-icon","iconPositionEnd",""],["","matButtonIcon","","iconPositionEnd",""]]],Z0=[".material-icons:not([iconPositionEnd]), mat-icon:not([iconPositionEnd]), [matButtonIcon]:not([iconPositionEnd])","*",".material-icons[iconPositionEnd], mat-icon[iconPositionEnd], [matButtonIcon][iconPositionEnd]"],dN=".cdk-high-contrast-active .mat-mdc-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-unelevated-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-raised-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-outlined-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-icon-button{outline:solid 1px}",OX=["mat-mini-fab",""],FX=["mat-icon-button",""],PX=["*"],LX=new M("MAT_BUTTON_CONFIG"),VX=[{attribute:"mat-button",mdcClasses:["mdc-button","mat-mdc-button"]},{attribute:"mat-flat-button",mdcClasses:["mdc-button","mdc-button--unelevated","mat-mdc-unelevated-button"]},{attribute:"mat-raised-button",mdcClasses:["mdc-button","mdc-button--raised","mat-mdc-raised-button"]},{attribute:"mat-stroked-button",mdcClasses:["mdc-button","mdc-button--outlined","mat-mdc-outlined-button"]},{attribute:"mat-fab",mdcClasses:["mdc-fab","mat-mdc-fab"]},{attribute:"mat-mini-fab",mdcClasses:["mdc-fab","mdc-fab--mini","mat-mdc-mini-fab"]},{attribute:"mat-icon-button",mdcClasses:["mdc-icon-button","mat-mdc-icon-button"]}];let mp=(()=>{class t{get ripple(){return this._rippleLoader?.getRipple(this._elementRef.nativeElement)}set ripple(e){this._rippleLoader?.attachRipple(this._elementRef.nativeElement,e)}get disableRipple(){return this._disableRipple}set disableRipple(e){this._disableRipple=e,this._updateRippleDisabled()}get disabled(){return this._disabled}set disabled(e){this._disabled=e,this._updateRippleDisabled()}constructor(e,i,r,o){this._elementRef=e,this._platform=i,this._ngZone=r,this._animationMode=o,this._focusMonitor=T(Mr),this._rippleLoader=T(eN),this._isFab=!1,this._disableRipple=!1,this._disabled=!1;const s=T(LX,{optional:!0}),a=e.nativeElement,c=a.classList;this.disabledInteractive=s?.disabledInteractive??!1,this._rippleLoader?.configureRipple(a,{className:"mat-mdc-button-ripple"});for(const{attribute:l,mdcClasses:d}of VX)a.hasAttribute(l)&&c.add(...d)}ngAfterViewInit(){this._focusMonitor.monitor(this._elementRef,!0)}ngOnDestroy(){this._focusMonitor.stopMonitoring(this._elementRef),this._rippleLoader?.destroyRipple(this._elementRef.nativeElement)}focus(e="program",i){e?this._focusMonitor.focusVia(this._elementRef.nativeElement,e,i):this._elementRef.nativeElement.focus(i)}_getAriaDisabled(){return null!=this.ariaDisabled?this.ariaDisabled:!(!this.disabled||!this.disabledInteractive)||null}_getDisabledAttribute(){return!(this.disabledInteractive||!this.disabled)||null}_updateRippleDisabled(){this._rippleLoader?.setDisabled(this._elementRef.nativeElement,this.disableRipple||this.disabled)}static#e=this.\u0275fac=function(i){gf()};static#t=this.\u0275dir=R({type:t,inputs:{color:"color",disableRipple:[D.HasDecoratorInputTransform,"disableRipple","disableRipple",j],disabled:[D.HasDecoratorInputTransform,"disabled","disabled",j],ariaDisabled:[D.HasDecoratorInputTransform,"aria-disabled","ariaDisabled",j],disabledInteractive:[D.HasDecoratorInputTransform,"disabledInteractive","disabledInteractive",j]},features:[Fe]})}return t})(),BX=(()=>{class t extends mp{constructor(e,i,r,o){super(e,i,r,o),this._haltDisabledEvents=s=>{this.disabled&&(s.preventDefault(),s.stopImmediatePropagation())}}ngOnInit(){this._ngZone.runOutsideAngular(()=>{this._elementRef.nativeElement.addEventListener("click",this._haltDisabledEvents)})}ngOnDestroy(){super.ngOnDestroy(),this._elementRef.nativeElement.removeEventListener("click",this._haltDisabledEvents)}_getAriaDisabled(){return null==this.ariaDisabled?this.disabled:this.ariaDisabled}static#e=this.\u0275fac=function(i){gf()};static#t=this.\u0275dir=R({type:t,inputs:{tabIndex:[D.HasDecoratorInputTransform,"tabIndex","tabIndex",e=>null==e?void 0:Jt(e)]},features:[Fe,J]})}return t})(),pp=(()=>{class t extends mp{constructor(e,i,r,o){super(e,i,r,o)}static#e=this.\u0275fac=function(i){return new(i||t)(p(K),p(ut),p(W),p(Bt,8))};static#t=this.\u0275cmp=ue({type:t,selectors:[["button","mat-button",""],["button","mat-raised-button",""],["button","mat-flat-button",""],["button","mat-stroked-button",""]],hostVars:14,hostBindings:function(i,r){2&i&&(me("disabled",r._getDisabledAttribute())("aria-disabled",r._getAriaDisabled()),bn(r.color?"mat-"+r.color:""),de("mat-mdc-button-disabled",r.disabled)("mat-mdc-button-disabled-interactive",r.disabledInteractive)("_mat-animation-noopable","NoopAnimations"===r._animationMode)("mat-unthemed",!r.color)("mat-mdc-button-base",!0))},exportAs:["matButton"],standalone:!0,features:[J,ve],attrs:lN,ngContentSelectors:Z0,decls:7,vars:4,consts:[[1,"mat-mdc-button-persistent-ripple"],[1,"mdc-button__label"],[1,"mat-mdc-focus-indicator"],[1,"mat-mdc-button-touch-target"]],template:function(i,r){1&i&&($e(X0),re(0,"span",0),Y(1),y(2,"span",1),Y(3,1),w(),Y(4,2),re(5,"span",2)(6,"span",3)),2&i&&de("mdc-button__ripple",!r._isFab)("mdc-fab__ripple",r._isFab)},styles:['.mdc-touch-target-wrapper{display:inline}.mdc-elevation-overlay{position:absolute;border-radius:inherit;pointer-events:none;opacity:var(--mdc-elevation-overlay-opacity, 0);transition:opacity 280ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-button{position:relative;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;min-width:64px;border:none;outline:none;line-height:inherit;user-select:none;-webkit-appearance:none;overflow:visible;vertical-align:middle;background:rgba(0,0,0,0)}.mdc-button .mdc-elevation-overlay{width:100%;height:100%;top:0;left:0}.mdc-button::-moz-focus-inner{padding:0;border:0}.mdc-button:active{outline:none}.mdc-button:hover{cursor:pointer}.mdc-button:disabled{cursor:default;pointer-events:none}.mdc-button[hidden]{display:none}.mdc-button .mdc-button__icon{margin-left:0;margin-right:8px;display:inline-block;position:relative;vertical-align:top}[dir=rtl] .mdc-button .mdc-button__icon,.mdc-button .mdc-button__icon[dir=rtl]{margin-left:8px;margin-right:0}.mdc-button .mdc-button__progress-indicator{font-size:0;position:absolute;transform:translate(-50%, -50%);top:50%;left:50%;line-height:initial}.mdc-button .mdc-button__label{position:relative}.mdc-button .mdc-button__focus-ring{pointer-events:none;border:2px solid rgba(0,0,0,0);border-radius:6px;box-sizing:content-box;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:calc(100% + 4px);width:calc(100% + 4px);display:none}@media screen and (forced-colors: active){.mdc-button .mdc-button__focus-ring{border-color:CanvasText}}.mdc-button .mdc-button__focus-ring::after{content:"";border:2px solid rgba(0,0,0,0);border-radius:8px;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:calc(100% + 4px);width:calc(100% + 4px)}@media screen and (forced-colors: active){.mdc-button .mdc-button__focus-ring::after{border-color:CanvasText}}@media screen and (forced-colors: active){.mdc-button.mdc-ripple-upgraded--background-focused .mdc-button__focus-ring,.mdc-button:not(.mdc-ripple-upgraded):focus .mdc-button__focus-ring{display:block}}.mdc-button .mdc-button__touch{position:absolute;top:50%;height:48px;left:0;right:0;transform:translateY(-50%)}.mdc-button__label+.mdc-button__icon{margin-left:8px;margin-right:0}[dir=rtl] .mdc-button__label+.mdc-button__icon,.mdc-button__label+.mdc-button__icon[dir=rtl]{margin-left:0;margin-right:8px}svg.mdc-button__icon{fill:currentColor}.mdc-button--touch{margin-top:6px;margin-bottom:6px}.mdc-button{padding:0 8px 0 8px}.mdc-button--unelevated{transition:box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);padding:0 16px 0 16px}.mdc-button--unelevated.mdc-button--icon-trailing{padding:0 12px 0 16px}.mdc-button--unelevated.mdc-button--icon-leading{padding:0 16px 0 12px}.mdc-button--raised{transition:box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);padding:0 16px 0 16px}.mdc-button--raised.mdc-button--icon-trailing{padding:0 12px 0 16px}.mdc-button--raised.mdc-button--icon-leading{padding:0 16px 0 12px}.mdc-button--outlined{border-style:solid;transition:border 280ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-button--outlined .mdc-button__ripple{border-style:solid;border-color:rgba(0,0,0,0)}.mat-mdc-button{font-family:var(--mdc-text-button-label-text-font);font-size:var(--mdc-text-button-label-text-size);letter-spacing:var(--mdc-text-button-label-text-tracking);font-weight:var(--mdc-text-button-label-text-weight);text-transform:var(--mdc-text-button-label-text-transform);height:var(--mdc-text-button-container-height);border-radius:var(--mdc-text-button-container-shape);padding:0 var(--mat-text-button-horizontal-padding, 8px)}.mat-mdc-button:not(:disabled){color:var(--mdc-text-button-label-text-color)}.mat-mdc-button:disabled{color:var(--mdc-text-button-disabled-label-text-color)}.mat-mdc-button .mdc-button__ripple{border-radius:var(--mdc-text-button-container-shape)}.mat-mdc-button:has(.material-icons,mat-icon,[matButtonIcon]){padding:0 var(--mat-text-button-with-icon-horizontal-padding, 8px)}.mat-mdc-button>.mat-icon{margin-right:var(--mat-text-button-icon-spacing, 8px);margin-left:var(--mat-text-button-icon-offset, 0)}[dir=rtl] .mat-mdc-button>.mat-icon{margin-right:var(--mat-text-button-icon-offset, 0);margin-left:var(--mat-text-button-icon-spacing, 8px)}.mat-mdc-button .mdc-button__label+.mat-icon{margin-right:var(--mat-text-button-icon-offset, 0);margin-left:var(--mat-text-button-icon-spacing, 8px)}[dir=rtl] .mat-mdc-button .mdc-button__label+.mat-icon{margin-right:var(--mat-text-button-icon-spacing, 8px);margin-left:var(--mat-text-button-icon-offset, 0)}.mat-mdc-button .mat-ripple-element{background-color:var(--mat-text-button-ripple-color)}.mat-mdc-button .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-text-button-state-layer-color)}.mat-mdc-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-text-button-disabled-state-layer-color)}.mat-mdc-button:hover .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-text-button-hover-state-layer-opacity)}.mat-mdc-button.cdk-program-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-button.mat-mdc-button-disabled-interactive:focus .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-text-button-focus-state-layer-opacity)}.mat-mdc-button:active .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-text-button-pressed-state-layer-opacity)}.mat-mdc-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:48px;left:0;right:0;transform:translateY(-50%);display:var(--mat-text-button-touch-target-display)}.mat-mdc-button[disabled],.mat-mdc-button.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mdc-text-button-disabled-label-text-color)}.mat-mdc-button.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-mdc-unelevated-button{font-family:var(--mdc-filled-button-label-text-font);font-size:var(--mdc-filled-button-label-text-size);letter-spacing:var(--mdc-filled-button-label-text-tracking);font-weight:var(--mdc-filled-button-label-text-weight);text-transform:var(--mdc-filled-button-label-text-transform);height:var(--mdc-filled-button-container-height);border-radius:var(--mdc-filled-button-container-shape);padding:0 var(--mat-filled-button-horizontal-padding, 16px)}.mat-mdc-unelevated-button:not(:disabled){background-color:var(--mdc-filled-button-container-color)}.mat-mdc-unelevated-button:disabled{background-color:var(--mdc-filled-button-disabled-container-color)}.mat-mdc-unelevated-button:not(:disabled){color:var(--mdc-filled-button-label-text-color)}.mat-mdc-unelevated-button:disabled{color:var(--mdc-filled-button-disabled-label-text-color)}.mat-mdc-unelevated-button .mdc-button__ripple{border-radius:var(--mdc-filled-button-container-shape)}.mat-mdc-unelevated-button>.mat-icon{margin-right:var(--mat-filled-button-icon-spacing, 8px);margin-left:var(--mat-filled-button-icon-offset, -4px)}[dir=rtl] .mat-mdc-unelevated-button>.mat-icon{margin-right:var(--mat-filled-button-icon-offset, -4px);margin-left:var(--mat-filled-button-icon-spacing, 8px)}.mat-mdc-unelevated-button .mdc-button__label+.mat-icon{margin-right:var(--mat-filled-button-icon-offset, -4px);margin-left:var(--mat-filled-button-icon-spacing, 8px)}[dir=rtl] .mat-mdc-unelevated-button .mdc-button__label+.mat-icon{margin-right:var(--mat-filled-button-icon-spacing, 8px);margin-left:var(--mat-filled-button-icon-offset, -4px)}.mat-mdc-unelevated-button .mat-ripple-element{background-color:var(--mat-filled-button-ripple-color)}.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-filled-button-state-layer-color)}.mat-mdc-unelevated-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-filled-button-disabled-state-layer-color)}.mat-mdc-unelevated-button:hover .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-filled-button-hover-state-layer-opacity)}.mat-mdc-unelevated-button.cdk-program-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button.mat-mdc-button-disabled-interactive:focus .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-filled-button-focus-state-layer-opacity)}.mat-mdc-unelevated-button:active .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-filled-button-pressed-state-layer-opacity)}.mat-mdc-unelevated-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:48px;left:0;right:0;transform:translateY(-50%);display:var(--mat-filled-button-touch-target-display)}.mat-mdc-unelevated-button[disabled],.mat-mdc-unelevated-button.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mdc-filled-button-disabled-label-text-color);background-color:var(--mdc-filled-button-disabled-container-color)}.mat-mdc-unelevated-button.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-mdc-raised-button{font-family:var(--mdc-protected-button-label-text-font);font-size:var(--mdc-protected-button-label-text-size);letter-spacing:var(--mdc-protected-button-label-text-tracking);font-weight:var(--mdc-protected-button-label-text-weight);text-transform:var(--mdc-protected-button-label-text-transform);height:var(--mdc-protected-button-container-height);border-radius:var(--mdc-protected-button-container-shape);padding:0 var(--mat-protected-button-horizontal-padding, 16px);box-shadow:var(--mdc-protected-button-container-elevation-shadow)}.mat-mdc-raised-button:not(:disabled){background-color:var(--mdc-protected-button-container-color)}.mat-mdc-raised-button:disabled{background-color:var(--mdc-protected-button-disabled-container-color)}.mat-mdc-raised-button:not(:disabled){color:var(--mdc-protected-button-label-text-color)}.mat-mdc-raised-button:disabled{color:var(--mdc-protected-button-disabled-label-text-color)}.mat-mdc-raised-button .mdc-button__ripple{border-radius:var(--mdc-protected-button-container-shape)}.mat-mdc-raised-button>.mat-icon{margin-right:var(--mat-protected-button-icon-spacing, 8px);margin-left:var(--mat-protected-button-icon-offset, -4px)}[dir=rtl] .mat-mdc-raised-button>.mat-icon{margin-right:var(--mat-protected-button-icon-offset, -4px);margin-left:var(--mat-protected-button-icon-spacing, 8px)}.mat-mdc-raised-button .mdc-button__label+.mat-icon{margin-right:var(--mat-protected-button-icon-offset, -4px);margin-left:var(--mat-protected-button-icon-spacing, 8px)}[dir=rtl] .mat-mdc-raised-button .mdc-button__label+.mat-icon{margin-right:var(--mat-protected-button-icon-spacing, 8px);margin-left:var(--mat-protected-button-icon-offset, -4px)}.mat-mdc-raised-button .mat-ripple-element{background-color:var(--mat-protected-button-ripple-color)}.mat-mdc-raised-button .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-protected-button-state-layer-color)}.mat-mdc-raised-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-protected-button-disabled-state-layer-color)}.mat-mdc-raised-button:hover .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-protected-button-hover-state-layer-opacity)}.mat-mdc-raised-button.cdk-program-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button.mat-mdc-button-disabled-interactive:focus .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-protected-button-focus-state-layer-opacity)}.mat-mdc-raised-button:active .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-protected-button-pressed-state-layer-opacity)}.mat-mdc-raised-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:48px;left:0;right:0;transform:translateY(-50%);display:var(--mat-protected-button-touch-target-display)}.mat-mdc-raised-button:hover{box-shadow:var(--mdc-protected-button-hover-container-elevation-shadow)}.mat-mdc-raised-button:focus{box-shadow:var(--mdc-protected-button-focus-container-elevation-shadow)}.mat-mdc-raised-button:active,.mat-mdc-raised-button:focus:active{box-shadow:var(--mdc-protected-button-pressed-container-elevation-shadow)}.mat-mdc-raised-button[disabled],.mat-mdc-raised-button.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mdc-protected-button-disabled-label-text-color);background-color:var(--mdc-protected-button-disabled-container-color)}.mat-mdc-raised-button[disabled].mat-mdc-button-disabled,.mat-mdc-raised-button.mat-mdc-button-disabled.mat-mdc-button-disabled{box-shadow:var(--mdc-protected-button-disabled-container-elevation-shadow)}.mat-mdc-raised-button.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-mdc-outlined-button{font-family:var(--mdc-outlined-button-label-text-font);font-size:var(--mdc-outlined-button-label-text-size);letter-spacing:var(--mdc-outlined-button-label-text-tracking);font-weight:var(--mdc-outlined-button-label-text-weight);text-transform:var(--mdc-outlined-button-label-text-transform);height:var(--mdc-outlined-button-container-height);border-radius:var(--mdc-outlined-button-container-shape);padding:0 15px 0 15px;border-width:var(--mdc-outlined-button-outline-width);padding:0 var(--mat-outlined-button-horizontal-padding, 15px)}.mat-mdc-outlined-button:not(:disabled){color:var(--mdc-outlined-button-label-text-color)}.mat-mdc-outlined-button:disabled{color:var(--mdc-outlined-button-disabled-label-text-color)}.mat-mdc-outlined-button .mdc-button__ripple{border-radius:var(--mdc-outlined-button-container-shape)}.mat-mdc-outlined-button:not(:disabled){border-color:var(--mdc-outlined-button-outline-color)}.mat-mdc-outlined-button:disabled{border-color:var(--mdc-outlined-button-disabled-outline-color)}.mat-mdc-outlined-button.mdc-button--icon-trailing{padding:0 11px 0 15px}.mat-mdc-outlined-button.mdc-button--icon-leading{padding:0 15px 0 11px}.mat-mdc-outlined-button .mdc-button__ripple{top:-1px;left:-1px;bottom:-1px;right:-1px;border-width:var(--mdc-outlined-button-outline-width)}.mat-mdc-outlined-button .mdc-button__touch{left:calc(-1 * var(--mdc-outlined-button-outline-width));width:calc(100% + 2 * var(--mdc-outlined-button-outline-width))}.mat-mdc-outlined-button>.mat-icon{margin-right:var(--mat-outlined-button-icon-spacing, 8px);margin-left:var(--mat-outlined-button-icon-offset, -4px)}[dir=rtl] .mat-mdc-outlined-button>.mat-icon{margin-right:var(--mat-outlined-button-icon-offset, -4px);margin-left:var(--mat-outlined-button-icon-spacing, 8px)}.mat-mdc-outlined-button .mdc-button__label+.mat-icon{margin-right:var(--mat-outlined-button-icon-offset, -4px);margin-left:var(--mat-outlined-button-icon-spacing, 8px)}[dir=rtl] .mat-mdc-outlined-button .mdc-button__label+.mat-icon{margin-right:var(--mat-outlined-button-icon-spacing, 8px);margin-left:var(--mat-outlined-button-icon-offset, -4px)}.mat-mdc-outlined-button .mat-ripple-element{background-color:var(--mat-outlined-button-ripple-color)}.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-outlined-button-state-layer-color)}.mat-mdc-outlined-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-outlined-button-disabled-state-layer-color)}.mat-mdc-outlined-button:hover .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-outlined-button-hover-state-layer-opacity)}.mat-mdc-outlined-button.cdk-program-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button.mat-mdc-button-disabled-interactive:focus .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-outlined-button-focus-state-layer-opacity)}.mat-mdc-outlined-button:active .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-outlined-button-pressed-state-layer-opacity)}.mat-mdc-outlined-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:48px;left:0;right:0;transform:translateY(-50%);display:var(--mat-outlined-button-touch-target-display)}.mat-mdc-outlined-button[disabled],.mat-mdc-outlined-button.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mdc-outlined-button-disabled-label-text-color);border-color:var(--mdc-outlined-button-disabled-outline-color)}.mat-mdc-outlined-button.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-mdc-button-base{text-decoration:none}.mat-mdc-button,.mat-mdc-unelevated-button,.mat-mdc-raised-button,.mat-mdc-outlined-button{-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-button .mat-mdc-button-ripple,.mat-mdc-button .mat-mdc-button-persistent-ripple,.mat-mdc-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button .mat-mdc-button-ripple,.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple,.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button .mat-mdc-button-ripple,.mat-mdc-raised-button .mat-mdc-button-persistent-ripple,.mat-mdc-raised-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button .mat-mdc-button-ripple,.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple,.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple::before{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-mdc-button .mat-mdc-button-ripple,.mat-mdc-unelevated-button .mat-mdc-button-ripple,.mat-mdc-raised-button .mat-mdc-button-ripple,.mat-mdc-outlined-button .mat-mdc-button-ripple{overflow:hidden}.mat-mdc-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple::before{content:"";opacity:0}.mat-mdc-button .mdc-button__label,.mat-mdc-unelevated-button .mdc-button__label,.mat-mdc-raised-button .mdc-button__label,.mat-mdc-outlined-button .mdc-button__label{z-index:1}.mat-mdc-button .mat-mdc-focus-indicator,.mat-mdc-unelevated-button .mat-mdc-focus-indicator,.mat-mdc-raised-button .mat-mdc-focus-indicator,.mat-mdc-outlined-button .mat-mdc-focus-indicator{top:0;left:0;right:0;bottom:0;position:absolute}.mat-mdc-button:focus .mat-mdc-focus-indicator::before,.mat-mdc-unelevated-button:focus .mat-mdc-focus-indicator::before,.mat-mdc-raised-button:focus .mat-mdc-focus-indicator::before,.mat-mdc-outlined-button:focus .mat-mdc-focus-indicator::before{content:""}.mat-mdc-button._mat-animation-noopable,.mat-mdc-unelevated-button._mat-animation-noopable,.mat-mdc-raised-button._mat-animation-noopable,.mat-mdc-outlined-button._mat-animation-noopable{transition:none !important;animation:none !important}.mat-mdc-button>.mat-icon,.mat-mdc-unelevated-button>.mat-icon,.mat-mdc-raised-button>.mat-icon,.mat-mdc-outlined-button>.mat-icon{display:inline-block;position:relative;vertical-align:top;font-size:1.125rem;height:1.125rem;width:1.125rem}.mat-mdc-outlined-button .mat-mdc-button-ripple,.mat-mdc-outlined-button .mdc-button__ripple{top:-1px;left:-1px;bottom:-1px;right:-1px;border-width:-1px}.mat-mdc-unelevated-button .mat-mdc-focus-indicator::before,.mat-mdc-raised-button .mat-mdc-focus-indicator::before{margin:calc(calc(var(--mat-mdc-focus-indicator-border-width, 3px) + 2px)*-1)}.mat-mdc-outlined-button .mat-mdc-focus-indicator::before{margin:calc(calc(var(--mat-mdc-focus-indicator-border-width, 3px) + 3px)*-1)}',".cdk-high-contrast-active .mat-mdc-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-unelevated-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-raised-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-outlined-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-icon-button{outline:solid 1px}"],encapsulation:2,changeDetection:0})}return t})(),jX=(()=>{class t extends BX{constructor(e,i,r,o){super(e,i,r,o)}static#e=this.\u0275fac=function(i){return new(i||t)(p(K),p(ut),p(W),p(Bt,8))};static#t=this.\u0275cmp=ue({type:t,selectors:[["a","mat-button",""],["a","mat-raised-button",""],["a","mat-flat-button",""],["a","mat-stroked-button",""]],hostVars:15,hostBindings:function(i,r){2&i&&(me("disabled",r._getDisabledAttribute())("tabindex",r.disabled&&!r.disabledInteractive?-1:r.tabIndex)("aria-disabled",r._getDisabledAttribute()),bn(r.color?"mat-"+r.color:""),de("mat-mdc-button-disabled",r.disabled)("mat-mdc-button-disabled-interactive",r.disabledInteractive)("_mat-animation-noopable","NoopAnimations"===r._animationMode)("mat-unthemed",!r.color)("mat-mdc-button-base",!0))},exportAs:["matButton","matAnchor"],standalone:!0,features:[J,ve],attrs:lN,ngContentSelectors:Z0,decls:7,vars:4,consts:[[1,"mat-mdc-button-persistent-ripple"],[1,"mdc-button__label"],[1,"mat-mdc-focus-indicator"],[1,"mat-mdc-button-touch-target"]],template:function(i,r){1&i&&($e(X0),re(0,"span",0),Y(1),y(2,"span",1),Y(3,1),w(),Y(4,2),re(5,"span",2)(6,"span",3)),2&i&&de("mdc-button__ripple",!r._isFab)("mdc-fab__ripple",r._isFab)},styles:['.mdc-touch-target-wrapper{display:inline}.mdc-elevation-overlay{position:absolute;border-radius:inherit;pointer-events:none;opacity:var(--mdc-elevation-overlay-opacity, 0);transition:opacity 280ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-button{position:relative;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;min-width:64px;border:none;outline:none;line-height:inherit;user-select:none;-webkit-appearance:none;overflow:visible;vertical-align:middle;background:rgba(0,0,0,0)}.mdc-button .mdc-elevation-overlay{width:100%;height:100%;top:0;left:0}.mdc-button::-moz-focus-inner{padding:0;border:0}.mdc-button:active{outline:none}.mdc-button:hover{cursor:pointer}.mdc-button:disabled{cursor:default;pointer-events:none}.mdc-button[hidden]{display:none}.mdc-button .mdc-button__icon{margin-left:0;margin-right:8px;display:inline-block;position:relative;vertical-align:top}[dir=rtl] .mdc-button .mdc-button__icon,.mdc-button .mdc-button__icon[dir=rtl]{margin-left:8px;margin-right:0}.mdc-button .mdc-button__progress-indicator{font-size:0;position:absolute;transform:translate(-50%, -50%);top:50%;left:50%;line-height:initial}.mdc-button .mdc-button__label{position:relative}.mdc-button .mdc-button__focus-ring{pointer-events:none;border:2px solid rgba(0,0,0,0);border-radius:6px;box-sizing:content-box;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:calc(100% + 4px);width:calc(100% + 4px);display:none}@media screen and (forced-colors: active){.mdc-button .mdc-button__focus-ring{border-color:CanvasText}}.mdc-button .mdc-button__focus-ring::after{content:"";border:2px solid rgba(0,0,0,0);border-radius:8px;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:calc(100% + 4px);width:calc(100% + 4px)}@media screen and (forced-colors: active){.mdc-button .mdc-button__focus-ring::after{border-color:CanvasText}}@media screen and (forced-colors: active){.mdc-button.mdc-ripple-upgraded--background-focused .mdc-button__focus-ring,.mdc-button:not(.mdc-ripple-upgraded):focus .mdc-button__focus-ring{display:block}}.mdc-button .mdc-button__touch{position:absolute;top:50%;height:48px;left:0;right:0;transform:translateY(-50%)}.mdc-button__label+.mdc-button__icon{margin-left:8px;margin-right:0}[dir=rtl] .mdc-button__label+.mdc-button__icon,.mdc-button__label+.mdc-button__icon[dir=rtl]{margin-left:0;margin-right:8px}svg.mdc-button__icon{fill:currentColor}.mdc-button--touch{margin-top:6px;margin-bottom:6px}.mdc-button{padding:0 8px 0 8px}.mdc-button--unelevated{transition:box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);padding:0 16px 0 16px}.mdc-button--unelevated.mdc-button--icon-trailing{padding:0 12px 0 16px}.mdc-button--unelevated.mdc-button--icon-leading{padding:0 16px 0 12px}.mdc-button--raised{transition:box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);padding:0 16px 0 16px}.mdc-button--raised.mdc-button--icon-trailing{padding:0 12px 0 16px}.mdc-button--raised.mdc-button--icon-leading{padding:0 16px 0 12px}.mdc-button--outlined{border-style:solid;transition:border 280ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-button--outlined .mdc-button__ripple{border-style:solid;border-color:rgba(0,0,0,0)}.mat-mdc-button{font-family:var(--mdc-text-button-label-text-font);font-size:var(--mdc-text-button-label-text-size);letter-spacing:var(--mdc-text-button-label-text-tracking);font-weight:var(--mdc-text-button-label-text-weight);text-transform:var(--mdc-text-button-label-text-transform);height:var(--mdc-text-button-container-height);border-radius:var(--mdc-text-button-container-shape);padding:0 var(--mat-text-button-horizontal-padding, 8px)}.mat-mdc-button:not(:disabled){color:var(--mdc-text-button-label-text-color)}.mat-mdc-button:disabled{color:var(--mdc-text-button-disabled-label-text-color)}.mat-mdc-button .mdc-button__ripple{border-radius:var(--mdc-text-button-container-shape)}.mat-mdc-button:has(.material-icons,mat-icon,[matButtonIcon]){padding:0 var(--mat-text-button-with-icon-horizontal-padding, 8px)}.mat-mdc-button>.mat-icon{margin-right:var(--mat-text-button-icon-spacing, 8px);margin-left:var(--mat-text-button-icon-offset, 0)}[dir=rtl] .mat-mdc-button>.mat-icon{margin-right:var(--mat-text-button-icon-offset, 0);margin-left:var(--mat-text-button-icon-spacing, 8px)}.mat-mdc-button .mdc-button__label+.mat-icon{margin-right:var(--mat-text-button-icon-offset, 0);margin-left:var(--mat-text-button-icon-spacing, 8px)}[dir=rtl] .mat-mdc-button .mdc-button__label+.mat-icon{margin-right:var(--mat-text-button-icon-spacing, 8px);margin-left:var(--mat-text-button-icon-offset, 0)}.mat-mdc-button .mat-ripple-element{background-color:var(--mat-text-button-ripple-color)}.mat-mdc-button .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-text-button-state-layer-color)}.mat-mdc-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-text-button-disabled-state-layer-color)}.mat-mdc-button:hover .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-text-button-hover-state-layer-opacity)}.mat-mdc-button.cdk-program-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-button.mat-mdc-button-disabled-interactive:focus .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-text-button-focus-state-layer-opacity)}.mat-mdc-button:active .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-text-button-pressed-state-layer-opacity)}.mat-mdc-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:48px;left:0;right:0;transform:translateY(-50%);display:var(--mat-text-button-touch-target-display)}.mat-mdc-button[disabled],.mat-mdc-button.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mdc-text-button-disabled-label-text-color)}.mat-mdc-button.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-mdc-unelevated-button{font-family:var(--mdc-filled-button-label-text-font);font-size:var(--mdc-filled-button-label-text-size);letter-spacing:var(--mdc-filled-button-label-text-tracking);font-weight:var(--mdc-filled-button-label-text-weight);text-transform:var(--mdc-filled-button-label-text-transform);height:var(--mdc-filled-button-container-height);border-radius:var(--mdc-filled-button-container-shape);padding:0 var(--mat-filled-button-horizontal-padding, 16px)}.mat-mdc-unelevated-button:not(:disabled){background-color:var(--mdc-filled-button-container-color)}.mat-mdc-unelevated-button:disabled{background-color:var(--mdc-filled-button-disabled-container-color)}.mat-mdc-unelevated-button:not(:disabled){color:var(--mdc-filled-button-label-text-color)}.mat-mdc-unelevated-button:disabled{color:var(--mdc-filled-button-disabled-label-text-color)}.mat-mdc-unelevated-button .mdc-button__ripple{border-radius:var(--mdc-filled-button-container-shape)}.mat-mdc-unelevated-button>.mat-icon{margin-right:var(--mat-filled-button-icon-spacing, 8px);margin-left:var(--mat-filled-button-icon-offset, -4px)}[dir=rtl] .mat-mdc-unelevated-button>.mat-icon{margin-right:var(--mat-filled-button-icon-offset, -4px);margin-left:var(--mat-filled-button-icon-spacing, 8px)}.mat-mdc-unelevated-button .mdc-button__label+.mat-icon{margin-right:var(--mat-filled-button-icon-offset, -4px);margin-left:var(--mat-filled-button-icon-spacing, 8px)}[dir=rtl] .mat-mdc-unelevated-button .mdc-button__label+.mat-icon{margin-right:var(--mat-filled-button-icon-spacing, 8px);margin-left:var(--mat-filled-button-icon-offset, -4px)}.mat-mdc-unelevated-button .mat-ripple-element{background-color:var(--mat-filled-button-ripple-color)}.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-filled-button-state-layer-color)}.mat-mdc-unelevated-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-filled-button-disabled-state-layer-color)}.mat-mdc-unelevated-button:hover .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-filled-button-hover-state-layer-opacity)}.mat-mdc-unelevated-button.cdk-program-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button.mat-mdc-button-disabled-interactive:focus .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-filled-button-focus-state-layer-opacity)}.mat-mdc-unelevated-button:active .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-filled-button-pressed-state-layer-opacity)}.mat-mdc-unelevated-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:48px;left:0;right:0;transform:translateY(-50%);display:var(--mat-filled-button-touch-target-display)}.mat-mdc-unelevated-button[disabled],.mat-mdc-unelevated-button.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mdc-filled-button-disabled-label-text-color);background-color:var(--mdc-filled-button-disabled-container-color)}.mat-mdc-unelevated-button.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-mdc-raised-button{font-family:var(--mdc-protected-button-label-text-font);font-size:var(--mdc-protected-button-label-text-size);letter-spacing:var(--mdc-protected-button-label-text-tracking);font-weight:var(--mdc-protected-button-label-text-weight);text-transform:var(--mdc-protected-button-label-text-transform);height:var(--mdc-protected-button-container-height);border-radius:var(--mdc-protected-button-container-shape);padding:0 var(--mat-protected-button-horizontal-padding, 16px);box-shadow:var(--mdc-protected-button-container-elevation-shadow)}.mat-mdc-raised-button:not(:disabled){background-color:var(--mdc-protected-button-container-color)}.mat-mdc-raised-button:disabled{background-color:var(--mdc-protected-button-disabled-container-color)}.mat-mdc-raised-button:not(:disabled){color:var(--mdc-protected-button-label-text-color)}.mat-mdc-raised-button:disabled{color:var(--mdc-protected-button-disabled-label-text-color)}.mat-mdc-raised-button .mdc-button__ripple{border-radius:var(--mdc-protected-button-container-shape)}.mat-mdc-raised-button>.mat-icon{margin-right:var(--mat-protected-button-icon-spacing, 8px);margin-left:var(--mat-protected-button-icon-offset, -4px)}[dir=rtl] .mat-mdc-raised-button>.mat-icon{margin-right:var(--mat-protected-button-icon-offset, -4px);margin-left:var(--mat-protected-button-icon-spacing, 8px)}.mat-mdc-raised-button .mdc-button__label+.mat-icon{margin-right:var(--mat-protected-button-icon-offset, -4px);margin-left:var(--mat-protected-button-icon-spacing, 8px)}[dir=rtl] .mat-mdc-raised-button .mdc-button__label+.mat-icon{margin-right:var(--mat-protected-button-icon-spacing, 8px);margin-left:var(--mat-protected-button-icon-offset, -4px)}.mat-mdc-raised-button .mat-ripple-element{background-color:var(--mat-protected-button-ripple-color)}.mat-mdc-raised-button .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-protected-button-state-layer-color)}.mat-mdc-raised-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-protected-button-disabled-state-layer-color)}.mat-mdc-raised-button:hover .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-protected-button-hover-state-layer-opacity)}.mat-mdc-raised-button.cdk-program-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button.mat-mdc-button-disabled-interactive:focus .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-protected-button-focus-state-layer-opacity)}.mat-mdc-raised-button:active .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-protected-button-pressed-state-layer-opacity)}.mat-mdc-raised-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:48px;left:0;right:0;transform:translateY(-50%);display:var(--mat-protected-button-touch-target-display)}.mat-mdc-raised-button:hover{box-shadow:var(--mdc-protected-button-hover-container-elevation-shadow)}.mat-mdc-raised-button:focus{box-shadow:var(--mdc-protected-button-focus-container-elevation-shadow)}.mat-mdc-raised-button:active,.mat-mdc-raised-button:focus:active{box-shadow:var(--mdc-protected-button-pressed-container-elevation-shadow)}.mat-mdc-raised-button[disabled],.mat-mdc-raised-button.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mdc-protected-button-disabled-label-text-color);background-color:var(--mdc-protected-button-disabled-container-color)}.mat-mdc-raised-button[disabled].mat-mdc-button-disabled,.mat-mdc-raised-button.mat-mdc-button-disabled.mat-mdc-button-disabled{box-shadow:var(--mdc-protected-button-disabled-container-elevation-shadow)}.mat-mdc-raised-button.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-mdc-outlined-button{font-family:var(--mdc-outlined-button-label-text-font);font-size:var(--mdc-outlined-button-label-text-size);letter-spacing:var(--mdc-outlined-button-label-text-tracking);font-weight:var(--mdc-outlined-button-label-text-weight);text-transform:var(--mdc-outlined-button-label-text-transform);height:var(--mdc-outlined-button-container-height);border-radius:var(--mdc-outlined-button-container-shape);padding:0 15px 0 15px;border-width:var(--mdc-outlined-button-outline-width);padding:0 var(--mat-outlined-button-horizontal-padding, 15px)}.mat-mdc-outlined-button:not(:disabled){color:var(--mdc-outlined-button-label-text-color)}.mat-mdc-outlined-button:disabled{color:var(--mdc-outlined-button-disabled-label-text-color)}.mat-mdc-outlined-button .mdc-button__ripple{border-radius:var(--mdc-outlined-button-container-shape)}.mat-mdc-outlined-button:not(:disabled){border-color:var(--mdc-outlined-button-outline-color)}.mat-mdc-outlined-button:disabled{border-color:var(--mdc-outlined-button-disabled-outline-color)}.mat-mdc-outlined-button.mdc-button--icon-trailing{padding:0 11px 0 15px}.mat-mdc-outlined-button.mdc-button--icon-leading{padding:0 15px 0 11px}.mat-mdc-outlined-button .mdc-button__ripple{top:-1px;left:-1px;bottom:-1px;right:-1px;border-width:var(--mdc-outlined-button-outline-width)}.mat-mdc-outlined-button .mdc-button__touch{left:calc(-1 * var(--mdc-outlined-button-outline-width));width:calc(100% + 2 * var(--mdc-outlined-button-outline-width))}.mat-mdc-outlined-button>.mat-icon{margin-right:var(--mat-outlined-button-icon-spacing, 8px);margin-left:var(--mat-outlined-button-icon-offset, -4px)}[dir=rtl] .mat-mdc-outlined-button>.mat-icon{margin-right:var(--mat-outlined-button-icon-offset, -4px);margin-left:var(--mat-outlined-button-icon-spacing, 8px)}.mat-mdc-outlined-button .mdc-button__label+.mat-icon{margin-right:var(--mat-outlined-button-icon-offset, -4px);margin-left:var(--mat-outlined-button-icon-spacing, 8px)}[dir=rtl] .mat-mdc-outlined-button .mdc-button__label+.mat-icon{margin-right:var(--mat-outlined-button-icon-spacing, 8px);margin-left:var(--mat-outlined-button-icon-offset, -4px)}.mat-mdc-outlined-button .mat-ripple-element{background-color:var(--mat-outlined-button-ripple-color)}.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-outlined-button-state-layer-color)}.mat-mdc-outlined-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-outlined-button-disabled-state-layer-color)}.mat-mdc-outlined-button:hover .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-outlined-button-hover-state-layer-opacity)}.mat-mdc-outlined-button.cdk-program-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button.mat-mdc-button-disabled-interactive:focus .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-outlined-button-focus-state-layer-opacity)}.mat-mdc-outlined-button:active .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-outlined-button-pressed-state-layer-opacity)}.mat-mdc-outlined-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:48px;left:0;right:0;transform:translateY(-50%);display:var(--mat-outlined-button-touch-target-display)}.mat-mdc-outlined-button[disabled],.mat-mdc-outlined-button.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mdc-outlined-button-disabled-label-text-color);border-color:var(--mdc-outlined-button-disabled-outline-color)}.mat-mdc-outlined-button.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-mdc-button-base{text-decoration:none}.mat-mdc-button,.mat-mdc-unelevated-button,.mat-mdc-raised-button,.mat-mdc-outlined-button{-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-button .mat-mdc-button-ripple,.mat-mdc-button .mat-mdc-button-persistent-ripple,.mat-mdc-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button .mat-mdc-button-ripple,.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple,.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button .mat-mdc-button-ripple,.mat-mdc-raised-button .mat-mdc-button-persistent-ripple,.mat-mdc-raised-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button .mat-mdc-button-ripple,.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple,.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple::before{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-mdc-button .mat-mdc-button-ripple,.mat-mdc-unelevated-button .mat-mdc-button-ripple,.mat-mdc-raised-button .mat-mdc-button-ripple,.mat-mdc-outlined-button .mat-mdc-button-ripple{overflow:hidden}.mat-mdc-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple::before{content:"";opacity:0}.mat-mdc-button .mdc-button__label,.mat-mdc-unelevated-button .mdc-button__label,.mat-mdc-raised-button .mdc-button__label,.mat-mdc-outlined-button .mdc-button__label{z-index:1}.mat-mdc-button .mat-mdc-focus-indicator,.mat-mdc-unelevated-button .mat-mdc-focus-indicator,.mat-mdc-raised-button .mat-mdc-focus-indicator,.mat-mdc-outlined-button .mat-mdc-focus-indicator{top:0;left:0;right:0;bottom:0;position:absolute}.mat-mdc-button:focus .mat-mdc-focus-indicator::before,.mat-mdc-unelevated-button:focus .mat-mdc-focus-indicator::before,.mat-mdc-raised-button:focus .mat-mdc-focus-indicator::before,.mat-mdc-outlined-button:focus .mat-mdc-focus-indicator::before{content:""}.mat-mdc-button._mat-animation-noopable,.mat-mdc-unelevated-button._mat-animation-noopable,.mat-mdc-raised-button._mat-animation-noopable,.mat-mdc-outlined-button._mat-animation-noopable{transition:none !important;animation:none !important}.mat-mdc-button>.mat-icon,.mat-mdc-unelevated-button>.mat-icon,.mat-mdc-raised-button>.mat-icon,.mat-mdc-outlined-button>.mat-icon{display:inline-block;position:relative;vertical-align:top;font-size:1.125rem;height:1.125rem;width:1.125rem}.mat-mdc-outlined-button .mat-mdc-button-ripple,.mat-mdc-outlined-button .mdc-button__ripple{top:-1px;left:-1px;bottom:-1px;right:-1px;border-width:-1px}.mat-mdc-unelevated-button .mat-mdc-focus-indicator::before,.mat-mdc-raised-button .mat-mdc-focus-indicator::before{margin:calc(calc(var(--mat-mdc-focus-indicator-border-width, 3px) + 2px)*-1)}.mat-mdc-outlined-button .mat-mdc-focus-indicator::before{margin:calc(calc(var(--mat-mdc-focus-indicator-border-width, 3px) + 3px)*-1)}',dN],encapsulation:2,changeDetection:0})}return t})();const HX=new M("mat-mdc-fab-default-options",{providedIn:"root",factory:uN});function uN(){return{color:"accent"}}const hN=uN();let zX=(()=>{class t extends mp{constructor(e,i,r,o,s){super(e,i,r,o),this._options=s,this._isFab=!0,this._options=this._options||hN,this.color=this._options.color||hN.color}static#e=this.\u0275fac=function(i){return new(i||t)(p(K),p(ut),p(W),p(Bt,8),p(HX,8))};static#t=this.\u0275cmp=ue({type:t,selectors:[["button","mat-mini-fab",""]],hostVars:14,hostBindings:function(i,r){2&i&&(me("disabled",r._getDisabledAttribute())("aria-disabled",r._getAriaDisabled()),bn(r.color?"mat-"+r.color:""),de("mat-mdc-button-disabled",r.disabled)("mat-mdc-button-disabled-interactive",r.disabledInteractive)("_mat-animation-noopable","NoopAnimations"===r._animationMode)("mat-unthemed",!r.color)("mat-mdc-button-base",!0))},exportAs:["matButton"],standalone:!0,features:[J,ve],attrs:OX,ngContentSelectors:Z0,decls:7,vars:4,consts:[[1,"mat-mdc-button-persistent-ripple"],[1,"mdc-button__label"],[1,"mat-mdc-focus-indicator"],[1,"mat-mdc-button-touch-target"]],template:function(i,r){1&i&&($e(X0),re(0,"span",0),Y(1),y(2,"span",1),Y(3,1),w(),Y(4,2),re(5,"span",2)(6,"span",3)),2&i&&de("mdc-button__ripple",!r._isFab)("mdc-fab__ripple",r._isFab)},styles:['.mdc-touch-target-wrapper{display:inline}.mdc-elevation-overlay{position:absolute;border-radius:inherit;pointer-events:none;opacity:var(--mdc-elevation-overlay-opacity);transition:opacity 280ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-fab{position:relative;display:inline-flex;position:relative;align-items:center;justify-content:center;box-sizing:border-box;width:56px;height:56px;padding:0;border:none;fill:currentColor;text-decoration:none;cursor:pointer;user-select:none;-moz-appearance:none;-webkit-appearance:none;overflow:visible;transition:box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1),opacity 15ms linear 30ms,transform 270ms 0ms cubic-bezier(0, 0, 0.2, 1)}.mdc-fab .mdc-elevation-overlay{width:100%;height:100%;top:0;left:0}.mdc-fab[hidden]{display:none}.mdc-fab::-moz-focus-inner{padding:0;border:0}.mdc-fab .mdc-fab__focus-ring{position:absolute}.mdc-fab.mdc-ripple-upgraded--background-focused .mdc-fab__focus-ring,.mdc-fab:not(.mdc-ripple-upgraded):focus .mdc-fab__focus-ring{pointer-events:none;border:2px solid rgba(0,0,0,0);border-radius:6px;box-sizing:content-box;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:calc(100% + 4px);width:calc(100% + 4px)}@media screen and (forced-colors: active){.mdc-fab.mdc-ripple-upgraded--background-focused .mdc-fab__focus-ring,.mdc-fab:not(.mdc-ripple-upgraded):focus .mdc-fab__focus-ring{border-color:CanvasText}}.mdc-fab.mdc-ripple-upgraded--background-focused .mdc-fab__focus-ring::after,.mdc-fab:not(.mdc-ripple-upgraded):focus .mdc-fab__focus-ring::after{content:"";border:2px solid rgba(0,0,0,0);border-radius:8px;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:calc(100% + 4px);width:calc(100% + 4px)}@media screen and (forced-colors: active){.mdc-fab.mdc-ripple-upgraded--background-focused .mdc-fab__focus-ring::after,.mdc-fab:not(.mdc-ripple-upgraded):focus .mdc-fab__focus-ring::after{border-color:CanvasText}}.mdc-fab:active,.mdc-fab:focus{outline:none}.mdc-fab:hover{cursor:pointer}.mdc-fab>svg{width:100%}.mdc-fab--mini{width:40px;height:40px}.mdc-fab--extended{border-radius:24px;padding-left:20px;padding-right:20px;width:auto;max-width:100%;height:48px;line-height:normal}.mdc-fab--extended .mdc-fab__ripple{border-radius:24px}.mdc-fab--extended .mdc-fab__icon{margin-left:calc(12px - 20px);margin-right:12px}[dir=rtl] .mdc-fab--extended .mdc-fab__icon,.mdc-fab--extended .mdc-fab__icon[dir=rtl]{margin-left:12px;margin-right:calc(12px - 20px)}.mdc-fab--extended .mdc-fab__label+.mdc-fab__icon{margin-left:12px;margin-right:calc(12px - 20px)}[dir=rtl] .mdc-fab--extended .mdc-fab__label+.mdc-fab__icon,.mdc-fab--extended .mdc-fab__label+.mdc-fab__icon[dir=rtl]{margin-left:calc(12px - 20px);margin-right:12px}.mdc-fab--touch{margin-top:4px;margin-bottom:4px;margin-right:4px;margin-left:4px}.mdc-fab--touch .mdc-fab__touch{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%, -50%)}.mdc-fab::before{position:absolute;box-sizing:border-box;width:100%;height:100%;top:0;left:0;border:1px solid rgba(0,0,0,0);border-radius:inherit;content:"";pointer-events:none}@media screen and (forced-colors: active){.mdc-fab::before{border-color:CanvasText}}.mdc-fab__label{justify-content:flex-start;text-overflow:ellipsis;white-space:nowrap;overflow-x:hidden;overflow-y:visible}.mdc-fab__icon{transition:transform 180ms 90ms cubic-bezier(0, 0, 0.2, 1);fill:currentColor;will-change:transform}.mdc-fab .mdc-fab__icon{display:inline-flex;align-items:center;justify-content:center}.mdc-fab--exited{transform:scale(0);opacity:0;transition:opacity 15ms linear 150ms,transform 180ms 0ms cubic-bezier(0.4, 0, 1, 1)}.mdc-fab--exited .mdc-fab__icon{transform:scale(0);transition:transform 135ms 0ms cubic-bezier(0.4, 0, 1, 1)}.mat-mdc-fab{background-color:var(--mdc-fab-container-color)}.mat-mdc-fab .mdc-fab__icon{width:var(--mdc-fab-icon-size);height:var(--mdc-fab-icon-size);font-size:var(--mdc-fab-icon-size)}.mat-mdc-fab:not(.mdc-fab--extended){border-radius:var(--mdc-fab-container-shape)}.mat-mdc-fab:not(.mdc-fab--extended) .mdc-fab__ripple{border-radius:var(--mdc-fab-container-shape)}.mat-mdc-mini-fab{background-color:var(--mdc-fab-small-container-color)}.mat-mdc-mini-fab .mdc-fab__icon{width:var(--mdc-fab-small-icon-size);height:var(--mdc-fab-small-icon-size);font-size:var(--mdc-fab-small-icon-size)}.mat-mdc-mini-fab:not(.mdc-fab--extended){border-radius:var(--mdc-fab-small-container-shape)}.mat-mdc-mini-fab:not(.mdc-fab--extended) .mdc-fab__ripple{border-radius:var(--mdc-fab-small-container-shape)}.mat-mdc-extended-fab{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;height:var(--mdc-extended-fab-container-height);border-radius:var(--mdc-extended-fab-container-shape);font-family:var(--mdc-extended-fab-label-text-font);font-size:var(--mdc-extended-fab-label-text-size);font-weight:var(--mdc-extended-fab-label-text-weight);letter-spacing:var(--mdc-extended-fab-label-text-tracking)}.mat-mdc-extended-fab .mdc-fab__ripple{border-radius:var(--mdc-extended-fab-container-shape)}.mat-mdc-fab,.mat-mdc-mini-fab{-webkit-tap-highlight-color:rgba(0,0,0,0);flex-shrink:0}.mat-mdc-fab .mat-mdc-button-ripple,.mat-mdc-fab .mat-mdc-button-persistent-ripple,.mat-mdc-fab .mat-mdc-button-persistent-ripple::before,.mat-mdc-mini-fab .mat-mdc-button-ripple,.mat-mdc-mini-fab .mat-mdc-button-persistent-ripple,.mat-mdc-mini-fab .mat-mdc-button-persistent-ripple::before{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-mdc-fab .mat-mdc-button-ripple,.mat-mdc-mini-fab .mat-mdc-button-ripple{overflow:hidden}.mat-mdc-fab .mat-mdc-button-persistent-ripple::before,.mat-mdc-mini-fab .mat-mdc-button-persistent-ripple::before{content:"";opacity:0}.mat-mdc-fab .mdc-button__label,.mat-mdc-mini-fab .mdc-button__label{z-index:1}.mat-mdc-fab .mat-mdc-focus-indicator,.mat-mdc-mini-fab .mat-mdc-focus-indicator{top:0;left:0;right:0;bottom:0;position:absolute}.mat-mdc-fab:focus .mat-mdc-focus-indicator::before,.mat-mdc-mini-fab:focus .mat-mdc-focus-indicator::before{content:""}.mat-mdc-fab._mat-animation-noopable,.mat-mdc-mini-fab._mat-animation-noopable{transition:none !important;animation:none !important}.mat-mdc-fab:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-mini-fab:not(.mdc-ripple-upgraded):focus::before{background:rgba(0,0,0,0);opacity:1}.mat-mdc-fab .mat-icon,.mat-mdc-fab .material-icons,.mat-mdc-mini-fab .mat-icon,.mat-mdc-mini-fab .material-icons{transition:transform 180ms 90ms cubic-bezier(0, 0, 0.2, 1);fill:currentColor;will-change:transform}.mat-mdc-fab .mat-mdc-focus-indicator::before,.mat-mdc-mini-fab .mat-mdc-focus-indicator::before{margin:calc(calc(var(--mat-mdc-focus-indicator-border-width, 3px) + 2px)*-1)}.mat-mdc-fab[disabled],.mat-mdc-fab.mat-mdc-button-disabled,.mat-mdc-mini-fab[disabled],.mat-mdc-mini-fab.mat-mdc-button-disabled{cursor:default;pointer-events:none}.mat-mdc-fab[disabled],.mat-mdc-fab[disabled]:focus,.mat-mdc-fab.mat-mdc-button-disabled,.mat-mdc-fab.mat-mdc-button-disabled:focus,.mat-mdc-mini-fab[disabled],.mat-mdc-mini-fab[disabled]:focus,.mat-mdc-mini-fab.mat-mdc-button-disabled,.mat-mdc-mini-fab.mat-mdc-button-disabled:focus{box-shadow:none}.mat-mdc-fab.mat-mdc-button-disabled-interactive,.mat-mdc-mini-fab.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-mdc-fab{color:var(--mat-fab-foreground-color, inherit);box-shadow:var(--mdc-fab-container-elevation-shadow)}.mat-mdc-fab .mat-mdc-button-touch-target{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%, -50%);display:var(--mat-fab-touch-target-display)}.mat-mdc-fab .mat-ripple-element{background-color:var(--mat-fab-ripple-color)}.mat-mdc-fab .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-fab-state-layer-color)}.mat-mdc-fab.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-fab-disabled-state-layer-color)}.mat-mdc-fab:hover .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-fab-hover-state-layer-opacity)}.mat-mdc-fab.cdk-program-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-fab.cdk-keyboard-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-fab.mat-mdc-button-disabled-interactive:focus .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-fab-focus-state-layer-opacity)}.mat-mdc-fab:active .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-fab-pressed-state-layer-opacity)}.mat-mdc-fab:hover{box-shadow:var(--mdc-fab-hover-container-elevation-shadow)}.mat-mdc-fab:focus{box-shadow:var(--mdc-fab-focus-container-elevation-shadow)}.mat-mdc-fab:active,.mat-mdc-fab:focus:active{box-shadow:var(--mdc-fab-pressed-container-elevation-shadow)}.mat-mdc-fab[disabled],.mat-mdc-fab.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mat-fab-disabled-state-foreground-color);background-color:var(--mat-fab-disabled-state-container-color)}.mat-mdc-fab.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-mdc-mini-fab{color:var(--mat-fab-small-foreground-color, inherit);box-shadow:var(--mdc-fab-small-container-elevation-shadow)}.mat-mdc-mini-fab .mat-mdc-button-touch-target{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%, -50%);display:var(--mat-fab-small-touch-target-display)}.mat-mdc-mini-fab .mat-ripple-element{background-color:var(--mat-fab-small-ripple-color)}.mat-mdc-mini-fab .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-fab-small-state-layer-color)}.mat-mdc-mini-fab.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-fab-small-disabled-state-layer-color)}.mat-mdc-mini-fab:hover .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-fab-small-hover-state-layer-opacity)}.mat-mdc-mini-fab.cdk-program-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-mini-fab.cdk-keyboard-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-mini-fab.mat-mdc-button-disabled-interactive:focus .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-fab-small-focus-state-layer-opacity)}.mat-mdc-mini-fab:active .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-fab-small-pressed-state-layer-opacity)}.mat-mdc-mini-fab:hover{box-shadow:var(--mdc-fab-small-hover-container-elevation-shadow)}.mat-mdc-mini-fab:focus{box-shadow:var(--mdc-fab-small-focus-container-elevation-shadow)}.mat-mdc-mini-fab:active,.mat-mdc-mini-fab:focus:active{box-shadow:var(--mdc-fab-small-pressed-container-elevation-shadow)}.mat-mdc-mini-fab[disabled],.mat-mdc-mini-fab.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mat-fab-small-disabled-state-foreground-color);background-color:var(--mat-fab-small-disabled-state-container-color)}.mat-mdc-mini-fab.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-mdc-extended-fab{box-shadow:var(--mdc-extended-fab-container-elevation-shadow)}.mat-mdc-extended-fab:hover{box-shadow:var(--mdc-extended-fab-hover-container-elevation-shadow)}.mat-mdc-extended-fab:focus{box-shadow:var(--mdc-extended-fab-focus-container-elevation-shadow)}.mat-mdc-extended-fab:active,.mat-mdc-extended-fab:focus:active{box-shadow:var(--mdc-extended-fab-pressed-container-elevation-shadow)}.mat-mdc-extended-fab[disabled],.mat-mdc-extended-fab.mat-mdc-button-disabled{cursor:default;pointer-events:none}.mat-mdc-extended-fab[disabled],.mat-mdc-extended-fab[disabled]:focus,.mat-mdc-extended-fab.mat-mdc-button-disabled,.mat-mdc-extended-fab.mat-mdc-button-disabled:focus{box-shadow:none}.mat-mdc-extended-fab.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-mdc-extended-fab>.mat-icon,.mat-mdc-extended-fab>.material-icons{margin-left:calc(12px - 20px);margin-right:12px}[dir=rtl] .mat-mdc-extended-fab>.mat-icon,[dir=rtl] .mat-mdc-extended-fab>.material-icons,.mat-mdc-extended-fab>.mat-icon[dir=rtl],.mat-mdc-extended-fab>.material-icons[dir=rtl]{margin-left:12px;margin-right:calc(12px - 20px)}.mat-mdc-extended-fab .mat-mdc-button-touch-target{width:100%}.mat-mdc-extended-fab .mdc-button__label+.mat-icon,.mat-mdc-extended-fab .mdc-button__label+.material-icons{margin-left:12px;margin-right:calc(12px - 20px)}[dir=rtl] .mat-mdc-extended-fab .mdc-button__label+.mat-icon,[dir=rtl] .mat-mdc-extended-fab .mdc-button__label+.material-icons,.mat-mdc-extended-fab .mdc-button__label+.mat-icon[dir=rtl],.mat-mdc-extended-fab .mdc-button__label+.material-icons[dir=rtl]{margin-left:calc(12px - 20px);margin-right:12px}'],encapsulation:2,changeDetection:0})}return t})(),J0=(()=>{class t extends mp{constructor(e,i,r,o){super(e,i,r,o),this._rippleLoader.configureRipple(this._elementRef.nativeElement,{centered:!0})}static#e=this.\u0275fac=function(i){return new(i||t)(p(K),p(ut),p(W),p(Bt,8))};static#t=this.\u0275cmp=ue({type:t,selectors:[["button","mat-icon-button",""]],hostVars:14,hostBindings:function(i,r){2&i&&(me("disabled",r._getDisabledAttribute())("aria-disabled",r._getAriaDisabled()),bn(r.color?"mat-"+r.color:""),de("mat-mdc-button-disabled",r.disabled)("mat-mdc-button-disabled-interactive",r.disabledInteractive)("_mat-animation-noopable","NoopAnimations"===r._animationMode)("mat-unthemed",!r.color)("mat-mdc-button-base",!0))},exportAs:["matButton"],standalone:!0,features:[J,ve],attrs:FX,ngContentSelectors:PX,decls:4,vars:0,consts:[[1,"mat-mdc-button-persistent-ripple","mdc-icon-button__ripple"],[1,"mat-mdc-focus-indicator"],[1,"mat-mdc-button-touch-target"]],template:function(i,r){1&i&&($e(),re(0,"span",0),Y(1),re(2,"span",1)(3,"span",2))},styles:['.mdc-icon-button{display:inline-block;position:relative;box-sizing:border-box;border:none;outline:none;background-color:rgba(0,0,0,0);fill:currentColor;color:inherit;text-decoration:none;cursor:pointer;user-select:none;z-index:0;overflow:visible}.mdc-icon-button .mdc-icon-button__touch{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%, -50%)}@media screen and (forced-colors: active){.mdc-icon-button.mdc-ripple-upgraded--background-focused .mdc-icon-button__focus-ring,.mdc-icon-button:not(.mdc-ripple-upgraded):focus .mdc-icon-button__focus-ring{display:block}}.mdc-icon-button:disabled{cursor:default;pointer-events:none}.mdc-icon-button[hidden]{display:none}.mdc-icon-button--display-flex{align-items:center;display:inline-flex;justify-content:center}.mdc-icon-button__focus-ring{pointer-events:none;border:2px solid rgba(0,0,0,0);border-radius:6px;box-sizing:content-box;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:100%;width:100%;display:none}@media screen and (forced-colors: active){.mdc-icon-button__focus-ring{border-color:CanvasText}}.mdc-icon-button__focus-ring::after{content:"";border:2px solid rgba(0,0,0,0);border-radius:8px;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:calc(100% + 4px);width:calc(100% + 4px)}@media screen and (forced-colors: active){.mdc-icon-button__focus-ring::after{border-color:CanvasText}}.mdc-icon-button__icon{display:inline-block}.mdc-icon-button__icon.mdc-icon-button__icon--on{display:none}.mdc-icon-button--on .mdc-icon-button__icon{display:none}.mdc-icon-button--on .mdc-icon-button__icon.mdc-icon-button__icon--on{display:inline-block}.mdc-icon-button__link{height:100%;left:0;outline:none;position:absolute;top:0;width:100%}.mat-mdc-icon-button{color:var(--mdc-icon-button-icon-color)}.mat-mdc-icon-button .mdc-button__icon{font-size:var(--mdc-icon-button-icon-size)}.mat-mdc-icon-button svg,.mat-mdc-icon-button img{width:var(--mdc-icon-button-icon-size);height:var(--mdc-icon-button-icon-size)}.mat-mdc-icon-button:disabled{color:var(--mdc-icon-button-disabled-icon-color)}.mat-mdc-icon-button{border-radius:50%;flex-shrink:0;text-align:center;width:var(--mdc-icon-button-state-layer-size, 48px);height:var(--mdc-icon-button-state-layer-size, 48px);padding:calc(calc(var(--mdc-icon-button-state-layer-size, 48px) - var(--mdc-icon-button-icon-size, 24px)) / 2);font-size:var(--mdc-icon-button-icon-size);-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-icon-button svg{vertical-align:baseline}.mat-mdc-icon-button[disabled],.mat-mdc-icon-button.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mdc-icon-button-disabled-icon-color)}.mat-mdc-icon-button.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-mdc-icon-button .mat-mdc-button-ripple,.mat-mdc-icon-button .mat-mdc-button-persistent-ripple,.mat-mdc-icon-button .mat-mdc-button-persistent-ripple::before{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-mdc-icon-button .mat-mdc-button-ripple{overflow:hidden}.mat-mdc-icon-button .mat-mdc-button-persistent-ripple::before{content:"";opacity:0}.mat-mdc-icon-button .mdc-button__label{z-index:1}.mat-mdc-icon-button .mat-mdc-focus-indicator{top:0;left:0;right:0;bottom:0;position:absolute}.mat-mdc-icon-button:focus .mat-mdc-focus-indicator::before{content:""}.mat-mdc-icon-button .mat-ripple-element{background-color:var(--mat-icon-button-ripple-color)}.mat-mdc-icon-button .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-icon-button-state-layer-color)}.mat-mdc-icon-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-icon-button-disabled-state-layer-color)}.mat-mdc-icon-button:hover .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-icon-button-hover-state-layer-opacity)}.mat-mdc-icon-button.cdk-program-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-icon-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-icon-button.mat-mdc-button-disabled-interactive:focus .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-icon-button-focus-state-layer-opacity)}.mat-mdc-icon-button:active .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-icon-button-pressed-state-layer-opacity)}.mat-mdc-icon-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%, -50%);display:var(--mat-icon-button-touch-target-display)}.mat-mdc-icon-button._mat-animation-noopable{transition:none !important;animation:none !important}.mat-mdc-icon-button .mat-mdc-button-persistent-ripple{border-radius:50%}.mat-mdc-icon-button.mat-unthemed:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-icon-button.mat-primary:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-icon-button.mat-accent:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-icon-button.mat-warn:not(.mdc-ripple-upgraded):focus::before{background:rgba(0,0,0,0);opacity:1}',dN],encapsulation:2,changeDetection:0})}return t})(),gp=(()=>{class t{static#e=this.\u0275fac=function(i){return new(i||t)};static#t=this.\u0275mod=ge({type:t});static#n=this.\u0275inj=he({imports:[Te,eu,Te]})}return t})();const UX=["*",[["mat-toolbar-row"]]],$X=["*","mat-toolbar-row"];let qX=(()=>{class t{static#e=this.\u0275fac=function(i){return new(i||t)};static#t=this.\u0275dir=R({type:t,selectors:[["mat-toolbar-row"]],hostAttrs:[1,"mat-toolbar-row"],exportAs:["matToolbarRow"],standalone:!0})}return t})(),GX=(()=>{class t{constructor(e,i,r){this._elementRef=e,this._platform=i,this._document=r}ngAfterViewInit(){this._platform.isBrowser&&(this._checkToolbarMixedModes(),this._toolbarRows.changes.subscribe(()=>this._checkToolbarMixedModes()))}_checkToolbarMixedModes(){}static#e=this.\u0275fac=function(i){return new(i||t)(p(K),p(ut),p(_e))};static#t=this.\u0275cmp=ue({type:t,selectors:[["mat-toolbar"]],contentQueries:function(i,r,o){if(1&i&&Oe(o,qX,5),2&i){let s;U(s=$())&&(r._toolbarRows=s)}},hostAttrs:[1,"mat-toolbar"],hostVars:6,hostBindings:function(i,r){2&i&&(bn(r.color?"mat-"+r.color:""),de("mat-toolbar-multiple-rows",r._toolbarRows.length>0)("mat-toolbar-single-row",0===r._toolbarRows.length))},inputs:{color:"color"},exportAs:["matToolbar"],standalone:!0,features:[ve],ngContentSelectors:$X,decls:2,vars:0,template:function(i,r){1&i&&($e(UX),Y(0),Y(1,1))},styles:[".mat-toolbar{background:var(--mat-toolbar-container-background-color);color:var(--mat-toolbar-container-text-color)}.mat-toolbar,.mat-toolbar h1,.mat-toolbar h2,.mat-toolbar h3,.mat-toolbar h4,.mat-toolbar h5,.mat-toolbar h6{font-family:var(--mat-toolbar-title-text-font);font-size:var(--mat-toolbar-title-text-size);line-height:var(--mat-toolbar-title-text-line-height);font-weight:var(--mat-toolbar-title-text-weight);letter-spacing:var(--mat-toolbar-title-text-tracking);margin:0}.cdk-high-contrast-active .mat-toolbar{outline:solid 1px}.mat-toolbar .mat-form-field-underline,.mat-toolbar .mat-form-field-ripple,.mat-toolbar .mat-focused .mat-form-field-ripple{background-color:currentColor}.mat-toolbar .mat-form-field-label,.mat-toolbar .mat-focused .mat-form-field-label,.mat-toolbar .mat-select-value,.mat-toolbar .mat-select-arrow,.mat-toolbar .mat-form-field.mat-focused .mat-select-arrow{color:inherit}.mat-toolbar .mat-input-element{caret-color:currentColor}.mat-toolbar .mat-mdc-button-base.mat-mdc-button-base.mat-unthemed{--mdc-text-button-label-text-color:var(--mat-toolbar-container-text-color);--mdc-outlined-button-label-text-color:var(--mat-toolbar-container-text-color)}.mat-toolbar-row,.mat-toolbar-single-row{display:flex;box-sizing:border-box;padding:0 16px;width:100%;flex-direction:row;align-items:center;white-space:nowrap;height:var(--mat-toolbar-standard-height)}@media(max-width: 599px){.mat-toolbar-row,.mat-toolbar-single-row{height:var(--mat-toolbar-mobile-height)}}.mat-toolbar-multiple-rows{display:flex;box-sizing:border-box;flex-direction:column;width:100%;min-height:var(--mat-toolbar-standard-height)}@media(max-width: 599px){.mat-toolbar-multiple-rows{min-height:var(--mat-toolbar-mobile-height)}}"],encapsulation:2,changeDetection:0})}return t})(),WX=(()=>{class t{static#e=this.\u0275fac=function(i){return new(i||t)};static#t=this.\u0275mod=ge({type:t});static#n=this.\u0275inj=he({imports:[Te,Te]})}return t})(),KX=(()=>{class t{static#e=this.\u0275fac=function(i){return new(i||t)};static#t=this.\u0275mod=ge({type:t});static#n=this.\u0275inj=he({imports:[zO,Te,zO,Te]})}return t})();function Ht(...t){const n=Ld(t),e=function BQ(t,n){return"number"==typeof Wy(t)?t.pop():n}(t,1/0),i=t;return i.length?1===i.length?jn(i[0]):xc(e)(jt(i,n)):Zt}let ew,XX=1;const _p={};function pN(t){return t in _p&&(delete _p[t],!0)}const ZX={setImmediate(t){const n=XX++;return _p[n]=!0,ew||(ew=Promise.resolve()),ew.then(()=>pN(n)&&t()),n},clearImmediate(t){pN(t)}},{setImmediate:JX,clearImmediate:eZ}=ZX,bp={setImmediate(...t){const{delegate:n}=bp;return(n?.setImmediate||JX)(...t)},clearImmediate(t){const{delegate:n}=bp;return(n?.clearImmediate||eZ)(t)},delegate:void 0},tw=new class nZ extends Xm{flush(n){this._active=!0;const e=this._scheduled;this._scheduled=void 0;const{actions:i}=this;let r;n=n||i.shift();do{if(r=n.execute(n.state,n.delay))break}while((n=i[0])&&n.id===e&&i.shift());if(this._active=!1,r){for(;(n=i[0])&&n.id===e&&i.shift();)n.unsubscribe();throw r}}}(class tZ extends Km{constructor(n,e){super(n,e),this.scheduler=n,this.work=e}requestAsyncId(n,e,i=0){return null!==i&&i>0?super.requestAsyncId(n,e,i):(n.actions.push(this),n._scheduled||(n._scheduled=bp.setImmediate(n.flush.bind(n,void 0))))}recycleAsyncId(n,e,i=0){var r;if(null!=i?i>0:this.delay>0)return super.recycleAsyncId(n,e,i);const{actions:o}=n;null!=e&&(null===(r=o[o.length-1])||void 0===r?void 0:r.id)!==e&&(bp.clearImmediate(e),n._scheduled===e&&(n._scheduled=void 0))}});function vp(t){return ne(()=>t)}function gN(t,n){return n?e=>Xd(n.pipe(gt(1),function iZ(){return Lt((t,n)=>{t.subscribe(Rt(n,as))})}()),e.pipe(gN(t))):vn((e,i)=>jn(t(e,i)).pipe(gt(1),vp(e)))}function nw(t=0,n,e=lK){let i=-1;return null!=n&&(Q1(n)?e=n:i=n),new Ye(r=>{let o=function rZ(t){return t instanceof Date&&!isNaN(t)}(t)?+t-e.now():t;o<0&&(o=0);let s=0;return e.schedule(function(){r.closed||(r.next(s++),0<=i?this.schedule(void 0,i):r.complete())},o)})}function iw(t,n=Zm){const e=nw(t,n);return gN(()=>e)}class rw{attach(n){return this._attachedHost=n,n.attach(this)}detach(){let n=this._attachedHost;null!=n&&(this._attachedHost=null,n.detach())}get isAttached(){return null!=this._attachedHost}setAttachedHost(n){this._attachedHost=n}}class yp extends rw{constructor(n,e,i,r,o){super(),this.component=n,this.viewContainerRef=e,this.injector=i,this.componentFactoryResolver=r,this.projectableNodes=o}}class jo extends rw{constructor(n,e,i,r){super(),this.templateRef=n,this.viewContainerRef=e,this.context=i,this.injector=r}get origin(){return this.templateRef.elementRef}attach(n,e=this.context){return this.context=e,super.attach(n)}detach(){return this.context=void 0,super.detach()}}class oZ extends rw{constructor(n){super(),this.element=n instanceof K?n.nativeElement:n}}class ow{constructor(){this._isDisposed=!1,this.attachDomPortal=null}hasAttached(){return!!this._attachedPortal}attach(n){return n instanceof yp?(this._attachedPortal=n,this.attachComponentPortal(n)):n instanceof jo?(this._attachedPortal=n,this.attachTemplatePortal(n)):this.attachDomPortal&&n instanceof oZ?(this._attachedPortal=n,this.attachDomPortal(n)):void 0}detach(){this._attachedPortal&&(this._attachedPortal.setAttachedHost(null),this._attachedPortal=null),this._invokeDisposeFn()}dispose(){this.hasAttached()&&this.detach(),this._invokeDisposeFn(),this._isDisposed=!0}setDisposeFn(n){this._disposeFn=n}_invokeDisposeFn(){this._disposeFn&&(this._disposeFn(),this._disposeFn=null)}}class sZ extends ow{constructor(n,e,i,r,o){super(),this.outletElement=n,this._componentFactoryResolver=e,this._appRef=i,this._defaultInjector=r,this.attachDomPortal=s=>{const a=s.element,c=this._document.createComment("dom-portal");a.parentNode.insertBefore(c,a),this.outletElement.appendChild(a),this._attachedPortal=s,super.setDisposeFn(()=>{c.parentNode&&c.parentNode.replaceChild(a,c)})},this._document=o}attachComponentPortal(n){const i=(n.componentFactoryResolver||this._componentFactoryResolver).resolveComponentFactory(n.component);let r;return n.viewContainerRef?(r=n.viewContainerRef.createComponent(i,n.viewContainerRef.length,n.injector||n.viewContainerRef.injector,n.projectableNodes||void 0),this.setDisposeFn(()=>r.destroy())):(r=i.create(n.injector||this._defaultInjector||Gt.NULL),this._appRef.attachView(r.hostView),this.setDisposeFn(()=>{this._appRef.viewCount>0&&this._appRef.detachView(r.hostView),r.destroy()})),this.outletElement.appendChild(this._getComponentRootNode(r)),this._attachedPortal=n,r}attachTemplatePortal(n){let e=n.viewContainerRef,i=e.createEmbeddedView(n.templateRef,n.context,{injector:n.injector});return i.rootNodes.forEach(r=>this.outletElement.appendChild(r)),i.detectChanges(),this.setDisposeFn(()=>{let r=e.indexOf(i);-1!==r&&e.remove(r)}),this._attachedPortal=n,i}dispose(){super.dispose(),this.outletElement.remove()}_getComponentRootNode(n){return n.hostView.rootNodes[0]}}let aZ=(()=>{class t extends jo{constructor(e,i){super(e,i)}static#e=this.\u0275fac=function(i){return new(i||t)(p(yt),p(Tt))};static#t=this.\u0275dir=R({type:t,selectors:[["","cdkPortal",""]],exportAs:["cdkPortal"],standalone:!0,features:[J]})}return t})(),kc=(()=>{class t extends ow{constructor(e,i,r){super(),this._componentFactoryResolver=e,this._viewContainerRef=i,this._isInitialized=!1,this.attached=new G,this.attachDomPortal=o=>{const s=o.element,a=this._document.createComment("dom-portal");o.setAttachedHost(this),s.parentNode.insertBefore(a,s),this._getRootNode().appendChild(s),this._attachedPortal=o,super.setDisposeFn(()=>{a.parentNode&&a.parentNode.replaceChild(s,a)})},this._document=r}get portal(){return this._attachedPortal}set portal(e){this.hasAttached()&&!e&&!this._isInitialized||(this.hasAttached()&&super.detach(),e&&super.attach(e),this._attachedPortal=e||null)}get attachedRef(){return this._attachedRef}ngOnInit(){this._isInitialized=!0}ngOnDestroy(){super.dispose(),this._attachedRef=this._attachedPortal=null}attachComponentPortal(e){e.setAttachedHost(this);const i=null!=e.viewContainerRef?e.viewContainerRef:this._viewContainerRef,o=(e.componentFactoryResolver||this._componentFactoryResolver).resolveComponentFactory(e.component),s=i.createComponent(o,i.length,e.injector||i.injector,e.projectableNodes||void 0);return i!==this._viewContainerRef&&this._getRootNode().appendChild(s.hostView.rootNodes[0]),super.setDisposeFn(()=>s.destroy()),this._attachedPortal=e,this._attachedRef=s,this.attached.emit(s),s}attachTemplatePortal(e){e.setAttachedHost(this);const i=this._viewContainerRef.createEmbeddedView(e.templateRef,e.context,{injector:e.injector});return super.setDisposeFn(()=>this._viewContainerRef.clear()),this._attachedPortal=e,this._attachedRef=i,this.attached.emit(i),i}_getRootNode(){const e=this._viewContainerRef.element.nativeElement;return e.nodeType===e.ELEMENT_NODE?e:e.parentNode}static#e=this.\u0275fac=function(i){return new(i||t)(p(vs),p(Tt),p(_e))};static#t=this.\u0275dir=R({type:t,selectors:[["","cdkPortalOutlet",""]],inputs:{portal:[D.None,"cdkPortalOutlet","portal"]},outputs:{attached:"attached"},exportAs:["cdkPortalOutlet"],standalone:!0,features:[J]})}return t})(),sw=(()=>{class t{static#e=this.\u0275fac=function(i){return new(i||t)};static#t=this.\u0275mod=ge({type:t});static#n=this.\u0275inj=he({})}return t})();const cZ=["addListener","removeListener"],lZ=["addEventListener","removeEventListener"],dZ=["on","off"];function nr(t,n,e,i){if(Qe(e)&&(i=e,e=void 0),i)return nr(t,n,e).pipe(V0(i));const[r,o]=function fZ(t){return Qe(t.addEventListener)&&Qe(t.removeEventListener)}(t)?lZ.map(s=>a=>t[s](n,a,e)):function uZ(t){return Qe(t.addListener)&&Qe(t.removeListener)}(t)?cZ.map(_N(t,n)):function hZ(t){return Qe(t.on)&&Qe(t.off)}(t)?dZ.map(_N(t,n)):[];if(!r&&Xy(t))return vn(s=>nr(s,n,e))(jn(t));if(!r)throw new TypeError("Invalid event target");return new Ye(s=>{const a=(...c)=>s.next(1o(a)})}function _N(t,n){return e=>i=>t[e](n,i)}const su={schedule(t){let n=requestAnimationFrame,e=cancelAnimationFrame;const{delegate:i}=su;i&&(n=i.requestAnimationFrame,e=i.cancelAnimationFrame);const r=n(o=>{e=void 0,t(o)});return new Ae(()=>e?.(r))},requestAnimationFrame(...t){const{delegate:n}=su;return(n?.requestAnimationFrame||requestAnimationFrame)(...t)},cancelAnimationFrame(...t){const{delegate:n}=su;return(n?.cancelAnimationFrame||cancelAnimationFrame)(...t)},delegate:void 0};new class pZ extends Xm{flush(n){this._active=!0;const e=this._scheduled;this._scheduled=void 0;const{actions:i}=this;let r;n=n||i.shift();do{if(r=n.execute(n.state,n.delay))break}while((n=i[0])&&n.id===e&&i.shift());if(this._active=!1,r){for(;(n=i[0])&&n.id===e&&i.shift();)n.unsubscribe();throw r}}}(class mZ extends Km{constructor(n,e){super(n,e),this.scheduler=n,this.work=e}requestAsyncId(n,e,i=0){return null!==i&&i>0?super.requestAsyncId(n,e,i):(n.actions.push(this),n._scheduled||(n._scheduled=su.requestAnimationFrame(()=>n.flush(void 0))))}recycleAsyncId(n,e,i=0){var r;if(null!=i?i>0:this.delay>0)return super.recycleAsyncId(n,e,i);const{actions:o}=n;null!=e&&(null===(r=o[o.length-1])||void 0===r?void 0:r.id)!==e&&(su.cancelAnimationFrame(e),n._scheduled=void 0)}});function bN(t,n=Zm){return function _Z(t){return Lt((n,e)=>{let i=!1,r=null,o=null,s=!1;const a=()=>{if(o?.unsubscribe(),o=null,i){i=!1;const l=r;r=null,e.next(l)}s&&e.complete()},c=()=>{o=null,s&&e.complete()};n.subscribe(Rt(e,l=>{i=!0,r=l,o||jn(t(l)).subscribe(o=Rt(e,a,c))},()=>{s=!0,(!i||!o||o.closed)&&e.complete()}))})}(()=>nw(t,n))}let wp=(()=>{class t{constructor(e,i,r){this._ngZone=e,this._platform=i,this._scrolled=new Z,this._globalSubscription=null,this._scrolledCount=0,this.scrollContainers=new Map,this._document=r}register(e){this.scrollContainers.has(e)||this.scrollContainers.set(e,e.elementScrolled().subscribe(()=>this._scrolled.next(e)))}deregister(e){const i=this.scrollContainers.get(e);i&&(i.unsubscribe(),this.scrollContainers.delete(e))}scrolled(e=20){return this._platform.isBrowser?new Ye(i=>{this._globalSubscription||this._addGlobalListener();const r=e>0?this._scrolled.pipe(bN(e)).subscribe(i):this._scrolled.subscribe(i);return this._scrolledCount++,()=>{r.unsubscribe(),this._scrolledCount--,this._scrolledCount||this._removeGlobalListener()}}):se()}ngOnDestroy(){this._removeGlobalListener(),this.scrollContainers.forEach((e,i)=>this.deregister(i)),this._scrolled.complete()}ancestorScrolled(e,i){const r=this.getAncestorScrollContainers(e);return this.scrolled(i).pipe(Ge(o=>!o||r.indexOf(o)>-1))}getAncestorScrollContainers(e){const i=[];return this.scrollContainers.forEach((r,o)=>{this._scrollableContainsElement(o,e)&&i.push(o)}),i}_getWindow(){return this._document.defaultView||window}_scrollableContainsElement(e,i){let r=oo(i),o=e.getElementRef().nativeElement;do{if(r==o)return!0}while(r=r.parentElement);return!1}_addGlobalListener(){this._globalSubscription=this._ngZone.runOutsideAngular(()=>nr(this._getWindow().document,"scroll").subscribe(()=>this._scrolled.next()))}_removeGlobalListener(){this._globalSubscription&&(this._globalSubscription.unsubscribe(),this._globalSubscription=null)}static#e=this.\u0275fac=function(i){return new(i||t)(S(W),S(ut),S(_e,8))};static#t=this.\u0275prov=P({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),xp=(()=>{class t{constructor(e,i,r,o){this.elementRef=e,this.scrollDispatcher=i,this.ngZone=r,this.dir=o,this._destroyed=new Z,this._elementScrolled=new Ye(s=>this.ngZone.runOutsideAngular(()=>nr(this.elementRef.nativeElement,"scroll").pipe(pe(this._destroyed)).subscribe(s)))}ngOnInit(){this.scrollDispatcher.register(this)}ngOnDestroy(){this.scrollDispatcher.deregister(this),this._destroyed.next(),this._destroyed.complete()}elementScrolled(){return this._elementScrolled}getElementRef(){return this.elementRef}scrollTo(e){const i=this.elementRef.nativeElement,r=this.dir&&"rtl"==this.dir.value;null==e.left&&(e.left=r?e.end:e.start),null==e.right&&(e.right=r?e.start:e.end),null!=e.bottom&&(e.top=i.scrollHeight-i.clientHeight-e.bottom),r&&Qd()!=Sr.NORMAL?(null!=e.left&&(e.right=i.scrollWidth-i.clientWidth-e.left),Qd()==Sr.INVERTED?e.left=e.right:Qd()==Sr.NEGATED&&(e.left=e.right?-e.right:e.right)):null!=e.right&&(e.left=i.scrollWidth-i.clientWidth-e.right),this._applyScrollToOptions(e)}_applyScrollToOptions(e){const i=this.elementRef.nativeElement;mO()?i.scrollTo(e):(null!=e.top&&(i.scrollTop=e.top),null!=e.left&&(i.scrollLeft=e.left))}measureScrollOffset(e){const i="left",r="right",o=this.elementRef.nativeElement;if("top"==e)return o.scrollTop;if("bottom"==e)return o.scrollHeight-o.clientHeight-o.scrollTop;const s=this.dir&&"rtl"==this.dir.value;return"start"==e?e=s?r:i:"end"==e&&(e=s?i:r),s&&Qd()==Sr.INVERTED?e==i?o.scrollWidth-o.clientWidth-o.scrollLeft:o.scrollLeft:s&&Qd()==Sr.NEGATED?e==i?o.scrollLeft+o.scrollWidth-o.clientWidth:-o.scrollLeft:e==i?o.scrollLeft:o.scrollWidth-o.clientWidth-o.scrollLeft}static#e=this.\u0275fac=function(i){return new(i||t)(p(K),p(wp),p(W),p(Xn,8))};static#t=this.\u0275dir=R({type:t,selectors:[["","cdk-scrollable",""],["","cdkScrollable",""]],standalone:!0})}return t})(),Ho=(()=>{class t{constructor(e,i,r){this._platform=e,this._change=new Z,this._changeListener=o=>{this._change.next(o)},this._document=r,i.runOutsideAngular(()=>{if(e.isBrowser){const o=this._getWindow();o.addEventListener("resize",this._changeListener),o.addEventListener("orientationchange",this._changeListener)}this.change().subscribe(()=>this._viewportSize=null)})}ngOnDestroy(){if(this._platform.isBrowser){const e=this._getWindow();e.removeEventListener("resize",this._changeListener),e.removeEventListener("orientationchange",this._changeListener)}this._change.complete()}getViewportSize(){this._viewportSize||this._updateViewportSize();const e={width:this._viewportSize.width,height:this._viewportSize.height};return this._platform.isBrowser||(this._viewportSize=null),e}getViewportRect(){const e=this.getViewportScrollPosition(),{width:i,height:r}=this.getViewportSize();return{top:e.top,left:e.left,bottom:e.top+r,right:e.left+i,height:r,width:i}}getViewportScrollPosition(){if(!this._platform.isBrowser)return{top:0,left:0};const e=this._document,i=this._getWindow(),r=e.documentElement,o=r.getBoundingClientRect();return{top:-o.top||e.body.scrollTop||i.scrollY||r.scrollTop||0,left:-o.left||e.body.scrollLeft||i.scrollX||r.scrollLeft||0}}change(e=20){return e>0?this._change.pipe(bN(e)):this._change}_getWindow(){return this._document.defaultView||window}_updateViewportSize(){const e=this._getWindow();this._viewportSize=this._platform.isBrowser?{width:e.innerWidth,height:e.innerHeight}:{width:0,height:0}}static#e=this.\u0275fac=function(i){return new(i||t)(S(ut),S(W),S(_e,8))};static#t=this.\u0275prov=P({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),zo=(()=>{class t{static#e=this.\u0275fac=function(i){return new(i||t)};static#t=this.\u0275mod=ge({type:t});static#n=this.\u0275inj=he({})}return t})(),aw=(()=>{class t{static#e=this.\u0275fac=function(i){return new(i||t)};static#t=this.\u0275mod=ge({type:t});static#n=this.\u0275inj=he({imports:[Zd,zo,Zd,zo]})}return t})();const vN=mO();class wZ{constructor(n,e){this._viewportRuler=n,this._previousHTMLStyles={top:"",left:""},this._isEnabled=!1,this._document=e}attach(){}enable(){if(this._canBeEnabled()){const n=this._document.documentElement;this._previousScrollPosition=this._viewportRuler.getViewportScrollPosition(),this._previousHTMLStyles.left=n.style.left||"",this._previousHTMLStyles.top=n.style.top||"",n.style.left=on(-this._previousScrollPosition.left),n.style.top=on(-this._previousScrollPosition.top),n.classList.add("cdk-global-scrollblock"),this._isEnabled=!0}}disable(){if(this._isEnabled){const n=this._document.documentElement,i=n.style,r=this._document.body.style,o=i.scrollBehavior||"",s=r.scrollBehavior||"";this._isEnabled=!1,i.left=this._previousHTMLStyles.left,i.top=this._previousHTMLStyles.top,n.classList.remove("cdk-global-scrollblock"),vN&&(i.scrollBehavior=r.scrollBehavior="auto"),window.scroll(this._previousScrollPosition.left,this._previousScrollPosition.top),vN&&(i.scrollBehavior=o,r.scrollBehavior=s)}}_canBeEnabled(){if(this._document.documentElement.classList.contains("cdk-global-scrollblock")||this._isEnabled)return!1;const e=this._document.body,i=this._viewportRuler.getViewportSize();return e.scrollHeight>i.height||e.scrollWidth>i.width}}class xZ{constructor(n,e,i,r){this._scrollDispatcher=n,this._ngZone=e,this._viewportRuler=i,this._config=r,this._scrollSubscription=null,this._detach=()=>{this.disable(),this._overlayRef.hasAttached()&&this._ngZone.run(()=>this._overlayRef.detach())}}attach(n){this._overlayRef=n}enable(){if(this._scrollSubscription)return;const n=this._scrollDispatcher.scrolled(0).pipe(Ge(e=>!e||!this._overlayRef.overlayElement.contains(e.getElementRef().nativeElement)));this._config&&this._config.threshold&&this._config.threshold>1?(this._initialScrollPosition=this._viewportRuler.getViewportScrollPosition().top,this._scrollSubscription=n.subscribe(()=>{const e=this._viewportRuler.getViewportScrollPosition().top;Math.abs(e-this._initialScrollPosition)>this._config.threshold?this._detach():this._overlayRef.updatePosition()})):this._scrollSubscription=n.subscribe(this._detach)}disable(){this._scrollSubscription&&(this._scrollSubscription.unsubscribe(),this._scrollSubscription=null)}detach(){this.disable(),this._overlayRef=null}}class yN{enable(){}disable(){}attach(){}}function cw(t,n){return n.some(e=>t.bottome.bottom||t.righte.right)}function wN(t,n){return n.some(e=>t.tope.bottom||t.lefte.right)}class CZ{constructor(n,e,i,r){this._scrollDispatcher=n,this._viewportRuler=e,this._ngZone=i,this._config=r,this._scrollSubscription=null}attach(n){this._overlayRef=n}enable(){this._scrollSubscription||(this._scrollSubscription=this._scrollDispatcher.scrolled(this._config?this._config.scrollThrottle:0).subscribe(()=>{if(this._overlayRef.updatePosition(),this._config&&this._config.autoClose){const e=this._overlayRef.overlayElement.getBoundingClientRect(),{width:i,height:r}=this._viewportRuler.getViewportSize();cw(e,[{width:i,height:r,bottom:r,right:i,top:0,left:0}])&&(this.disable(),this._ngZone.run(()=>this._overlayRef.detach()))}}))}disable(){this._scrollSubscription&&(this._scrollSubscription.unsubscribe(),this._scrollSubscription=null)}detach(){this.disable(),this._overlayRef=null}}let DZ=(()=>{class t{constructor(e,i,r,o){this._scrollDispatcher=e,this._viewportRuler=i,this._ngZone=r,this.noop=()=>new yN,this.close=s=>new xZ(this._scrollDispatcher,this._ngZone,this._viewportRuler,s),this.block=()=>new wZ(this._viewportRuler,this._document),this.reposition=s=>new CZ(this._scrollDispatcher,this._viewportRuler,this._ngZone,s),this._document=o}static#e=this.\u0275fac=function(i){return new(i||t)(S(wp),S(Ho),S(W),S(_e))};static#t=this.\u0275prov=P({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();class au{constructor(n){if(this.scrollStrategy=new yN,this.panelClass="",this.hasBackdrop=!1,this.backdropClass="cdk-overlay-dark-backdrop",this.disposeOnNavigation=!1,n){const e=Object.keys(n);for(const i of e)void 0!==n[i]&&(this[i]=n[i])}}}class EZ{constructor(n,e){this.connectionPair=n,this.scrollableViewProperties=e}}let xN=(()=>{class t{constructor(e){this._attachedOverlays=[],this._document=e}ngOnDestroy(){this.detach()}add(e){this.remove(e),this._attachedOverlays.push(e)}remove(e){const i=this._attachedOverlays.indexOf(e);i>-1&&this._attachedOverlays.splice(i,1),0===this._attachedOverlays.length&&this.detach()}static#e=this.\u0275fac=function(i){return new(i||t)(S(_e))};static#t=this.\u0275prov=P({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),kZ=(()=>{class t extends xN{constructor(e,i){super(e),this._ngZone=i,this._keydownListener=r=>{const o=this._attachedOverlays;for(let s=o.length-1;s>-1;s--)if(o[s]._keydownEvents.observers.length>0){const a=o[s]._keydownEvents;this._ngZone?this._ngZone.run(()=>a.next(r)):a.next(r);break}}}add(e){super.add(e),this._isAttached||(this._ngZone?this._ngZone.runOutsideAngular(()=>this._document.body.addEventListener("keydown",this._keydownListener)):this._document.body.addEventListener("keydown",this._keydownListener),this._isAttached=!0)}detach(){this._isAttached&&(this._document.body.removeEventListener("keydown",this._keydownListener),this._isAttached=!1)}static#e=this.\u0275fac=function(i){return new(i||t)(S(_e),S(W,8))};static#t=this.\u0275prov=P({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),TZ=(()=>{class t extends xN{constructor(e,i,r){super(e),this._platform=i,this._ngZone=r,this._cursorStyleIsSet=!1,this._pointerDownListener=o=>{this._pointerDownEventTarget=ro(o)},this._clickListener=o=>{const s=ro(o),a="click"===o.type&&this._pointerDownEventTarget?this._pointerDownEventTarget:s;this._pointerDownEventTarget=null;const c=this._attachedOverlays.slice();for(let l=c.length-1;l>-1;l--){const d=c[l];if(d._outsidePointerEvents.observers.length<1||!d.hasAttached())continue;if(d.overlayElement.contains(s)||d.overlayElement.contains(a))break;const u=d._outsidePointerEvents;this._ngZone?this._ngZone.run(()=>u.next(o)):u.next(o)}}}add(e){if(super.add(e),!this._isAttached){const i=this._document.body;this._ngZone?this._ngZone.runOutsideAngular(()=>this._addEventListeners(i)):this._addEventListeners(i),this._platform.IOS&&!this._cursorStyleIsSet&&(this._cursorOriginalValue=i.style.cursor,i.style.cursor="pointer",this._cursorStyleIsSet=!0),this._isAttached=!0}}detach(){if(this._isAttached){const e=this._document.body;e.removeEventListener("pointerdown",this._pointerDownListener,!0),e.removeEventListener("click",this._clickListener,!0),e.removeEventListener("auxclick",this._clickListener,!0),e.removeEventListener("contextmenu",this._clickListener,!0),this._platform.IOS&&this._cursorStyleIsSet&&(e.style.cursor=this._cursorOriginalValue,this._cursorStyleIsSet=!1),this._isAttached=!1}}_addEventListeners(e){e.addEventListener("pointerdown",this._pointerDownListener,!0),e.addEventListener("click",this._clickListener,!0),e.addEventListener("auxclick",this._clickListener,!0),e.addEventListener("contextmenu",this._clickListener,!0)}static#e=this.\u0275fac=function(i){return new(i||t)(S(_e),S(ut),S(W,8))};static#t=this.\u0275prov=P({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),CN=(()=>{class t{constructor(e,i){this._platform=i,this._document=e}ngOnDestroy(){this._containerElement?.remove()}getContainerElement(){return this._containerElement||this._createContainer(),this._containerElement}_createContainer(){const e="cdk-overlay-container";if(this._platform.isBrowser||O0()){const r=this._document.querySelectorAll(`.${e}[platform="server"], .${e}[platform="test"]`);for(let o=0;othis._backdropClick.next(u),this._backdropTransitionendHandler=u=>{this._disposeBackdrop(u.target)},this._keydownEvents=new Z,this._outsidePointerEvents=new Z,r.scrollStrategy&&(this._scrollStrategy=r.scrollStrategy,this._scrollStrategy.attach(this)),this._positionStrategy=r.positionStrategy}get overlayElement(){return this._pane}get backdropElement(){return this._backdropElement}get hostElement(){return this._host}attach(n){!this._host.parentElement&&this._previousHostParent&&this._previousHostParent.appendChild(this._host);const e=this._portalOutlet.attach(n);return this._positionStrategy&&this._positionStrategy.attach(this),this._updateStackingOrder(),this._updateElementSize(),this._updateElementDirection(),this._scrollStrategy&&this._scrollStrategy.enable(),this._ngZone.onStable.pipe(gt(1)).subscribe(()=>{this.hasAttached()&&this.updatePosition()}),this._togglePointerEvents(!0),this._config.hasBackdrop&&this._attachBackdrop(),this._config.panelClass&&this._toggleClasses(this._pane,this._config.panelClass,!0),this._attachments.next(),this._keyboardDispatcher.add(this),this._config.disposeOnNavigation&&(this._locationChanges=this._location.subscribe(()=>this.dispose())),this._outsideClickDispatcher.add(this),"function"==typeof e?.onDestroy&&e.onDestroy(()=>{this.hasAttached()&&this._ngZone.runOutsideAngular(()=>Promise.resolve().then(()=>this.detach()))}),e}detach(){if(!this.hasAttached())return;this.detachBackdrop(),this._togglePointerEvents(!1),this._positionStrategy&&this._positionStrategy.detach&&this._positionStrategy.detach(),this._scrollStrategy&&this._scrollStrategy.disable();const n=this._portalOutlet.detach();return this._detachments.next(),this._keyboardDispatcher.remove(this),this._detachContentWhenStable(),this._locationChanges.unsubscribe(),this._outsideClickDispatcher.remove(this),n}dispose(){const n=this.hasAttached();this._positionStrategy&&this._positionStrategy.dispose(),this._disposeScrollStrategy(),this._disposeBackdrop(this._backdropElement),this._locationChanges.unsubscribe(),this._keyboardDispatcher.remove(this),this._portalOutlet.dispose(),this._attachments.complete(),this._backdropClick.complete(),this._keydownEvents.complete(),this._outsidePointerEvents.complete(),this._outsideClickDispatcher.remove(this),this._host?.remove(),this._previousHostParent=this._pane=this._host=null,n&&this._detachments.next(),this._detachments.complete()}hasAttached(){return this._portalOutlet.hasAttached()}backdropClick(){return this._backdropClick}attachments(){return this._attachments}detachments(){return this._detachments}keydownEvents(){return this._keydownEvents}outsidePointerEvents(){return this._outsidePointerEvents}getConfig(){return this._config}updatePosition(){this._positionStrategy&&this._positionStrategy.apply()}updatePositionStrategy(n){n!==this._positionStrategy&&(this._positionStrategy&&this._positionStrategy.dispose(),this._positionStrategy=n,this.hasAttached()&&(n.attach(this),this.updatePosition()))}updateSize(n){this._config={...this._config,...n},this._updateElementSize()}setDirection(n){this._config={...this._config,direction:n},this._updateElementDirection()}addPanelClass(n){this._pane&&this._toggleClasses(this._pane,n,!0)}removePanelClass(n){this._pane&&this._toggleClasses(this._pane,n,!1)}getDirection(){const n=this._config.direction;return n?"string"==typeof n?n:n.value:"ltr"}updateScrollStrategy(n){n!==this._scrollStrategy&&(this._disposeScrollStrategy(),this._scrollStrategy=n,this.hasAttached()&&(n.attach(this),n.enable()))}_updateElementDirection(){this._host.setAttribute("dir",this.getDirection())}_updateElementSize(){if(!this._pane)return;const n=this._pane.style;n.width=on(this._config.width),n.height=on(this._config.height),n.minWidth=on(this._config.minWidth),n.minHeight=on(this._config.minHeight),n.maxWidth=on(this._config.maxWidth),n.maxHeight=on(this._config.maxHeight)}_togglePointerEvents(n){this._pane.style.pointerEvents=n?"":"none"}_attachBackdrop(){const n="cdk-overlay-backdrop-showing";this._backdropElement=this._document.createElement("div"),this._backdropElement.classList.add("cdk-overlay-backdrop"),this._animationsDisabled&&this._backdropElement.classList.add("cdk-overlay-backdrop-noop-animation"),this._config.backdropClass&&this._toggleClasses(this._backdropElement,this._config.backdropClass,!0),this._host.parentElement.insertBefore(this._backdropElement,this._host),this._backdropElement.addEventListener("click",this._backdropClickHandler),!this._animationsDisabled&&typeof requestAnimationFrame<"u"?this._ngZone.runOutsideAngular(()=>{requestAnimationFrame(()=>{this._backdropElement&&this._backdropElement.classList.add(n)})}):this._backdropElement.classList.add(n)}_updateStackingOrder(){this._host.nextSibling&&this._host.parentNode.appendChild(this._host)}detachBackdrop(){const n=this._backdropElement;if(n){if(this._animationsDisabled)return void this._disposeBackdrop(n);n.classList.remove("cdk-overlay-backdrop-showing"),this._ngZone.runOutsideAngular(()=>{n.addEventListener("transitionend",this._backdropTransitionendHandler)}),n.style.pointerEvents="none",this._backdropTimeout=this._ngZone.runOutsideAngular(()=>setTimeout(()=>{this._disposeBackdrop(n)},500))}}_toggleClasses(n,e,i){const r=tp(e||[]).filter(o=>!!o);r.length&&(i?n.classList.add(...r):n.classList.remove(...r))}_detachContentWhenStable(){this._ngZone.runOutsideAngular(()=>{const n=this._ngZone.onStable.pipe(pe(Ht(this._attachments,this._detachments))).subscribe(()=>{(!this._pane||!this._host||0===this._pane.children.length)&&(this._pane&&this._config.panelClass&&this._toggleClasses(this._pane,this._config.panelClass,!1),this._host&&this._host.parentElement&&(this._previousHostParent=this._host.parentElement,this._host.remove()),n.unsubscribe())})})}_disposeScrollStrategy(){const n=this._scrollStrategy;n&&(n.disable(),n.detach&&n.detach())}_disposeBackdrop(n){n&&(n.removeEventListener("click",this._backdropClickHandler),n.removeEventListener("transitionend",this._backdropTransitionendHandler),n.remove(),this._backdropElement===n&&(this._backdropElement=null)),this._backdropTimeout&&(clearTimeout(this._backdropTimeout),this._backdropTimeout=void 0)}}const DN="cdk-overlay-connected-position-bounding-box",MZ=/([A-Za-z%]+)$/;class IZ{get positions(){return this._preferredPositions}constructor(n,e,i,r,o){this._viewportRuler=e,this._document=i,this._platform=r,this._overlayContainer=o,this._lastBoundingBoxSize={width:0,height:0},this._isPushed=!1,this._canPush=!0,this._growAfterOpen=!1,this._hasFlexibleDimensions=!0,this._positionLocked=!1,this._viewportMargin=0,this._scrollables=[],this._preferredPositions=[],this._positionChanges=new Z,this._resizeSubscription=Ae.EMPTY,this._offsetX=0,this._offsetY=0,this._appliedPanelClasses=[],this.positionChanges=this._positionChanges,this.setOrigin(n)}attach(n){this._validatePositions(),n.hostElement.classList.add(DN),this._overlayRef=n,this._boundingBox=n.hostElement,this._pane=n.overlayElement,this._isDisposed=!1,this._isInitialRender=!0,this._lastPosition=null,this._resizeSubscription.unsubscribe(),this._resizeSubscription=this._viewportRuler.change().subscribe(()=>{this._isInitialRender=!0,this.apply()})}apply(){if(this._isDisposed||!this._platform.isBrowser)return;if(!this._isInitialRender&&this._positionLocked&&this._lastPosition)return void this.reapplyLastPosition();this._clearPanelClasses(),this._resetOverlayElementStyles(),this._resetBoundingBoxStyles(),this._viewportRect=this._getNarrowedViewportRect(),this._originRect=this._getOriginRect(),this._overlayRect=this._pane.getBoundingClientRect(),this._containerRect=this._overlayContainer.getContainerElement().getBoundingClientRect();const n=this._originRect,e=this._overlayRect,i=this._viewportRect,r=this._containerRect,o=[];let s;for(let a of this._preferredPositions){let c=this._getOriginPoint(n,r,a),l=this._getOverlayPoint(c,e,a),d=this._getOverlayFit(l,e,i,a);if(d.isCompletelyWithinViewport)return this._isPushed=!1,void this._applyPosition(a,c);this._canFitWithFlexibleDimensions(d,l,i)?o.push({position:a,origin:c,overlayRect:e,boundingBoxRect:this._calculateBoundingBoxRect(c,a)}):(!s||s.overlayFit.visibleAreac&&(c=d,a=l)}return this._isPushed=!1,void this._applyPosition(a.position,a.origin)}if(this._canPush)return this._isPushed=!0,void this._applyPosition(s.position,s.originPoint);this._applyPosition(s.position,s.originPoint)}detach(){this._clearPanelClasses(),this._lastPosition=null,this._previousPushAmount=null,this._resizeSubscription.unsubscribe()}dispose(){this._isDisposed||(this._boundingBox&&js(this._boundingBox.style,{top:"",left:"",right:"",bottom:"",height:"",width:"",alignItems:"",justifyContent:""}),this._pane&&this._resetOverlayElementStyles(),this._overlayRef&&this._overlayRef.hostElement.classList.remove(DN),this.detach(),this._positionChanges.complete(),this._overlayRef=this._boundingBox=null,this._isDisposed=!0)}reapplyLastPosition(){if(this._isDisposed||!this._platform.isBrowser)return;const n=this._lastPosition;if(n){this._originRect=this._getOriginRect(),this._overlayRect=this._pane.getBoundingClientRect(),this._viewportRect=this._getNarrowedViewportRect(),this._containerRect=this._overlayContainer.getContainerElement().getBoundingClientRect();const e=this._getOriginPoint(this._originRect,this._containerRect,n);this._applyPosition(n,e)}else this.apply()}withScrollableContainers(n){return this._scrollables=n,this}withPositions(n){return this._preferredPositions=n,-1===n.indexOf(this._lastPosition)&&(this._lastPosition=null),this._validatePositions(),this}withViewportMargin(n){return this._viewportMargin=n,this}withFlexibleDimensions(n=!0){return this._hasFlexibleDimensions=n,this}withGrowAfterOpen(n=!0){return this._growAfterOpen=n,this}withPush(n=!0){return this._canPush=n,this}withLockedPosition(n=!0){return this._positionLocked=n,this}setOrigin(n){return this._origin=n,this}withDefaultOffsetX(n){return this._offsetX=n,this}withDefaultOffsetY(n){return this._offsetY=n,this}withTransformOriginOn(n){return this._transformOriginSelector=n,this}_getOriginPoint(n,e,i){let r,o;if("center"==i.originX)r=n.left+n.width/2;else{const s=this._isRtl()?n.right:n.left,a=this._isRtl()?n.left:n.right;r="start"==i.originX?s:a}return e.left<0&&(r-=e.left),o="center"==i.originY?n.top+n.height/2:"top"==i.originY?n.top:n.bottom,e.top<0&&(o-=e.top),{x:r,y:o}}_getOverlayPoint(n,e,i){let r,o;return r="center"==i.overlayX?-e.width/2:"start"===i.overlayX?this._isRtl()?-e.width:0:this._isRtl()?0:-e.width,o="center"==i.overlayY?-e.height/2:"top"==i.overlayY?0:-e.height,{x:n.x+r,y:n.y+o}}_getOverlayFit(n,e,i,r){const o=kN(e);let{x:s,y:a}=n,c=this._getOffset(r,"x"),l=this._getOffset(r,"y");c&&(s+=c),l&&(a+=l);let h=0-a,f=a+o.height-i.height,m=this._subtractOverflows(o.width,0-s,s+o.width-i.width),g=this._subtractOverflows(o.height,h,f),_=m*g;return{visibleArea:_,isCompletelyWithinViewport:o.width*o.height===_,fitsInViewportVertically:g===o.height,fitsInViewportHorizontally:m==o.width}}_canFitWithFlexibleDimensions(n,e,i){if(this._hasFlexibleDimensions){const r=i.bottom-e.y,o=i.right-e.x,s=EN(this._overlayRef.getConfig().minHeight),a=EN(this._overlayRef.getConfig().minWidth);return(n.fitsInViewportVertically||null!=s&&s<=r)&&(n.fitsInViewportHorizontally||null!=a&&a<=o)}return!1}_pushOverlayOnScreen(n,e,i){if(this._previousPushAmount&&this._positionLocked)return{x:n.x+this._previousPushAmount.x,y:n.y+this._previousPushAmount.y};const r=kN(e),o=this._viewportRect,s=Math.max(n.x+r.width-o.width,0),a=Math.max(n.y+r.height-o.height,0),c=Math.max(o.top-i.top-n.y,0),l=Math.max(o.left-i.left-n.x,0);let d=0,u=0;return d=r.width<=o.width?l||-s:n.xm&&!this._isInitialRender&&!this._growAfterOpen&&(s=n.y-m/2)}if("end"===e.overlayX&&!r||"start"===e.overlayX&&r)h=i.width-n.x+2*this._viewportMargin,d=n.x-this._viewportMargin;else if("start"===e.overlayX&&!r||"end"===e.overlayX&&r)u=n.x,d=i.right-n.x;else{const f=Math.min(i.right-n.x+i.left,n.x),m=this._lastBoundingBoxSize.width;d=2*f,u=n.x-f,d>m&&!this._isInitialRender&&!this._growAfterOpen&&(u=n.x-m/2)}return{top:s,left:u,bottom:a,right:h,width:d,height:o}}_setBoundingBoxStyles(n,e){const i=this._calculateBoundingBoxRect(n,e);!this._isInitialRender&&!this._growAfterOpen&&(i.height=Math.min(i.height,this._lastBoundingBoxSize.height),i.width=Math.min(i.width,this._lastBoundingBoxSize.width));const r={};if(this._hasExactPosition())r.top=r.left="0",r.bottom=r.right=r.maxHeight=r.maxWidth="",r.width=r.height="100%";else{const o=this._overlayRef.getConfig().maxHeight,s=this._overlayRef.getConfig().maxWidth;r.height=on(i.height),r.top=on(i.top),r.bottom=on(i.bottom),r.width=on(i.width),r.left=on(i.left),r.right=on(i.right),r.alignItems="center"===e.overlayX?"center":"end"===e.overlayX?"flex-end":"flex-start",r.justifyContent="center"===e.overlayY?"center":"bottom"===e.overlayY?"flex-end":"flex-start",o&&(r.maxHeight=on(o)),s&&(r.maxWidth=on(s))}this._lastBoundingBoxSize=i,js(this._boundingBox.style,r)}_resetBoundingBoxStyles(){js(this._boundingBox.style,{top:"0",left:"0",right:"0",bottom:"0",height:"",width:"",alignItems:"",justifyContent:""})}_resetOverlayElementStyles(){js(this._pane.style,{top:"",left:"",bottom:"",right:"",position:"",transform:""})}_setOverlayElementStyles(n,e){const i={},r=this._hasExactPosition(),o=this._hasFlexibleDimensions,s=this._overlayRef.getConfig();if(r){const d=this._viewportRuler.getViewportScrollPosition();js(i,this._getExactOverlayY(e,n,d)),js(i,this._getExactOverlayX(e,n,d))}else i.position="static";let a="",c=this._getOffset(e,"x"),l=this._getOffset(e,"y");c&&(a+=`translateX(${c}px) `),l&&(a+=`translateY(${l}px)`),i.transform=a.trim(),s.maxHeight&&(r?i.maxHeight=on(s.maxHeight):o&&(i.maxHeight="")),s.maxWidth&&(r?i.maxWidth=on(s.maxWidth):o&&(i.maxWidth="")),js(this._pane.style,i)}_getExactOverlayY(n,e,i){let r={top:"",bottom:""},o=this._getOverlayPoint(e,this._overlayRect,n);return this._isPushed&&(o=this._pushOverlayOnScreen(o,this._overlayRect,i)),"bottom"===n.overlayY?r.bottom=this._document.documentElement.clientHeight-(o.y+this._overlayRect.height)+"px":r.top=on(o.y),r}_getExactOverlayX(n,e,i){let s,r={left:"",right:""},o=this._getOverlayPoint(e,this._overlayRect,n);return this._isPushed&&(o=this._pushOverlayOnScreen(o,this._overlayRect,i)),s=this._isRtl()?"end"===n.overlayX?"left":"right":"end"===n.overlayX?"right":"left","right"===s?r.right=this._document.documentElement.clientWidth-(o.x+this._overlayRect.width)+"px":r.left=on(o.x),r}_getScrollVisibility(){const n=this._getOriginRect(),e=this._pane.getBoundingClientRect(),i=this._scrollables.map(r=>r.getElementRef().nativeElement.getBoundingClientRect());return{isOriginClipped:wN(n,i),isOriginOutsideView:cw(n,i),isOverlayClipped:wN(e,i),isOverlayOutsideView:cw(e,i)}}_subtractOverflows(n,...e){return e.reduce((i,r)=>i-Math.max(r,0),n)}_getNarrowedViewportRect(){const n=this._document.documentElement.clientWidth,e=this._document.documentElement.clientHeight,i=this._viewportRuler.getViewportScrollPosition();return{top:i.top+this._viewportMargin,left:i.left+this._viewportMargin,right:i.left+n-this._viewportMargin,bottom:i.top+e-this._viewportMargin,width:n-2*this._viewportMargin,height:e-2*this._viewportMargin}}_isRtl(){return"rtl"===this._overlayRef.getDirection()}_hasExactPosition(){return!this._hasFlexibleDimensions||this._isPushed}_getOffset(n,e){return"x"===e?null==n.offsetX?this._offsetX:n.offsetX:null==n.offsetY?this._offsetY:n.offsetY}_validatePositions(){}_addPanelClasses(n){this._pane&&tp(n).forEach(e=>{""!==e&&-1===this._appliedPanelClasses.indexOf(e)&&(this._appliedPanelClasses.push(e),this._pane.classList.add(e))})}_clearPanelClasses(){this._pane&&(this._appliedPanelClasses.forEach(n=>{this._pane.classList.remove(n)}),this._appliedPanelClasses=[])}_getOriginRect(){const n=this._origin;if(n instanceof K)return n.nativeElement.getBoundingClientRect();if(n instanceof Element)return n.getBoundingClientRect();const e=n.width||0,i=n.height||0;return{top:n.y,bottom:n.y+i,left:n.x,right:n.x+e,height:i,width:e}}}function js(t,n){for(let e in n)n.hasOwnProperty(e)&&(t[e]=n[e]);return t}function EN(t){if("number"!=typeof t&&null!=t){const[n,e]=t.split(MZ);return e&&"px"!==e?null:parseFloat(n)}return t||null}function kN(t){return{top:Math.floor(t.top),right:Math.floor(t.right),bottom:Math.floor(t.bottom),left:Math.floor(t.left),width:Math.floor(t.width),height:Math.floor(t.height)}}const TN="cdk-global-overlay-wrapper";class RZ{constructor(){this._cssPosition="static",this._topOffset="",this._bottomOffset="",this._alignItems="",this._xPosition="",this._xOffset="",this._width="",this._height="",this._isDisposed=!1}attach(n){const e=n.getConfig();this._overlayRef=n,this._width&&!e.width&&n.updateSize({width:this._width}),this._height&&!e.height&&n.updateSize({height:this._height}),n.hostElement.classList.add(TN),this._isDisposed=!1}top(n=""){return this._bottomOffset="",this._topOffset=n,this._alignItems="flex-start",this}left(n=""){return this._xOffset=n,this._xPosition="left",this}bottom(n=""){return this._topOffset="",this._bottomOffset=n,this._alignItems="flex-end",this}right(n=""){return this._xOffset=n,this._xPosition="right",this}start(n=""){return this._xOffset=n,this._xPosition="start",this}end(n=""){return this._xOffset=n,this._xPosition="end",this}width(n=""){return this._overlayRef?this._overlayRef.updateSize({width:n}):this._width=n,this}height(n=""){return this._overlayRef?this._overlayRef.updateSize({height:n}):this._height=n,this}centerHorizontally(n=""){return this.left(n),this._xPosition="center",this}centerVertically(n=""){return this.top(n),this._alignItems="center",this}apply(){if(!this._overlayRef||!this._overlayRef.hasAttached())return;const n=this._overlayRef.overlayElement.style,e=this._overlayRef.hostElement.style,i=this._overlayRef.getConfig(),{width:r,height:o,maxWidth:s,maxHeight:a}=i,c=!("100%"!==r&&"100vw"!==r||s&&"100%"!==s&&"100vw"!==s),l=!("100%"!==o&&"100vh"!==o||a&&"100%"!==a&&"100vh"!==a),d=this._xPosition,u=this._xOffset,h="rtl"===this._overlayRef.getConfig().direction;let f="",m="",g="";c?g="flex-start":"center"===d?(g="center",h?m=u:f=u):h?"left"===d||"end"===d?(g="flex-end",f=u):("right"===d||"start"===d)&&(g="flex-start",m=u):"left"===d||"start"===d?(g="flex-start",f=u):("right"===d||"end"===d)&&(g="flex-end",m=u),n.position=this._cssPosition,n.marginLeft=c?"0":f,n.marginTop=l?"0":this._topOffset,n.marginBottom=this._bottomOffset,n.marginRight=c?"0":m,e.justifyContent=g,e.alignItems=l?"flex-start":this._alignItems}dispose(){if(this._isDisposed||!this._overlayRef)return;const n=this._overlayRef.overlayElement.style,e=this._overlayRef.hostElement,i=e.style;e.classList.remove(TN),i.justifyContent=i.alignItems=n.marginTop=n.marginBottom=n.marginLeft=n.marginRight=n.position="",this._overlayRef=null,this._isDisposed=!0}}let OZ=(()=>{class t{constructor(e,i,r,o){this._viewportRuler=e,this._document=i,this._platform=r,this._overlayContainer=o}global(){return new RZ}flexibleConnectedTo(e){return new IZ(e,this._viewportRuler,this._document,this._platform,this._overlayContainer)}static#e=this.\u0275fac=function(i){return new(i||t)(S(Ho),S(_e),S(ut),S(CN))};static#t=this.\u0275prov=P({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),NZ=0,Hn=(()=>{class t{constructor(e,i,r,o,s,a,c,l,d,u,h,f){this.scrollStrategies=e,this._overlayContainer=i,this._componentFactoryResolver=r,this._positionBuilder=o,this._keyboardDispatcher=s,this._injector=a,this._ngZone=c,this._document=l,this._directionality=d,this._location=u,this._outsideClickDispatcher=h,this._animationsModuleType=f}create(e){const i=this._createHostElement(),r=this._createPaneElement(i),o=this._createPortalOutlet(r),s=new au(e);return s.direction=s.direction||this._directionality.value,new SZ(o,i,r,s,this._ngZone,this._keyboardDispatcher,this._document,this._location,this._outsideClickDispatcher,"NoopAnimations"===this._animationsModuleType)}position(){return this._positionBuilder}_createPaneElement(e){const i=this._document.createElement("div");return i.id="cdk-overlay-"+NZ++,i.classList.add("cdk-overlay-pane"),e.appendChild(i),i}_createHostElement(){const e=this._document.createElement("div");return this._overlayContainer.getContainerElement().appendChild(e),e}_createPortalOutlet(e){return this._appRef||(this._appRef=this._injector.get(Yr)),new sZ(e,this._componentFactoryResolver,this._appRef,this._injector,this._document)}static#e=this.\u0275fac=function(i){return new(i||t)(S(DZ),S(CN),S(vs),S(OZ),S(kZ),S(Gt),S(W),S(_e),S(Xn),S(uc),S(TZ),S(Bt,8))};static#t=this.\u0275prov=P({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();const FZ=[{originX:"start",originY:"bottom",overlayX:"start",overlayY:"top"},{originX:"start",originY:"top",overlayX:"start",overlayY:"bottom"},{originX:"end",originY:"top",overlayX:"end",overlayY:"bottom"},{originX:"end",originY:"bottom",overlayX:"end",overlayY:"top"}],SN=new M("cdk-connected-overlay-scroll-strategy",{providedIn:"root",factory:()=>{const t=T(Hn);return()=>t.scrollStrategies.reposition()}});let lw=(()=>{class t{constructor(e){this.elementRef=e}static#e=this.\u0275fac=function(i){return new(i||t)(p(K))};static#t=this.\u0275dir=R({type:t,selectors:[["","cdk-overlay-origin",""],["","overlay-origin",""],["","cdkOverlayOrigin",""]],exportAs:["cdkOverlayOrigin"],standalone:!0})}return t})(),MN=(()=>{class t{get offsetX(){return this._offsetX}set offsetX(e){this._offsetX=e,this._position&&this._updatePositionStrategy(this._position)}get offsetY(){return this._offsetY}set offsetY(e){this._offsetY=e,this._position&&this._updatePositionStrategy(this._position)}get disposeOnNavigation(){return this._disposeOnNavigation}set disposeOnNavigation(e){this._disposeOnNavigation=e}constructor(e,i,r,o,s){this._overlay=e,this._dir=s,this._backdropSubscription=Ae.EMPTY,this._attachSubscription=Ae.EMPTY,this._detachSubscription=Ae.EMPTY,this._positionSubscription=Ae.EMPTY,this._disposeOnNavigation=!1,this._ngZone=T(W),this.viewportMargin=0,this.open=!1,this.disableClose=!1,this.hasBackdrop=!1,this.lockPosition=!1,this.flexibleDimensions=!1,this.growAfterOpen=!1,this.push=!1,this.backdropClick=new G,this.positionChange=new G,this.attach=new G,this.detach=new G,this.overlayKeydown=new G,this.overlayOutsideClick=new G,this._templatePortal=new jo(i,r),this._scrollStrategyFactory=o,this.scrollStrategy=this._scrollStrategyFactory()}get overlayRef(){return this._overlayRef}get dir(){return this._dir?this._dir.value:"ltr"}ngOnDestroy(){this._attachSubscription.unsubscribe(),this._detachSubscription.unsubscribe(),this._backdropSubscription.unsubscribe(),this._positionSubscription.unsubscribe(),this._overlayRef&&this._overlayRef.dispose()}ngOnChanges(e){this._position&&(this._updatePositionStrategy(this._position),this._overlayRef.updateSize({width:this.width,minWidth:this.minWidth,height:this.height,minHeight:this.minHeight}),e.origin&&this.open&&this._position.apply()),e.open&&(this.open?this._attachOverlay():this._detachOverlay())}_createOverlay(){(!this.positions||!this.positions.length)&&(this.positions=FZ);const e=this._overlayRef=this._overlay.create(this._buildConfig());this._attachSubscription=e.attachments().subscribe(()=>this.attach.emit()),this._detachSubscription=e.detachments().subscribe(()=>this.detach.emit()),e.keydownEvents().subscribe(i=>{this.overlayKeydown.next(i),27===i.keyCode&&!this.disableClose&&!Kn(i)&&(i.preventDefault(),this._detachOverlay())}),this._overlayRef.outsidePointerEvents().subscribe(i=>{this.overlayOutsideClick.next(i)})}_buildConfig(){const e=this._position=this.positionStrategy||this._createPositionStrategy(),i=new au({direction:this._dir,positionStrategy:e,scrollStrategy:this.scrollStrategy,hasBackdrop:this.hasBackdrop,disposeOnNavigation:this.disposeOnNavigation});return(this.width||0===this.width)&&(i.width=this.width),(this.height||0===this.height)&&(i.height=this.height),(this.minWidth||0===this.minWidth)&&(i.minWidth=this.minWidth),(this.minHeight||0===this.minHeight)&&(i.minHeight=this.minHeight),this.backdropClass&&(i.backdropClass=this.backdropClass),this.panelClass&&(i.panelClass=this.panelClass),i}_updatePositionStrategy(e){const i=this.positions.map(r=>({originX:r.originX,originY:r.originY,overlayX:r.overlayX,overlayY:r.overlayY,offsetX:r.offsetX||this.offsetX,offsetY:r.offsetY||this.offsetY,panelClass:r.panelClass||void 0}));return e.setOrigin(this._getFlexibleConnectedPositionStrategyOrigin()).withPositions(i).withFlexibleDimensions(this.flexibleDimensions).withPush(this.push).withGrowAfterOpen(this.growAfterOpen).withViewportMargin(this.viewportMargin).withLockedPosition(this.lockPosition).withTransformOriginOn(this.transformOriginSelector)}_createPositionStrategy(){const e=this._overlay.position().flexibleConnectedTo(this._getFlexibleConnectedPositionStrategyOrigin());return this._updatePositionStrategy(e),e}_getFlexibleConnectedPositionStrategyOrigin(){return this.origin instanceof lw?this.origin.elementRef:this.origin}_attachOverlay(){this._overlayRef?this._overlayRef.getConfig().hasBackdrop=this.hasBackdrop:this._createOverlay(),this._overlayRef.hasAttached()||this._overlayRef.attach(this._templatePortal),this.hasBackdrop?this._backdropSubscription=this._overlayRef.backdropClick().subscribe(e=>{this.backdropClick.emit(e)}):this._backdropSubscription.unsubscribe(),this._positionSubscription.unsubscribe(),this.positionChange.observers.length>0&&(this._positionSubscription=this._position.positionChanges.pipe(function yZ(t,n=!1){return Lt((e,i)=>{let r=0;e.subscribe(Rt(i,o=>{const s=t(o,r++);(s||n)&&i.next(o),!s&&i.complete()}))})}(()=>this.positionChange.observers.length>0)).subscribe(e=>{this._ngZone.run(()=>this.positionChange.emit(e)),0===this.positionChange.observers.length&&this._positionSubscription.unsubscribe()}))}_detachOverlay(){this._overlayRef&&this._overlayRef.detach(),this._backdropSubscription.unsubscribe(),this._positionSubscription.unsubscribe()}static#e=this.\u0275fac=function(i){return new(i||t)(p(Hn),p(yt),p(Tt),p(SN),p(Xn,8))};static#t=this.\u0275dir=R({type:t,selectors:[["","cdk-connected-overlay",""],["","connected-overlay",""],["","cdkConnectedOverlay",""]],inputs:{origin:[D.None,"cdkConnectedOverlayOrigin","origin"],positions:[D.None,"cdkConnectedOverlayPositions","positions"],positionStrategy:[D.None,"cdkConnectedOverlayPositionStrategy","positionStrategy"],offsetX:[D.None,"cdkConnectedOverlayOffsetX","offsetX"],offsetY:[D.None,"cdkConnectedOverlayOffsetY","offsetY"],width:[D.None,"cdkConnectedOverlayWidth","width"],height:[D.None,"cdkConnectedOverlayHeight","height"],minWidth:[D.None,"cdkConnectedOverlayMinWidth","minWidth"],minHeight:[D.None,"cdkConnectedOverlayMinHeight","minHeight"],backdropClass:[D.None,"cdkConnectedOverlayBackdropClass","backdropClass"],panelClass:[D.None,"cdkConnectedOverlayPanelClass","panelClass"],viewportMargin:[D.None,"cdkConnectedOverlayViewportMargin","viewportMargin"],scrollStrategy:[D.None,"cdkConnectedOverlayScrollStrategy","scrollStrategy"],open:[D.None,"cdkConnectedOverlayOpen","open"],disableClose:[D.None,"cdkConnectedOverlayDisableClose","disableClose"],transformOriginSelector:[D.None,"cdkConnectedOverlayTransformOriginOn","transformOriginSelector"],hasBackdrop:[D.HasDecoratorInputTransform,"cdkConnectedOverlayHasBackdrop","hasBackdrop",j],lockPosition:[D.HasDecoratorInputTransform,"cdkConnectedOverlayLockPosition","lockPosition",j],flexibleDimensions:[D.HasDecoratorInputTransform,"cdkConnectedOverlayFlexibleDimensions","flexibleDimensions",j],growAfterOpen:[D.HasDecoratorInputTransform,"cdkConnectedOverlayGrowAfterOpen","growAfterOpen",j],push:[D.HasDecoratorInputTransform,"cdkConnectedOverlayPush","push",j],disposeOnNavigation:[D.HasDecoratorInputTransform,"cdkConnectedOverlayDisposeOnNavigation","disposeOnNavigation",j]},outputs:{backdropClick:"backdropClick",positionChange:"positionChange",attach:"attach",detach:"detach",overlayKeydown:"overlayKeydown",overlayOutsideClick:"overlayOutsideClick"},exportAs:["cdkConnectedOverlay"],standalone:!0,features:[Fe,Ft]})}return t})();const LZ={provide:SN,deps:[Hn],useFactory:function PZ(t){return()=>t.scrollStrategies.reposition()}};let cu=(()=>{class t{static#e=this.\u0275fac=function(i){return new(i||t)};static#t=this.\u0275mod=ge({type:t});static#n=this.\u0275inj=he({providers:[Hn,LZ],imports:[Zd,sw,aw,aw]})}return t})();const VZ=["mat-menu-item",""],BZ=[[["mat-icon"],["","matMenuItemIcon",""]],"*"],jZ=["mat-icon, [matMenuItemIcon]","*"];function HZ(t,n){1&t&&(Ma(),y(0,"svg",2),re(1,"polygon",3),w())}const zZ=["*"];function UZ(t,n){if(1&t){const e=et();y(0,"div",0),q("keydown",function(r){return ee(e),te(L()._handleKeydown(r))})("click",function(){return ee(e),te(L().closed.emit("click"))})("@transformMenu.start",function(r){return ee(e),te(L()._onAnimationStart(r))})("@transformMenu.done",function(r){return ee(e),te(L()._onAnimationDone(r))}),y(1,"div",1),Y(2),w()()}if(2&t){const e=L();bn(e._classList),z("id",e.panelId)("@transformMenu",e._panelAnimationState),me("aria-label",e.ariaLabel||null)("aria-labelledby",e.ariaLabelledby||null)("aria-describedby",e.ariaDescribedby||null)}}const dw=new M("MAT_MENU_PANEL");let Cp=(()=>{class t{constructor(e,i,r,o,s){this._elementRef=e,this._document=i,this._focusMonitor=r,this._parentMenu=o,this._changeDetectorRef=s,this.role="menuitem",this.disabled=!1,this.disableRipple=!1,this._hovered=new Z,this._focused=new Z,this._highlighted=!1,this._triggersSubmenu=!1,o?.addItem?.(this)}focus(e,i){this._focusMonitor&&e?this._focusMonitor.focusVia(this._getHostElement(),e,i):this._getHostElement().focus(i),this._focused.next(this)}ngAfterViewInit(){this._focusMonitor&&this._focusMonitor.monitor(this._elementRef,!1)}ngOnDestroy(){this._focusMonitor&&this._focusMonitor.stopMonitoring(this._elementRef),this._parentMenu&&this._parentMenu.removeItem&&this._parentMenu.removeItem(this),this._hovered.complete(),this._focused.complete()}_getTabIndex(){return this.disabled?"-1":"0"}_getHostElement(){return this._elementRef.nativeElement}_checkDisabled(e){this.disabled&&(e.preventDefault(),e.stopPropagation())}_handleMouseEnter(){this._hovered.next(this)}getLabel(){const e=this._elementRef.nativeElement.cloneNode(!0),i=e.querySelectorAll("mat-icon, .material-icons");for(let r=0;r enter",Kt("120ms cubic-bezier(0, 0, 0.2, 1)",Xe({opacity:1,transform:"scale(1)"}))),Xt("* => void",Kt("100ms 25ms linear",Xe({opacity:0})))]),fadeInItems:Ci("fadeInItems",[rn("showing",Xe({opacity:1})),Xt("void => *",[Xe({opacity:0}),Kt("400ms 100ms cubic-bezier(0.55, 0, 0.55, 0.2)")])])};let qZ=0;const GZ=new M("mat-menu-default-options",{providedIn:"root",factory:function WZ(){return{overlapTrigger:!1,xPosition:"after",yPosition:"below",backdropClass:"cdk-overlay-transparent-backdrop"}}});let lu=(()=>{class t{get xPosition(){return this._xPosition}set xPosition(e){this._xPosition=e,this.setPositionClasses()}get yPosition(){return this._yPosition}set yPosition(e){this._yPosition=e,this.setPositionClasses()}set panelClass(e){const i=this._previousPanelClass,r={...this._classList};i&&i.length&&i.split(" ").forEach(o=>{r[o]=!1}),this._previousPanelClass=e,e&&e.length&&(e.split(" ").forEach(o=>{r[o]=!0}),this._elementRef.nativeElement.className=""),this._classList=r}get classList(){return this.panelClass}set classList(e){this.panelClass=e}constructor(e,i,r,o){this._elementRef=e,this._ngZone=i,this._changeDetectorRef=o,this._elevationPrefix="mat-elevation-z",this._baseElevation=8,this._directDescendantItems=new $r,this._classList={},this._panelAnimationState="void",this._animationDone=new Z,this.closed=new G,this.close=this.closed,this.panelId="mat-menu-panel-"+qZ++,this.overlayPanelClass=r.overlayPanelClass||"",this._xPosition=r.xPosition,this._yPosition=r.yPosition,this.backdropClass=r.backdropClass,this.overlapTrigger=r.overlapTrigger,this.hasBackdrop=r.hasBackdrop}ngOnInit(){this.setPositionClasses()}ngAfterContentInit(){this._updateDirectDescendants(),this._keyManager=new H0(this._directDescendantItems).withWrap().withTypeAhead().withHomeAndEnd(),this._keyManager.tabOut.subscribe(()=>this.closed.emit("tab")),this._directDescendantItems.changes.pipe(gn(this._directDescendantItems),nn(e=>Ht(...e.map(i=>i._focused)))).subscribe(e=>this._keyManager.updateActiveItem(e)),this._directDescendantItems.changes.subscribe(e=>{const i=this._keyManager;if("enter"===this._panelAnimationState&&i.activeItem?._hasFocus()){const r=e.toArray(),o=Math.max(0,Math.min(r.length-1,i.activeItemIndex||0));r[o]&&!r[o].disabled?i.setActiveItem(o):i.setNextItemActive()}})}ngOnDestroy(){this._keyManager?.destroy(),this._directDescendantItems.destroy(),this.closed.complete(),this._firstItemFocusSubscription?.unsubscribe()}_hovered(){return this._directDescendantItems.changes.pipe(gn(this._directDescendantItems),nn(i=>Ht(...i.map(r=>r._hovered))))}addItem(e){}removeItem(e){}_handleKeydown(e){const i=e.keyCode,r=this._keyManager;switch(i){case 27:Kn(e)||(e.preventDefault(),this.closed.emit("keydown"));break;case 37:this.parentMenu&&"ltr"===this.direction&&this.closed.emit("keydown");break;case 39:this.parentMenu&&"rtl"===this.direction&&this.closed.emit("keydown");break;default:return(38===i||40===i)&&r.setFocusOrigin("keyboard"),void r.onKeydown(e)}e.stopPropagation()}focusFirstItem(e="program"){this._firstItemFocusSubscription?.unsubscribe(),this._firstItemFocusSubscription=this._ngZone.onStable.pipe(gt(1)).subscribe(()=>{let i=null;if(this._directDescendantItems.length&&(i=this._directDescendantItems.first._getHostElement().closest('[role="menu"]')),!i||!i.contains(document.activeElement)){const r=this._keyManager;r.setFocusOrigin(e).setFirstItemActive(),!r.activeItem&&i&&i.focus()}})}resetActiveItem(){this._keyManager.setActiveItem(-1)}setElevation(e){const i=Math.min(this._baseElevation+e,24),r=`${this._elevationPrefix}${i}`,o=Object.keys(this._classList).find(s=>s.startsWith(this._elevationPrefix));if(!o||o===this._previousElevation){const s={...this._classList};this._previousElevation&&(s[this._previousElevation]=!1),s[r]=!0,this._previousElevation=r,this._classList=s}}setPositionClasses(e=this.xPosition,i=this.yPosition){this._classList={...this._classList,"mat-menu-before":"before"===e,"mat-menu-after":"after"===e,"mat-menu-above":"above"===i,"mat-menu-below":"below"===i},this._changeDetectorRef?.markForCheck()}_startAnimation(){this._panelAnimationState="enter"}_resetAnimation(){this._panelAnimationState="void"}_onAnimationDone(e){this._animationDone.next(e),this._isAnimating=!1}_onAnimationStart(e){this._isAnimating=!0,"enter"===e.toState&&0===this._keyManager.activeItemIndex&&(e.element.scrollTop=0)}_updateDirectDescendants(){this._allItems.changes.pipe(gn(this._allItems)).subscribe(e=>{this._directDescendantItems.reset(e.filter(i=>i._parentMenu===this)),this._directDescendantItems.notifyOnChanges()})}static#e=this.\u0275fac=function(i){return new(i||t)(p(K),p(W),p(GZ),p(Ke))};static#t=this.\u0275cmp=ue({type:t,selectors:[["mat-menu"]],contentQueries:function(i,r,o){if(1&i&&(Oe(o,$Z,5),Oe(o,Cp,5),Oe(o,Cp,4)),2&i){let s;U(s=$())&&(r.lazyContent=s.first),U(s=$())&&(r._allItems=s),U(s=$())&&(r.items=s)}},viewQuery:function(i,r){if(1&i&&Le(yt,5),2&i){let o;U(o=$())&&(r.templateRef=o.first)}},hostVars:3,hostBindings:function(i,r){2&i&&me("aria-label",null)("aria-labelledby",null)("aria-describedby",null)},inputs:{backdropClass:"backdropClass",ariaLabel:[D.None,"aria-label","ariaLabel"],ariaLabelledby:[D.None,"aria-labelledby","ariaLabelledby"],ariaDescribedby:[D.None,"aria-describedby","ariaDescribedby"],xPosition:"xPosition",yPosition:"yPosition",overlapTrigger:[D.HasDecoratorInputTransform,"overlapTrigger","overlapTrigger",j],hasBackdrop:[D.HasDecoratorInputTransform,"hasBackdrop","hasBackdrop",e=>null==e?null:j(e)],panelClass:[D.None,"class","panelClass"],classList:"classList"},outputs:{closed:"closed",close:"close"},exportAs:["matMenu"],standalone:!0,features:[ie([{provide:dw,useExisting:t}]),Fe,ve],ngContentSelectors:zZ,decls:1,vars:0,consts:[["tabindex","-1","role","menu",1,"mat-mdc-menu-panel","mat-mdc-elevation-specific",3,"keydown","click","id"],[1,"mat-mdc-menu-content"]],template:function(i,r){1&i&&($e(),H(0,UZ,3,7,"ng-template"))},styles:['mat-menu{display:none}.mat-mdc-menu-content{margin:0;padding:8px 0;list-style-type:none}.mat-mdc-menu-content:focus{outline:none}.mat-mdc-menu-content,.mat-mdc-menu-content .mat-mdc-menu-item .mat-mdc-menu-item-text{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;flex:1;white-space:normal;font-family:var(--mat-menu-item-label-text-font);line-height:var(--mat-menu-item-label-text-line-height);font-size:var(--mat-menu-item-label-text-size);letter-spacing:var(--mat-menu-item-label-text-tracking);font-weight:var(--mat-menu-item-label-text-weight)}.mat-mdc-menu-panel{min-width:112px;max-width:280px;overflow:auto;-webkit-overflow-scrolling:touch;box-sizing:border-box;outline:0;border-radius:var(--mat-menu-container-shape);background-color:var(--mat-menu-container-color);will-change:transform,opacity}.mat-mdc-menu-panel.ng-animating{pointer-events:none}.cdk-high-contrast-active .mat-mdc-menu-panel{outline:solid 1px}.mat-divider{color:var(--mat-menu-divider-color);margin-bottom:var(--mat-menu-divider-bottom-spacing);margin-top:var(--mat-menu-divider-top-spacing)}.mat-mdc-menu-item{display:flex;position:relative;align-items:center;justify-content:flex-start;overflow:hidden;padding:0;padding-left:var(--mat-menu-item-leading-spacing);padding-right:var(--mat-menu-item-trailing-spacing);-webkit-user-select:none;user-select:none;cursor:pointer;outline:none;border:none;-webkit-tap-highlight-color:rgba(0,0,0,0);cursor:pointer;width:100%;text-align:left;box-sizing:border-box;color:inherit;font-size:inherit;background:none;text-decoration:none;margin:0;align-items:center;min-height:48px}.mat-mdc-menu-item:focus{outline:none}[dir=rtl] .mat-mdc-menu-item,.mat-mdc-menu-item[dir=rtl]{padding-left:var(--mat-menu-item-trailing-spacing);padding-right:var(--mat-menu-item-leading-spacing)}.mat-mdc-menu-item:has(.material-icons,mat-icon,[matButtonIcon]){padding-left:var(--mat-menu-item-with-icon-leading-spacing);padding-right:var(--mat-menu-item-with-icon-trailing-spacing)}[dir=rtl] .mat-mdc-menu-item:has(.material-icons,mat-icon,[matButtonIcon]),.mat-mdc-menu-item:has(.material-icons,mat-icon,[matButtonIcon])[dir=rtl]{padding-left:var(--mat-menu-item-with-icon-trailing-spacing);padding-right:var(--mat-menu-item-with-icon-leading-spacing)}.mat-mdc-menu-item::-moz-focus-inner{border:0}.mat-mdc-menu-item,.mat-mdc-menu-item:visited,.mat-mdc-menu-item:link{color:var(--mat-menu-item-label-text-color)}.mat-mdc-menu-item .mat-icon-no-color,.mat-mdc-menu-item .mat-mdc-menu-submenu-icon{color:var(--mat-menu-item-icon-color)}.mat-mdc-menu-item[disabled]{cursor:default;opacity:.38}.mat-mdc-menu-item[disabled]::after{display:block;position:absolute;content:"";top:0;left:0;bottom:0;right:0}.mat-mdc-menu-item .mat-icon{flex-shrink:0;margin-right:var(--mat-menu-item-spacing);height:var(--mat-menu-item-icon-size);width:var(--mat-menu-item-icon-size)}[dir=rtl] .mat-mdc-menu-item{text-align:right}[dir=rtl] .mat-mdc-menu-item .mat-icon{margin-right:0;margin-left:var(--mat-menu-item-spacing)}.mat-mdc-menu-item:not([disabled]):hover{background-color:var(--mat-menu-item-hover-state-layer-color)}.mat-mdc-menu-item:not([disabled]).cdk-program-focused,.mat-mdc-menu-item:not([disabled]).cdk-keyboard-focused,.mat-mdc-menu-item:not([disabled]).mat-mdc-menu-item-highlighted{background-color:var(--mat-menu-item-focus-state-layer-color)}.cdk-high-contrast-active .mat-mdc-menu-item{margin-top:1px}.mat-mdc-menu-submenu-icon{width:var(--mat-menu-item-icon-size);height:10px;fill:currentColor;padding-left:var(--mat-menu-item-spacing)}[dir=rtl] .mat-mdc-menu-submenu-icon{padding-right:var(--mat-menu-item-spacing);padding-left:0}[dir=rtl] .mat-mdc-menu-submenu-icon polygon{transform:scaleX(-1)}.cdk-high-contrast-active .mat-mdc-menu-submenu-icon{fill:CanvasText}.mat-mdc-menu-item .mat-mdc-menu-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}'],encapsulation:2,data:{animation:[Dp.transformMenu,Dp.fadeInItems]},changeDetection:0})}return t})();const IN=new M("mat-menu-scroll-strategy",{providedIn:"root",factory:()=>{const t=T(Hn);return()=>t.scrollStrategies.reposition()}}),YZ={provide:IN,deps:[Hn],useFactory:function QZ(t){return()=>t.scrollStrategies.reposition()}},AN=Lo({passive:!0});let KZ=(()=>{class t{get _deprecatedMatMenuTriggerFor(){return this.menu}set _deprecatedMatMenuTriggerFor(e){this.menu=e}get menu(){return this._menu}set menu(e){e!==this._menu&&(this._menu=e,this._menuCloseSubscription.unsubscribe(),e&&(this._menuCloseSubscription=e.close.subscribe(i=>{this._destroyMenu(i),("click"===i||"tab"===i)&&this._parentMaterialMenu&&this._parentMaterialMenu.closed.emit(i)})),this._menuItemInstance?._setTriggersSubmenu(this.triggersSubmenu()))}constructor(e,i,r,o,s,a,c,l,d){this._overlay=e,this._element=i,this._viewContainerRef=r,this._menuItemInstance=a,this._dir=c,this._focusMonitor=l,this._ngZone=d,this._overlayRef=null,this._menuOpen=!1,this._closingActionsSubscription=Ae.EMPTY,this._hoverSubscription=Ae.EMPTY,this._menuCloseSubscription=Ae.EMPTY,this._changeDetectorRef=T(Ke),this._handleTouchStart=u=>{U0(u)||(this._openedBy="touch")},this._openedBy=void 0,this.restoreFocus=!0,this.menuOpened=new G,this.onMenuOpen=this.menuOpened,this.menuClosed=new G,this.onMenuClose=this.menuClosed,this._scrollStrategy=o,this._parentMaterialMenu=s instanceof lu?s:void 0,i.nativeElement.addEventListener("touchstart",this._handleTouchStart,AN)}ngAfterContentInit(){this._handleHover()}ngOnDestroy(){this._overlayRef&&(this._overlayRef.dispose(),this._overlayRef=null),this._element.nativeElement.removeEventListener("touchstart",this._handleTouchStart,AN),this._menuCloseSubscription.unsubscribe(),this._closingActionsSubscription.unsubscribe(),this._hoverSubscription.unsubscribe()}get menuOpen(){return this._menuOpen}get dir(){return this._dir&&"rtl"===this._dir.value?"rtl":"ltr"}triggersSubmenu(){return!!(this._menuItemInstance&&this._parentMaterialMenu&&this.menu)}toggleMenu(){return this._menuOpen?this.closeMenu():this.openMenu()}openMenu(){const e=this.menu;if(this._menuOpen||!e)return;const i=this._createOverlay(e),r=i.getConfig(),o=r.positionStrategy;this._setPosition(e,o),r.hasBackdrop=null==e.hasBackdrop?!this.triggersSubmenu():e.hasBackdrop,i.attach(this._getPortal(e)),e.lazyContent&&e.lazyContent.attach(this.menuData),this._closingActionsSubscription=this._menuClosingActions().subscribe(()=>this.closeMenu()),this._initMenu(e),e instanceof lu&&(e._startAnimation(),e._directDescendantItems.changes.pipe(pe(e.close)).subscribe(()=>{o.withLockedPosition(!1).reapplyLastPosition(),o.withLockedPosition(!0)}))}closeMenu(){this.menu?.close.emit()}focus(e,i){this._focusMonitor&&e?this._focusMonitor.focusVia(this._element,e,i):this._element.nativeElement.focus(i)}updatePosition(){this._overlayRef?.updatePosition()}_destroyMenu(e){if(!this._overlayRef||!this.menuOpen)return;const i=this.menu;this._closingActionsSubscription.unsubscribe(),this._overlayRef.detach(),this.restoreFocus&&("keydown"===e||!this._openedBy||!this.triggersSubmenu())&&this.focus(this._openedBy),this._openedBy=void 0,i instanceof lu?(i._resetAnimation(),i.lazyContent?i._animationDone.pipe(Ge(r=>"void"===r.toState),gt(1),pe(i.lazyContent._attached)).subscribe({next:()=>i.lazyContent.detach(),complete:()=>this._setIsMenuOpen(!1)}):this._setIsMenuOpen(!1)):(this._setIsMenuOpen(!1),i?.lazyContent?.detach())}_initMenu(e){e.parentMenu=this.triggersSubmenu()?this._parentMaterialMenu:void 0,e.direction=this.dir,this._setMenuElevation(e),e.focusFirstItem(this._openedBy||"program"),this._setIsMenuOpen(!0)}_setMenuElevation(e){if(e.setElevation){let i=0,r=e.parentMenu;for(;r;)i++,r=r.parentMenu;e.setElevation(i)}}_setIsMenuOpen(e){e!==this._menuOpen&&(this._menuOpen=e,this._menuOpen?this.menuOpened.emit():this.menuClosed.emit(),this.triggersSubmenu()&&this._menuItemInstance._setHighlighted(e),this._changeDetectorRef.markForCheck())}_createOverlay(e){if(!this._overlayRef){const i=this._getOverlayConfig(e);this._subscribeToPositions(e,i.positionStrategy),this._overlayRef=this._overlay.create(i),this._overlayRef.keydownEvents().subscribe()}return this._overlayRef}_getOverlayConfig(e){return new au({positionStrategy:this._overlay.position().flexibleConnectedTo(this._element).withLockedPosition().withGrowAfterOpen().withTransformOriginOn(".mat-menu-panel, .mat-mdc-menu-panel"),backdropClass:e.backdropClass||"cdk-overlay-transparent-backdrop",panelClass:e.overlayPanelClass,scrollStrategy:this._scrollStrategy(),direction:this._dir})}_subscribeToPositions(e,i){e.setPositionClasses&&i.positionChanges.subscribe(r=>{const o="start"===r.connectionPair.overlayX?"after":"before",s="top"===r.connectionPair.overlayY?"below":"above";this._ngZone?this._ngZone.run(()=>e.setPositionClasses(o,s)):e.setPositionClasses(o,s)})}_setPosition(e,i){let[r,o]="before"===e.xPosition?["end","start"]:["start","end"],[s,a]="above"===e.yPosition?["bottom","top"]:["top","bottom"],[c,l]=[s,a],[d,u]=[r,o],h=0;if(this.triggersSubmenu()){if(u=r="before"===e.xPosition?"start":"end",o=d="end"===r?"start":"end",this._parentMaterialMenu){if(null==this._parentInnerPadding){const f=this._parentMaterialMenu.items.first;this._parentInnerPadding=f?f._getHostElement().offsetTop:0}h="bottom"===s?this._parentInnerPadding:-this._parentInnerPadding}}else e.overlapTrigger||(c="top"===s?"bottom":"top",l="top"===a?"bottom":"top");i.withPositions([{originX:r,originY:c,overlayX:d,overlayY:s,offsetY:h},{originX:o,originY:c,overlayX:u,overlayY:s,offsetY:h},{originX:r,originY:l,overlayX:d,overlayY:a,offsetY:-h},{originX:o,originY:l,overlayX:u,overlayY:a,offsetY:-h}])}_menuClosingActions(){const e=this._overlayRef.backdropClick(),i=this._overlayRef.detachments();return Ht(e,this._parentMaterialMenu?this._parentMaterialMenu.closed:se(),this._parentMaterialMenu?this._parentMaterialMenu._hovered().pipe(Ge(s=>s!==this._menuItemInstance),Ge(()=>this._menuOpen)):se(),i)}_handleMousedown(e){z0(e)||(this._openedBy=0===e.button?"mouse":void 0,this.triggersSubmenu()&&e.preventDefault())}_handleKeydown(e){const i=e.keyCode;(13===i||32===i)&&(this._openedBy="keyboard"),this.triggersSubmenu()&&(39===i&&"ltr"===this.dir||37===i&&"rtl"===this.dir)&&(this._openedBy="keyboard",this.openMenu())}_handleClick(e){this.triggersSubmenu()?(e.stopPropagation(),this.openMenu()):this.toggleMenu()}_handleHover(){!this.triggersSubmenu()||!this._parentMaterialMenu||(this._hoverSubscription=this._parentMaterialMenu._hovered().pipe(Ge(e=>e===this._menuItemInstance&&!e.disabled),iw(0,tw)).subscribe(()=>{this._openedBy="mouse",this.menu instanceof lu&&this.menu._isAnimating?this.menu._animationDone.pipe(gt(1),iw(0,tw),pe(this._parentMaterialMenu._hovered())).subscribe(()=>this.openMenu()):this.openMenu()}))}_getPortal(e){return(!this._portal||this._portal.templateRef!==e.templateRef)&&(this._portal=new jo(e.templateRef,this._viewContainerRef)),this._portal}static#e=this.\u0275fac=function(i){return new(i||t)(p(Hn),p(K),p(Tt),p(IN),p(dw,8),p(Cp,10),p(Xn,8),p(Mr),p(W))};static#t=this.\u0275dir=R({type:t,selectors:[["","mat-menu-trigger-for",""],["","matMenuTriggerFor",""]],hostAttrs:[1,"mat-mdc-menu-trigger"],hostVars:3,hostBindings:function(i,r){1&i&&q("click",function(s){return r._handleClick(s)})("mousedown",function(s){return r._handleMousedown(s)})("keydown",function(s){return r._handleKeydown(s)}),2&i&&me("aria-haspopup",r.menu?"menu":null)("aria-expanded",r.menuOpen)("aria-controls",r.menuOpen?r.menu.panelId:null)},inputs:{_deprecatedMatMenuTriggerFor:[D.None,"mat-menu-trigger-for","_deprecatedMatMenuTriggerFor"],menu:[D.None,"matMenuTriggerFor","menu"],menuData:[D.None,"matMenuTriggerData","menuData"],restoreFocus:[D.None,"matMenuTriggerRestoreFocus","restoreFocus"]},outputs:{menuOpened:"menuOpened",onMenuOpen:"onMenuOpen",menuClosed:"menuClosed",onMenuClose:"onMenuClose"},exportAs:["matMenuTrigger"],standalone:!0})}return t})(),XZ=(()=>{class t{static#e=this.\u0275fac=function(i){return new(i||t)};static#t=this.\u0275mod=ge({type:t});static#n=this.\u0275inj=he({providers:[YZ],imports:[Ni,eu,Te,cu,zo,Te]})}return t})(),RN=(()=>{class t{constructor(e,i){this._renderer=e,this._elementRef=i,this.onChange=r=>{},this.onTouched=()=>{}}setProperty(e,i){this._renderer.setProperty(this._elementRef.nativeElement,e,i)}registerOnTouched(e){this.onTouched=e}registerOnChange(e){this.onChange=e}setDisabledState(e){this.setProperty("disabled",e)}static#e=this.\u0275fac=function(i){return new(i||t)(p(wr),p(K))};static#t=this.\u0275dir=R({type:t})}return t})(),Hs=(()=>{class t extends RN{static#e=this.\u0275fac=(()=>{let e;return function(r){return(e||(e=Be(t)))(r||t)}})();static#t=this.\u0275dir=R({type:t,features:[J]})}return t})();const ui=new M(""),JZ={provide:ui,useExisting:Ze(()=>du),multi:!0},tJ=new M("");let du=(()=>{class t extends RN{constructor(e,i,r){super(e,i),this._compositionMode=r,this._composing=!1,null==this._compositionMode&&(this._compositionMode=!function eJ(){const t=Ao()?Ao().getUserAgent():"";return/android (\d+)/.test(t.toLowerCase())}())}writeValue(e){this.setProperty("value",e??"")}_handleInput(e){(!this._compositionMode||this._compositionMode&&!this._composing)&&this.onChange(e)}_compositionStart(){this._composing=!0}_compositionEnd(e){this._composing=!1,this._compositionMode&&this.onChange(e)}static#e=this.\u0275fac=function(i){return new(i||t)(p(wr),p(K),p(tJ,8))};static#t=this.\u0275dir=R({type:t,selectors:[["input","formControlName","",3,"type","checkbox"],["textarea","formControlName",""],["input","formControl","",3,"type","checkbox"],["textarea","formControl",""],["input","ngModel","",3,"type","checkbox"],["textarea","ngModel",""],["","ngDefaultControl",""]],hostBindings:function(i,r){1&i&&q("input",function(s){return r._handleInput(s.target.value)})("blur",function(){return r.onTouched()})("compositionstart",function(){return r._compositionStart()})("compositionend",function(s){return r._compositionEnd(s.target.value)})},features:[ie([JZ]),J]})}return t})();function Uo(t){return null==t||("string"==typeof t||Array.isArray(t))&&0===t.length}function NN(t){return null!=t&&"number"==typeof t.length}const yn=new M(""),$o=new M(""),nJ=/^(?=.{1,254}$)(?=.{1,64}@)[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)*@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;class uw{static min(n){return function FN(t){return n=>{if(Uo(n.value)||Uo(t))return null;const e=parseFloat(n.value);return!isNaN(e)&&e{if(Uo(n.value)||Uo(t))return null;const e=parseFloat(n.value);return!isNaN(e)&&e>t?{max:{max:t,actual:n.value}}:null}}(n)}static required(n){return function LN(t){return Uo(t.value)?{required:!0}:null}(n)}static requiredTrue(n){return function VN(t){return!0===t.value?null:{required:!0}}(n)}static email(n){return function BN(t){return Uo(t.value)||nJ.test(t.value)?null:{email:!0}}(n)}static minLength(n){return function jN(t){return n=>Uo(n.value)||!NN(n.value)?null:n.value.lengthNN(n.value)&&n.value.length>t?{maxlength:{requiredLength:t,actualLength:n.value.length}}:null}(n)}static pattern(n){return function zN(t){if(!t)return Ep;let n,e;return"string"==typeof t?(e="","^"!==t.charAt(0)&&(e+="^"),e+=t,"$"!==t.charAt(t.length-1)&&(e+="$"),n=new RegExp(e)):(e=t.toString(),n=t),i=>{if(Uo(i.value))return null;const r=i.value;return n.test(r)?null:{pattern:{requiredPattern:e,actualValue:r}}}}(n)}static nullValidator(n){return null}static compose(n){return QN(n)}static composeAsync(n){return YN(n)}}function Ep(t){return null}function UN(t){return null!=t}function $N(t){return Id(t)?jt(t):t}function qN(t){let n={};return t.forEach(e=>{n=null!=e?{...n,...e}:n}),0===Object.keys(n).length?null:n}function GN(t,n){return n.map(e=>e(t))}function WN(t){return t.map(n=>function iJ(t){return!t.validate}(n)?n:e=>n.validate(e))}function QN(t){if(!t)return null;const n=t.filter(UN);return 0==n.length?null:function(e){return qN(GN(e,n))}}function hw(t){return null!=t?QN(WN(t)):null}function YN(t){if(!t)return null;const n=t.filter(UN);return 0==n.length?null:function(e){return nN(GN(e,n).map($N)).pipe(ne(qN))}}function fw(t){return null!=t?YN(WN(t)):null}function KN(t,n){return null===t?[n]:Array.isArray(t)?[...t,n]:[t,n]}function XN(t){return t._rawValidators}function ZN(t){return t._rawAsyncValidators}function mw(t){return t?Array.isArray(t)?t:[t]:[]}function kp(t,n){return Array.isArray(t)?t.includes(n):t===n}function JN(t,n){const e=mw(n);return mw(t).forEach(r=>{kp(e,r)||e.push(r)}),e}function eF(t,n){return mw(n).filter(e=>!kp(t,e))}class tF{constructor(){this._rawValidators=[],this._rawAsyncValidators=[],this._onDestroyCallbacks=[]}get value(){return this.control?this.control.value:null}get valid(){return this.control?this.control.valid:null}get invalid(){return this.control?this.control.invalid:null}get pending(){return this.control?this.control.pending:null}get disabled(){return this.control?this.control.disabled:null}get enabled(){return this.control?this.control.enabled:null}get errors(){return this.control?this.control.errors:null}get pristine(){return this.control?this.control.pristine:null}get dirty(){return this.control?this.control.dirty:null}get touched(){return this.control?this.control.touched:null}get status(){return this.control?this.control.status:null}get untouched(){return this.control?this.control.untouched:null}get statusChanges(){return this.control?this.control.statusChanges:null}get valueChanges(){return this.control?this.control.valueChanges:null}get path(){return null}_setValidators(n){this._rawValidators=n||[],this._composedValidatorFn=hw(this._rawValidators)}_setAsyncValidators(n){this._rawAsyncValidators=n||[],this._composedAsyncValidatorFn=fw(this._rawAsyncValidators)}get validator(){return this._composedValidatorFn||null}get asyncValidator(){return this._composedAsyncValidatorFn||null}_registerOnDestroy(n){this._onDestroyCallbacks.push(n)}_invokeOnDestroyCallbacks(){this._onDestroyCallbacks.forEach(n=>n()),this._onDestroyCallbacks=[]}reset(n=void 0){this.control&&this.control.reset(n)}hasError(n,e){return!!this.control&&this.control.hasError(n,e)}getError(n,e){return this.control?this.control.getError(n,e):null}}class Zn extends tF{get formDirective(){return null}get path(){return null}}class ir extends tF{constructor(){super(...arguments),this._parent=null,this.name=null,this.valueAccessor=null}}class nF{constructor(n){this._cd=n}get isTouched(){return!!this._cd?.control?.touched}get isUntouched(){return!!this._cd?.control?.untouched}get isPristine(){return!!this._cd?.control?.pristine}get isDirty(){return!!this._cd?.control?.dirty}get isValid(){return!!this._cd?.control?.valid}get isInvalid(){return!!this._cd?.control?.invalid}get isPending(){return!!this._cd?.control?.pending}get isSubmitted(){return!!this._cd?.submitted}}let pw=(()=>{class t extends nF{constructor(e){super(e)}static#e=this.\u0275fac=function(i){return new(i||t)(p(ir,2))};static#t=this.\u0275dir=R({type:t,selectors:[["","formControlName",""],["","ngModel",""],["","formControl",""]],hostVars:14,hostBindings:function(i,r){2&i&&de("ng-untouched",r.isUntouched)("ng-touched",r.isTouched)("ng-pristine",r.isPristine)("ng-dirty",r.isDirty)("ng-valid",r.isValid)("ng-invalid",r.isInvalid)("ng-pending",r.isPending)},features:[J]})}return t})();const uu="VALID",Sp="INVALID",Tc="PENDING",hu="DISABLED";function bw(t){return(Mp(t)?t.validators:t)||null}function vw(t,n){return(Mp(n)?n.asyncValidators:t)||null}function Mp(t){return null!=t&&!Array.isArray(t)&&"object"==typeof t}class yw{constructor(n,e){this._pendingDirty=!1,this._hasOwnPendingAsyncValidator=!1,this._pendingTouched=!1,this._onCollectionChange=()=>{},this._parent=null,this.pristine=!0,this.touched=!1,this._onDisabledChange=[],this._assignValidators(n),this._assignAsyncValidators(e)}get validator(){return this._composedValidatorFn}set validator(n){this._rawValidators=this._composedValidatorFn=n}get asyncValidator(){return this._composedAsyncValidatorFn}set asyncValidator(n){this._rawAsyncValidators=this._composedAsyncValidatorFn=n}get parent(){return this._parent}get valid(){return this.status===uu}get invalid(){return this.status===Sp}get pending(){return this.status==Tc}get disabled(){return this.status===hu}get enabled(){return this.status!==hu}get dirty(){return!this.pristine}get untouched(){return!this.touched}get updateOn(){return this._updateOn?this._updateOn:this.parent?this.parent.updateOn:"change"}setValidators(n){this._assignValidators(n)}setAsyncValidators(n){this._assignAsyncValidators(n)}addValidators(n){this.setValidators(JN(n,this._rawValidators))}addAsyncValidators(n){this.setAsyncValidators(JN(n,this._rawAsyncValidators))}removeValidators(n){this.setValidators(eF(n,this._rawValidators))}removeAsyncValidators(n){this.setAsyncValidators(eF(n,this._rawAsyncValidators))}hasValidator(n){return kp(this._rawValidators,n)}hasAsyncValidator(n){return kp(this._rawAsyncValidators,n)}clearValidators(){this.validator=null}clearAsyncValidators(){this.asyncValidator=null}markAsTouched(n={}){this.touched=!0,this._parent&&!n.onlySelf&&this._parent.markAsTouched(n)}markAllAsTouched(){this.markAsTouched({onlySelf:!0}),this._forEachChild(n=>n.markAllAsTouched())}markAsUntouched(n={}){this.touched=!1,this._pendingTouched=!1,this._forEachChild(e=>{e.markAsUntouched({onlySelf:!0})}),this._parent&&!n.onlySelf&&this._parent._updateTouched(n)}markAsDirty(n={}){this.pristine=!1,this._parent&&!n.onlySelf&&this._parent.markAsDirty(n)}markAsPristine(n={}){this.pristine=!0,this._pendingDirty=!1,this._forEachChild(e=>{e.markAsPristine({onlySelf:!0})}),this._parent&&!n.onlySelf&&this._parent._updatePristine(n)}markAsPending(n={}){this.status=Tc,!1!==n.emitEvent&&this.statusChanges.emit(this.status),this._parent&&!n.onlySelf&&this._parent.markAsPending(n)}disable(n={}){const e=this._parentMarkedDirty(n.onlySelf);this.status=hu,this.errors=null,this._forEachChild(i=>{i.disable({...n,onlySelf:!0})}),this._updateValue(),!1!==n.emitEvent&&(this.valueChanges.emit(this.value),this.statusChanges.emit(this.status)),this._updateAncestors({...n,skipPristineCheck:e}),this._onDisabledChange.forEach(i=>i(!0))}enable(n={}){const e=this._parentMarkedDirty(n.onlySelf);this.status=uu,this._forEachChild(i=>{i.enable({...n,onlySelf:!0})}),this.updateValueAndValidity({onlySelf:!0,emitEvent:n.emitEvent}),this._updateAncestors({...n,skipPristineCheck:e}),this._onDisabledChange.forEach(i=>i(!1))}_updateAncestors(n){this._parent&&!n.onlySelf&&(this._parent.updateValueAndValidity(n),n.skipPristineCheck||this._parent._updatePristine(),this._parent._updateTouched())}setParent(n){this._parent=n}getRawValue(){return this.value}updateValueAndValidity(n={}){this._setInitialStatus(),this._updateValue(),this.enabled&&(this._cancelExistingSubscription(),this.errors=this._runValidator(),this.status=this._calculateStatus(),(this.status===uu||this.status===Tc)&&this._runAsyncValidator(n.emitEvent)),!1!==n.emitEvent&&(this.valueChanges.emit(this.value),this.statusChanges.emit(this.status)),this._parent&&!n.onlySelf&&this._parent.updateValueAndValidity(n)}_updateTreeValidity(n={emitEvent:!0}){this._forEachChild(e=>e._updateTreeValidity(n)),this.updateValueAndValidity({onlySelf:!0,emitEvent:n.emitEvent})}_setInitialStatus(){this.status=this._allControlsDisabled()?hu:uu}_runValidator(){return this.validator?this.validator(this):null}_runAsyncValidator(n){if(this.asyncValidator){this.status=Tc,this._hasOwnPendingAsyncValidator=!0;const e=$N(this.asyncValidator(this));this._asyncValidationSubscription=e.subscribe(i=>{this._hasOwnPendingAsyncValidator=!1,this.setErrors(i,{emitEvent:n})})}}_cancelExistingSubscription(){this._asyncValidationSubscription&&(this._asyncValidationSubscription.unsubscribe(),this._hasOwnPendingAsyncValidator=!1)}setErrors(n,e={}){this.errors=n,this._updateControlsErrors(!1!==e.emitEvent)}get(n){let e=n;return null==e||(Array.isArray(e)||(e=e.split(".")),0===e.length)?null:e.reduce((i,r)=>i&&i._find(r),this)}getError(n,e){const i=e?this.get(e):this;return i&&i.errors?i.errors[n]:null}hasError(n,e){return!!this.getError(n,e)}get root(){let n=this;for(;n._parent;)n=n._parent;return n}_updateControlsErrors(n){this.status=this._calculateStatus(),n&&this.statusChanges.emit(this.status),this._parent&&this._parent._updateControlsErrors(n)}_initObservables(){this.valueChanges=new G,this.statusChanges=new G}_calculateStatus(){return this._allControlsDisabled()?hu:this.errors?Sp:this._hasOwnPendingAsyncValidator||this._anyControlsHaveStatus(Tc)?Tc:this._anyControlsHaveStatus(Sp)?Sp:uu}_anyControlsHaveStatus(n){return this._anyControls(e=>e.status===n)}_anyControlsDirty(){return this._anyControls(n=>n.dirty)}_anyControlsTouched(){return this._anyControls(n=>n.touched)}_updatePristine(n={}){this.pristine=!this._anyControlsDirty(),this._parent&&!n.onlySelf&&this._parent._updatePristine(n)}_updateTouched(n={}){this.touched=this._anyControlsTouched(),this._parent&&!n.onlySelf&&this._parent._updateTouched(n)}_registerOnCollectionChange(n){this._onCollectionChange=n}_setUpdateStrategy(n){Mp(n)&&null!=n.updateOn&&(this._updateOn=n.updateOn)}_parentMarkedDirty(n){return!n&&!(!this._parent||!this._parent.dirty)&&!this._parent._anyControlsDirty()}_find(n){return null}_assignValidators(n){this._rawValidators=Array.isArray(n)?n.slice():n,this._composedValidatorFn=function cJ(t){return Array.isArray(t)?hw(t):t||null}(this._rawValidators)}_assignAsyncValidators(n){this._rawAsyncValidators=Array.isArray(n)?n.slice():n,this._composedAsyncValidatorFn=function lJ(t){return Array.isArray(t)?fw(t):t||null}(this._rawAsyncValidators)}}class ww extends yw{constructor(n,e,i){super(bw(e),vw(i,e)),this.controls=n,this._initObservables(),this._setUpdateStrategy(e),this._setUpControls(),this.updateValueAndValidity({onlySelf:!0,emitEvent:!!this.asyncValidator})}registerControl(n,e){return this.controls[n]?this.controls[n]:(this.controls[n]=e,e.setParent(this),e._registerOnCollectionChange(this._onCollectionChange),e)}addControl(n,e,i={}){this.registerControl(n,e),this.updateValueAndValidity({emitEvent:i.emitEvent}),this._onCollectionChange()}removeControl(n,e={}){this.controls[n]&&this.controls[n]._registerOnCollectionChange(()=>{}),delete this.controls[n],this.updateValueAndValidity({emitEvent:e.emitEvent}),this._onCollectionChange()}setControl(n,e,i={}){this.controls[n]&&this.controls[n]._registerOnCollectionChange(()=>{}),delete this.controls[n],e&&this.registerControl(n,e),this.updateValueAndValidity({emitEvent:i.emitEvent}),this._onCollectionChange()}contains(n){return this.controls.hasOwnProperty(n)&&this.controls[n].enabled}setValue(n,e={}){(function oF(t,n,e){t._forEachChild((i,r)=>{if(void 0===e[r])throw new E(1002,"")})})(this,0,n),Object.keys(n).forEach(i=>{(function rF(t,n,e){const i=t.controls;if(!(n?Object.keys(i):i).length)throw new E(1e3,"");if(!i[e])throw new E(1001,"")})(this,!0,i),this.controls[i].setValue(n[i],{onlySelf:!0,emitEvent:e.emitEvent})}),this.updateValueAndValidity(e)}patchValue(n,e={}){null!=n&&(Object.keys(n).forEach(i=>{const r=this.controls[i];r&&r.patchValue(n[i],{onlySelf:!0,emitEvent:e.emitEvent})}),this.updateValueAndValidity(e))}reset(n={},e={}){this._forEachChild((i,r)=>{i.reset(n?n[r]:null,{onlySelf:!0,emitEvent:e.emitEvent})}),this._updatePristine(e),this._updateTouched(e),this.updateValueAndValidity(e)}getRawValue(){return this._reduceChildren({},(n,e,i)=>(n[i]=e.getRawValue(),n))}_syncPendingControls(){let n=this._reduceChildren(!1,(e,i)=>!!i._syncPendingControls()||e);return n&&this.updateValueAndValidity({onlySelf:!0}),n}_forEachChild(n){Object.keys(this.controls).forEach(e=>{const i=this.controls[e];i&&n(i,e)})}_setUpControls(){this._forEachChild(n=>{n.setParent(this),n._registerOnCollectionChange(this._onCollectionChange)})}_updateValue(){this.value=this._reduceValue()}_anyControls(n){for(const[e,i]of Object.entries(this.controls))if(this.contains(e)&&n(i))return!0;return!1}_reduceValue(){return this._reduceChildren({},(e,i,r)=>((i.enabled||this.disabled)&&(e[r]=i.value),e))}_reduceChildren(n,e){let i=n;return this._forEachChild((r,o)=>{i=e(i,r,o)}),i}_allControlsDisabled(){for(const n of Object.keys(this.controls))if(this.controls[n].enabled)return!1;return Object.keys(this.controls).length>0||this.disabled}_find(n){return this.controls.hasOwnProperty(n)?this.controls[n]:null}}const Sc=new M("CallSetDisabledState",{providedIn:"root",factory:()=>Ip}),Ip="always";function fu(t,n,e=Ip){xw(t,n),n.valueAccessor.writeValue(t.value),(t.disabled||"always"===e)&&n.valueAccessor.setDisabledState?.(t.disabled),function hJ(t,n){n.valueAccessor.registerOnChange(e=>{t._pendingValue=e,t._pendingChange=!0,t._pendingDirty=!0,"change"===t.updateOn&&sF(t,n)})}(t,n),function mJ(t,n){const e=(i,r)=>{n.valueAccessor.writeValue(i),r&&n.viewToModelUpdate(i)};t.registerOnChange(e),n._registerOnDestroy(()=>{t._unregisterOnChange(e)})}(t,n),function fJ(t,n){n.valueAccessor.registerOnTouched(()=>{t._pendingTouched=!0,"blur"===t.updateOn&&t._pendingChange&&sF(t,n),"submit"!==t.updateOn&&t.markAsTouched()})}(t,n),function uJ(t,n){if(n.valueAccessor.setDisabledState){const e=i=>{n.valueAccessor.setDisabledState(i)};t.registerOnDisabledChange(e),n._registerOnDestroy(()=>{t._unregisterOnDisabledChange(e)})}}(t,n)}function Rp(t,n,e=!0){const i=()=>{};n.valueAccessor&&(n.valueAccessor.registerOnChange(i),n.valueAccessor.registerOnTouched(i)),Np(t,n),t&&(n._invokeOnDestroyCallbacks(),t._registerOnCollectionChange(()=>{}))}function Op(t,n){t.forEach(e=>{e.registerOnValidatorChange&&e.registerOnValidatorChange(n)})}function xw(t,n){const e=XN(t);null!==n.validator?t.setValidators(KN(e,n.validator)):"function"==typeof e&&t.setValidators([e]);const i=ZN(t);null!==n.asyncValidator?t.setAsyncValidators(KN(i,n.asyncValidator)):"function"==typeof i&&t.setAsyncValidators([i]);const r=()=>t.updateValueAndValidity();Op(n._rawValidators,r),Op(n._rawAsyncValidators,r)}function Np(t,n){let e=!1;if(null!==t){if(null!==n.validator){const r=XN(t);if(Array.isArray(r)&&r.length>0){const o=r.filter(s=>s!==n.validator);o.length!==r.length&&(e=!0,t.setValidators(o))}}if(null!==n.asyncValidator){const r=ZN(t);if(Array.isArray(r)&&r.length>0){const o=r.filter(s=>s!==n.asyncValidator);o.length!==r.length&&(e=!0,t.setAsyncValidators(o))}}}const i=()=>{};return Op(n._rawValidators,i),Op(n._rawAsyncValidators,i),e}function sF(t,n){t._pendingDirty&&t.markAsDirty(),t.setValue(t._pendingValue,{emitModelToViewChange:!1}),n.viewToModelUpdate(t._pendingValue),t._pendingChange=!1}function aF(t,n){xw(t,n)}function cF(t,n){t._syncPendingControls(),n.forEach(e=>{const i=e.control;"submit"===i.updateOn&&i._pendingChange&&(e.viewToModelUpdate(i._pendingValue),i._pendingChange=!1)})}const vJ={provide:Zn,useExisting:Ze(()=>Mc)},mu=Promise.resolve();let Mc=(()=>{class t extends Zn{constructor(e,i,r){super(),this.callSetDisabledState=r,this.submitted=!1,this._directives=new Set,this.ngSubmit=new G,this.form=new ww({},hw(e),fw(i))}ngAfterViewInit(){this._setUpdateStrategy()}get formDirective(){return this}get control(){return this.form}get path(){return[]}get controls(){return this.form.controls}addControl(e){mu.then(()=>{const i=this._findContainer(e.path);e.control=i.registerControl(e.name,e.control),fu(e.control,e,this.callSetDisabledState),e.control.updateValueAndValidity({emitEvent:!1}),this._directives.add(e)})}getControl(e){return this.form.get(e.path)}removeControl(e){mu.then(()=>{const i=this._findContainer(e.path);i&&i.removeControl(e.name),this._directives.delete(e)})}addFormGroup(e){mu.then(()=>{const i=this._findContainer(e.path),r=new ww({});aF(r,e),i.registerControl(e.name,r),r.updateValueAndValidity({emitEvent:!1})})}removeFormGroup(e){mu.then(()=>{const i=this._findContainer(e.path);i&&i.removeControl(e.name)})}getFormGroup(e){return this.form.get(e.path)}updateModel(e,i){mu.then(()=>{this.form.get(e.path).setValue(i)})}setValue(e){this.control.setValue(e)}onSubmit(e){return this.submitted=!0,cF(this.form,this._directives),this.ngSubmit.emit(e),"dialog"===e?.target?.method}onReset(){this.resetForm()}resetForm(e=void 0){this.form.reset(e),this.submitted=!1}_setUpdateStrategy(){this.options&&null!=this.options.updateOn&&(this.form._updateOn=this.options.updateOn)}_findContainer(e){return e.pop(),e.length?this.form.get(e):this.form}static#e=this.\u0275fac=function(i){return new(i||t)(p(yn,10),p($o,10),p(Sc,8))};static#t=this.\u0275dir=R({type:t,selectors:[["form",3,"ngNoForm","",3,"formGroup",""],["ng-form"],["","ngForm",""]],hostBindings:function(i,r){1&i&&q("submit",function(s){return r.onSubmit(s)})("reset",function(){return r.onReset()})},inputs:{options:[D.None,"ngFormOptions","options"]},outputs:{ngSubmit:"ngSubmit"},exportAs:["ngForm"],features:[ie([vJ]),J]})}return t})();function lF(t,n){const e=t.indexOf(n);e>-1&&t.splice(e,1)}function dF(t){return"object"==typeof t&&null!==t&&2===Object.keys(t).length&&"value"in t&&"disabled"in t}const Ic=class extends yw{constructor(n=null,e,i){super(bw(e),vw(i,e)),this.defaultValue=null,this._onChange=[],this._pendingChange=!1,this._applyFormState(n),this._setUpdateStrategy(e),this._initObservables(),this.updateValueAndValidity({onlySelf:!0,emitEvent:!!this.asyncValidator}),Mp(e)&&(e.nonNullable||e.initialValueIsDefault)&&(this.defaultValue=dF(n)?n.value:n)}setValue(n,e={}){this.value=this._pendingValue=n,this._onChange.length&&!1!==e.emitModelToViewChange&&this._onChange.forEach(i=>i(this.value,!1!==e.emitViewToModelChange)),this.updateValueAndValidity(e)}patchValue(n,e={}){this.setValue(n,e)}reset(n=this.defaultValue,e={}){this._applyFormState(n),this.markAsPristine(e),this.markAsUntouched(e),this.setValue(this.value,e),this._pendingChange=!1}_updateValue(){}_anyControls(n){return!1}_allControlsDisabled(){return this.disabled}registerOnChange(n){this._onChange.push(n)}_unregisterOnChange(n){lF(this._onChange,n)}registerOnDisabledChange(n){this._onDisabledChange.push(n)}_unregisterOnDisabledChange(n){lF(this._onDisabledChange,n)}_forEachChild(n){}_syncPendingControls(){return!("submit"!==this.updateOn||(this._pendingDirty&&this.markAsDirty(),this._pendingTouched&&this.markAsTouched(),!this._pendingChange)||(this.setValue(this._pendingValue,{onlySelf:!0,emitModelToViewChange:!1}),0))}_applyFormState(n){dF(n)?(this.value=this._pendingValue=n.value,n.disabled?this.disable({onlySelf:!0,emitEvent:!1}):this.enable({onlySelf:!0,emitEvent:!1})):this.value=this._pendingValue=n}};Promise.resolve();const kw=new M(""),SJ={provide:ir,useExisting:Ze(()=>Fp)};let Fp=(()=>{class t extends ir{set isDisabled(e){}static#e=this._ngModelWarningSentOnce=!1;constructor(e,i,r,o,s){super(),this._ngModelWarningConfig=o,this.callSetDisabledState=s,this.update=new G,this._ngModelWarningSent=!1,this._setValidators(e),this._setAsyncValidators(i),this.valueAccessor=function Ew(t,n){if(!n)return null;let e,i,r;return Array.isArray(n),n.forEach(o=>{o.constructor===du?e=o:function _J(t){return Object.getPrototypeOf(t.constructor)===Hs}(o)?i=o:r=o}),r||i||e||null}(0,r)}ngOnChanges(e){if(this._isControlChanged(e)){const i=e.form.previousValue;i&&Rp(i,this,!1),fu(this.form,this,this.callSetDisabledState),this.form.updateValueAndValidity({emitEvent:!1})}(function Dw(t,n){if(!t.hasOwnProperty("model"))return!1;const e=t.model;return!!e.isFirstChange()||!Object.is(n,e.currentValue)})(e,this.viewModel)&&(this.form.setValue(this.model),this.viewModel=this.model)}ngOnDestroy(){this.form&&Rp(this.form,this,!1)}get path(){return[]}get control(){return this.form}viewToModelUpdate(e){this.viewModel=e,this.update.emit(e)}_isControlChanged(e){return e.hasOwnProperty("form")}static#t=this.\u0275fac=function(i){return new(i||t)(p(yn,10),p($o,10),p(ui,10),p(kw,8),p(Sc,8))};static#n=this.\u0275dir=R({type:t,selectors:[["","formControl",""]],inputs:{form:[D.None,"formControl","form"],isDisabled:[D.None,"disabled","isDisabled"],model:[D.None,"ngModel","model"]},outputs:{update:"ngModelChange"},exportAs:["ngForm"],features:[ie([SJ]),J,Ft]})}return t})();const MJ={provide:Zn,useExisting:Ze(()=>Ac)};let Ac=(()=>{class t extends Zn{constructor(e,i,r){super(),this.callSetDisabledState=r,this.submitted=!1,this._onCollectionChange=()=>this._updateDomValue(),this.directives=[],this.form=null,this.ngSubmit=new G,this._setValidators(e),this._setAsyncValidators(i)}ngOnChanges(e){this._checkFormPresent(),e.hasOwnProperty("form")&&(this._updateValidators(),this._updateDomValue(),this._updateRegistrations(),this._oldForm=this.form)}ngOnDestroy(){this.form&&(Np(this.form,this),this.form._onCollectionChange===this._onCollectionChange&&this.form._registerOnCollectionChange(()=>{}))}get formDirective(){return this}get control(){return this.form}get path(){return[]}addControl(e){const i=this.form.get(e.path);return fu(i,e,this.callSetDisabledState),i.updateValueAndValidity({emitEvent:!1}),this.directives.push(e),i}getControl(e){return this.form.get(e.path)}removeControl(e){Rp(e.control||null,e,!1),function bJ(t,n){const e=t.indexOf(n);e>-1&&t.splice(e,1)}(this.directives,e)}addFormGroup(e){this._setUpFormContainer(e)}removeFormGroup(e){this._cleanUpFormContainer(e)}getFormGroup(e){return this.form.get(e.path)}addFormArray(e){this._setUpFormContainer(e)}removeFormArray(e){this._cleanUpFormContainer(e)}getFormArray(e){return this.form.get(e.path)}updateModel(e,i){this.form.get(e.path).setValue(i)}onSubmit(e){return this.submitted=!0,cF(this.form,this.directives),this.ngSubmit.emit(e),"dialog"===e?.target?.method}onReset(){this.resetForm()}resetForm(e=void 0){this.form.reset(e),this.submitted=!1}_updateDomValue(){this.directives.forEach(e=>{const i=e.control,r=this.form.get(e.path);i!==r&&(Rp(i||null,e),(t=>t instanceof Ic)(r)&&(fu(r,e,this.callSetDisabledState),e.control=r))}),this.form._updateTreeValidity({emitEvent:!1})}_setUpFormContainer(e){const i=this.form.get(e.path);aF(i,e),i.updateValueAndValidity({emitEvent:!1})}_cleanUpFormContainer(e){if(this.form){const i=this.form.get(e.path);i&&function pJ(t,n){return Np(t,n)}(i,e)&&i.updateValueAndValidity({emitEvent:!1})}}_updateRegistrations(){this.form._registerOnCollectionChange(this._onCollectionChange),this._oldForm&&this._oldForm._registerOnCollectionChange(()=>{})}_updateValidators(){xw(this.form,this),this._oldForm&&Np(this._oldForm,this)}_checkFormPresent(){}static#e=this.\u0275fac=function(i){return new(i||t)(p(yn,10),p($o,10),p(Sc,8))};static#t=this.\u0275dir=R({type:t,selectors:[["","formGroup",""]],hostBindings:function(i,r){1&i&&q("submit",function(s){return r.onSubmit(s)})("reset",function(){return r.onReset()})},inputs:{form:[D.None,"formGroup","form"]},outputs:{ngSubmit:"ngSubmit"},exportAs:["ngForm"],features:[ie([MJ]),J,Ft]})}return t})(),WJ=(()=>{class t{static#e=this.\u0275fac=function(i){return new(i||t)};static#t=this.\u0275mod=ge({type:t});static#n=this.\u0275inj=he({})}return t})(),IF=(()=>{class t{static withConfig(e){return{ngModule:t,providers:[{provide:kw,useValue:e.warnOnNgModelWithFormControl??"always"},{provide:Sc,useValue:e.callSetDisabledState??Ip}]}}static#e=this.\u0275fac=function(i){return new(i||t)};static#t=this.\u0275mod=ge({type:t});static#n=this.\u0275inj=he({imports:[WJ]})}return t})();class YJ extends Z{constructor(n=1/0,e=1/0,i=F0){super(),this._bufferSize=n,this._windowTime=e,this._timestampProvider=i,this._buffer=[],this._infiniteTimeWindow=!0,this._infiniteTimeWindow=e===1/0,this._bufferSize=Math.max(1,n),this._windowTime=Math.max(1,e)}next(n){const{isStopped:e,_buffer:i,_infiniteTimeWindow:r,_timestampProvider:o,_windowTime:s}=this;e||(i.push(n),!r&&i.push(o.now()+s)),this._trimBuffer(),super.next(n)}_subscribe(n){this._throwIfClosed(),this._trimBuffer();const e=this._innerSubscribe(n),{_infiniteTimeWindow:i,_buffer:r}=this,o=r.slice();for(let s=0;sthis._resizeSubject.next(e)))}observe(n){return this._elementObservables.has(n)||this._elementObservables.set(n,new Ye(e=>{const i=this._resizeSubject.subscribe(e);return this._resizeObserver?.observe(n,{box:this._box}),()=>{this._resizeObserver?.unobserve(n),i.unsubscribe(),this._elementObservables.delete(n)}}).pipe(Ge(e=>e.some(i=>i.target===n)),function KJ(t,n,e){let i,r=!1;return t&&"object"==typeof t?({bufferSize:i=1/0,windowTime:n=1/0,refCount:r=!1,scheduler:e}=t):i=t??1/0,iN({connector:()=>new YJ(i,n,e),resetOnError:!0,resetOnComplete:!1,resetOnRefCountZero:r})}({bufferSize:1,refCount:!0}),pe(this._destroyed))),this._elementObservables.get(n)}destroy(){this._destroyed.next(),this._destroyed.complete(),this._resizeSubject.complete(),this._elementObservables.clear()}}let ZJ=(()=>{class t{constructor(){this._observers=new Map,this._ngZone=T(W)}ngOnDestroy(){for(const[,e]of this._observers)e.destroy();this._observers.clear()}observe(e,i){const r=i?.box||"content-box";return this._observers.has(r)||this._observers.set(r,new XJ(r)),this._observers.get(r).observe(e)}static#e=this.\u0275fac=function(i){return new(i||t)};static#t=this.\u0275prov=P({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();const JJ=["notch"],eee=["matFormFieldNotchedOutline",""],tee=["*"],nee=["textField"],iee=["iconPrefixContainer"],ree=["textPrefixContainer"],oee=["*",[["mat-label"]],[["","matPrefix",""],["","matIconPrefix",""]],[["","matTextPrefix",""]],[["","matTextSuffix",""]],[["","matSuffix",""],["","matIconSuffix",""]],[["mat-error"],["","matError",""]],[["mat-hint",3,"align","end"]],[["mat-hint","align","end"]]],see=["*","mat-label","[matPrefix], [matIconPrefix]","[matTextPrefix]","[matTextSuffix]","[matSuffix], [matIconSuffix]","mat-error, [matError]","mat-hint:not([align='end'])","mat-hint[align='end']"];function aee(t,n){1&t&&re(0,"span",17)}function cee(t,n){if(1&t&&(y(0,"label",16),Y(1,1),H(2,aee,1,0,"span",17),w()),2&t){const e=L(2);z("floating",e._shouldLabelFloat())("monitorResize",e._hasOutline())("id",e._labelId),me("for",e._control.disableAutomaticLabeling?null:e._control.id),C(2),X(2,!e.hideRequiredMarker&&e._control.required?2:-1)}}function lee(t,n){1&t&&H(0,cee,3,5,"label",16),2&t&&X(0,L()._hasFloatingLabel()?0:-1)}function dee(t,n){1&t&&re(0,"div",5)}function uee(t,n){}function hee(t,n){1&t&&H(0,uee,0,0,"ng-template",11),2&t&&(L(2),z("ngTemplateOutlet",ai(1)))}function fee(t,n){if(1&t&&(y(0,"div",7),H(1,hee,1,1,null,11),w()),2&t){const e=L();z("matFormFieldNotchedOutlineOpen",e._shouldLabelFloat()),C(),X(1,e._forceDisplayInfixLabel()?-1:1)}}function mee(t,n){1&t&&(y(0,"div",8,2),Y(2,2),w())}function pee(t,n){1&t&&(y(0,"div",9,3),Y(2,3),w())}function gee(t,n){}function _ee(t,n){1&t&&H(0,gee,0,0,"ng-template",11),2&t&&(L(),z("ngTemplateOutlet",ai(1)))}function bee(t,n){1&t&&(y(0,"div",12),Y(1,4),w())}function vee(t,n){1&t&&(y(0,"div",13),Y(1,5),w())}function yee(t,n){1&t&&re(0,"div",14)}function wee(t,n){1&t&&(y(0,"div",18),Y(1,6),w()),2&t&&z("@transitionMessages",L()._subscriptAnimationState)}function xee(t,n){if(1&t&&(y(0,"mat-hint",20),A(1),w()),2&t){const e=L(2);z("id",e._hintLabelId),C(),wt(e.hintLabel)}}function Cee(t,n){if(1&t&&(y(0,"div",19),H(1,xee,2,2,"mat-hint",20),Y(2,7),re(3,"div",21),Y(4,8),w()),2&t){const e=L();z("@transitionMessages",e._subscriptAnimationState),C(),X(1,e.hintLabel?1:-1)}}let Pp=(()=>{class t{static#e=this.\u0275fac=function(i){return new(i||t)};static#t=this.\u0275dir=R({type:t,selectors:[["mat-label"]],standalone:!0})}return t})();const Dee=new M("MatError");let Eee=0,AF=(()=>{class t{constructor(){this.align="start",this.id="mat-mdc-hint-"+Eee++}static#e=this.\u0275fac=function(i){return new(i||t)};static#t=this.\u0275dir=R({type:t,selectors:[["mat-hint"]],hostAttrs:[1,"mat-mdc-form-field-hint","mat-mdc-form-field-bottom-align"],hostVars:4,hostBindings:function(i,r){2&i&&(Zi("id",r.id),me("align",null),de("mat-mdc-form-field-hint-end","end"===r.align))},inputs:{align:"align",id:"id"},standalone:!0})}return t})();const kee=new M("MatPrefix"),RF=new M("MatSuffix");let Tee=(()=>{class t{constructor(){this._isText=!1}set _isTextSelector(e){this._isText=!0}static#e=this.\u0275fac=function(i){return new(i||t)};static#t=this.\u0275dir=R({type:t,selectors:[["","matSuffix",""],["","matIconSuffix",""],["","matTextSuffix",""]],inputs:{_isTextSelector:[D.None,"matTextSuffix","_isTextSelector"]},standalone:!0,features:[ie([{provide:RF,useExisting:t}])]})}return t})();const OF=new M("FloatingLabelParent");let NF=(()=>{class t{get floating(){return this._floating}set floating(e){this._floating=e,this.monitorResize&&this._handleResize()}get monitorResize(){return this._monitorResize}set monitorResize(e){this._monitorResize=e,this._monitorResize?this._subscribeToResize():this._resizeSubscription.unsubscribe()}constructor(e){this._elementRef=e,this._floating=!1,this._monitorResize=!1,this._resizeObserver=T(ZJ),this._ngZone=T(W),this._parent=T(OF),this._resizeSubscription=new Ae}ngOnDestroy(){this._resizeSubscription.unsubscribe()}getWidth(){return function See(t){if(null!==t.offsetParent)return t.scrollWidth;const e=t.cloneNode(!0);e.style.setProperty("position","absolute"),e.style.setProperty("transform","translate(-9999px, -9999px)"),document.documentElement.appendChild(e);const i=e.scrollWidth;return e.remove(),i}(this._elementRef.nativeElement)}get element(){return this._elementRef.nativeElement}_handleResize(){setTimeout(()=>this._parent._handleLabelResized())}_subscribeToResize(){this._resizeSubscription.unsubscribe(),this._ngZone.runOutsideAngular(()=>{this._resizeSubscription=this._resizeObserver.observe(this._elementRef.nativeElement,{box:"border-box"}).subscribe(()=>this._handleResize())})}static#e=this.\u0275fac=function(i){return new(i||t)(p(K))};static#t=this.\u0275dir=R({type:t,selectors:[["label","matFormFieldFloatingLabel",""]],hostAttrs:[1,"mdc-floating-label","mat-mdc-floating-label"],hostVars:2,hostBindings:function(i,r){2&i&&de("mdc-floating-label--float-above",r.floating)},inputs:{floating:"floating",monitorResize:"monitorResize"},standalone:!0})}return t})();const FF="mdc-line-ripple--active",Lp="mdc-line-ripple--deactivating";let PF=(()=>{class t{constructor(e,i){this._elementRef=e,this._handleTransitionEnd=r=>{const o=this._elementRef.nativeElement.classList,s=o.contains(Lp);"opacity"===r.propertyName&&s&&o.remove(FF,Lp)},i.runOutsideAngular(()=>{e.nativeElement.addEventListener("transitionend",this._handleTransitionEnd)})}activate(){const e=this._elementRef.nativeElement.classList;e.remove(Lp),e.add(FF)}deactivate(){this._elementRef.nativeElement.classList.add(Lp)}ngOnDestroy(){this._elementRef.nativeElement.removeEventListener("transitionend",this._handleTransitionEnd)}static#e=this.\u0275fac=function(i){return new(i||t)(p(K),p(W))};static#t=this.\u0275dir=R({type:t,selectors:[["div","matFormFieldLineRipple",""]],hostAttrs:[1,"mdc-line-ripple"],standalone:!0})}return t})(),LF=(()=>{class t{constructor(e,i){this._elementRef=e,this._ngZone=i,this.open=!1}ngAfterViewInit(){const e=this._elementRef.nativeElement.querySelector(".mdc-floating-label");e?(this._elementRef.nativeElement.classList.add("mdc-notched-outline--upgraded"),"function"==typeof requestAnimationFrame&&(e.style.transitionDuration="0s",this._ngZone.runOutsideAngular(()=>{requestAnimationFrame(()=>e.style.transitionDuration="")}))):this._elementRef.nativeElement.classList.add("mdc-notched-outline--no-label")}_setNotchWidth(e){this._notch.nativeElement.style.width=this.open&&e?`calc(${e}px * var(--mat-mdc-form-field-floating-label-scale, 0.75) + 9px)`:""}static#e=this.\u0275fac=function(i){return new(i||t)(p(K),p(W))};static#t=this.\u0275cmp=ue({type:t,selectors:[["div","matFormFieldNotchedOutline",""]],viewQuery:function(i,r){if(1&i&&Le(JJ,5),2&i){let o;U(o=$())&&(r._notch=o.first)}},hostAttrs:[1,"mdc-notched-outline"],hostVars:2,hostBindings:function(i,r){2&i&&de("mdc-notched-outline--notched",r.open)},inputs:{open:[D.None,"matFormFieldNotchedOutlineOpen","open"]},standalone:!0,features:[ve],attrs:eee,ngContentSelectors:tee,decls:5,vars:0,consts:[["notch",""],[1,"mdc-notched-outline__leading"],[1,"mdc-notched-outline__notch"],[1,"mdc-notched-outline__trailing"]],template:function(i,r){1&i&&($e(),re(0,"div",1),y(1,"div",2,0),Y(3),w(),re(4,"div",3))},encapsulation:2,changeDetection:0})}return t})();const Mee={transitionMessages:Ci("transitionMessages",[rn("enter",Xe({opacity:1,transform:"translateY(0%)"})),Xt("void => enter",[Xe({opacity:0,transform:"translateY(-5px)"}),Kt("300ms cubic-bezier(0.55, 0, 0.55, 0.2)")])])};let Vp=(()=>{class t{static#e=this.\u0275fac=function(i){return new(i||t)};static#t=this.\u0275dir=R({type:t})}return t})();const pu=new M("MatFormField"),Iee=new M("MAT_FORM_FIELD_DEFAULT_OPTIONS");let VF=0,Bp=(()=>{class t{get hideRequiredMarker(){return this._hideRequiredMarker}set hideRequiredMarker(e){this._hideRequiredMarker=ki(e)}get floatLabel(){return this._floatLabel||this._defaults?.floatLabel||"auto"}set floatLabel(e){e!==this._floatLabel&&(this._floatLabel=e,this._changeDetectorRef.markForCheck())}get appearance(){return this._appearance}set appearance(e){const i=this._appearance;this._appearance=e||this._defaults?.appearance||"fill","outline"===this._appearance&&this._appearance!==i&&(this._needsOutlineLabelOffsetUpdateOnStable=!0)}get subscriptSizing(){return this._subscriptSizing||this._defaults?.subscriptSizing||"fixed"}set subscriptSizing(e){this._subscriptSizing=e||this._defaults?.subscriptSizing||"fixed"}get hintLabel(){return this._hintLabel}set hintLabel(e){this._hintLabel=e,this._processHints()}get _control(){return this._explicitFormFieldControl||this._formFieldControl}set _control(e){this._explicitFormFieldControl=e}constructor(e,i,r,o,s,a,c,l){this._elementRef=e,this._changeDetectorRef=i,this._ngZone=r,this._dir=o,this._platform=s,this._defaults=a,this._animationMode=c,this._hideRequiredMarker=!1,this.color="primary",this._appearance="fill",this._subscriptSizing=null,this._hintLabel="",this._hasIconPrefix=!1,this._hasTextPrefix=!1,this._hasIconSuffix=!1,this._hasTextSuffix=!1,this._labelId="mat-mdc-form-field-label-"+VF++,this._hintLabelId="mat-mdc-hint-"+VF++,this._subscriptAnimationState="",this._destroyed=new Z,this._isFocused=null,this._needsOutlineLabelOffsetUpdateOnStable=!1,a&&(a.appearance&&(this.appearance=a.appearance),this._hideRequiredMarker=!!a?.hideRequiredMarker,a.color&&(this.color=a.color))}ngAfterViewInit(){this._updateFocusState(),this._subscriptAnimationState="enter",this._changeDetectorRef.detectChanges()}ngAfterContentInit(){this._assertFormFieldControl(),this._initializeControl(),this._initializeSubscript(),this._initializePrefixAndSuffix(),this._initializeOutlineLabelOffsetSubscriptions()}ngAfterContentChecked(){this._assertFormFieldControl()}ngOnDestroy(){this._destroyed.next(),this._destroyed.complete()}getLabelId(){return this._hasFloatingLabel()?this._labelId:null}getConnectedOverlayOrigin(){return this._textField||this._elementRef}_animateAndLockLabel(){this._hasFloatingLabel()&&(this.floatLabel="always")}_initializeControl(){const e=this._control;e.controlType&&this._elementRef.nativeElement.classList.add(`mat-mdc-form-field-type-${e.controlType}`),e.stateChanges.subscribe(()=>{this._updateFocusState(),this._syncDescribedByIds(),this._changeDetectorRef.markForCheck()}),e.ngControl&&e.ngControl.valueChanges&&e.ngControl.valueChanges.pipe(pe(this._destroyed)).subscribe(()=>this._changeDetectorRef.markForCheck())}_checkPrefixAndSuffixTypes(){this._hasIconPrefix=!!this._prefixChildren.find(e=>!e._isText),this._hasTextPrefix=!!this._prefixChildren.find(e=>e._isText),this._hasIconSuffix=!!this._suffixChildren.find(e=>!e._isText),this._hasTextSuffix=!!this._suffixChildren.find(e=>e._isText)}_initializePrefixAndSuffix(){this._checkPrefixAndSuffixTypes(),Ht(this._prefixChildren.changes,this._suffixChildren.changes).subscribe(()=>{this._checkPrefixAndSuffixTypes(),this._changeDetectorRef.markForCheck()})}_initializeSubscript(){this._hintChildren.changes.subscribe(()=>{this._processHints(),this._changeDetectorRef.markForCheck()}),this._errorChildren.changes.subscribe(()=>{this._syncDescribedByIds(),this._changeDetectorRef.markForCheck()}),this._validateHints(),this._syncDescribedByIds()}_assertFormFieldControl(){}_updateFocusState(){this._control.focused&&!this._isFocused?(this._isFocused=!0,this._lineRipple?.activate()):!this._control.focused&&(this._isFocused||null===this._isFocused)&&(this._isFocused=!1,this._lineRipple?.deactivate()),this._textField?.nativeElement.classList.toggle("mdc-text-field--focused",this._control.focused)}_initializeOutlineLabelOffsetSubscriptions(){this._prefixChildren.changes.subscribe(()=>this._needsOutlineLabelOffsetUpdateOnStable=!0),this._ngZone.runOutsideAngular(()=>{this._ngZone.onStable.pipe(pe(this._destroyed)).subscribe(()=>{this._needsOutlineLabelOffsetUpdateOnStable&&(this._needsOutlineLabelOffsetUpdateOnStable=!1,this._updateOutlineLabelOffset())})}),this._dir.change.pipe(pe(this._destroyed)).subscribe(()=>this._needsOutlineLabelOffsetUpdateOnStable=!0)}_shouldAlwaysFloat(){return"always"===this.floatLabel}_hasOutline(){return"outline"===this.appearance}_forceDisplayInfixLabel(){return!this._platform.isBrowser&&this._prefixChildren.length&&!this._shouldLabelFloat()}_hasFloatingLabel(){return!!this._labelChildNonStatic||!!this._labelChildStatic}_shouldLabelFloat(){return this._control.shouldLabelFloat||this._shouldAlwaysFloat()}_shouldForward(e){const i=this._control?this._control.ngControl:null;return i&&i[e]}_getDisplayedMessages(){return this._errorChildren&&this._errorChildren.length>0&&this._control.errorState?"error":"hint"}_handleLabelResized(){this._refreshOutlineNotchWidth()}_refreshOutlineNotchWidth(){this._hasOutline()&&this._floatingLabel&&this._shouldLabelFloat()?this._notchedOutline?._setNotchWidth(this._floatingLabel.getWidth()):this._notchedOutline?._setNotchWidth(0)}_processHints(){this._validateHints(),this._syncDescribedByIds()}_validateHints(){}_syncDescribedByIds(){if(this._control){let e=[];if(this._control.userAriaDescribedBy&&"string"==typeof this._control.userAriaDescribedBy&&e.push(...this._control.userAriaDescribedBy.split(" ")),"hint"===this._getDisplayedMessages()){const i=this._hintChildren?this._hintChildren.find(o=>"start"===o.align):null,r=this._hintChildren?this._hintChildren.find(o=>"end"===o.align):null;i?e.push(i.id):this._hintLabel&&e.push(this._hintLabelId),r&&e.push(r.id)}else this._errorChildren&&e.push(...this._errorChildren.map(i=>i.id));this._control.setDescribedByIds(e)}}_updateOutlineLabelOffset(){if(!this._platform.isBrowser||!this._hasOutline()||!this._floatingLabel)return;const e=this._floatingLabel.element;if(!this._iconPrefixContainer&&!this._textPrefixContainer)return void(e.style.transform="");if(!this._isAttachedToDom())return void(this._needsOutlineLabelOffsetUpdateOnStable=!0);const i=this._iconPrefixContainer?.nativeElement,r=this._textPrefixContainer?.nativeElement,o=i?.getBoundingClientRect().width??0,s=r?.getBoundingClientRect().width??0;e.style.transform=`var(\n --mat-mdc-form-field-label-transform,\n translateY(-50%) translateX(calc(${"rtl"===this._dir.value?"-1":"1"} * (${o+s}px + var(--mat-mdc-form-field-label-offset-x, 0px))))\n )`}_isAttachedToDom(){const e=this._elementRef.nativeElement;if(e.getRootNode){const i=e.getRootNode();return i&&i!==e}return document.documentElement.contains(e)}static#e=this.\u0275fac=function(i){return new(i||t)(p(K),p(Ke),p(W),p(Xn),p(ut),p(Iee,8),p(Bt,8),p(_e))};static#t=this.\u0275cmp=ue({type:t,selectors:[["mat-form-field"]],contentQueries:function(i,r,o){if(1&i&&(Oe(o,Pp,5),Oe(o,Pp,7),Oe(o,Vp,5),Oe(o,kee,5),Oe(o,RF,5),Oe(o,Dee,5),Oe(o,AF,5)),2&i){let s;U(s=$())&&(r._labelChildNonStatic=s.first),U(s=$())&&(r._labelChildStatic=s.first),U(s=$())&&(r._formFieldControl=s.first),U(s=$())&&(r._prefixChildren=s),U(s=$())&&(r._suffixChildren=s),U(s=$())&&(r._errorChildren=s),U(s=$())&&(r._hintChildren=s)}},viewQuery:function(i,r){if(1&i&&(Le(nee,5),Le(iee,5),Le(ree,5),Le(NF,5),Le(LF,5),Le(PF,5)),2&i){let o;U(o=$())&&(r._textField=o.first),U(o=$())&&(r._iconPrefixContainer=o.first),U(o=$())&&(r._textPrefixContainer=o.first),U(o=$())&&(r._floatingLabel=o.first),U(o=$())&&(r._notchedOutline=o.first),U(o=$())&&(r._lineRipple=o.first)}},hostAttrs:[1,"mat-mdc-form-field"],hostVars:42,hostBindings:function(i,r){2&i&&de("mat-mdc-form-field-label-always-float",r._shouldAlwaysFloat())("mat-mdc-form-field-has-icon-prefix",r._hasIconPrefix)("mat-mdc-form-field-has-icon-suffix",r._hasIconSuffix)("mat-form-field-invalid",r._control.errorState)("mat-form-field-disabled",r._control.disabled)("mat-form-field-autofilled",r._control.autofilled)("mat-form-field-no-animations","NoopAnimations"===r._animationMode)("mat-form-field-appearance-fill","fill"==r.appearance)("mat-form-field-appearance-outline","outline"==r.appearance)("mat-form-field-hide-placeholder",r._hasFloatingLabel()&&!r._shouldLabelFloat())("mat-focused",r._control.focused)("mat-primary","accent"!==r.color&&"warn"!==r.color)("mat-accent","accent"===r.color)("mat-warn","warn"===r.color)("ng-untouched",r._shouldForward("untouched"))("ng-touched",r._shouldForward("touched"))("ng-pristine",r._shouldForward("pristine"))("ng-dirty",r._shouldForward("dirty"))("ng-valid",r._shouldForward("valid"))("ng-invalid",r._shouldForward("invalid"))("ng-pending",r._shouldForward("pending"))},inputs:{hideRequiredMarker:"hideRequiredMarker",color:"color",floatLabel:"floatLabel",appearance:"appearance",subscriptSizing:"subscriptSizing",hintLabel:"hintLabel"},exportAs:["matFormField"],standalone:!0,features:[ie([{provide:pu,useExisting:t},{provide:OF,useExisting:t}]),ve],ngContentSelectors:see,decls:18,vars:21,consts:[["labelTemplate",""],["textField",""],["iconPrefixContainer",""],["textPrefixContainer",""],[1,"mat-mdc-text-field-wrapper","mdc-text-field",3,"click"],[1,"mat-mdc-form-field-focus-overlay"],[1,"mat-mdc-form-field-flex"],["matFormFieldNotchedOutline","",3,"matFormFieldNotchedOutlineOpen"],[1,"mat-mdc-form-field-icon-prefix"],[1,"mat-mdc-form-field-text-prefix"],[1,"mat-mdc-form-field-infix"],[3,"ngTemplateOutlet"],[1,"mat-mdc-form-field-text-suffix"],[1,"mat-mdc-form-field-icon-suffix"],["matFormFieldLineRipple",""],[1,"mat-mdc-form-field-subscript-wrapper","mat-mdc-form-field-bottom-align"],["matFormFieldFloatingLabel","",3,"floating","monitorResize","id"],["aria-hidden","true",1,"mat-mdc-form-field-required-marker","mdc-floating-label--required"],[1,"mat-mdc-form-field-error-wrapper"],[1,"mat-mdc-form-field-hint-wrapper"],[3,"id"],[1,"mat-mdc-form-field-hint-spacer"]],template:function(i,r){if(1&i){const o=et();$e(oee),H(0,lee,1,1,"ng-template",null,0,OI),y(2,"div",4,1),q("click",function(a){return ee(o),te(r._control.onContainerClick(a))}),H(4,dee,1,0,"div",5),y(5,"div",6),H(6,fee,2,2,"div",7)(7,mee,3,0,"div",8)(8,pee,3,0,"div",9),y(9,"div",10),H(10,_ee,1,1,null,11),Y(11),w(),H(12,bee,2,0,"div",12)(13,vee,2,0,"div",13),w(),H(14,yee,1,0,"div",14),w(),y(15,"div",15),H(16,wee,2,1)(17,Cee,5,2),w()}if(2&i){let o;C(2),de("mdc-text-field--filled",!r._hasOutline())("mdc-text-field--outlined",r._hasOutline())("mdc-text-field--no-label",!r._hasFloatingLabel())("mdc-text-field--disabled",r._control.disabled)("mdc-text-field--invalid",r._control.errorState),C(2),X(4,r._hasOutline()||r._control.disabled?-1:4),C(2),X(6,r._hasOutline()?6:-1),C(),X(7,r._hasIconPrefix?7:-1),C(),X(8,r._hasTextPrefix?8:-1),C(2),X(10,!r._hasOutline()||r._forceDisplayInfixLabel()?10:-1),C(2),X(12,r._hasTextSuffix?12:-1),C(),X(13,r._hasIconSuffix?13:-1),C(),X(14,r._hasOutline()?-1:14),C(),de("mat-mdc-form-field-subscript-dynamic-size","dynamic"===r.subscriptSizing),C(),X(16,"error"===(o=r._getDisplayedMessages())?16:"hint"===o?17:-1)}},dependencies:[NF,LF,m1,PF,AF],styles:['.mdc-text-field{border-top-left-radius:4px;border-top-left-radius:var(--mdc-shape-small, 4px);border-top-right-radius:4px;border-top-right-radius:var(--mdc-shape-small, 4px);border-bottom-right-radius:0;border-bottom-left-radius:0;display:inline-flex;align-items:baseline;padding:0 16px;position:relative;box-sizing:border-box;overflow:hidden;will-change:opacity,transform,color}.mdc-text-field .mdc-floating-label{top:50%;transform:translateY(-50%);pointer-events:none}.mdc-text-field__input{height:28px;width:100%;min-width:0;border:none;border-radius:0;background:none;appearance:none;padding:0}.mdc-text-field__input::-ms-clear{display:none}.mdc-text-field__input::-webkit-calendar-picker-indicator{display:none}.mdc-text-field__input:focus{outline:none}.mdc-text-field__input:invalid{box-shadow:none}@media all{.mdc-text-field__input::placeholder{opacity:0}}@media all{.mdc-text-field__input:-ms-input-placeholder{opacity:0}}@media all{.mdc-text-field--no-label .mdc-text-field__input::placeholder,.mdc-text-field--focused .mdc-text-field__input::placeholder{opacity:1}}@media all{.mdc-text-field--no-label .mdc-text-field__input:-ms-input-placeholder,.mdc-text-field--focused .mdc-text-field__input:-ms-input-placeholder{opacity:1}}.mdc-text-field__affix{height:28px;opacity:0;white-space:nowrap}.mdc-text-field--label-floating .mdc-text-field__affix,.mdc-text-field--no-label .mdc-text-field__affix{opacity:1}@supports(-webkit-hyphens: none){.mdc-text-field--outlined .mdc-text-field__affix{align-items:center;align-self:center;display:inline-flex;height:100%}}.mdc-text-field__affix--prefix{padding-left:0;padding-right:2px}[dir=rtl] .mdc-text-field__affix--prefix,.mdc-text-field__affix--prefix[dir=rtl]{padding-left:2px;padding-right:0}.mdc-text-field--end-aligned .mdc-text-field__affix--prefix{padding-left:0;padding-right:12px}[dir=rtl] .mdc-text-field--end-aligned .mdc-text-field__affix--prefix,.mdc-text-field--end-aligned .mdc-text-field__affix--prefix[dir=rtl]{padding-left:12px;padding-right:0}.mdc-text-field__affix--suffix{padding-left:12px;padding-right:0}[dir=rtl] .mdc-text-field__affix--suffix,.mdc-text-field__affix--suffix[dir=rtl]{padding-left:0;padding-right:12px}.mdc-text-field--end-aligned .mdc-text-field__affix--suffix{padding-left:2px;padding-right:0}[dir=rtl] .mdc-text-field--end-aligned .mdc-text-field__affix--suffix,.mdc-text-field--end-aligned .mdc-text-field__affix--suffix[dir=rtl]{padding-left:0;padding-right:2px}.mdc-text-field--filled{height:56px}.mdc-text-field--filled::before{display:inline-block;width:0;height:40px;content:"";vertical-align:0}.mdc-text-field--filled .mdc-floating-label{left:16px;right:initial}[dir=rtl] .mdc-text-field--filled .mdc-floating-label,.mdc-text-field--filled .mdc-floating-label[dir=rtl]{left:initial;right:16px}.mdc-text-field--filled .mdc-floating-label--float-above{transform:translateY(-106%) scale(0.75)}.mdc-text-field--filled.mdc-text-field--no-label .mdc-text-field__input{height:100%}.mdc-text-field--filled.mdc-text-field--no-label .mdc-floating-label{display:none}.mdc-text-field--filled.mdc-text-field--no-label::before{display:none}@supports(-webkit-hyphens: none){.mdc-text-field--filled.mdc-text-field--no-label .mdc-text-field__affix{align-items:center;align-self:center;display:inline-flex;height:100%}}.mdc-text-field--outlined{height:56px;overflow:visible}.mdc-text-field--outlined .mdc-floating-label--float-above{transform:translateY(-37.25px) scale(1)}.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{transform:translateY(-34.75px) scale(0.75)}.mdc-text-field--outlined .mdc-floating-label--float-above{font-size:.75rem}.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:1rem}.mdc-text-field--outlined .mdc-text-field__input{height:100%}.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading{border-top-left-radius:4px;border-top-left-radius:var(--mdc-shape-small, 4px);border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:4px;border-bottom-left-radius:var(--mdc-shape-small, 4px)}[dir=rtl] .mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading,.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading[dir=rtl]{border-top-left-radius:0;border-top-right-radius:4px;border-top-right-radius:var(--mdc-shape-small, 4px);border-bottom-right-radius:4px;border-bottom-right-radius:var(--mdc-shape-small, 4px);border-bottom-left-radius:0}@supports(top: max(0%)){.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading{width:max(12px,var(--mdc-shape-small, 4px))}}@supports(top: max(0%)){.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__notch{max-width:calc(100% - max(12px,var(--mdc-shape-small, 4px))*2)}}.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__trailing{border-top-left-radius:0;border-top-right-radius:4px;border-top-right-radius:var(--mdc-shape-small, 4px);border-bottom-right-radius:4px;border-bottom-right-radius:var(--mdc-shape-small, 4px);border-bottom-left-radius:0}[dir=rtl] .mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__trailing,.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__trailing[dir=rtl]{border-top-left-radius:4px;border-top-left-radius:var(--mdc-shape-small, 4px);border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:4px;border-bottom-left-radius:var(--mdc-shape-small, 4px)}@supports(top: max(0%)){.mdc-text-field--outlined{padding-left:max(16px,calc(var(--mdc-shape-small, 4px) + 4px))}}@supports(top: max(0%)){.mdc-text-field--outlined{padding-right:max(16px,var(--mdc-shape-small, 4px))}}@supports(top: max(0%)){.mdc-text-field--outlined+.mdc-text-field-helper-line{padding-left:max(16px,calc(var(--mdc-shape-small, 4px) + 4px))}}@supports(top: max(0%)){.mdc-text-field--outlined+.mdc-text-field-helper-line{padding-right:max(16px,var(--mdc-shape-small, 4px))}}.mdc-text-field--outlined.mdc-text-field--with-leading-icon{padding-left:0}@supports(top: max(0%)){.mdc-text-field--outlined.mdc-text-field--with-leading-icon{padding-right:max(16px,var(--mdc-shape-small, 4px))}}[dir=rtl] .mdc-text-field--outlined.mdc-text-field--with-leading-icon,.mdc-text-field--outlined.mdc-text-field--with-leading-icon[dir=rtl]{padding-right:0}@supports(top: max(0%)){[dir=rtl] .mdc-text-field--outlined.mdc-text-field--with-leading-icon,.mdc-text-field--outlined.mdc-text-field--with-leading-icon[dir=rtl]{padding-left:max(16px,var(--mdc-shape-small, 4px))}}.mdc-text-field--outlined.mdc-text-field--with-trailing-icon{padding-right:0}@supports(top: max(0%)){.mdc-text-field--outlined.mdc-text-field--with-trailing-icon{padding-left:max(16px,calc(var(--mdc-shape-small, 4px) + 4px))}}[dir=rtl] .mdc-text-field--outlined.mdc-text-field--with-trailing-icon,.mdc-text-field--outlined.mdc-text-field--with-trailing-icon[dir=rtl]{padding-left:0}@supports(top: max(0%)){[dir=rtl] .mdc-text-field--outlined.mdc-text-field--with-trailing-icon,.mdc-text-field--outlined.mdc-text-field--with-trailing-icon[dir=rtl]{padding-right:max(16px,calc(var(--mdc-shape-small, 4px) + 4px))}}.mdc-text-field--outlined.mdc-text-field--with-leading-icon.mdc-text-field--with-trailing-icon{padding-left:0;padding-right:0}.mdc-text-field--outlined .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-top:1px}.mdc-text-field--outlined .mdc-floating-label{left:4px;right:initial}[dir=rtl] .mdc-text-field--outlined .mdc-floating-label,.mdc-text-field--outlined .mdc-floating-label[dir=rtl]{left:initial;right:4px}.mdc-text-field--outlined .mdc-text-field__input{display:flex;border:none !important;background-color:rgba(0,0,0,0)}.mdc-text-field--outlined .mdc-notched-outline{z-index:1}.mdc-text-field--textarea{flex-direction:column;align-items:center;width:auto;height:auto;padding:0}.mdc-text-field--textarea .mdc-floating-label{top:19px}.mdc-text-field--textarea .mdc-floating-label:not(.mdc-floating-label--float-above){transform:none}.mdc-text-field--textarea .mdc-text-field__input{flex-grow:1;height:auto;min-height:1.5rem;overflow-x:hidden;overflow-y:auto;box-sizing:border-box;resize:none;padding:0 16px}.mdc-text-field--textarea.mdc-text-field--filled::before{display:none}.mdc-text-field--textarea.mdc-text-field--filled .mdc-floating-label--float-above{transform:translateY(-10.25px) scale(0.75)}.mdc-text-field--textarea.mdc-text-field--filled .mdc-text-field__input{margin-top:23px;margin-bottom:9px}.mdc-text-field--textarea.mdc-text-field--filled.mdc-text-field--no-label .mdc-text-field__input{margin-top:16px;margin-bottom:16px}.mdc-text-field--textarea.mdc-text-field--outlined .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-top:0}.mdc-text-field--textarea.mdc-text-field--outlined .mdc-floating-label--float-above{transform:translateY(-27.25px) scale(1)}.mdc-text-field--textarea.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--textarea.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{transform:translateY(-24.75px) scale(0.75)}.mdc-text-field--textarea.mdc-text-field--outlined .mdc-floating-label--float-above{font-size:.75rem}.mdc-text-field--textarea.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--textarea.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:1rem}.mdc-text-field--textarea.mdc-text-field--outlined .mdc-text-field__input{margin-top:16px;margin-bottom:16px}.mdc-text-field--textarea.mdc-text-field--outlined .mdc-floating-label{top:18px}.mdc-text-field--textarea.mdc-text-field--with-internal-counter .mdc-text-field__input{margin-bottom:2px}.mdc-text-field--textarea.mdc-text-field--with-internal-counter .mdc-text-field-character-counter{align-self:flex-end;padding:0 16px}.mdc-text-field--textarea.mdc-text-field--with-internal-counter .mdc-text-field-character-counter::after{display:inline-block;width:0;height:16px;content:"";vertical-align:-16px}.mdc-text-field--textarea.mdc-text-field--with-internal-counter .mdc-text-field-character-counter::before{display:none}.mdc-text-field__resizer{align-self:stretch;display:inline-flex;flex-direction:column;flex-grow:1;max-height:100%;max-width:100%;min-height:56px;min-width:fit-content;min-width:-moz-available;min-width:-webkit-fill-available;overflow:hidden;resize:both}.mdc-text-field--filled .mdc-text-field__resizer{transform:translateY(-1px)}.mdc-text-field--filled .mdc-text-field__resizer .mdc-text-field__input,.mdc-text-field--filled .mdc-text-field__resizer .mdc-text-field-character-counter{transform:translateY(1px)}.mdc-text-field--outlined .mdc-text-field__resizer{transform:translateX(-1px) translateY(-1px)}[dir=rtl] .mdc-text-field--outlined .mdc-text-field__resizer,.mdc-text-field--outlined .mdc-text-field__resizer[dir=rtl]{transform:translateX(1px) translateY(-1px)}.mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field__input,.mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field-character-counter{transform:translateX(1px) translateY(1px)}[dir=rtl] .mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field__input,[dir=rtl] .mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field-character-counter,.mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field__input[dir=rtl],.mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field-character-counter[dir=rtl]{transform:translateX(-1px) translateY(1px)}.mdc-text-field--with-leading-icon{padding-left:0;padding-right:16px}[dir=rtl] .mdc-text-field--with-leading-icon,.mdc-text-field--with-leading-icon[dir=rtl]{padding-left:16px;padding-right:0}.mdc-text-field--with-leading-icon.mdc-text-field--filled .mdc-floating-label{max-width:calc(100% - 48px);left:48px;right:initial}[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--filled .mdc-floating-label,.mdc-text-field--with-leading-icon.mdc-text-field--filled .mdc-floating-label[dir=rtl]{left:initial;right:48px}.mdc-text-field--with-leading-icon.mdc-text-field--filled .mdc-floating-label--float-above{max-width:calc(100%/0.75 - 64px/0.75)}.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label{left:36px;right:initial}[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label,.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label[dir=rtl]{left:initial;right:36px}.mdc-text-field--with-leading-icon.mdc-text-field--outlined :not(.mdc-notched-outline--notched) .mdc-notched-outline__notch{max-width:calc(100% - 60px)}.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--float-above{transform:translateY(-37.25px) translateX(-32px) scale(1)}[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--float-above,.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--float-above[dir=rtl]{transform:translateY(-37.25px) translateX(32px) scale(1)}.mdc-text-field--with-leading-icon.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{transform:translateY(-34.75px) translateX(-32px) scale(0.75)}[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--with-leading-icon.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above[dir=rtl],.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above[dir=rtl]{transform:translateY(-34.75px) translateX(32px) scale(0.75)}.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--float-above{font-size:.75rem}.mdc-text-field--with-leading-icon.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:1rem}.mdc-text-field--with-trailing-icon{padding-left:16px;padding-right:0}[dir=rtl] .mdc-text-field--with-trailing-icon,.mdc-text-field--with-trailing-icon[dir=rtl]{padding-left:0;padding-right:16px}.mdc-text-field--with-trailing-icon.mdc-text-field--filled .mdc-floating-label{max-width:calc(100% - 64px)}.mdc-text-field--with-trailing-icon.mdc-text-field--filled .mdc-floating-label--float-above{max-width:calc(100%/0.75 - 64px/0.75)}.mdc-text-field--with-trailing-icon.mdc-text-field--outlined :not(.mdc-notched-outline--notched) .mdc-notched-outline__notch{max-width:calc(100% - 60px)}.mdc-text-field--with-leading-icon.mdc-text-field--with-trailing-icon{padding-left:0;padding-right:0}.mdc-text-field--with-leading-icon.mdc-text-field--with-trailing-icon.mdc-text-field--filled .mdc-floating-label{max-width:calc(100% - 96px)}.mdc-text-field--with-leading-icon.mdc-text-field--with-trailing-icon.mdc-text-field--filled .mdc-floating-label--float-above{max-width:calc(100%/0.75 - 96px/0.75)}.mdc-text-field-helper-line{display:flex;justify-content:space-between;box-sizing:border-box}.mdc-text-field+.mdc-text-field-helper-line{padding-right:16px;padding-left:16px}.mdc-form-field>.mdc-text-field+label{align-self:flex-start}.mdc-text-field--focused .mdc-notched-outline__leading,.mdc-text-field--focused .mdc-notched-outline__notch,.mdc-text-field--focused .mdc-notched-outline__trailing{border-width:2px}.mdc-text-field--focused+.mdc-text-field-helper-line .mdc-text-field-helper-text:not(.mdc-text-field-helper-text--validation-msg){opacity:1}.mdc-text-field--focused.mdc-text-field--outlined .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-top:2px}.mdc-text-field--focused.mdc-text-field--outlined.mdc-text-field--textarea .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-top:0}.mdc-text-field--invalid+.mdc-text-field-helper-line .mdc-text-field-helper-text--validation-msg{opacity:1}.mdc-text-field--disabled{pointer-events:none}@media screen and (forced-colors: active){.mdc-text-field--disabled .mdc-text-field__input{background-color:Window}.mdc-text-field--disabled .mdc-floating-label{z-index:1}}.mdc-text-field--disabled .mdc-floating-label{cursor:default}.mdc-text-field--disabled.mdc-text-field--filled .mdc-text-field__ripple{display:none}.mdc-text-field--disabled .mdc-text-field__input{pointer-events:auto}.mdc-text-field--end-aligned .mdc-text-field__input{text-align:right}[dir=rtl] .mdc-text-field--end-aligned .mdc-text-field__input,.mdc-text-field--end-aligned .mdc-text-field__input[dir=rtl]{text-align:left}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__input,[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__affix,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__input,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__affix{direction:ltr}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__affix--prefix,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__affix--prefix{padding-left:0;padding-right:2px}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__affix--suffix,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__affix--suffix{padding-left:12px;padding-right:0}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__icon--leading,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__icon--leading{order:1}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__affix--suffix,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__affix--suffix{order:2}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__input,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__input{order:3}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__affix--prefix,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__affix--prefix{order:4}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__icon--trailing,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__icon--trailing{order:5}[dir=rtl] .mdc-text-field--ltr-text.mdc-text-field--end-aligned .mdc-text-field__input,.mdc-text-field--ltr-text.mdc-text-field--end-aligned[dir=rtl] .mdc-text-field__input{text-align:right}[dir=rtl] .mdc-text-field--ltr-text.mdc-text-field--end-aligned .mdc-text-field__affix--prefix,.mdc-text-field--ltr-text.mdc-text-field--end-aligned[dir=rtl] .mdc-text-field__affix--prefix{padding-right:12px}[dir=rtl] .mdc-text-field--ltr-text.mdc-text-field--end-aligned .mdc-text-field__affix--suffix,.mdc-text-field--ltr-text.mdc-text-field--end-aligned[dir=rtl] .mdc-text-field__affix--suffix{padding-left:2px}.mdc-floating-label{position:absolute;left:0;-webkit-transform-origin:left top;transform-origin:left top;line-height:1.15rem;text-align:left;text-overflow:ellipsis;white-space:nowrap;cursor:text;overflow:hidden;will-change:transform}[dir=rtl] .mdc-floating-label,.mdc-floating-label[dir=rtl]{right:0;left:auto;-webkit-transform-origin:right top;transform-origin:right top;text-align:right}.mdc-floating-label--float-above{cursor:auto}.mdc-floating-label--required:not(.mdc-floating-label--hide-required-marker)::after{margin-left:1px;margin-right:0px;content:"*"}[dir=rtl] .mdc-floating-label--required:not(.mdc-floating-label--hide-required-marker)::after,.mdc-floating-label--required:not(.mdc-floating-label--hide-required-marker)[dir=rtl]::after{margin-left:0;margin-right:1px}.mdc-notched-outline{display:flex;position:absolute;top:0;right:0;left:0;box-sizing:border-box;width:100%;max-width:100%;height:100%;text-align:left;pointer-events:none}[dir=rtl] .mdc-notched-outline,.mdc-notched-outline[dir=rtl]{text-align:right}.mdc-notched-outline__leading,.mdc-notched-outline__notch,.mdc-notched-outline__trailing{box-sizing:border-box;height:100%;pointer-events:none}.mdc-notched-outline__trailing{flex-grow:1}.mdc-notched-outline__notch{flex:0 0 auto;width:auto}.mdc-notched-outline .mdc-floating-label{display:inline-block;position:relative;max-width:100%}.mdc-notched-outline .mdc-floating-label--float-above{text-overflow:clip}.mdc-notched-outline--upgraded .mdc-floating-label--float-above{max-width:133.3333333333%}.mdc-notched-outline--notched .mdc-notched-outline__notch{padding-left:0;padding-right:8px;border-top:none}[dir=rtl] .mdc-notched-outline--notched .mdc-notched-outline__notch,.mdc-notched-outline--notched .mdc-notched-outline__notch[dir=rtl]{padding-left:8px;padding-right:0}.mdc-notched-outline--no-label .mdc-notched-outline__notch{display:none}.mdc-line-ripple::before,.mdc-line-ripple::after{position:absolute;bottom:0;left:0;width:100%;border-bottom-style:solid;content:""}.mdc-line-ripple::before{z-index:1}.mdc-line-ripple::after{transform:scaleX(0);opacity:0;z-index:2}.mdc-line-ripple--active::after{transform:scaleX(1);opacity:1}.mdc-line-ripple--deactivating::after{opacity:0}.mdc-floating-label--float-above{transform:translateY(-106%) scale(0.75)}.mdc-notched-outline__leading,.mdc-notched-outline__notch,.mdc-notched-outline__trailing{border-top:1px solid;border-bottom:1px solid}.mdc-notched-outline__leading{border-left:1px solid;border-right:none;width:12px}[dir=rtl] .mdc-notched-outline__leading,.mdc-notched-outline__leading[dir=rtl]{border-left:none;border-right:1px solid}.mdc-notched-outline__trailing{border-left:none;border-right:1px solid}[dir=rtl] .mdc-notched-outline__trailing,.mdc-notched-outline__trailing[dir=rtl]{border-left:1px solid;border-right:none}.mdc-notched-outline__notch{max-width:calc(100% - 12px*2)}.mdc-line-ripple::before{border-bottom-width:1px}.mdc-line-ripple::after{border-bottom-width:2px}.mdc-text-field--filled{border-top-left-radius:var(--mdc-filled-text-field-container-shape);border-top-right-radius:var(--mdc-filled-text-field-container-shape);border-bottom-right-radius:0;border-bottom-left-radius:0}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-text-field__input{caret-color:var(--mdc-filled-text-field-caret-color)}.mdc-text-field--filled.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-text-field__input{caret-color:var(--mdc-filled-text-field-error-caret-color)}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-text-field__input{color:var(--mdc-filled-text-field-input-text-color)}.mdc-text-field--filled.mdc-text-field--disabled .mdc-text-field__input{color:var(--mdc-filled-text-field-disabled-input-text-color)}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-floating-label,.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-floating-label--float-above{color:var(--mdc-filled-text-field-label-text-color)}.mdc-text-field--filled:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-floating-label,.mdc-text-field--filled:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-floating-label--float-above{color:var(--mdc-filled-text-field-focus-label-text-color)}.mdc-text-field--filled:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-floating-label,.mdc-text-field--filled:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-floating-label--float-above{color:var(--mdc-filled-text-field-hover-label-text-color)}.mdc-text-field--filled.mdc-text-field--disabled .mdc-floating-label,.mdc-text-field--filled.mdc-text-field--disabled .mdc-floating-label--float-above{color:var(--mdc-filled-text-field-disabled-label-text-color)}.mdc-text-field--filled.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-floating-label,.mdc-text-field--filled.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-floating-label--float-above{color:var(--mdc-filled-text-field-error-label-text-color)}.mdc-text-field--filled.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-floating-label,.mdc-text-field--filled.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-floating-label--float-above{color:var(--mdc-filled-text-field-error-focus-label-text-color)}.mdc-text-field--filled.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-floating-label,.mdc-text-field--filled.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-floating-label--float-above{color:var(--mdc-filled-text-field-error-hover-label-text-color)}.mdc-text-field--filled .mdc-floating-label{font-family:var(--mdc-filled-text-field-label-text-font);font-size:var(--mdc-filled-text-field-label-text-size);font-weight:var(--mdc-filled-text-field-label-text-weight);letter-spacing:var(--mdc-filled-text-field-label-text-tracking)}@media all{.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-text-field__input::placeholder{color:var(--mdc-filled-text-field-input-text-placeholder-color)}}@media all{.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-text-field__input:-ms-input-placeholder{color:var(--mdc-filled-text-field-input-text-placeholder-color)}}.mdc-text-field--filled:not(.mdc-text-field--disabled){background-color:var(--mdc-filled-text-field-container-color)}.mdc-text-field--filled.mdc-text-field--disabled{background-color:var(--mdc-filled-text-field-disabled-container-color)}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-line-ripple::before{border-bottom-color:var(--mdc-filled-text-field-active-indicator-color)}.mdc-text-field--filled:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-line-ripple::before{border-bottom-color:var(--mdc-filled-text-field-hover-active-indicator-color)}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-line-ripple::after{border-bottom-color:var(--mdc-filled-text-field-focus-active-indicator-color)}.mdc-text-field--filled.mdc-text-field--disabled .mdc-line-ripple::before{border-bottom-color:var(--mdc-filled-text-field-disabled-active-indicator-color)}.mdc-text-field--filled.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple::before{border-bottom-color:var(--mdc-filled-text-field-error-active-indicator-color)}.mdc-text-field--filled.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-line-ripple::before{border-bottom-color:var(--mdc-filled-text-field-error-hover-active-indicator-color)}.mdc-text-field--filled.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple::after{border-bottom-color:var(--mdc-filled-text-field-error-focus-active-indicator-color)}.mdc-text-field--filled .mdc-line-ripple::before{border-bottom-width:var(--mdc-filled-text-field-active-indicator-height)}.mdc-text-field--filled .mdc-line-ripple::after{border-bottom-width:var(--mdc-filled-text-field-focus-active-indicator-height)}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-text-field__input{caret-color:var(--mdc-outlined-text-field-caret-color)}.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-text-field__input{caret-color:var(--mdc-outlined-text-field-error-caret-color)}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-text-field__input{color:var(--mdc-outlined-text-field-input-text-color)}.mdc-text-field--outlined.mdc-text-field--disabled .mdc-text-field__input{color:var(--mdc-outlined-text-field-disabled-input-text-color)}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-floating-label,.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-floating-label--float-above{color:var(--mdc-outlined-text-field-label-text-color)}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-floating-label,.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-floating-label--float-above{color:var(--mdc-outlined-text-field-focus-label-text-color)}.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-floating-label,.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-floating-label--float-above{color:var(--mdc-outlined-text-field-hover-label-text-color)}.mdc-text-field--outlined.mdc-text-field--disabled .mdc-floating-label,.mdc-text-field--outlined.mdc-text-field--disabled .mdc-floating-label--float-above{color:var(--mdc-outlined-text-field-disabled-label-text-color)}.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-floating-label,.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-floating-label--float-above{color:var(--mdc-outlined-text-field-error-label-text-color)}.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-floating-label,.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-floating-label--float-above{color:var(--mdc-outlined-text-field-error-focus-label-text-color)}.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-floating-label,.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-floating-label--float-above{color:var(--mdc-outlined-text-field-error-hover-label-text-color)}.mdc-text-field--outlined .mdc-floating-label{font-family:var(--mdc-outlined-text-field-label-text-font);font-size:var(--mdc-outlined-text-field-label-text-size);font-weight:var(--mdc-outlined-text-field-label-text-weight);letter-spacing:var(--mdc-outlined-text-field-label-text-tracking)}@media all{.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-text-field__input::placeholder{color:var(--mdc-outlined-text-field-input-text-placeholder-color)}}@media all{.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-text-field__input:-ms-input-placeholder{color:var(--mdc-outlined-text-field-input-text-placeholder-color)}}.mdc-text-field--outlined.mdc-text-field--textarea.mdc-text-field--outlined .mdc-floating-label--float-above{font-size:calc(.75*var(--mdc-outlined-text-field-label-text-size))}.mdc-text-field--outlined.mdc-text-field--textarea.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--outlined.mdc-text-field--textarea.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:var(--mdc-outlined-text-field-label-text-size)}.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading{border-top-left-radius:var(--mdc-outlined-text-field-container-shape);border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:var(--mdc-outlined-text-field-container-shape)}[dir=rtl] .mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading,.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading[dir=rtl]{border-top-left-radius:0;border-top-right-radius:var(--mdc-outlined-text-field-container-shape);border-bottom-right-radius:var(--mdc-outlined-text-field-container-shape);border-bottom-left-radius:0}@supports(top: max(0%)){.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading{width:max(12px,var(--mdc-outlined-text-field-container-shape))}}@supports(top: max(0%)){.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__notch{max-width:calc(100% - max(12px,var(--mdc-outlined-text-field-container-shape))*2)}}.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__trailing{border-top-left-radius:0;border-top-right-radius:var(--mdc-outlined-text-field-container-shape);border-bottom-right-radius:var(--mdc-outlined-text-field-container-shape);border-bottom-left-radius:0}[dir=rtl] .mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__trailing,.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__trailing[dir=rtl]{border-top-left-radius:var(--mdc-outlined-text-field-container-shape);border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:var(--mdc-outlined-text-field-container-shape)}@supports(top: max(0%)){.mdc-text-field--outlined{padding-left:max(16px,calc(var(--mdc-outlined-text-field-container-shape) + 4px))}}@supports(top: max(0%)){.mdc-text-field--outlined{padding-right:max(16px,var(--mdc-outlined-text-field-container-shape))}}@supports(top: max(0%)){.mdc-text-field--outlined+.mdc-text-field-helper-line{padding-left:max(16px,calc(var(--mdc-outlined-text-field-container-shape) + 4px))}}@supports(top: max(0%)){.mdc-text-field--outlined+.mdc-text-field-helper-line{padding-right:max(16px,var(--mdc-outlined-text-field-container-shape))}}.mdc-text-field--outlined.mdc-text-field--with-leading-icon{padding-left:0}@supports(top: max(0%)){.mdc-text-field--outlined.mdc-text-field--with-leading-icon{padding-right:max(16px,var(--mdc-outlined-text-field-container-shape))}}[dir=rtl] .mdc-text-field--outlined.mdc-text-field--with-leading-icon,.mdc-text-field--outlined.mdc-text-field--with-leading-icon[dir=rtl]{padding-right:0}@supports(top: max(0%)){[dir=rtl] .mdc-text-field--outlined.mdc-text-field--with-leading-icon,.mdc-text-field--outlined.mdc-text-field--with-leading-icon[dir=rtl]{padding-left:max(16px,var(--mdc-outlined-text-field-container-shape))}}.mdc-text-field--outlined.mdc-text-field--with-trailing-icon{padding-right:0}@supports(top: max(0%)){.mdc-text-field--outlined.mdc-text-field--with-trailing-icon{padding-left:max(16px,calc(var(--mdc-outlined-text-field-container-shape) + 4px))}}[dir=rtl] .mdc-text-field--outlined.mdc-text-field--with-trailing-icon,.mdc-text-field--outlined.mdc-text-field--with-trailing-icon[dir=rtl]{padding-left:0}@supports(top: max(0%)){[dir=rtl] .mdc-text-field--outlined.mdc-text-field--with-trailing-icon,.mdc-text-field--outlined.mdc-text-field--with-trailing-icon[dir=rtl]{padding-right:max(16px,calc(var(--mdc-outlined-text-field-container-shape) + 4px))}}.mdc-text-field--outlined.mdc-text-field--with-leading-icon.mdc-text-field--with-trailing-icon{padding-left:0;padding-right:0}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:var(--mdc-outlined-text-field-outline-color)}.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading,.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch,.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:var(--mdc-outlined-text-field-hover-outline-color)}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-outlined-text-field-focus-outline-color)}.mdc-text-field--outlined.mdc-text-field--disabled .mdc-notched-outline__leading,.mdc-text-field--outlined.mdc-text-field--disabled .mdc-notched-outline__notch,.mdc-text-field--outlined.mdc-text-field--disabled .mdc-notched-outline__trailing{border-color:var(--mdc-outlined-text-field-disabled-outline-color)}.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:var(--mdc-outlined-text-field-error-outline-color)}.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading,.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch,.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:var(--mdc-outlined-text-field-error-hover-outline-color)}.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-outlined-text-field-error-focus-outline-color)}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline .mdc-notched-outline__leading,.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline .mdc-notched-outline__notch,.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline .mdc-notched-outline__trailing{border-width:var(--mdc-outlined-text-field-outline-width)}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline .mdc-notched-outline__leading,.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline .mdc-notched-outline__notch,.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline .mdc-notched-outline__trailing{border-width:var(--mdc-outlined-text-field-focus-outline-width)}.mat-mdc-form-field-textarea-control{vertical-align:middle;resize:vertical;box-sizing:border-box;height:auto;margin:0;padding:0;border:none;overflow:auto}.mat-mdc-form-field-input-control.mat-mdc-form-field-input-control{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font:inherit;letter-spacing:inherit;text-decoration:inherit;text-transform:inherit;border:none}.mat-mdc-form-field .mat-mdc-floating-label.mdc-floating-label{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;line-height:normal;pointer-events:all;will-change:auto}.mat-mdc-form-field:not(.mat-form-field-disabled) .mat-mdc-floating-label.mdc-floating-label{cursor:inherit}.mdc-text-field--no-label:not(.mdc-text-field--textarea) .mat-mdc-form-field-input-control.mdc-text-field__input,.mat-mdc-text-field-wrapper .mat-mdc-form-field-input-control{height:auto}.mat-mdc-text-field-wrapper .mat-mdc-form-field-input-control.mdc-text-field__input[type=color]{height:23px}.mat-mdc-text-field-wrapper{height:auto;flex:auto;will-change:auto}.mat-mdc-form-field-has-icon-prefix .mat-mdc-text-field-wrapper{padding-left:0;--mat-mdc-form-field-label-offset-x: -16px}.mat-mdc-form-field-has-icon-suffix .mat-mdc-text-field-wrapper{padding-right:0}[dir=rtl] .mat-mdc-text-field-wrapper{padding-left:16px;padding-right:16px}[dir=rtl] .mat-mdc-form-field-has-icon-suffix .mat-mdc-text-field-wrapper{padding-left:0}[dir=rtl] .mat-mdc-form-field-has-icon-prefix .mat-mdc-text-field-wrapper{padding-right:0}.mat-form-field-disabled .mdc-text-field__input::placeholder{color:var(--mat-form-field-disabled-input-text-placeholder-color)}.mat-form-field-disabled .mdc-text-field__input::-moz-placeholder{color:var(--mat-form-field-disabled-input-text-placeholder-color)}.mat-form-field-disabled .mdc-text-field__input::-webkit-input-placeholder{color:var(--mat-form-field-disabled-input-text-placeholder-color)}.mat-form-field-disabled .mdc-text-field__input:-ms-input-placeholder{color:var(--mat-form-field-disabled-input-text-placeholder-color)}.mat-mdc-form-field-label-always-float .mdc-text-field__input::placeholder{transition-delay:40ms;transition-duration:110ms;opacity:1}.mat-mdc-text-field-wrapper .mat-mdc-form-field-infix .mat-mdc-floating-label{left:auto;right:auto}.mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-text-field__input{display:inline-block}.mat-mdc-form-field .mat-mdc-text-field-wrapper.mdc-text-field .mdc-notched-outline__notch{padding-top:0}.mat-mdc-text-field-wrapper::before{content:none}.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field .mdc-notched-outline__notch{border-left:1px solid rgba(0,0,0,0)}[dir=rtl] .mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field .mdc-notched-outline__notch{border-left:none;border-right:1px solid rgba(0,0,0,0)}.mat-mdc-form-field-infix{min-height:var(--mat-form-field-container-height);padding-top:var(--mat-form-field-filled-with-label-container-padding-top);padding-bottom:var(--mat-form-field-filled-with-label-container-padding-bottom)}.mdc-text-field--outlined .mat-mdc-form-field-infix,.mdc-text-field--no-label .mat-mdc-form-field-infix{padding-top:var(--mat-form-field-container-vertical-padding);padding-bottom:var(--mat-form-field-container-vertical-padding)}.mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label{top:calc(var(--mat-form-field-container-height)/2)}.mdc-text-field--filled .mat-mdc-floating-label{display:var(--mat-form-field-filled-label-display, block)}.mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{--mat-mdc-form-field-label-transform: translateY(calc(calc(6.75px + var(--mat-form-field-container-height) / 2) * -1)) scale(var(--mat-mdc-form-field-floating-label-scale, 0.75));transform:var(--mat-mdc-form-field-label-transform)}.mat-mdc-form-field-subscript-wrapper{box-sizing:border-box;width:100%;position:relative}.mat-mdc-form-field-hint-wrapper,.mat-mdc-form-field-error-wrapper{position:absolute;top:0;left:0;right:0;padding:0 16px}.mat-mdc-form-field-subscript-dynamic-size .mat-mdc-form-field-hint-wrapper,.mat-mdc-form-field-subscript-dynamic-size .mat-mdc-form-field-error-wrapper{position:static}.mat-mdc-form-field-bottom-align::before{content:"";display:inline-block;height:16px}.mat-mdc-form-field-bottom-align.mat-mdc-form-field-subscript-dynamic-size::before{content:unset}.mat-mdc-form-field-hint-end{order:1}.mat-mdc-form-field-hint-wrapper{display:flex}.mat-mdc-form-field-hint-spacer{flex:1 0 1em}.mat-mdc-form-field-error{display:block;color:var(--mat-form-field-error-text-color)}.mat-mdc-form-field-subscript-wrapper,.mat-mdc-form-field-bottom-align::before{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mat-form-field-subscript-text-font);line-height:var(--mat-form-field-subscript-text-line-height);font-size:var(--mat-form-field-subscript-text-size);letter-spacing:var(--mat-form-field-subscript-text-tracking);font-weight:var(--mat-form-field-subscript-text-weight)}.mat-mdc-form-field-focus-overlay{top:0;left:0;right:0;bottom:0;position:absolute;opacity:0;pointer-events:none;background-color:var(--mat-form-field-state-layer-color)}.mat-mdc-text-field-wrapper:hover .mat-mdc-form-field-focus-overlay{opacity:var(--mat-form-field-hover-state-layer-opacity)}.mat-mdc-form-field.mat-focused .mat-mdc-form-field-focus-overlay{opacity:var(--mat-form-field-focus-state-layer-opacity)}select.mat-mdc-form-field-input-control{-moz-appearance:none;-webkit-appearance:none;background-color:rgba(0,0,0,0);display:inline-flex;box-sizing:border-box}select.mat-mdc-form-field-input-control:not(:disabled){cursor:pointer}select.mat-mdc-form-field-input-control:not(.mat-mdc-native-select-inline) option{color:var(--mat-form-field-select-option-text-color)}select.mat-mdc-form-field-input-control:not(.mat-mdc-native-select-inline) option:disabled{color:var(--mat-form-field-select-disabled-option-text-color)}.mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-infix::after{content:"";width:0;height:0;border-left:5px solid rgba(0,0,0,0);border-right:5px solid rgba(0,0,0,0);border-top:5px solid;position:absolute;right:0;top:50%;margin-top:-2.5px;pointer-events:none;color:var(--mat-form-field-enabled-select-arrow-color)}[dir=rtl] .mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-infix::after{right:auto;left:0}.mat-mdc-form-field-type-mat-native-select.mat-focused .mat-mdc-form-field-infix::after{color:var(--mat-form-field-focus-select-arrow-color)}.mat-mdc-form-field-type-mat-native-select.mat-form-field-disabled .mat-mdc-form-field-infix::after{color:var(--mat-form-field-disabled-select-arrow-color)}.mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-input-control{padding-right:15px}[dir=rtl] .mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-input-control{padding-right:0;padding-left:15px}.cdk-high-contrast-active .mat-form-field-appearance-fill .mat-mdc-text-field-wrapper{outline:solid 1px}.cdk-high-contrast-active .mat-form-field-appearance-fill.mat-form-field-disabled .mat-mdc-text-field-wrapper{outline-color:GrayText}.cdk-high-contrast-active .mat-form-field-appearance-fill.mat-focused .mat-mdc-text-field-wrapper{outline:dashed 3px}.cdk-high-contrast-active .mat-mdc-form-field.mat-focused .mdc-notched-outline{border:dashed 3px}.mat-mdc-form-field-input-control[type=date],.mat-mdc-form-field-input-control[type=datetime],.mat-mdc-form-field-input-control[type=datetime-local],.mat-mdc-form-field-input-control[type=month],.mat-mdc-form-field-input-control[type=week],.mat-mdc-form-field-input-control[type=time]{line-height:1}.mat-mdc-form-field-input-control::-webkit-datetime-edit{line-height:1;padding:0;margin-bottom:-2px}.mat-mdc-form-field{--mat-mdc-form-field-floating-label-scale: 0.75;display:inline-flex;flex-direction:column;min-width:0;text-align:left;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mat-form-field-container-text-font);line-height:var(--mat-form-field-container-text-line-height);font-size:var(--mat-form-field-container-text-size);letter-spacing:var(--mat-form-field-container-text-tracking);font-weight:var(--mat-form-field-container-text-weight)}[dir=rtl] .mat-mdc-form-field{text-align:right}.mat-mdc-form-field .mdc-text-field--outlined .mdc-floating-label--float-above{font-size:calc(var(--mat-form-field-outlined-label-text-populated-size)*var(--mat-mdc-form-field-floating-label-scale))}.mat-mdc-form-field .mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:var(--mat-form-field-outlined-label-text-populated-size)}.mat-mdc-form-field-flex{display:inline-flex;align-items:baseline;box-sizing:border-box;width:100%}.mat-mdc-text-field-wrapper{width:100%;z-index:0}.mat-mdc-form-field-icon-prefix,.mat-mdc-form-field-icon-suffix{align-self:center;line-height:0;pointer-events:auto;position:relative;z-index:1}.mat-mdc-form-field-icon-prefix>.mat-icon,.mat-mdc-form-field-icon-suffix>.mat-icon{padding:0 12px;box-sizing:content-box}.mat-mdc-form-field-icon-prefix{color:var(--mat-form-field-leading-icon-color)}.mat-form-field-disabled .mat-mdc-form-field-icon-prefix{color:var(--mat-form-field-disabled-leading-icon-color)}.mat-mdc-form-field-icon-suffix{color:var(--mat-form-field-trailing-icon-color)}.mat-form-field-disabled .mat-mdc-form-field-icon-suffix{color:var(--mat-form-field-disabled-trailing-icon-color)}.mat-form-field-invalid .mat-mdc-form-field-icon-suffix{color:var(--mat-form-field-error-trailing-icon-color)}.mat-form-field-invalid:not(.mat-focused):not(.mat-form-field-disabled) .mat-mdc-text-field-wrapper:hover .mat-mdc-form-field-icon-suffix{color:var(--mat-form-field-error-hover-trailing-icon-color)}.mat-form-field-invalid.mat-focused .mat-mdc-text-field-wrapper .mat-mdc-form-field-icon-suffix{color:var(--mat-form-field-error-focus-trailing-icon-color)}.mat-mdc-form-field-icon-prefix,[dir=rtl] .mat-mdc-form-field-icon-suffix{padding:0 4px 0 0}.mat-mdc-form-field-icon-suffix,[dir=rtl] .mat-mdc-form-field-icon-prefix{padding:0 0 0 4px}.mat-mdc-form-field-subscript-wrapper .mat-icon,.mat-mdc-form-field label .mat-icon{width:1em;height:1em;font-size:inherit}.mat-mdc-form-field-infix{flex:auto;min-width:0;width:180px;position:relative;box-sizing:border-box}.mat-mdc-form-field .mdc-notched-outline__notch{margin-left:-1px;-webkit-clip-path:inset(-9em -999em -9em 1px);clip-path:inset(-9em -999em -9em 1px)}[dir=rtl] .mat-mdc-form-field .mdc-notched-outline__notch{margin-left:0;margin-right:-1px;-webkit-clip-path:inset(-9em 1px -9em -999em);clip-path:inset(-9em 1px -9em -999em)}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input{transition:opacity 150ms 0ms cubic-bezier(0.4, 0, 0.2, 1)}@media all{.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input::placeholder{transition:opacity 67ms 0ms cubic-bezier(0.4, 0, 0.2, 1)}}@media all{.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input:-ms-input-placeholder{transition:opacity 67ms 0ms cubic-bezier(0.4, 0, 0.2, 1)}}@media all{.mdc-text-field--no-label .mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input::placeholder,.mdc-text-field--focused .mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input::placeholder{transition-delay:40ms;transition-duration:110ms}}@media all{.mdc-text-field--no-label .mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input:-ms-input-placeholder,.mdc-text-field--focused .mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input:-ms-input-placeholder{transition-delay:40ms;transition-duration:110ms}}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__affix{transition:opacity 150ms 0ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--filled.mdc-ripple-upgraded--background-focused .mdc-text-field__ripple::before,.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--filled:not(.mdc-ripple-upgraded):focus .mdc-text-field__ripple::before{transition-duration:75ms}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--outlined .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-text-field-outlined 250ms 1}@keyframes mdc-floating-label-shake-float-above-text-field-outlined{0%{transform:translateX(calc(0% - 0%)) translateY(calc(0% - 34.75px)) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - 0%)) translateY(calc(0% - 34.75px)) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - 0%)) translateY(calc(0% - 34.75px)) scale(0.75)}100%{transform:translateX(calc(0% - 0%)) translateY(calc(0% - 34.75px)) scale(0.75)}}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--textarea{transition:none}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--textarea.mdc-text-field--filled .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-textarea-filled 250ms 1}@keyframes mdc-floating-label-shake-float-above-textarea-filled{0%{transform:translateX(calc(0% - 0%)) translateY(calc(0% - 10.25px)) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - 0%)) translateY(calc(0% - 10.25px)) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - 0%)) translateY(calc(0% - 10.25px)) scale(0.75)}100%{transform:translateX(calc(0% - 0%)) translateY(calc(0% - 10.25px)) scale(0.75)}}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--textarea.mdc-text-field--outlined .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-textarea-outlined 250ms 1}@keyframes mdc-floating-label-shake-float-above-textarea-outlined{0%{transform:translateX(calc(0% - 0%)) translateY(calc(0% - 24.75px)) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - 0%)) translateY(calc(0% - 24.75px)) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - 0%)) translateY(calc(0% - 24.75px)) scale(0.75)}100%{transform:translateX(calc(0% - 0%)) translateY(calc(0% - 24.75px)) scale(0.75)}}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-text-field-outlined-leading-icon 250ms 1}@keyframes mdc-floating-label-shake-float-above-text-field-outlined-leading-icon{0%{transform:translateX(calc(0% - 32px)) translateY(calc(0% - 34.75px)) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - 32px)) translateY(calc(0% - 34.75px)) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - 32px)) translateY(calc(0% - 34.75px)) scale(0.75)}100%{transform:translateX(calc(0% - 32px)) translateY(calc(0% - 34.75px)) scale(0.75)}}[dir=rtl] .mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--shake,.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--with-leading-icon.mdc-text-field--outlined[dir=rtl] .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-text-field-outlined-leading-icon 250ms 1}@keyframes mdc-floating-label-shake-float-above-text-field-outlined-leading-icon-rtl{0%{transform:translateX(calc(0% - -32px)) translateY(calc(0% - 34.75px)) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - -32px)) translateY(calc(0% - 34.75px)) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - -32px)) translateY(calc(0% - 34.75px)) scale(0.75)}100%{transform:translateX(calc(0% - -32px)) translateY(calc(0% - 34.75px)) scale(0.75)}}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-floating-label{transition:transform 150ms cubic-bezier(0.4, 0, 0.2, 1),color 150ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-standard 250ms 1}@keyframes mdc-floating-label-shake-float-above-standard{0%{transform:translateX(calc(0% - 0%)) translateY(calc(0% - 106%)) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - 0%)) translateY(calc(0% - 106%)) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - 0%)) translateY(calc(0% - 106%)) scale(0.75)}100%{transform:translateX(calc(0% - 0%)) translateY(calc(0% - 106%)) scale(0.75)}}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-line-ripple::after{transition:transform 180ms cubic-bezier(0.4, 0, 0.2, 1),opacity 180ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-notched-outline .mdc-floating-label{max-width:calc(100% + 1px)}.mdc-notched-outline--upgraded .mdc-floating-label--float-above{max-width:calc(133.3333333333% + 1px)}'],encapsulation:2,data:{animation:[Mee.transitionMessages]},changeDetection:0})}return t})(),gu=(()=>{class t{static#e=this.\u0275fac=function(i){return new(i||t)};static#t=this.\u0275mod=ge({type:t});static#n=this.\u0275inj=he({imports:[Te,Ni,vO,Te]})}return t})();const HF=["*",[["mat-chip-avatar"],["","matChipAvatar",""]],[["mat-chip-trailing-icon"],["","matChipRemove",""],["","matChipTrailingIcon",""]]],zF=["*","mat-chip-avatar, [matChipAvatar]","mat-chip-trailing-icon,[matChipRemove],[matChipTrailingIcon]"];function Oee(t,n){1&t&&(y(0,"span",3),Y(1,1),w())}function Nee(t,n){1&t&&(y(0,"span",6),Y(1,2),w())}const Lee=[[["mat-chip-avatar"],["","matChipAvatar",""]],[["","matChipEditInput",""]],"*",[["mat-chip-trailing-icon"],["","matChipRemove",""],["","matChipTrailingIcon",""]]],Vee=["mat-chip-avatar, [matChipAvatar]","[matChipEditInput]","*","mat-chip-trailing-icon,[matChipRemove],[matChipTrailingIcon]"];function Bee(t,n){1&t&&re(0,"span",0)}function jee(t,n){1&t&&(y(0,"span",2),Y(1),w())}function Hee(t,n){1&t&&Y(0,1)}function zee(t,n){1&t&&re(0,"span",7)}function Uee(t,n){1&t&&H(0,Hee,1,0)(1,zee,1,0),2&t&&X(0,L().contentEditInput?0:1)}function $ee(t,n){1&t&&Y(0,2)}function qee(t,n){1&t&&(y(0,"span",5),Y(1,3),w())}const Ow=["*"],jp=new M("mat-chips-default-options",{providedIn:"root",factory:()=>({separatorKeyCodes:[13]})}),Nw=new M("MatChipAvatar"),Fw=new M("MatChipTrailingIcon"),Pw=new M("MatChipRemove"),Hp=new M("MatChip");let Rc=(()=>{class t{get disabled(){return this._disabled||this._parentChip.disabled}set disabled(e){this._disabled=e}_getDisabledAttribute(){return this.disabled&&!this._allowFocusWhenDisabled?"":null}_getTabindex(){return this.disabled&&!this._allowFocusWhenDisabled||!this.isInteractive?null:this.tabIndex.toString()}constructor(e,i){this._elementRef=e,this._parentChip=i,this.isInteractive=!0,this._isPrimary=!0,this._disabled=!1,this.tabIndex=-1,this._allowFocusWhenDisabled=!1,"BUTTON"===e.nativeElement.nodeName&&e.nativeElement.setAttribute("type","button")}focus(){this._elementRef.nativeElement.focus()}_handleClick(e){!this.disabled&&this.isInteractive&&this._isPrimary&&(e.preventDefault(),this._parentChip._handlePrimaryActionInteraction())}_handleKeydown(e){(13===e.keyCode||32===e.keyCode)&&!this.disabled&&this.isInteractive&&this._isPrimary&&!this._parentChip._isEditing&&(e.preventDefault(),this._parentChip._handlePrimaryActionInteraction())}static#e=this.\u0275fac=function(i){return new(i||t)(p(K),p(Hp))};static#t=this.\u0275dir=R({type:t,selectors:[["","matChipAction",""]],hostAttrs:[1,"mdc-evolution-chip__action","mat-mdc-chip-action"],hostVars:9,hostBindings:function(i,r){1&i&&q("click",function(s){return r._handleClick(s)})("keydown",function(s){return r._handleKeydown(s)}),2&i&&(me("tabindex",r._getTabindex())("disabled",r._getDisabledAttribute())("aria-disabled",r.disabled),de("mdc-evolution-chip__action--primary",r._isPrimary)("mdc-evolution-chip__action--presentational",!r.isInteractive)("mdc-evolution-chip__action--trailing",!r._isPrimary))},inputs:{isInteractive:"isInteractive",disabled:[D.HasDecoratorInputTransform,"disabled","disabled",j],tabIndex:[D.HasDecoratorInputTransform,"tabIndex","tabIndex",e=>null==e?-1:Jt(e)],_allowFocusWhenDisabled:"_allowFocusWhenDisabled"},standalone:!0,features:[Fe]})}return t})(),Lw=(()=>{class t extends Rc{constructor(){super(...arguments),this._isPrimary=!1}_handleClick(e){this.disabled||(e.stopPropagation(),e.preventDefault(),this._parentChip.remove())}_handleKeydown(e){(13===e.keyCode||32===e.keyCode)&&!this.disabled&&(e.stopPropagation(),e.preventDefault(),this._parentChip.remove())}static#e=this.\u0275fac=(()=>{let e;return function(r){return(e||(e=Be(t)))(r||t)}})();static#t=this.\u0275dir=R({type:t,selectors:[["","matChipRemove",""]],hostAttrs:["role","button",1,"mat-mdc-chip-remove","mat-mdc-chip-trailing-icon","mat-mdc-focus-indicator","mdc-evolution-chip__icon","mdc-evolution-chip__icon--trailing"],hostVars:1,hostBindings:function(i,r){2&i&&me("aria-hidden",null)},standalone:!0,features:[ie([{provide:Pw,useExisting:t}]),J]})}return t})(),Qee=0,Us=(()=>{class t{_hasFocus(){return this._hasFocusInternal}get value(){return void 0!==this._value?this._value:this._textElement.textContent.trim()}set value(e){this._value=e}get ripple(){return this._rippleLoader?.getRipple(this._elementRef.nativeElement)}set ripple(e){this._rippleLoader?.attachRipple(this._elementRef.nativeElement,e)}constructor(e,i,r,o,s,a,c,l){this._changeDetectorRef=e,this._elementRef=i,this._ngZone=r,this._focusMonitor=o,this._globalRippleOptions=c,this._onFocus=new Z,this._onBlur=new Z,this.role=null,this._hasFocusInternal=!1,this.id="mat-mdc-chip-"+Qee++,this.ariaLabel=null,this.ariaDescription=null,this._ariaDescriptionId=`${this.id}-aria-description`,this.removable=!0,this.highlighted=!1,this.disableRipple=!1,this.disabled=!1,this.tabIndex=-1,this.removed=new G,this.destroyed=new G,this.basicChipAttrName="mat-basic-chip",this._rippleLoader=T(eN),this._document=s,this._animationsDisabled="NoopAnimations"===a,null!=l&&(this.tabIndex=parseInt(l)??-1),this._monitorFocus(),this._rippleLoader?.configureRipple(this._elementRef.nativeElement,{className:"mat-mdc-chip-ripple",disabled:this._isRippleDisabled()})}ngOnInit(){const e=this._elementRef.nativeElement;this._isBasicChip=e.hasAttribute(this.basicChipAttrName)||e.tagName.toLowerCase()===this.basicChipAttrName}ngAfterViewInit(){this._textElement=this._elementRef.nativeElement.querySelector(".mat-mdc-chip-action-label"),this._pendingFocus&&(this._pendingFocus=!1,this.focus())}ngAfterContentInit(){this._actionChanges=Ht(this._allLeadingIcons.changes,this._allTrailingIcons.changes,this._allRemoveIcons.changes).subscribe(()=>this._changeDetectorRef.markForCheck())}ngDoCheck(){this._rippleLoader.setDisabled(this._elementRef.nativeElement,this._isRippleDisabled())}ngOnDestroy(){this._focusMonitor.stopMonitoring(this._elementRef),this._rippleLoader?.destroyRipple(this._elementRef.nativeElement),this._actionChanges?.unsubscribe(),this.destroyed.emit({chip:this}),this.destroyed.complete()}remove(){this.removable&&this.removed.emit({chip:this})}_isRippleDisabled(){return this.disabled||this.disableRipple||this._animationsDisabled||this._isBasicChip||!!this._globalRippleOptions?.disabled}_hasTrailingIcon(){return!(!this.trailingIcon&&!this.removeIcon)}_handleKeydown(e){(8===e.keyCode||46===e.keyCode)&&(e.preventDefault(),this.remove())}focus(){this.disabled||(this.primaryAction?this.primaryAction.focus():this._pendingFocus=!0)}_getSourceAction(e){return this._getActions().find(i=>{const r=i._elementRef.nativeElement;return r===e||r.contains(e)})}_getActions(){const e=[];return this.primaryAction&&e.push(this.primaryAction),this.removeIcon&&e.push(this.removeIcon),this.trailingIcon&&e.push(this.trailingIcon),e}_handlePrimaryActionInteraction(){}_getTabIndex(){return this.role?this.disabled?-1:this.tabIndex:null}_monitorFocus(){this._focusMonitor.monitor(this._elementRef,!0).subscribe(e=>{const i=null!==e;i!==this._hasFocusInternal&&(this._hasFocusInternal=i,i?this._onFocus.next({chip:this}):this._ngZone.onStable.pipe(gt(1)).subscribe(()=>this._ngZone.run(()=>this._onBlur.next({chip:this}))))})}static#e=this.\u0275fac=function(i){return new(i||t)(p(Ke),p(K),p(W),p(Mr),p(_e),p(Bt,8),p(dp,8),bi("tabindex"))};static#t=this.\u0275cmp=ue({type:t,selectors:[["mat-basic-chip"],["","mat-basic-chip",""],["mat-chip"],["","mat-chip",""]],contentQueries:function(i,r,o){if(1&i&&(Oe(o,Nw,5),Oe(o,Fw,5),Oe(o,Pw,5),Oe(o,Nw,5),Oe(o,Fw,5),Oe(o,Pw,5)),2&i){let s;U(s=$())&&(r.leadingIcon=s.first),U(s=$())&&(r.trailingIcon=s.first),U(s=$())&&(r.removeIcon=s.first),U(s=$())&&(r._allLeadingIcons=s),U(s=$())&&(r._allTrailingIcons=s),U(s=$())&&(r._allRemoveIcons=s)}},viewQuery:function(i,r){if(1&i&&Le(Rc,5),2&i){let o;U(o=$())&&(r.primaryAction=o.first)}},hostAttrs:[1,"mat-mdc-chip"],hostVars:32,hostBindings:function(i,r){1&i&&q("keydown",function(s){return r._handleKeydown(s)}),2&i&&(Zi("id",r.id),me("role",r.role)("tabindex",r._getTabIndex())("aria-label",r.ariaLabel),bn("mat-"+(r.color||"primary")),de("mdc-evolution-chip",!r._isBasicChip)("mdc-evolution-chip--disabled",r.disabled)("mdc-evolution-chip--with-trailing-action",r._hasTrailingIcon())("mdc-evolution-chip--with-primary-graphic",r.leadingIcon)("mdc-evolution-chip--with-primary-icon",r.leadingIcon)("mdc-evolution-chip--with-avatar",r.leadingIcon)("mat-mdc-chip-with-avatar",r.leadingIcon)("mat-mdc-chip-highlighted",r.highlighted)("mat-mdc-chip-disabled",r.disabled)("mat-mdc-basic-chip",r._isBasicChip)("mat-mdc-standard-chip",!r._isBasicChip)("mat-mdc-chip-with-trailing-icon",r._hasTrailingIcon())("_mat-animation-noopable",r._animationsDisabled))},inputs:{role:"role",id:"id",ariaLabel:[D.None,"aria-label","ariaLabel"],ariaDescription:[D.None,"aria-description","ariaDescription"],value:"value",color:"color",removable:[D.HasDecoratorInputTransform,"removable","removable",j],highlighted:[D.HasDecoratorInputTransform,"highlighted","highlighted",j],disableRipple:[D.HasDecoratorInputTransform,"disableRipple","disableRipple",j],disabled:[D.HasDecoratorInputTransform,"disabled","disabled",j],tabIndex:[D.HasDecoratorInputTransform,"tabIndex","tabIndex",e=>null==e?void 0:Jt(e)]},outputs:{removed:"removed",destroyed:"destroyed"},exportAs:["matChip"],standalone:!0,features:[ie([{provide:Hp,useExisting:t}]),Fe,ve],ngContentSelectors:zF,decls:8,vars:3,consts:[[1,"mat-mdc-chip-focus-overlay"],[1,"mdc-evolution-chip__cell","mdc-evolution-chip__cell--primary"],["matChipAction","",3,"isInteractive"],[1,"mdc-evolution-chip__graphic","mat-mdc-chip-graphic"],[1,"mdc-evolution-chip__text-label","mat-mdc-chip-action-label"],[1,"mat-mdc-chip-primary-focus-indicator","mat-mdc-focus-indicator"],[1,"mdc-evolution-chip__cell","mdc-evolution-chip__cell--trailing"]],template:function(i,r){1&i&&($e(HF),re(0,"span",0),y(1,"span",1)(2,"span",2),H(3,Oee,2,0,"span",3),y(4,"span",4),Y(5),re(6,"span",5),w()()(),H(7,Nee,2,0,"span",6)),2&i&&(C(2),z("isInteractive",!1),C(),X(3,r.leadingIcon?3:-1),C(4),X(7,r._hasTrailingIcon()?7:-1))},dependencies:[Rc],styles:['.mdc-evolution-chip,.mdc-evolution-chip__cell,.mdc-evolution-chip__action{display:inline-flex;align-items:center}.mdc-evolution-chip{position:relative;max-width:100%}.mdc-evolution-chip .mdc-elevation-overlay{width:100%;height:100%;top:0;left:0}.mdc-evolution-chip__cell,.mdc-evolution-chip__action{height:100%}.mdc-evolution-chip__cell--primary{overflow-x:hidden}.mdc-evolution-chip__cell--trailing{flex:1 0 auto}.mdc-evolution-chip__action{align-items:center;background:none;border:none;box-sizing:content-box;cursor:pointer;display:inline-flex;justify-content:center;outline:none;padding:0;text-decoration:none;color:inherit}.mdc-evolution-chip__action--presentational{cursor:auto}.mdc-evolution-chip--disabled,.mdc-evolution-chip__action:disabled{pointer-events:none}.mdc-evolution-chip__action--primary{overflow-x:hidden}.mdc-evolution-chip__action--trailing{position:relative;overflow:visible}.mdc-evolution-chip__action--primary:before{box-sizing:border-box;content:"";height:100%;left:0;position:absolute;pointer-events:none;top:0;width:100%;z-index:1}.mdc-evolution-chip--touch{margin-top:8px;margin-bottom:8px}.mdc-evolution-chip__action-touch{position:absolute;top:50%;height:48px;left:0;right:0;transform:translateY(-50%)}.mdc-evolution-chip__text-label{white-space:nowrap;user-select:none;text-overflow:ellipsis;overflow:hidden}.mdc-evolution-chip__graphic{align-items:center;display:inline-flex;justify-content:center;overflow:hidden;pointer-events:none;position:relative;flex:1 0 auto}.mdc-evolution-chip__checkmark{position:absolute;opacity:0;top:50%;left:50%}.mdc-evolution-chip--selectable:not(.mdc-evolution-chip--selected):not(.mdc-evolution-chip--with-primary-icon) .mdc-evolution-chip__graphic{width:0}.mdc-evolution-chip__checkmark-background{opacity:0}.mdc-evolution-chip__checkmark-svg{display:block}.mdc-evolution-chip__checkmark-path{stroke-width:2px;stroke-dasharray:29.7833385;stroke-dashoffset:29.7833385;stroke:currentColor}.mdc-evolution-chip--selecting .mdc-evolution-chip__graphic{transition:width 150ms 0ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-evolution-chip--selecting .mdc-evolution-chip__checkmark{transition:transform 150ms 0ms cubic-bezier(0.4, 0, 0.2, 1);transform:translate(-75%, -50%)}.mdc-evolution-chip--selecting .mdc-evolution-chip__checkmark-path{transition:stroke-dashoffset 150ms 45ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-evolution-chip--deselecting .mdc-evolution-chip__graphic{transition:width 100ms 0ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-evolution-chip--deselecting .mdc-evolution-chip__checkmark{transition:opacity 50ms 0ms linear,transform 100ms 0ms cubic-bezier(0.4, 0, 0.2, 1);transform:translate(-75%, -50%)}.mdc-evolution-chip--deselecting .mdc-evolution-chip__checkmark-path{stroke-dashoffset:0}.mdc-evolution-chip--selecting-with-primary-icon .mdc-evolution-chip__icon--primary{transition:opacity 75ms 0ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-evolution-chip--selecting-with-primary-icon .mdc-evolution-chip__checkmark-path{transition:stroke-dashoffset 150ms 75ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-evolution-chip--deselecting-with-primary-icon .mdc-evolution-chip__icon--primary{transition:opacity 150ms 75ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-evolution-chip--deselecting-with-primary-icon .mdc-evolution-chip__checkmark{transition:opacity 75ms 0ms cubic-bezier(0.4, 0, 0.2, 1);transform:translate(-50%, -50%)}.mdc-evolution-chip--deselecting-with-primary-icon .mdc-evolution-chip__checkmark-path{stroke-dashoffset:0}.mdc-evolution-chip--selected .mdc-evolution-chip__icon--primary{opacity:0}.mdc-evolution-chip--selected .mdc-evolution-chip__checkmark{transform:translate(-50%, -50%);opacity:1}.mdc-evolution-chip--selected .mdc-evolution-chip__checkmark-path{stroke-dashoffset:0}@keyframes mdc-evolution-chip-enter{from{transform:scale(0.8);opacity:.4}to{transform:scale(1);opacity:1}}.mdc-evolution-chip--enter{animation:mdc-evolution-chip-enter 100ms 0ms cubic-bezier(0, 0, 0.2, 1)}@keyframes mdc-evolution-chip-exit{from{opacity:1}to{opacity:0}}.mdc-evolution-chip--exit{animation:mdc-evolution-chip-exit 75ms 0ms cubic-bezier(0.4, 0, 1, 1)}.mdc-evolution-chip--hidden{opacity:0;pointer-events:none;transition:width 150ms 0ms cubic-bezier(0.4, 0, 1, 1)}.mat-mdc-standard-chip{border-radius:var(--mdc-chip-container-shape-radius);height:var(--mdc-chip-container-height)}.mat-mdc-standard-chip .mdc-evolution-chip__ripple{border-radius:var(--mdc-chip-container-shape-radius)}.mat-mdc-standard-chip .mdc-evolution-chip__action--primary:before{border-radius:var(--mdc-chip-container-shape-radius)}.mat-mdc-standard-chip .mdc-evolution-chip__icon--primary{border-radius:var(--mdc-chip-with-avatar-avatar-shape-radius)}.mat-mdc-standard-chip.mdc-evolution-chip--selectable:not(.mdc-evolution-chip--with-primary-icon){--mdc-chip-graphic-selected-width:var(--mdc-chip-with-avatar-avatar-size)}.mat-mdc-standard-chip .mdc-evolution-chip__graphic{height:var(--mdc-chip-with-avatar-avatar-size);width:var(--mdc-chip-with-avatar-avatar-size);font-size:var(--mdc-chip-with-avatar-avatar-size)}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__action--primary:before{border-color:var(--mdc-chip-outline-color)}.mat-mdc-standard-chip .mdc-evolution-chip__action--primary:not(.mdc-evolution-chip__action--presentational).mdc-ripple-upgraded--background-focused:before,.mat-mdc-standard-chip .mdc-evolution-chip__action--primary:not(.mdc-evolution-chip__action--presentational):not(.mdc-ripple-upgraded):focus:before{border-color:var(--mdc-chip-focus-outline-color)}.mat-mdc-standard-chip.mdc-evolution-chip--disabled .mdc-evolution-chip__action--primary:before{border-color:var(--mdc-chip-disabled-outline-color)}.mat-mdc-standard-chip .mdc-evolution-chip__action--primary:before{border-width:var(--mdc-chip-outline-width)}.mat-mdc-standard-chip.mdc-evolution-chip--selected .mdc-evolution-chip__action--primary:before{border-width:var(--mdc-chip-flat-selected-outline-width)}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled){background-color:var(--mdc-chip-elevated-container-color)}.mat-mdc-standard-chip.mdc-evolution-chip--disabled{background-color:var(--mdc-chip-elevated-disabled-container-color)}.mat-mdc-standard-chip.mdc-evolution-chip--selected:not(.mdc-evolution-chip--disabled){background-color:var(--mdc-chip-elevated-selected-container-color)}.mat-mdc-standard-chip.mdc-evolution-chip--selected.mdc-evolution-chip--disabled{background-color:var(--mdc-chip-elevated-disabled-container-color)}.mat-mdc-standard-chip.mdc-evolution-chip--selected.mdc-evolution-chip--disabled{background-color:var(--mdc-chip-flat-disabled-selected-container-color)}.mat-mdc-standard-chip .mdc-evolution-chip__text-label{font-family:var(--mdc-chip-label-text-font);line-height:var(--mdc-chip-label-text-line-height);font-size:var(--mdc-chip-label-text-size);font-weight:var(--mdc-chip-label-text-weight);letter-spacing:var(--mdc-chip-label-text-tracking)}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__text-label{color:var(--mdc-chip-label-text-color)}.mat-mdc-standard-chip.mdc-evolution-chip--disabled .mdc-evolution-chip__text-label{color:var(--mdc-chip-disabled-label-text-color)}.mat-mdc-standard-chip.mdc-evolution-chip--selected:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__text-label{color:var(--mdc-chip-selected-label-text-color)}.mat-mdc-standard-chip.mdc-evolution-chip--selected.mdc-evolution-chip--disabled .mdc-evolution-chip__text-label{color:var(--mdc-chip-disabled-label-text-color)}.mat-mdc-standard-chip .mdc-evolution-chip__icon--primary{height:var(--mdc-chip-with-icon-icon-size);width:var(--mdc-chip-with-icon-icon-size);font-size:var(--mdc-chip-with-icon-icon-size)}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__icon--primary{color:var(--mdc-chip-with-icon-icon-color)}.mat-mdc-standard-chip.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--primary{color:var(--mdc-chip-with-icon-disabled-icon-color)}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__checkmark{color:var(--mdc-chip-with-icon-selected-icon-color)}.mat-mdc-standard-chip.mdc-evolution-chip--disabled .mdc-evolution-chip__checkmark{color:var(--mdc-chip-with-icon-disabled-icon-color)}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__icon--trailing{color:var(--mdc-chip-with-trailing-icon-trailing-icon-color)}.mat-mdc-standard-chip.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--trailing{color:var(--mdc-chip-with-trailing-icon-disabled-trailing-icon-color)}.mat-mdc-standard-chip .mdc-evolution-chip__action--primary .mdc-evolution-chip__ripple::before,.mat-mdc-standard-chip .mdc-evolution-chip__action--primary .mdc-evolution-chip__ripple::after{background-color:var(--mdc-chip-hover-state-layer-color)}.mat-mdc-standard-chip .mdc-evolution-chip__action--primary:hover .mdc-evolution-chip__ripple::before,.mat-mdc-standard-chip .mdc-evolution-chip__action--primary.mdc-ripple-surface--hover .mdc-evolution-chip__ripple::before{opacity:var(--mdc-chip-hover-state-layer-opacity)}.mat-mdc-standard-chip .mdc-evolution-chip__action--primary.mdc-ripple-upgraded--background-focused .mdc-evolution-chip__ripple::before,.mat-mdc-standard-chip .mdc-evolution-chip__action--primary:not(.mdc-ripple-upgraded):focus .mdc-evolution-chip__ripple::before{transition-duration:75ms;opacity:var(--mdc-chip-focus-state-layer-opacity)}.mat-mdc-standard-chip.mdc-evolution-chip--selected .mdc-evolution-chip__action--primary .mdc-evolution-chip__ripple::before,.mat-mdc-standard-chip.mdc-evolution-chip--selected .mdc-evolution-chip__action--primary .mdc-evolution-chip__ripple::after{background-color:var(--mdc-chip-selected-hover-state-layer-color)}.mat-mdc-standard-chip.mdc-evolution-chip--selected .mdc-evolution-chip__action--primary:hover .mdc-evolution-chip__ripple::before,.mat-mdc-standard-chip.mdc-evolution-chip--selected .mdc-evolution-chip__action--primary.mdc-ripple-surface--hover .mdc-evolution-chip__ripple::before{opacity:var(--mdc-chip-selected-hover-state-layer-opacity)}.mat-mdc-standard-chip.mdc-evolution-chip--selected .mdc-evolution-chip__action--primary.mdc-ripple-upgraded--background-focused .mdc-evolution-chip__ripple::before,.mat-mdc-standard-chip.mdc-evolution-chip--selected .mdc-evolution-chip__action--primary:not(.mdc-ripple-upgraded):focus .mdc-evolution-chip__ripple::before{transition-duration:75ms;opacity:var(--mdc-chip-selected-focus-state-layer-opacity)}.mat-mdc-chip-focus-overlay{background:var(--mdc-chip-focus-state-layer-color)}.mat-mdc-chip-selected .mat-mdc-chip-focus-overlay{background:var(--mdc-chip-selected-focus-state-layer-color)}.mat-mdc-chip:hover .mat-mdc-chip-focus-overlay{background:var(--mdc-chip-hover-state-layer-color);opacity:var(--mdc-chip-hover-state-layer-opacity)}.mat-mdc-chip-selected:hover .mat-mdc-chip-focus-overlay{background:var(--mdc-chip-selected-hover-state-layer-color);opacity:var(--mdc-chip-selected-hover-state-layer-opacity)}.mat-mdc-chip.cdk-focused .mat-mdc-chip-focus-overlay{background:var(--mdc-chip-focus-state-layer-color);opacity:var(--mdc-chip-focus-state-layer-opacity)}.mat-mdc-chip-selected.cdk-focused .mat-mdc-chip-focus-overlay{background:var(--mdc-chip-selected-focus-state-layer-color);opacity:var(--mdc-chip-selected-focus-state-layer-opacity)}.mdc-evolution-chip--disabled:not(.mdc-evolution-chip--selected) .mat-mdc-chip-avatar{opacity:var(--mdc-chip-with-avatar-disabled-avatar-opacity)}.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--trailing{opacity:var(--mdc-chip-with-trailing-icon-disabled-trailing-icon-opacity)}.mdc-evolution-chip--disabled.mdc-evolution-chip--selected .mdc-evolution-chip__checkmark{opacity:var(--mdc-chip-with-icon-disabled-icon-opacity)}.mat-mdc-standard-chip.mdc-evolution-chip--disabled{opacity:var(--mat-chip-disabled-container-opacity)}.mat-mdc-standard-chip.mdc-evolution-chip--selected .mdc-evolution-chip__icon--trailing{color:var(--mat-chip-selected-trailing-icon-color)}.mat-mdc-standard-chip.mdc-evolution-chip--selected.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--trailing{color:var(--mat-chip-selected-disabled-trailing-icon-color)}.mat-mdc-chip-remove{opacity:var(--mat-chip-trailing-action-opacity)}.mat-mdc-chip-remove:focus{opacity:var(--mat-chip-trailing-action-focus-opacity)}.mat-mdc-chip-remove::after{background:var(--mat-chip-trailing-action-state-layer-color)}.mat-mdc-chip-remove:hover::after{opacity:var(--mat-chip-trailing-action-hover-state-layer-opacity)}.mat-mdc-chip-remove:focus::after{opacity:var(--mat-chip-trailing-action-focus-state-layer-opacity)}.mat-mdc-chip-selected .mat-mdc-chip-remove::after{background:var(--mat-chip-selected-trailing-action-state-layer-color)}.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--trailing.mat-mdc-chip-remove{opacity:calc(var(--mat-chip-trailing-action-opacity)*var(--mdc-chip-with-trailing-icon-disabled-trailing-icon-opacity))}.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--trailing.mat-mdc-chip-remove:focus{opacity:calc(var(--mat-chip-trailing-action-focus-opacity)*var(--mdc-chip-with-trailing-icon-disabled-trailing-icon-opacity))}.mat-mdc-standard-chip .mdc-evolution-chip__action--primary:before{border-style:solid}.mat-mdc-standard-chip .mdc-evolution-chip__checkmark{height:20px;width:20px}.mat-mdc-standard-chip .mdc-evolution-chip__icon--trailing{height:18px;width:18px;font-size:18px}.mat-mdc-standard-chip .mdc-evolution-chip__action--primary{padding-left:12px;padding-right:12px}[dir=rtl] .mat-mdc-standard-chip .mdc-evolution-chip__action--primary,.mat-mdc-standard-chip .mdc-evolution-chip__action--primary[dir=rtl]{padding-left:12px;padding-right:12px}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__graphic{padding-left:6px;padding-right:6px}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__graphic,.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__graphic[dir=rtl]{padding-left:6px;padding-right:6px}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__action--primary{padding-left:0;padding-right:12px}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__action--primary,.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__action--primary[dir=rtl]{padding-left:12px;padding-right:0}.mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--trailing{padding-left:8px;padding-right:8px}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--trailing,.mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--trailing[dir=rtl]{padding-left:8px;padding-right:8px}.mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__ripple--trailing{left:8px;right:initial}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__ripple--trailing,.mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__ripple--trailing[dir=rtl]{left:initial;right:8px}.mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:12px;padding-right:0}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary,.mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary[dir=rtl]{padding-left:0;padding-right:12px}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__graphic{padding-left:6px;padding-right:6px}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__graphic,.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__graphic[dir=rtl]{padding-left:6px;padding-right:6px}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--trailing{padding-left:8px;padding-right:8px}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--trailing,.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--trailing[dir=rtl]{padding-left:8px;padding-right:8px}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__ripple--trailing{left:8px;right:initial}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__ripple--trailing,.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__ripple--trailing[dir=rtl]{left:initial;right:8px}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:0;padding-right:0}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary,.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary[dir=rtl]{padding-left:0;padding-right:0}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__graphic{padding-left:4px;padding-right:8px}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__graphic,.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__graphic[dir=rtl]{padding-left:8px;padding-right:4px}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__action--primary{padding-left:0;padding-right:12px}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__action--primary,.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__action--primary[dir=rtl]{padding-left:12px;padding-right:0}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__graphic{padding-left:4px;padding-right:8px}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__graphic,.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__graphic[dir=rtl]{padding-left:8px;padding-right:4px}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--trailing{padding-left:8px;padding-right:8px}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--trailing,.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--trailing[dir=rtl]{padding-left:8px;padding-right:8px}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__ripple--trailing{left:8px;right:initial}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__ripple--trailing,.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__ripple--trailing[dir=rtl]{left:initial;right:8px}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:0;padding-right:0}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary,.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary[dir=rtl]{padding-left:0;padding-right:0}.mat-mdc-standard-chip{-webkit-tap-highlight-color:rgba(0,0,0,0)}.cdk-high-contrast-active .mat-mdc-standard-chip{outline:solid 1px}.cdk-high-contrast-active .mat-mdc-standard-chip .mdc-evolution-chip__checkmark-path{stroke:CanvasText !important}.mat-mdc-standard-chip .mdc-evolution-chip__cell--primary,.mat-mdc-standard-chip .mdc-evolution-chip__action--primary,.mat-mdc-standard-chip .mat-mdc-chip-action-label{overflow:visible}.mat-mdc-standard-chip .mdc-evolution-chip__cell--primary{flex-basis:100%}.mat-mdc-standard-chip .mdc-evolution-chip__action--primary{font:inherit;letter-spacing:inherit;white-space:inherit}.mat-mdc-standard-chip .mat-mdc-chip-graphic,.mat-mdc-standard-chip .mat-mdc-chip-trailing-icon{box-sizing:content-box}.mat-mdc-standard-chip._mat-animation-noopable,.mat-mdc-standard-chip._mat-animation-noopable .mdc-evolution-chip__graphic,.mat-mdc-standard-chip._mat-animation-noopable .mdc-evolution-chip__checkmark,.mat-mdc-standard-chip._mat-animation-noopable .mdc-evolution-chip__checkmark-path{transition-duration:1ms;animation-duration:1ms}.mat-mdc-basic-chip .mdc-evolution-chip__action--primary{font:inherit}.mat-mdc-chip-focus-overlay{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;opacity:0;border-radius:inherit;transition:opacity 150ms linear}._mat-animation-noopable .mat-mdc-chip-focus-overlay{transition:none}.mat-mdc-basic-chip .mat-mdc-chip-focus-overlay{display:none}.mat-mdc-chip .mat-ripple.mat-mdc-chip-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-mdc-chip-avatar{text-align:center;line-height:1;color:var(--mdc-chip-with-icon-icon-color, currentColor)}.mat-mdc-chip{position:relative;z-index:0}.mat-mdc-chip-action-label{text-align:left;z-index:1}[dir=rtl] .mat-mdc-chip-action-label{text-align:right}.mat-mdc-chip.mdc-evolution-chip--with-trailing-action .mat-mdc-chip-action-label{position:relative}.mat-mdc-chip-action-label .mat-mdc-chip-primary-focus-indicator{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.mat-mdc-chip-action-label .mat-mdc-focus-indicator::before{margin:calc(calc(var(--mat-mdc-focus-indicator-border-width, 3px) + 2px)*-1)}.mat-mdc-chip-remove::before{margin:calc(var(--mat-mdc-focus-indicator-border-width, 3px)*-1);left:8px;right:8px}.mat-mdc-chip-remove::after{content:"";display:block;opacity:0;position:absolute;top:-2px;bottom:-2px;left:6px;right:6px;border-radius:50%}.mat-mdc-chip-remove .mat-icon{width:18px;height:18px;font-size:18px;box-sizing:content-box}.mat-chip-edit-input{cursor:text;display:inline-block;color:inherit;outline:0}.cdk-high-contrast-active .mat-mdc-chip-selected:not(.mat-mdc-chip-multiple){outline-width:3px}.mat-mdc-chip-action:focus .mat-mdc-focus-indicator::before{content:""}'],encapsulation:2,changeDetection:0})}return t})(),zp=(()=>{class t{constructor(e,i){this._elementRef=e,this._document=i}initialize(e){this.getNativeElement().focus(),this.setValue(e)}getNativeElement(){return this._elementRef.nativeElement}setValue(e){this.getNativeElement().textContent=e,this._moveCursorToEndOfInput()}getValue(){return this.getNativeElement().textContent||""}_moveCursorToEndOfInput(){const e=this._document.createRange();e.selectNodeContents(this.getNativeElement()),e.collapse(!1);const i=window.getSelection();i.removeAllRanges(),i.addRange(e)}static#e=this.\u0275fac=function(i){return new(i||t)(p(K),p(_e))};static#t=this.\u0275dir=R({type:t,selectors:[["span","matChipEditInput",""]],hostAttrs:["role","textbox","tabindex","-1","contenteditable","true",1,"mat-chip-edit-input"],standalone:!0})}return t})(),_u=(()=>{class t extends Us{constructor(e,i,r,o,s,a,c,l){super(e,i,r,o,s,a,c,l),this.basicChipAttrName="mat-basic-chip-row",this._editStartPending=!1,this.editable=!1,this.edited=new G,this._isEditing=!1,this.role="row",this._onBlur.pipe(pe(this.destroyed)).subscribe(()=>{this._isEditing&&!this._editStartPending&&this._onEditFinish()})}_hasTrailingIcon(){return!this._isEditing&&super._hasTrailingIcon()}_handleFocus(){!this._isEditing&&!this.disabled&&this.focus()}_handleKeydown(e){13!==e.keyCode||this.disabled?this._isEditing?e.stopPropagation():super._handleKeydown(e):this._isEditing?(e.preventDefault(),this._onEditFinish()):this.editable&&this._startEditing(e)}_handleDoubleclick(e){!this.disabled&&this.editable&&this._startEditing(e)}_startEditing(e){if(!this.primaryAction||this.removeIcon&&this._getSourceAction(e.target)===this.removeIcon)return;const i=this.value;this._isEditing=this._editStartPending=!0,this._changeDetectorRef.detectChanges(),setTimeout(()=>{this._getEditInput().initialize(i),this._editStartPending=!1})}_onEditFinish(){this._isEditing=this._editStartPending=!1,this.edited.emit({chip:this,value:this._getEditInput().getValue()}),(this._document.activeElement===this._getEditInput().getNativeElement()||this._document.activeElement===this._document.body)&&this.primaryAction.focus()}_isRippleDisabled(){return super._isRippleDisabled()||this._isEditing}_getEditInput(){return this.contentEditInput||this.defaultEditInput}static#e=this.\u0275fac=function(i){return new(i||t)(p(Ke),p(K),p(W),p(Mr),p(_e),p(Bt,8),p(dp,8),bi("tabindex"))};static#t=this.\u0275cmp=ue({type:t,selectors:[["mat-chip-row"],["","mat-chip-row",""],["mat-basic-chip-row"],["","mat-basic-chip-row",""]],contentQueries:function(i,r,o){if(1&i&&Oe(o,zp,5),2&i){let s;U(s=$())&&(r.contentEditInput=s.first)}},viewQuery:function(i,r){if(1&i&&Le(zp,5),2&i){let o;U(o=$())&&(r.defaultEditInput=o.first)}},hostAttrs:[1,"mat-mdc-chip","mat-mdc-chip-row","mdc-evolution-chip"],hostVars:27,hostBindings:function(i,r){1&i&&q("focus",function(s){return r._handleFocus(s)})("dblclick",function(s){return r._handleDoubleclick(s)}),2&i&&(Zi("id",r.id),me("tabindex",r.disabled?null:-1)("aria-label",null)("aria-description",null)("role",r.role),de("mat-mdc-chip-with-avatar",r.leadingIcon)("mat-mdc-chip-disabled",r.disabled)("mat-mdc-chip-editing",r._isEditing)("mat-mdc-chip-editable",r.editable)("mdc-evolution-chip--disabled",r.disabled)("mdc-evolution-chip--with-trailing-action",r._hasTrailingIcon())("mdc-evolution-chip--with-primary-graphic",r.leadingIcon)("mdc-evolution-chip--with-primary-icon",r.leadingIcon)("mdc-evolution-chip--with-avatar",r.leadingIcon)("mat-mdc-chip-highlighted",r.highlighted)("mat-mdc-chip-with-trailing-icon",r._hasTrailingIcon()))},inputs:{editable:"editable"},outputs:{edited:"edited"},standalone:!0,features:[ie([{provide:Us,useExisting:t},{provide:Hp,useExisting:t}]),J,ve],ngContentSelectors:Vee,decls:10,vars:10,consts:[[1,"mat-mdc-chip-focus-overlay"],["role","gridcell","matChipAction","",1,"mdc-evolution-chip__cell","mdc-evolution-chip__cell--primary",3,"tabIndex","disabled"],[1,"mdc-evolution-chip__graphic","mat-mdc-chip-graphic"],[1,"mdc-evolution-chip__text-label","mat-mdc-chip-action-label"],["aria-hidden","true",1,"mat-mdc-chip-primary-focus-indicator","mat-mdc-focus-indicator"],["role","gridcell",1,"mdc-evolution-chip__cell","mdc-evolution-chip__cell--trailing"],[1,"cdk-visually-hidden",3,"id"],["matChipEditInput",""]],template:function(i,r){1&i&&($e(Lee),H(0,Bee,1,0,"span",0),y(1,"span",1),H(2,jee,2,0,"span",2),y(3,"span",3),H(4,Uee,2,1)(5,$ee,1,0),re(6,"span",4),w()(),H(7,qee,2,0,"span",5),y(8,"span",6),A(9),w()),2&i&&(X(0,r._isEditing?-1:0),C(),z("tabIndex",r.tabIndex)("disabled",r.disabled),me("aria-label",r.ariaLabel)("aria-describedby",r._ariaDescriptionId),C(),X(2,r.leadingIcon?2:-1),C(2),X(4,r._isEditing?4:5),C(3),X(7,r._hasTrailingIcon()?7:-1),C(),z("id",r._ariaDescriptionId),C(),wt(r.ariaDescription))},dependencies:[Rc,zp],styles:['.mdc-evolution-chip,.mdc-evolution-chip__cell,.mdc-evolution-chip__action{display:inline-flex;align-items:center}.mdc-evolution-chip{position:relative;max-width:100%}.mdc-evolution-chip .mdc-elevation-overlay{width:100%;height:100%;top:0;left:0}.mdc-evolution-chip__cell,.mdc-evolution-chip__action{height:100%}.mdc-evolution-chip__cell--primary{overflow-x:hidden}.mdc-evolution-chip__cell--trailing{flex:1 0 auto}.mdc-evolution-chip__action{align-items:center;background:none;border:none;box-sizing:content-box;cursor:pointer;display:inline-flex;justify-content:center;outline:none;padding:0;text-decoration:none;color:inherit}.mdc-evolution-chip__action--presentational{cursor:auto}.mdc-evolution-chip--disabled,.mdc-evolution-chip__action:disabled{pointer-events:none}.mdc-evolution-chip__action--primary{overflow-x:hidden}.mdc-evolution-chip__action--trailing{position:relative;overflow:visible}.mdc-evolution-chip__action--primary:before{box-sizing:border-box;content:"";height:100%;left:0;position:absolute;pointer-events:none;top:0;width:100%;z-index:1}.mdc-evolution-chip--touch{margin-top:8px;margin-bottom:8px}.mdc-evolution-chip__action-touch{position:absolute;top:50%;height:48px;left:0;right:0;transform:translateY(-50%)}.mdc-evolution-chip__text-label{white-space:nowrap;user-select:none;text-overflow:ellipsis;overflow:hidden}.mdc-evolution-chip__graphic{align-items:center;display:inline-flex;justify-content:center;overflow:hidden;pointer-events:none;position:relative;flex:1 0 auto}.mdc-evolution-chip__checkmark{position:absolute;opacity:0;top:50%;left:50%}.mdc-evolution-chip--selectable:not(.mdc-evolution-chip--selected):not(.mdc-evolution-chip--with-primary-icon) .mdc-evolution-chip__graphic{width:0}.mdc-evolution-chip__checkmark-background{opacity:0}.mdc-evolution-chip__checkmark-svg{display:block}.mdc-evolution-chip__checkmark-path{stroke-width:2px;stroke-dasharray:29.7833385;stroke-dashoffset:29.7833385;stroke:currentColor}.mdc-evolution-chip--selecting .mdc-evolution-chip__graphic{transition:width 150ms 0ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-evolution-chip--selecting .mdc-evolution-chip__checkmark{transition:transform 150ms 0ms cubic-bezier(0.4, 0, 0.2, 1);transform:translate(-75%, -50%)}.mdc-evolution-chip--selecting .mdc-evolution-chip__checkmark-path{transition:stroke-dashoffset 150ms 45ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-evolution-chip--deselecting .mdc-evolution-chip__graphic{transition:width 100ms 0ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-evolution-chip--deselecting .mdc-evolution-chip__checkmark{transition:opacity 50ms 0ms linear,transform 100ms 0ms cubic-bezier(0.4, 0, 0.2, 1);transform:translate(-75%, -50%)}.mdc-evolution-chip--deselecting .mdc-evolution-chip__checkmark-path{stroke-dashoffset:0}.mdc-evolution-chip--selecting-with-primary-icon .mdc-evolution-chip__icon--primary{transition:opacity 75ms 0ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-evolution-chip--selecting-with-primary-icon .mdc-evolution-chip__checkmark-path{transition:stroke-dashoffset 150ms 75ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-evolution-chip--deselecting-with-primary-icon .mdc-evolution-chip__icon--primary{transition:opacity 150ms 75ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-evolution-chip--deselecting-with-primary-icon .mdc-evolution-chip__checkmark{transition:opacity 75ms 0ms cubic-bezier(0.4, 0, 0.2, 1);transform:translate(-50%, -50%)}.mdc-evolution-chip--deselecting-with-primary-icon .mdc-evolution-chip__checkmark-path{stroke-dashoffset:0}.mdc-evolution-chip--selected .mdc-evolution-chip__icon--primary{opacity:0}.mdc-evolution-chip--selected .mdc-evolution-chip__checkmark{transform:translate(-50%, -50%);opacity:1}.mdc-evolution-chip--selected .mdc-evolution-chip__checkmark-path{stroke-dashoffset:0}@keyframes mdc-evolution-chip-enter{from{transform:scale(0.8);opacity:.4}to{transform:scale(1);opacity:1}}.mdc-evolution-chip--enter{animation:mdc-evolution-chip-enter 100ms 0ms cubic-bezier(0, 0, 0.2, 1)}@keyframes mdc-evolution-chip-exit{from{opacity:1}to{opacity:0}}.mdc-evolution-chip--exit{animation:mdc-evolution-chip-exit 75ms 0ms cubic-bezier(0.4, 0, 1, 1)}.mdc-evolution-chip--hidden{opacity:0;pointer-events:none;transition:width 150ms 0ms cubic-bezier(0.4, 0, 1, 1)}.mat-mdc-standard-chip{border-radius:var(--mdc-chip-container-shape-radius);height:var(--mdc-chip-container-height)}.mat-mdc-standard-chip .mdc-evolution-chip__ripple{border-radius:var(--mdc-chip-container-shape-radius)}.mat-mdc-standard-chip .mdc-evolution-chip__action--primary:before{border-radius:var(--mdc-chip-container-shape-radius)}.mat-mdc-standard-chip .mdc-evolution-chip__icon--primary{border-radius:var(--mdc-chip-with-avatar-avatar-shape-radius)}.mat-mdc-standard-chip.mdc-evolution-chip--selectable:not(.mdc-evolution-chip--with-primary-icon){--mdc-chip-graphic-selected-width:var(--mdc-chip-with-avatar-avatar-size)}.mat-mdc-standard-chip .mdc-evolution-chip__graphic{height:var(--mdc-chip-with-avatar-avatar-size);width:var(--mdc-chip-with-avatar-avatar-size);font-size:var(--mdc-chip-with-avatar-avatar-size)}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__action--primary:before{border-color:var(--mdc-chip-outline-color)}.mat-mdc-standard-chip .mdc-evolution-chip__action--primary:not(.mdc-evolution-chip__action--presentational).mdc-ripple-upgraded--background-focused:before,.mat-mdc-standard-chip .mdc-evolution-chip__action--primary:not(.mdc-evolution-chip__action--presentational):not(.mdc-ripple-upgraded):focus:before{border-color:var(--mdc-chip-focus-outline-color)}.mat-mdc-standard-chip.mdc-evolution-chip--disabled .mdc-evolution-chip__action--primary:before{border-color:var(--mdc-chip-disabled-outline-color)}.mat-mdc-standard-chip .mdc-evolution-chip__action--primary:before{border-width:var(--mdc-chip-outline-width)}.mat-mdc-standard-chip.mdc-evolution-chip--selected .mdc-evolution-chip__action--primary:before{border-width:var(--mdc-chip-flat-selected-outline-width)}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled){background-color:var(--mdc-chip-elevated-container-color)}.mat-mdc-standard-chip.mdc-evolution-chip--disabled{background-color:var(--mdc-chip-elevated-disabled-container-color)}.mat-mdc-standard-chip.mdc-evolution-chip--selected:not(.mdc-evolution-chip--disabled){background-color:var(--mdc-chip-elevated-selected-container-color)}.mat-mdc-standard-chip.mdc-evolution-chip--selected.mdc-evolution-chip--disabled{background-color:var(--mdc-chip-elevated-disabled-container-color)}.mat-mdc-standard-chip.mdc-evolution-chip--selected.mdc-evolution-chip--disabled{background-color:var(--mdc-chip-flat-disabled-selected-container-color)}.mat-mdc-standard-chip .mdc-evolution-chip__text-label{font-family:var(--mdc-chip-label-text-font);line-height:var(--mdc-chip-label-text-line-height);font-size:var(--mdc-chip-label-text-size);font-weight:var(--mdc-chip-label-text-weight);letter-spacing:var(--mdc-chip-label-text-tracking)}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__text-label{color:var(--mdc-chip-label-text-color)}.mat-mdc-standard-chip.mdc-evolution-chip--disabled .mdc-evolution-chip__text-label{color:var(--mdc-chip-disabled-label-text-color)}.mat-mdc-standard-chip.mdc-evolution-chip--selected:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__text-label{color:var(--mdc-chip-selected-label-text-color)}.mat-mdc-standard-chip.mdc-evolution-chip--selected.mdc-evolution-chip--disabled .mdc-evolution-chip__text-label{color:var(--mdc-chip-disabled-label-text-color)}.mat-mdc-standard-chip .mdc-evolution-chip__icon--primary{height:var(--mdc-chip-with-icon-icon-size);width:var(--mdc-chip-with-icon-icon-size);font-size:var(--mdc-chip-with-icon-icon-size)}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__icon--primary{color:var(--mdc-chip-with-icon-icon-color)}.mat-mdc-standard-chip.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--primary{color:var(--mdc-chip-with-icon-disabled-icon-color)}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__checkmark{color:var(--mdc-chip-with-icon-selected-icon-color)}.mat-mdc-standard-chip.mdc-evolution-chip--disabled .mdc-evolution-chip__checkmark{color:var(--mdc-chip-with-icon-disabled-icon-color)}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__icon--trailing{color:var(--mdc-chip-with-trailing-icon-trailing-icon-color)}.mat-mdc-standard-chip.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--trailing{color:var(--mdc-chip-with-trailing-icon-disabled-trailing-icon-color)}.mat-mdc-standard-chip .mdc-evolution-chip__action--primary .mdc-evolution-chip__ripple::before,.mat-mdc-standard-chip .mdc-evolution-chip__action--primary .mdc-evolution-chip__ripple::after{background-color:var(--mdc-chip-hover-state-layer-color)}.mat-mdc-standard-chip .mdc-evolution-chip__action--primary:hover .mdc-evolution-chip__ripple::before,.mat-mdc-standard-chip .mdc-evolution-chip__action--primary.mdc-ripple-surface--hover .mdc-evolution-chip__ripple::before{opacity:var(--mdc-chip-hover-state-layer-opacity)}.mat-mdc-standard-chip .mdc-evolution-chip__action--primary.mdc-ripple-upgraded--background-focused .mdc-evolution-chip__ripple::before,.mat-mdc-standard-chip .mdc-evolution-chip__action--primary:not(.mdc-ripple-upgraded):focus .mdc-evolution-chip__ripple::before{transition-duration:75ms;opacity:var(--mdc-chip-focus-state-layer-opacity)}.mat-mdc-standard-chip.mdc-evolution-chip--selected .mdc-evolution-chip__action--primary .mdc-evolution-chip__ripple::before,.mat-mdc-standard-chip.mdc-evolution-chip--selected .mdc-evolution-chip__action--primary .mdc-evolution-chip__ripple::after{background-color:var(--mdc-chip-selected-hover-state-layer-color)}.mat-mdc-standard-chip.mdc-evolution-chip--selected .mdc-evolution-chip__action--primary:hover .mdc-evolution-chip__ripple::before,.mat-mdc-standard-chip.mdc-evolution-chip--selected .mdc-evolution-chip__action--primary.mdc-ripple-surface--hover .mdc-evolution-chip__ripple::before{opacity:var(--mdc-chip-selected-hover-state-layer-opacity)}.mat-mdc-standard-chip.mdc-evolution-chip--selected .mdc-evolution-chip__action--primary.mdc-ripple-upgraded--background-focused .mdc-evolution-chip__ripple::before,.mat-mdc-standard-chip.mdc-evolution-chip--selected .mdc-evolution-chip__action--primary:not(.mdc-ripple-upgraded):focus .mdc-evolution-chip__ripple::before{transition-duration:75ms;opacity:var(--mdc-chip-selected-focus-state-layer-opacity)}.mat-mdc-chip-focus-overlay{background:var(--mdc-chip-focus-state-layer-color)}.mat-mdc-chip-selected .mat-mdc-chip-focus-overlay{background:var(--mdc-chip-selected-focus-state-layer-color)}.mat-mdc-chip:hover .mat-mdc-chip-focus-overlay{background:var(--mdc-chip-hover-state-layer-color);opacity:var(--mdc-chip-hover-state-layer-opacity)}.mat-mdc-chip-selected:hover .mat-mdc-chip-focus-overlay{background:var(--mdc-chip-selected-hover-state-layer-color);opacity:var(--mdc-chip-selected-hover-state-layer-opacity)}.mat-mdc-chip.cdk-focused .mat-mdc-chip-focus-overlay{background:var(--mdc-chip-focus-state-layer-color);opacity:var(--mdc-chip-focus-state-layer-opacity)}.mat-mdc-chip-selected.cdk-focused .mat-mdc-chip-focus-overlay{background:var(--mdc-chip-selected-focus-state-layer-color);opacity:var(--mdc-chip-selected-focus-state-layer-opacity)}.mdc-evolution-chip--disabled:not(.mdc-evolution-chip--selected) .mat-mdc-chip-avatar{opacity:var(--mdc-chip-with-avatar-disabled-avatar-opacity)}.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--trailing{opacity:var(--mdc-chip-with-trailing-icon-disabled-trailing-icon-opacity)}.mdc-evolution-chip--disabled.mdc-evolution-chip--selected .mdc-evolution-chip__checkmark{opacity:var(--mdc-chip-with-icon-disabled-icon-opacity)}.mat-mdc-standard-chip.mdc-evolution-chip--disabled{opacity:var(--mat-chip-disabled-container-opacity)}.mat-mdc-standard-chip.mdc-evolution-chip--selected .mdc-evolution-chip__icon--trailing{color:var(--mat-chip-selected-trailing-icon-color)}.mat-mdc-standard-chip.mdc-evolution-chip--selected.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--trailing{color:var(--mat-chip-selected-disabled-trailing-icon-color)}.mat-mdc-chip-remove{opacity:var(--mat-chip-trailing-action-opacity)}.mat-mdc-chip-remove:focus{opacity:var(--mat-chip-trailing-action-focus-opacity)}.mat-mdc-chip-remove::after{background:var(--mat-chip-trailing-action-state-layer-color)}.mat-mdc-chip-remove:hover::after{opacity:var(--mat-chip-trailing-action-hover-state-layer-opacity)}.mat-mdc-chip-remove:focus::after{opacity:var(--mat-chip-trailing-action-focus-state-layer-opacity)}.mat-mdc-chip-selected .mat-mdc-chip-remove::after{background:var(--mat-chip-selected-trailing-action-state-layer-color)}.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--trailing.mat-mdc-chip-remove{opacity:calc(var(--mat-chip-trailing-action-opacity)*var(--mdc-chip-with-trailing-icon-disabled-trailing-icon-opacity))}.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--trailing.mat-mdc-chip-remove:focus{opacity:calc(var(--mat-chip-trailing-action-focus-opacity)*var(--mdc-chip-with-trailing-icon-disabled-trailing-icon-opacity))}.mat-mdc-standard-chip .mdc-evolution-chip__action--primary:before{border-style:solid}.mat-mdc-standard-chip .mdc-evolution-chip__checkmark{height:20px;width:20px}.mat-mdc-standard-chip .mdc-evolution-chip__icon--trailing{height:18px;width:18px;font-size:18px}.mat-mdc-standard-chip .mdc-evolution-chip__action--primary{padding-left:12px;padding-right:12px}[dir=rtl] .mat-mdc-standard-chip .mdc-evolution-chip__action--primary,.mat-mdc-standard-chip .mdc-evolution-chip__action--primary[dir=rtl]{padding-left:12px;padding-right:12px}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__graphic{padding-left:6px;padding-right:6px}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__graphic,.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__graphic[dir=rtl]{padding-left:6px;padding-right:6px}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__action--primary{padding-left:0;padding-right:12px}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__action--primary,.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__action--primary[dir=rtl]{padding-left:12px;padding-right:0}.mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--trailing{padding-left:8px;padding-right:8px}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--trailing,.mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--trailing[dir=rtl]{padding-left:8px;padding-right:8px}.mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__ripple--trailing{left:8px;right:initial}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__ripple--trailing,.mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__ripple--trailing[dir=rtl]{left:initial;right:8px}.mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:12px;padding-right:0}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary,.mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary[dir=rtl]{padding-left:0;padding-right:12px}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__graphic{padding-left:6px;padding-right:6px}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__graphic,.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__graphic[dir=rtl]{padding-left:6px;padding-right:6px}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--trailing{padding-left:8px;padding-right:8px}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--trailing,.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--trailing[dir=rtl]{padding-left:8px;padding-right:8px}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__ripple--trailing{left:8px;right:initial}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__ripple--trailing,.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__ripple--trailing[dir=rtl]{left:initial;right:8px}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:0;padding-right:0}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary,.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary[dir=rtl]{padding-left:0;padding-right:0}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__graphic{padding-left:4px;padding-right:8px}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__graphic,.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__graphic[dir=rtl]{padding-left:8px;padding-right:4px}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__action--primary{padding-left:0;padding-right:12px}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__action--primary,.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__action--primary[dir=rtl]{padding-left:12px;padding-right:0}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__graphic{padding-left:4px;padding-right:8px}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__graphic,.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__graphic[dir=rtl]{padding-left:8px;padding-right:4px}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--trailing{padding-left:8px;padding-right:8px}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--trailing,.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--trailing[dir=rtl]{padding-left:8px;padding-right:8px}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__ripple--trailing{left:8px;right:initial}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__ripple--trailing,.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__ripple--trailing[dir=rtl]{left:initial;right:8px}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:0;padding-right:0}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary,.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary[dir=rtl]{padding-left:0;padding-right:0}.mat-mdc-standard-chip{-webkit-tap-highlight-color:rgba(0,0,0,0)}.cdk-high-contrast-active .mat-mdc-standard-chip{outline:solid 1px}.cdk-high-contrast-active .mat-mdc-standard-chip .mdc-evolution-chip__checkmark-path{stroke:CanvasText !important}.mat-mdc-standard-chip .mdc-evolution-chip__cell--primary,.mat-mdc-standard-chip .mdc-evolution-chip__action--primary,.mat-mdc-standard-chip .mat-mdc-chip-action-label{overflow:visible}.mat-mdc-standard-chip .mdc-evolution-chip__cell--primary{flex-basis:100%}.mat-mdc-standard-chip .mdc-evolution-chip__action--primary{font:inherit;letter-spacing:inherit;white-space:inherit}.mat-mdc-standard-chip .mat-mdc-chip-graphic,.mat-mdc-standard-chip .mat-mdc-chip-trailing-icon{box-sizing:content-box}.mat-mdc-standard-chip._mat-animation-noopable,.mat-mdc-standard-chip._mat-animation-noopable .mdc-evolution-chip__graphic,.mat-mdc-standard-chip._mat-animation-noopable .mdc-evolution-chip__checkmark,.mat-mdc-standard-chip._mat-animation-noopable .mdc-evolution-chip__checkmark-path{transition-duration:1ms;animation-duration:1ms}.mat-mdc-basic-chip .mdc-evolution-chip__action--primary{font:inherit}.mat-mdc-chip-focus-overlay{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;opacity:0;border-radius:inherit;transition:opacity 150ms linear}._mat-animation-noopable .mat-mdc-chip-focus-overlay{transition:none}.mat-mdc-basic-chip .mat-mdc-chip-focus-overlay{display:none}.mat-mdc-chip .mat-ripple.mat-mdc-chip-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-mdc-chip-avatar{text-align:center;line-height:1;color:var(--mdc-chip-with-icon-icon-color, currentColor)}.mat-mdc-chip{position:relative;z-index:0}.mat-mdc-chip-action-label{text-align:left;z-index:1}[dir=rtl] .mat-mdc-chip-action-label{text-align:right}.mat-mdc-chip.mdc-evolution-chip--with-trailing-action .mat-mdc-chip-action-label{position:relative}.mat-mdc-chip-action-label .mat-mdc-chip-primary-focus-indicator{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.mat-mdc-chip-action-label .mat-mdc-focus-indicator::before{margin:calc(calc(var(--mat-mdc-focus-indicator-border-width, 3px) + 2px)*-1)}.mat-mdc-chip-remove::before{margin:calc(var(--mat-mdc-focus-indicator-border-width, 3px)*-1);left:8px;right:8px}.mat-mdc-chip-remove::after{content:"";display:block;opacity:0;position:absolute;top:-2px;bottom:-2px;left:6px;right:6px;border-radius:50%}.mat-mdc-chip-remove .mat-icon{width:18px;height:18px;font-size:18px;box-sizing:content-box}.mat-chip-edit-input{cursor:text;display:inline-block;color:inherit;outline:0}.cdk-high-contrast-active .mat-mdc-chip-selected:not(.mat-mdc-chip-multiple){outline-width:3px}.mat-mdc-chip-action:focus .mat-mdc-focus-indicator::before{content:""}'],encapsulation:2,changeDetection:0})}return t})(),Up=(()=>{class t{get chipFocusChanges(){return this._getChipStream(e=>e._onFocus)}get chipDestroyedChanges(){return this._getChipStream(e=>e.destroyed)}get chipRemovedChanges(){return this._getChipStream(e=>e.removed)}get disabled(){return this._disabled}set disabled(e){this._disabled=e,this._syncChipsState()}get empty(){return!this._chips||0===this._chips.length}get role(){return this._explicitRole?this._explicitRole:this.empty?null:this._defaultRole}set role(e){this._explicitRole=e}get focused(){return this._hasFocusedChip()}constructor(e,i,r){this._elementRef=e,this._changeDetectorRef=i,this._dir=r,this._lastDestroyedFocusedChipIndex=null,this._destroyed=new Z,this._defaultRole="presentation",this._disabled=!1,this.tabIndex=0,this._explicitRole=null,this._chipActions=new $r}ngAfterViewInit(){this._setUpFocusManagement(),this._trackChipSetChanges(),this._trackDestroyedFocusedChip()}ngOnDestroy(){this._keyManager?.destroy(),this._chipActions.destroy(),this._destroyed.next(),this._destroyed.complete()}_hasFocusedChip(){return this._chips&&this._chips.some(e=>e._hasFocus())}_syncChipsState(){this._chips&&this._chips.forEach(e=>{e.disabled=this._disabled,e._changeDetectorRef.markForCheck()})}focus(){}_handleKeydown(e){this._originatesFromChip(e)&&this._keyManager.onKeydown(e)}_isValidIndex(e){return e>=0&&ethis.tabIndex=e)}}_getChipStream(e){return this._chips.changes.pipe(gn(null),nn(()=>Ht(...this._chips.map(e))))}_originatesFromChip(e){let i=e.target;for(;i&&i!==this._elementRef.nativeElement;){if(i.classList.contains("mat-mdc-chip"))return!0;i=i.parentElement}return!1}_setUpFocusManagement(){this._chips.changes.pipe(gn(this._chips)).subscribe(e=>{const i=[];e.forEach(r=>r._getActions().forEach(o=>i.push(o))),this._chipActions.reset(i),this._chipActions.notifyOnChanges()}),this._keyManager=new H0(this._chipActions).withVerticalOrientation().withHorizontalOrientation(this._dir?this._dir.value:"ltr").withHomeAndEnd().skipPredicate(e=>this._skipPredicate(e)),this.chipFocusChanges.pipe(pe(this._destroyed)).subscribe(({chip:e})=>{const i=e._getSourceAction(document.activeElement);i&&this._keyManager.updateActiveItem(i)}),this._dir?.change.pipe(pe(this._destroyed)).subscribe(e=>this._keyManager.withHorizontalOrientation(e))}_skipPredicate(e){return!e.isInteractive||e.disabled}_trackChipSetChanges(){this._chips.changes.pipe(gn(null),pe(this._destroyed)).subscribe(()=>{this.disabled&&Promise.resolve().then(()=>this._syncChipsState()),this._redirectDestroyedChipFocus()})}_trackDestroyedFocusedChip(){this.chipDestroyedChanges.pipe(pe(this._destroyed)).subscribe(e=>{const r=this._chips.toArray().indexOf(e.chip);this._isValidIndex(r)&&e.chip._hasFocus()&&(this._lastDestroyedFocusedChipIndex=r)})}_redirectDestroyedChipFocus(){if(null!=this._lastDestroyedFocusedChipIndex){if(this._chips.length){const e=Math.min(this._lastDestroyedFocusedChipIndex,this._chips.length-1),i=this._chips.toArray()[e];i.disabled?1===this._chips.length?this.focus():this._keyManager.setPreviousItemActive():i.focus()}else this.focus();this._lastDestroyedFocusedChipIndex=null}}static#e=this.\u0275fac=function(i){return new(i||t)(p(K),p(Ke),p(Xn,8))};static#t=this.\u0275cmp=ue({type:t,selectors:[["mat-chip-set"]],contentQueries:function(i,r,o){if(1&i&&Oe(o,Us,5),2&i){let s;U(s=$())&&(r._chips=s)}},hostAttrs:[1,"mat-mdc-chip-set","mdc-evolution-chip-set"],hostVars:1,hostBindings:function(i,r){1&i&&q("keydown",function(s){return r._handleKeydown(s)}),2&i&&me("role",r.role)},inputs:{disabled:[D.HasDecoratorInputTransform,"disabled","disabled",j],role:"role",tabIndex:[D.HasDecoratorInputTransform,"tabIndex","tabIndex",e=>null==e?0:Jt(e)]},standalone:!0,features:[Fe,ve],ngContentSelectors:Ow,decls:2,vars:0,consts:[["role","presentation",1,"mdc-evolution-chip-set__chips"]],template:function(i,r){1&i&&($e(),y(0,"div",0),Y(1),w())},styles:[".mdc-evolution-chip-set{display:flex}.mdc-evolution-chip-set:focus{outline:none}.mdc-evolution-chip-set__chips{display:flex;flex-flow:wrap;min-width:0}.mdc-evolution-chip-set--overflow .mdc-evolution-chip-set__chips{flex-flow:nowrap}.mdc-evolution-chip-set .mdc-evolution-chip-set__chips{margin-left:-8px;margin-right:0}[dir=rtl] .mdc-evolution-chip-set .mdc-evolution-chip-set__chips,.mdc-evolution-chip-set .mdc-evolution-chip-set__chips[dir=rtl]{margin-left:0;margin-right:-8px}.mdc-evolution-chip-set .mdc-evolution-chip{margin-left:8px;margin-right:0}[dir=rtl] .mdc-evolution-chip-set .mdc-evolution-chip,.mdc-evolution-chip-set .mdc-evolution-chip[dir=rtl]{margin-left:0;margin-right:8px}.mdc-evolution-chip-set .mdc-evolution-chip{margin-top:4px;margin-bottom:4px}.mat-mdc-chip-set .mdc-evolution-chip-set__chips{min-width:100%}.mat-mdc-chip-set-stacked{flex-direction:column;align-items:flex-start}.mat-mdc-chip-set-stacked .mat-mdc-chip{width:100%}.mat-mdc-chip-set-stacked .mdc-evolution-chip__graphic{flex-grow:0}.mat-mdc-chip-set-stacked .mdc-evolution-chip__action--primary{flex-basis:100%;justify-content:start}input.mat-mdc-chip-input{flex:1 0 150px;margin-left:8px}[dir=rtl] input.mat-mdc-chip-input{margin-left:0;margin-right:8px}"],encapsulation:2,changeDetection:0})}return t})();class Xee{constructor(n,e){this.source=n,this.value=e}}let $p=(()=>{class t extends Up{get disabled(){return this.ngControl?!!this.ngControl.disabled:this._disabled}set disabled(e){this._disabled=e,this._syncChipsState()}get id(){return this._chipInput.id}get empty(){return(!this._chipInput||this._chipInput.empty)&&(!this._chips||0===this._chips.length)}get placeholder(){return this._chipInput?this._chipInput.placeholder:this._placeholder}set placeholder(e){this._placeholder=e,this.stateChanges.next()}get focused(){return this._chipInput.focused||this._hasFocusedChip()}get required(){return this._required??this.ngControl?.control?.hasValidator(uw.required)??!1}set required(e){this._required=e,this.stateChanges.next()}get shouldLabelFloat(){return!this.empty||this.focused}get value(){return this._value}set value(e){this._value=e}get errorStateMatcher(){return this._errorStateTracker.matcher}set errorStateMatcher(e){this._errorStateTracker.matcher=e}get chipBlurChanges(){return this._getChipStream(e=>e._onBlur)}get errorState(){return this._errorStateTracker.errorState}set errorState(e){this._errorStateTracker.errorState=e}constructor(e,i,r,o,s,a,c){super(e,i,r),this.ngControl=c,this.controlType="mat-chip-grid",this._defaultRole="grid",this._ariaDescribedbyIds=[],this._onTouched=()=>{},this._onChange=()=>{},this._value=[],this.change=new G,this.valueChange=new G,this._chips=void 0,this.stateChanges=new Z,this.ngControl&&(this.ngControl.valueAccessor=this),this._errorStateTracker=new ap(a,c,s,o,this.stateChanges)}ngAfterContentInit(){this.chipBlurChanges.pipe(pe(this._destroyed)).subscribe(()=>{this._blur(),this.stateChanges.next()}),Ht(this.chipFocusChanges,this._chips.changes).pipe(pe(this._destroyed)).subscribe(()=>this.stateChanges.next())}ngAfterViewInit(){super.ngAfterViewInit()}ngDoCheck(){this.ngControl&&this.updateErrorState()}ngOnDestroy(){super.ngOnDestroy(),this.stateChanges.complete()}registerInput(e){this._chipInput=e,this._chipInput.setDescribedByIds(this._ariaDescribedbyIds)}onContainerClick(e){!this.disabled&&!this._originatesFromChip(e)&&this.focus()}focus(){this.disabled||this._chipInput.focused||(!this._chips.length||this._chips.first.disabled?Promise.resolve().then(()=>this._chipInput.focus()):this._chips.length&&this._keyManager.setFirstItemActive(),this.stateChanges.next())}setDescribedByIds(e){this._ariaDescribedbyIds=e,this._chipInput?.setDescribedByIds(e)}writeValue(e){this._value=e}registerOnChange(e){this._onChange=e}registerOnTouched(e){this._onTouched=e}setDisabledState(e){this.disabled=e,this.stateChanges.next()}updateErrorState(){this._errorStateTracker.updateErrorState()}_blur(){this.disabled||setTimeout(()=>{this.focused||(this._propagateChanges(),this._markAsTouched())})}_allowFocusEscape(){this._chipInput.focused||super._allowFocusEscape()}_handleKeydown(e){9===e.keyCode?this._chipInput.focused&&Kn(e,"shiftKey")&&this._chips.length&&!this._chips.last.disabled?(e.preventDefault(),this._keyManager.activeItem?this._keyManager.setActiveItem(this._keyManager.activeItem):this._focusLastChip()):super._allowFocusEscape():this._chipInput.focused||super._handleKeydown(e),this.stateChanges.next()}_focusLastChip(){this._chips.length&&this._chips.last.focus()}_propagateChanges(){const e=this._chips.length?this._chips.toArray().map(i=>i.value):[];this._value=e,this.change.emit(new Xee(this,e)),this.valueChange.emit(e),this._onChange(e),this._changeDetectorRef.markForCheck()}_markAsTouched(){this._onTouched(),this._changeDetectorRef.markForCheck(),this.stateChanges.next()}static#e=this.\u0275fac=function(i){return new(i||t)(p(K),p(Ke),p(Xn,8),p(Mc,8),p(Ac,8),p(cp),p(ir,10))};static#t=this.\u0275cmp=ue({type:t,selectors:[["mat-chip-grid"]],contentQueries:function(i,r,o){if(1&i&&Oe(o,_u,5),2&i){let s;U(s=$())&&(r._chips=s)}},hostAttrs:[1,"mat-mdc-chip-set","mat-mdc-chip-grid","mdc-evolution-chip-set"],hostVars:10,hostBindings:function(i,r){1&i&&q("focus",function(){return r.focus()})("blur",function(){return r._blur()}),2&i&&(me("role",r.role)("tabindex",r.disabled||r._chips&&0===r._chips.length?-1:r.tabIndex)("aria-disabled",r.disabled.toString())("aria-invalid",r.errorState),de("mat-mdc-chip-list-disabled",r.disabled)("mat-mdc-chip-list-invalid",r.errorState)("mat-mdc-chip-list-required",r.required))},inputs:{disabled:[D.HasDecoratorInputTransform,"disabled","disabled",j],placeholder:"placeholder",required:[D.HasDecoratorInputTransform,"required","required",j],value:"value",errorStateMatcher:"errorStateMatcher"},outputs:{change:"change",valueChange:"valueChange"},standalone:!0,features:[ie([{provide:Vp,useExisting:t}]),Fe,J,ve],ngContentSelectors:Ow,decls:2,vars:0,consts:[["role","presentation",1,"mdc-evolution-chip-set__chips"]],template:function(i,r){1&i&&($e(),y(0,"div",0),Y(1),w())},styles:[".mdc-evolution-chip-set{display:flex}.mdc-evolution-chip-set:focus{outline:none}.mdc-evolution-chip-set__chips{display:flex;flex-flow:wrap;min-width:0}.mdc-evolution-chip-set--overflow .mdc-evolution-chip-set__chips{flex-flow:nowrap}.mdc-evolution-chip-set .mdc-evolution-chip-set__chips{margin-left:-8px;margin-right:0}[dir=rtl] .mdc-evolution-chip-set .mdc-evolution-chip-set__chips,.mdc-evolution-chip-set .mdc-evolution-chip-set__chips[dir=rtl]{margin-left:0;margin-right:-8px}.mdc-evolution-chip-set .mdc-evolution-chip{margin-left:8px;margin-right:0}[dir=rtl] .mdc-evolution-chip-set .mdc-evolution-chip,.mdc-evolution-chip-set .mdc-evolution-chip[dir=rtl]{margin-left:0;margin-right:8px}.mdc-evolution-chip-set .mdc-evolution-chip{margin-top:4px;margin-bottom:4px}.mat-mdc-chip-set .mdc-evolution-chip-set__chips{min-width:100%}.mat-mdc-chip-set-stacked{flex-direction:column;align-items:flex-start}.mat-mdc-chip-set-stacked .mat-mdc-chip{width:100%}.mat-mdc-chip-set-stacked .mdc-evolution-chip__graphic{flex-grow:0}.mat-mdc-chip-set-stacked .mdc-evolution-chip__action--primary{flex-basis:100%;justify-content:start}input.mat-mdc-chip-input{flex:1 0 150px;margin-left:8px}[dir=rtl] input.mat-mdc-chip-input{margin-left:0;margin-right:8px}"],encapsulation:2,changeDetection:0})}return t})(),Zee=0,Vw=(()=>{class t{get chipGrid(){return this._chipGrid}set chipGrid(e){e&&(this._chipGrid=e,this._chipGrid.registerInput(this))}get disabled(){return this._disabled||this._chipGrid&&this._chipGrid.disabled}set disabled(e){this._disabled=e}get empty(){return!this.inputElement.value}constructor(e,i,r){this._elementRef=e,this.focused=!1,this.addOnBlur=!1,this.chipEnd=new G,this.placeholder="",this.id="mat-mdc-chip-list-input-"+Zee++,this._disabled=!1,this.inputElement=this._elementRef.nativeElement,this.separatorKeyCodes=i.separatorKeyCodes,r&&this.inputElement.classList.add("mat-mdc-form-field-input-control")}ngOnChanges(){this._chipGrid.stateChanges.next()}ngOnDestroy(){this.chipEnd.complete()}ngAfterContentInit(){this._focusLastChipOnBackspace=this.empty}_keydown(e){if(e){if(8===e.keyCode&&this._focusLastChipOnBackspace)return this._chipGrid._focusLastChip(),void e.preventDefault();this._focusLastChipOnBackspace=!1}this._emitChipEnd(e)}_keyup(e){!this._focusLastChipOnBackspace&&8===e.keyCode&&this.empty&&(this._focusLastChipOnBackspace=!0,e.preventDefault())}_blur(){this.addOnBlur&&this._emitChipEnd(),this.focused=!1,this._chipGrid.focused||this._chipGrid._blur(),this._chipGrid.stateChanges.next()}_focus(){this.focused=!0,this._focusLastChipOnBackspace=this.empty,this._chipGrid.stateChanges.next()}_emitChipEnd(e){(!e||this._isSeparatorKey(e))&&(this.chipEnd.emit({input:this.inputElement,value:this.inputElement.value,chipInput:this}),e?.preventDefault())}_onInput(){this._chipGrid.stateChanges.next()}focus(){this.inputElement.focus()}clear(){this.inputElement.value="",this._focusLastChipOnBackspace=!0}setDescribedByIds(e){const i=this._elementRef.nativeElement;e.length?i.setAttribute("aria-describedby",e.join(" ")):i.removeAttribute("aria-describedby")}_isSeparatorKey(e){return!Kn(e)&&new Set(this.separatorKeyCodes).has(e.keyCode)}static#e=this.\u0275fac=function(i){return new(i||t)(p(K),p(jp),p(pu,8))};static#t=this.\u0275dir=R({type:t,selectors:[["input","matChipInputFor",""]],hostAttrs:[1,"mat-mdc-chip-input","mat-mdc-input-element","mdc-text-field__input","mat-input-element"],hostVars:6,hostBindings:function(i,r){1&i&&q("keydown",function(s){return r._keydown(s)})("keyup",function(s){return r._keyup(s)})("blur",function(){return r._blur()})("focus",function(){return r._focus()})("input",function(){return r._onInput()}),2&i&&(Zi("id",r.id),me("disabled",r.disabled||null)("placeholder",r.placeholder||null)("aria-invalid",r._chipGrid&&r._chipGrid.ngControl?r._chipGrid.ngControl.invalid:null)("aria-required",r._chipGrid&&r._chipGrid.required||null)("required",r._chipGrid&&r._chipGrid.required||null))},inputs:{chipGrid:[D.None,"matChipInputFor","chipGrid"],addOnBlur:[D.HasDecoratorInputTransform,"matChipInputAddOnBlur","addOnBlur",j],separatorKeyCodes:[D.None,"matChipInputSeparatorKeyCodes","separatorKeyCodes"],placeholder:"placeholder",id:"id",disabled:[D.HasDecoratorInputTransform,"disabled","disabled",j]},outputs:{chipEnd:"matChipInputTokenEnd"},exportAs:["matChipInput","matChipInputFor"],standalone:!0,features:[Fe,Ft]})}return t})(),WF=(()=>{class t{static#e=this.\u0275fac=function(i){return new(i||t)};static#t=this.\u0275mod=ge({type:t});static#n=this.\u0275inj=he({providers:[cp,{provide:jp,useValue:{separatorKeyCodes:[13]}}],imports:[Te,eu,Te]})}return t})();function Bw(t){return!!t&&(t instanceof Ye||Qe(t.lift)&&Qe(t.subscribe))}const qp=ca(t=>function(){t(this),this.name="EmptyError",this.message="no elements in sequence"});function Gp(t){return new Ye(n=>{jn(t()).subscribe(n)})}function jw(){return Lt((t,n)=>{let e=null;t._refCount++;const i=Rt(n,void 0,void 0,void 0,()=>{if(!t||t._refCount<=0||0<--t._refCount)return void(e=null);const r=t._connection,o=e;e=null,r&&(!o||r===o)&&r.unsubscribe(),n.unsubscribe()});t.subscribe(i),i.closed||(e=t.connect())})}class Hw extends Ye{constructor(n,e){super(),this.source=n,this.subjectFactory=e,this._subject=null,this._refCount=0,this._connection=null,vD(n)&&(this.lift=n.lift)}_subscribe(n){return this.getSubject().subscribe(n)}getSubject(){const n=this._subject;return(!n||n.isStopped)&&(this._subject=this.subjectFactory()),this._subject}_teardown(){this._refCount=0;const{_connection:n}=this;this._subject=this._connection=null,n?.unsubscribe()}connect(){let n=this._connection;if(!n){n=this._connection=new Ae;const e=this.getSubject();n.add(this.source.subscribe(Rt(e,void 0,()=>{this._teardown(),e.complete()},i=>{this._teardown(),e.error(i)},()=>this._teardown()))),n.closed&&(this._connection=null,n=Ae.EMPTY)}return n}refCount(){return jw()(this)}}function Wp(t){return Lt((n,e)=>{let i=!1;n.subscribe(Rt(e,r=>{i=!0,e.next(r)},()=>{i||e.next(t),e.complete()}))})}function QF(t=Jee){return Lt((n,e)=>{let i=!1;n.subscribe(Rt(e,r=>{i=!0,e.next(r)},()=>i?e.complete():e.error(t())))})}function Jee(){return new qp}function $s(t,n){const e=arguments.length>=2;return i=>i.pipe(t?Ge((r,o)=>t(r,o,i)):go,gt(1),e?Wp(n):QF(()=>new qp))}function zw(t){return t<=0?()=>Zt:Lt((n,e)=>{let i=[];n.subscribe(Rt(e,r=>{i.push(r),t{for(const r of i)e.next(r);e.complete()},void 0,()=>{i=null}))})}const Pe="primary",bu=Symbol("RouteTitle");class ite{constructor(n){this.params=n||{}}has(n){return Object.prototype.hasOwnProperty.call(this.params,n)}get(n){if(this.has(n)){const e=this.params[n];return Array.isArray(e)?e[0]:e}return null}getAll(n){if(this.has(n)){const e=this.params[n];return Array.isArray(e)?e:[e]}return[]}get keys(){return Object.keys(this.params)}}function Oc(t){return new ite(t)}function rte(t,n,e){const i=e.path.split("/");if(i.length>t.length||"full"===e.pathMatch&&(n.hasChildren()||i.lengthi[o]===r)}return t===n}function KF(t){return t.length>0?t[t.length-1]:null}function qo(t){return Bw(t)?t:Id(t)?jt(Promise.resolve(t)):se(t)}const ste={exact:function JF(t,n,e){if(!qs(t.segments,n.segments)||!Qp(t.segments,n.segments,e)||t.numberOfChildren!==n.numberOfChildren)return!1;for(const i in n.children)if(!t.children[i]||!JF(t.children[i],n.children[i],e))return!1;return!0},subset:eP},XF={exact:function ate(t,n){return Ir(t,n)},subset:function cte(t,n){return Object.keys(n).length<=Object.keys(t).length&&Object.keys(n).every(e=>YF(t[e],n[e]))},ignored:()=>!0};function ZF(t,n,e){return ste[e.paths](t.root,n.root,e.matrixParams)&&XF[e.queryParams](t.queryParams,n.queryParams)&&!("exact"===e.fragment&&t.fragment!==n.fragment)}function eP(t,n,e){return tP(t,n,n.segments,e)}function tP(t,n,e,i){if(t.segments.length>e.length){const r=t.segments.slice(0,e.length);return!(!qs(r,e)||n.hasChildren()||!Qp(r,e,i))}if(t.segments.length===e.length){if(!qs(t.segments,e)||!Qp(t.segments,e,i))return!1;for(const r in n.children)if(!t.children[r]||!eP(t.children[r],n.children[r],i))return!1;return!0}{const r=e.slice(0,t.segments.length),o=e.slice(t.segments.length);return!!(qs(t.segments,r)&&Qp(t.segments,r,i)&&t.children[Pe])&&tP(t.children[Pe],n,o,i)}}function Qp(t,n,e){return n.every((i,r)=>XF[e](t[r].parameters,i.parameters))}class Nc{constructor(n=new _t([],{}),e={},i=null){this.root=n,this.queryParams=e,this.fragment=i}get queryParamMap(){return this._queryParamMap??=Oc(this.queryParams),this._queryParamMap}toString(){return ute.serialize(this)}}class _t{constructor(n,e){this.segments=n,this.children=e,this.parent=null,Object.values(e).forEach(i=>i.parent=this)}hasChildren(){return this.numberOfChildren>0}get numberOfChildren(){return Object.keys(this.children).length}toString(){return Yp(this)}}class vu{constructor(n,e){this.path=n,this.parameters=e}get parameterMap(){return this._parameterMap??=Oc(this.parameters),this._parameterMap}toString(){return rP(this)}}function qs(t,n){return t.length===n.length&&t.every((e,i)=>e.path===n[i].path)}let Fc=(()=>{class t{static#e=this.\u0275fac=function(i){return new(i||t)};static#t=this.\u0275prov=P({token:t,factory:()=>new $w,providedIn:"root"})}return t})();class $w{parse(n){const e=new xte(n);return new Nc(e.parseRootSegment(),e.parseQueryParams(),e.parseFragment())}serialize(n){const e=`/${yu(n.root,!0)}`,i=function mte(t){const n=Object.entries(t).map(([e,i])=>Array.isArray(i)?i.map(r=>`${Kp(e)}=${Kp(r)}`).join("&"):`${Kp(e)}=${Kp(i)}`).filter(e=>e);return n.length?`?${n.join("&")}`:""}(n.queryParams);return`${e}${i}${"string"==typeof n.fragment?`#${function hte(t){return encodeURI(t)}(n.fragment)}`:""}`}}const ute=new $w;function Yp(t){return t.segments.map(n=>rP(n)).join("/")}function yu(t,n){if(!t.hasChildren())return Yp(t);if(n){const e=t.children[Pe]?yu(t.children[Pe],!1):"",i=[];return Object.entries(t.children).forEach(([r,o])=>{r!==Pe&&i.push(`${r}:${yu(o,!1)}`)}),i.length>0?`${e}(${i.join("//")})`:e}{const e=function dte(t,n){let e=[];return Object.entries(t.children).forEach(([i,r])=>{i===Pe&&(e=e.concat(n(r,i)))}),Object.entries(t.children).forEach(([i,r])=>{i!==Pe&&(e=e.concat(n(r,i)))}),e}(t,(i,r)=>r===Pe?[yu(t.children[Pe],!1)]:[`${r}:${yu(i,!1)}`]);return 1===Object.keys(t.children).length&&null!=t.children[Pe]?`${Yp(t)}/${e[0]}`:`${Yp(t)}/(${e.join("//")})`}}function nP(t){return encodeURIComponent(t).replace(/%40/g,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",")}function Kp(t){return nP(t).replace(/%3B/gi,";")}function qw(t){return nP(t).replace(/\(/g,"%28").replace(/\)/g,"%29").replace(/%26/gi,"&")}function Xp(t){return decodeURIComponent(t)}function iP(t){return Xp(t.replace(/\+/g,"%20"))}function rP(t){return`${qw(t.path)}${function fte(t){return Object.entries(t).map(([n,e])=>`;${qw(n)}=${qw(e)}`).join("")}(t.parameters)}`}const pte=/^[^\/()?;#]+/;function Gw(t){const n=t.match(pte);return n?n[0]:""}const gte=/^[^\/()?;=#]+/,bte=/^[^=?&#]+/,yte=/^[^&#]+/;class xte{constructor(n){this.url=n,this.remaining=n}parseRootSegment(){return this.consumeOptional("/"),""===this.remaining||this.peekStartsWith("?")||this.peekStartsWith("#")?new _t([],{}):new _t([],this.parseChildren())}parseQueryParams(){const n={};if(this.consumeOptional("?"))do{this.parseQueryParam(n)}while(this.consumeOptional("&"));return n}parseFragment(){return this.consumeOptional("#")?decodeURIComponent(this.remaining):null}parseChildren(){if(""===this.remaining)return{};this.consumeOptional("/");const n=[];for(this.peekStartsWith("(")||n.push(this.parseSegment());this.peekStartsWith("/")&&!this.peekStartsWith("//")&&!this.peekStartsWith("/(");)this.capture("/"),n.push(this.parseSegment());let e={};this.peekStartsWith("/(")&&(this.capture("/"),e=this.parseParens(!0));let i={};return this.peekStartsWith("(")&&(i=this.parseParens(!1)),(n.length>0||Object.keys(e).length>0)&&(i[Pe]=new _t(n,e)),i}parseSegment(){const n=Gw(this.remaining);if(""===n&&this.peekStartsWith(";"))throw new E(4009,!1);return this.capture(n),new vu(Xp(n),this.parseMatrixParams())}parseMatrixParams(){const n={};for(;this.consumeOptional(";");)this.parseParam(n);return n}parseParam(n){const e=function _te(t){const n=t.match(gte);return n?n[0]:""}(this.remaining);if(!e)return;this.capture(e);let i="";if(this.consumeOptional("=")){const r=Gw(this.remaining);r&&(i=r,this.capture(i))}n[Xp(e)]=Xp(i)}parseQueryParam(n){const e=function vte(t){const n=t.match(bte);return n?n[0]:""}(this.remaining);if(!e)return;this.capture(e);let i="";if(this.consumeOptional("=")){const s=function wte(t){const n=t.match(yte);return n?n[0]:""}(this.remaining);s&&(i=s,this.capture(i))}const r=iP(e),o=iP(i);if(n.hasOwnProperty(r)){let s=n[r];Array.isArray(s)||(s=[s],n[r]=s),s.push(o)}else n[r]=o}parseParens(n){const e={};for(this.capture("(");!this.consumeOptional(")")&&this.remaining.length>0;){const i=Gw(this.remaining),r=this.remaining[i.length];if("/"!==r&&")"!==r&&";"!==r)throw new E(4010,!1);let o;i.indexOf(":")>-1?(o=i.slice(0,i.indexOf(":")),this.capture(o),this.capture(":")):n&&(o=Pe);const s=this.parseChildren();e[o]=1===Object.keys(s).length?s[Pe]:new _t([],s),this.consumeOptional("//")}return e}peekStartsWith(n){return this.remaining.startsWith(n)}consumeOptional(n){return!!this.peekStartsWith(n)&&(this.remaining=this.remaining.substring(n.length),!0)}capture(n){if(!this.consumeOptional(n))throw new E(4011,!1)}}function oP(t){return t.segments.length>0?new _t([],{[Pe]:t}):t}function sP(t){const n={};for(const[i,r]of Object.entries(t.children)){const o=sP(r);if(i===Pe&&0===o.segments.length&&o.hasChildren())for(const[s,a]of Object.entries(o.children))n[s]=a;else(o.segments.length>0||o.hasChildren())&&(n[i]=o)}return function Cte(t){if(1===t.numberOfChildren&&t.children[Pe]){const n=t.children[Pe];return new _t(t.segments.concat(n.segments),n.children)}return t}(new _t(t.segments,n))}function Pc(t){return t instanceof Nc}function aP(t){let n;const r=oP(function e(o){const s={};for(const c of o.children){const l=e(c);s[c.outlet]=l}const a=new _t(o.url,s);return o===t&&(n=a),a}(t.root));return n??r}function cP(t,n,e,i){let r=t;for(;r.parent;)r=r.parent;if(0===n.length)return Ww(r,r,r,e,i);const o=function Ete(t){if("string"==typeof t[0]&&1===t.length&&"/"===t[0])return new dP(!0,0,t);let n=0,e=!1;const i=t.reduce((r,o,s)=>{if("object"==typeof o&&null!=o){if(o.outlets){const a={};return Object.entries(o.outlets).forEach(([c,l])=>{a[c]="string"==typeof l?l.split("/"):l}),[...r,{outlets:a}]}if(o.segmentPath)return[...r,o.segmentPath]}return"string"!=typeof o?[...r,o]:0===s?(o.split("/").forEach((a,c)=>{0==c&&"."===a||(0==c&&""===a?e=!0:".."===a?n++:""!=a&&r.push(a))}),r):[...r,o]},[]);return new dP(e,n,i)}(n);if(o.toRoot())return Ww(r,r,new _t([],{}),e,i);const s=function kte(t,n,e){if(t.isAbsolute)return new Jp(n,!0,0);if(!e)return new Jp(n,!1,NaN);if(null===e.parent)return new Jp(e,!0,0);const i=Zp(t.commands[0])?0:1;return function Tte(t,n,e){let i=t,r=n,o=e;for(;o>r;){if(o-=r,i=i.parent,!i)throw new E(4005,!1);r=i.segments.length}return new Jp(i,!1,r-o)}(e,e.segments.length-1+i,t.numberOfDoubleDots)}(o,r,t),a=s.processChildren?xu(s.segmentGroup,s.index,o.commands):uP(s.segmentGroup,s.index,o.commands);return Ww(r,s.segmentGroup,a,e,i)}function Zp(t){return"object"==typeof t&&null!=t&&!t.outlets&&!t.segmentPath}function wu(t){return"object"==typeof t&&null!=t&&t.outlets}function Ww(t,n,e,i,r){let s,o={};i&&Object.entries(i).forEach(([c,l])=>{o[c]=Array.isArray(l)?l.map(d=>`${d}`):`${l}`}),s=t===n?e:lP(t,n,e);const a=oP(sP(s));return new Nc(a,o,r)}function lP(t,n,e){const i={};return Object.entries(t.children).forEach(([r,o])=>{i[r]=o===n?e:lP(o,n,e)}),new _t(t.segments,i)}class dP{constructor(n,e,i){if(this.isAbsolute=n,this.numberOfDoubleDots=e,this.commands=i,n&&i.length>0&&Zp(i[0]))throw new E(4003,!1);const r=i.find(wu);if(r&&r!==KF(i))throw new E(4004,!1)}toRoot(){return this.isAbsolute&&1===this.commands.length&&"/"==this.commands[0]}}class Jp{constructor(n,e,i){this.segmentGroup=n,this.processChildren=e,this.index=i}}function uP(t,n,e){if(t??=new _t([],{}),0===t.segments.length&&t.hasChildren())return xu(t,n,e);const i=function Mte(t,n,e){let i=0,r=n;const o={match:!1,pathIndex:0,commandIndex:0};for(;r=e.length)return o;const s=t.segments[r],a=e[i];if(wu(a))break;const c=`${a}`,l=i0&&void 0===c)break;if(c&&l&&"object"==typeof l&&void 0===l.outlets){if(!fP(c,l,s))return o;i+=2}else{if(!fP(c,{},s))return o;i++}r++}return{match:!0,pathIndex:r,commandIndex:i}}(t,n,e),r=e.slice(i.commandIndex);if(i.match&&i.pathIndexo!==Pe)&&t.children[Pe]&&1===t.numberOfChildren&&0===t.children[Pe].segments.length){const o=xu(t.children[Pe],n,e);return new _t(t.segments,o.children)}return Object.entries(i).forEach(([o,s])=>{"string"==typeof s&&(s=[s]),null!==s&&(r[o]=uP(t.children[o],n,s))}),Object.entries(t.children).forEach(([o,s])=>{void 0===i[o]&&(r[o]=s)}),new _t(t.segments,r)}}function Qw(t,n,e){const i=t.segments.slice(0,n);let r=0;for(;r{"string"==typeof i&&(i=[i]),null!==i&&(n[e]=Qw(new _t([],{}),0,i))}),n}function hP(t){const n={};return Object.entries(t).forEach(([e,i])=>n[e]=`${i}`),n}function fP(t,n,e){return t==e.path&&Ir(n,e.parameters)}const Cu="imperative";var We=function(t){return t[t.NavigationStart=0]="NavigationStart",t[t.NavigationEnd=1]="NavigationEnd",t[t.NavigationCancel=2]="NavigationCancel",t[t.NavigationError=3]="NavigationError",t[t.RoutesRecognized=4]="RoutesRecognized",t[t.ResolveStart=5]="ResolveStart",t[t.ResolveEnd=6]="ResolveEnd",t[t.GuardsCheckStart=7]="GuardsCheckStart",t[t.GuardsCheckEnd=8]="GuardsCheckEnd",t[t.RouteConfigLoadStart=9]="RouteConfigLoadStart",t[t.RouteConfigLoadEnd=10]="RouteConfigLoadEnd",t[t.ChildActivationStart=11]="ChildActivationStart",t[t.ChildActivationEnd=12]="ChildActivationEnd",t[t.ActivationStart=13]="ActivationStart",t[t.ActivationEnd=14]="ActivationEnd",t[t.Scroll=15]="Scroll",t[t.NavigationSkipped=16]="NavigationSkipped",t}(We||{});class Ar{constructor(n,e){this.id=n,this.url=e}}class eg extends Ar{constructor(n,e,i="imperative",r=null){super(n,e),this.type=We.NavigationStart,this.navigationTrigger=i,this.restoredState=r}toString(){return`NavigationStart(id: ${this.id}, url: '${this.url}')`}}class so extends Ar{constructor(n,e,i){super(n,e),this.urlAfterRedirects=i,this.type=We.NavigationEnd}toString(){return`NavigationEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}')`}}var Ti=function(t){return t[t.Redirect=0]="Redirect",t[t.SupersededByNewNavigation=1]="SupersededByNewNavigation",t[t.NoDataFromResolver=2]="NoDataFromResolver",t[t.GuardRejected=3]="GuardRejected",t}(Ti||{}),tg=function(t){return t[t.IgnoredSameUrlNavigation=0]="IgnoredSameUrlNavigation",t[t.IgnoredByUrlHandlingStrategy=1]="IgnoredByUrlHandlingStrategy",t}(tg||{});class Lc extends Ar{constructor(n,e,i,r){super(n,e),this.reason=i,this.code=r,this.type=We.NavigationCancel}toString(){return`NavigationCancel(id: ${this.id}, url: '${this.url}')`}}class Vc extends Ar{constructor(n,e,i,r){super(n,e),this.reason=i,this.code=r,this.type=We.NavigationSkipped}}class ng extends Ar{constructor(n,e,i,r){super(n,e),this.error=i,this.target=r,this.type=We.NavigationError}toString(){return`NavigationError(id: ${this.id}, url: '${this.url}', error: ${this.error})`}}class mP extends Ar{constructor(n,e,i,r){super(n,e),this.urlAfterRedirects=i,this.state=r,this.type=We.RoutesRecognized}toString(){return`RoutesRecognized(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class Ate extends Ar{constructor(n,e,i,r){super(n,e),this.urlAfterRedirects=i,this.state=r,this.type=We.GuardsCheckStart}toString(){return`GuardsCheckStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class Rte extends Ar{constructor(n,e,i,r,o){super(n,e),this.urlAfterRedirects=i,this.state=r,this.shouldActivate=o,this.type=We.GuardsCheckEnd}toString(){return`GuardsCheckEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state}, shouldActivate: ${this.shouldActivate})`}}class Ote extends Ar{constructor(n,e,i,r){super(n,e),this.urlAfterRedirects=i,this.state=r,this.type=We.ResolveStart}toString(){return`ResolveStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class Nte extends Ar{constructor(n,e,i,r){super(n,e),this.urlAfterRedirects=i,this.state=r,this.type=We.ResolveEnd}toString(){return`ResolveEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class Fte{constructor(n){this.route=n,this.type=We.RouteConfigLoadStart}toString(){return`RouteConfigLoadStart(path: ${this.route.path})`}}class Pte{constructor(n){this.route=n,this.type=We.RouteConfigLoadEnd}toString(){return`RouteConfigLoadEnd(path: ${this.route.path})`}}class Lte{constructor(n){this.snapshot=n,this.type=We.ChildActivationStart}toString(){return`ChildActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class Vte{constructor(n){this.snapshot=n,this.type=We.ChildActivationEnd}toString(){return`ChildActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class Bte{constructor(n){this.snapshot=n,this.type=We.ActivationStart}toString(){return`ActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class jte{constructor(n){this.snapshot=n,this.type=We.ActivationEnd}toString(){return`ActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class pP{constructor(n,e,i){this.routerEvent=n,this.position=e,this.anchor=i,this.type=We.Scroll}toString(){return`Scroll(anchor: '${this.anchor}', position: '${this.position?`${this.position[0]}, ${this.position[1]}`:null}')`}}class Yw{}class Kw{constructor(n){this.url=n}}class Hte{constructor(){this.outlet=null,this.route=null,this.injector=null,this.children=new Du,this.attachRef=null}}let Du=(()=>{class t{constructor(){this.contexts=new Map}onChildOutletCreated(e,i){const r=this.getOrCreateContext(e);r.outlet=i,this.contexts.set(e,r)}onChildOutletDestroyed(e){const i=this.getContext(e);i&&(i.outlet=null,i.attachRef=null)}onOutletDeactivated(){const e=this.contexts;return this.contexts=new Map,e}onOutletReAttached(e){this.contexts=e}getOrCreateContext(e){let i=this.getContext(e);return i||(i=new Hte,this.contexts.set(e,i)),i}getContext(e){return this.contexts.get(e)||null}static#e=this.\u0275fac=function(i){return new(i||t)};static#t=this.\u0275prov=P({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();class gP{constructor(n){this._root=n}get root(){return this._root.value}parent(n){const e=this.pathFromRoot(n);return e.length>1?e[e.length-2]:null}children(n){const e=Xw(n,this._root);return e?e.children.map(i=>i.value):[]}firstChild(n){const e=Xw(n,this._root);return e&&e.children.length>0?e.children[0].value:null}siblings(n){const e=Zw(n,this._root);return e.length<2?[]:e[e.length-2].children.map(r=>r.value).filter(r=>r!==n)}pathFromRoot(n){return Zw(n,this._root).map(e=>e.value)}}function Xw(t,n){if(t===n.value)return n;for(const e of n.children){const i=Xw(t,e);if(i)return i}return null}function Zw(t,n){if(t===n.value)return[n];for(const e of n.children){const i=Zw(t,e);if(i.length)return i.unshift(n),i}return[]}class rr{constructor(n,e){this.value=n,this.children=e}toString(){return`TreeNode(${this.value})`}}function Bc(t){const n={};return t&&t.children.forEach(e=>n[e.value.outlet]=e),n}class _P extends gP{constructor(n,e){super(n),this.snapshot=e,tx(this,n)}toString(){return this.snapshot.toString()}}function bP(t){const n=function zte(t){const o=new ex([],{},{},"",{},Pe,t,null,{});return new vP("",new rr(o,[]))}(t),e=new ct([new vu("",{})]),i=new ct({}),r=new ct({}),o=new ct({}),s=new ct(""),a=new jc(e,i,o,s,r,Pe,t,n.root);return a.snapshot=n.root,new _P(new rr(a,[]),n)}class jc{constructor(n,e,i,r,o,s,a,c){this.urlSubject=n,this.paramsSubject=e,this.queryParamsSubject=i,this.fragmentSubject=r,this.dataSubject=o,this.outlet=s,this.component=a,this._futureSnapshot=c,this.title=this.dataSubject?.pipe(ne(l=>l[bu]))??se(void 0),this.url=n,this.params=e,this.queryParams=i,this.fragment=r,this.data=o}get routeConfig(){return this._futureSnapshot.routeConfig}get root(){return this._routerState.root}get parent(){return this._routerState.parent(this)}get firstChild(){return this._routerState.firstChild(this)}get children(){return this._routerState.children(this)}get pathFromRoot(){return this._routerState.pathFromRoot(this)}get paramMap(){return this._paramMap??=this.params.pipe(ne(n=>Oc(n))),this._paramMap}get queryParamMap(){return this._queryParamMap??=this.queryParams.pipe(ne(n=>Oc(n))),this._queryParamMap}toString(){return this.snapshot?this.snapshot.toString():`Future(${this._futureSnapshot})`}}function Jw(t,n,e="emptyOnly"){let i;const{routeConfig:r}=t;return i=null===n||"always"!==e&&""!==r?.path&&(n.component||n.routeConfig?.loadComponent)?{params:{...t.params},data:{...t.data},resolve:{...t.data,...t._resolvedData??{}}}:{params:{...n.params,...t.params},data:{...n.data,...t.data},resolve:{...t.data,...n.data,...r?.data,...t._resolvedData}},r&&wP(r)&&(i.resolve[bu]=r.title),i}class ex{get title(){return this.data?.[bu]}constructor(n,e,i,r,o,s,a,c,l){this.url=n,this.params=e,this.queryParams=i,this.fragment=r,this.data=o,this.outlet=s,this.component=a,this.routeConfig=c,this._resolve=l}get root(){return this._routerState.root}get parent(){return this._routerState.parent(this)}get firstChild(){return this._routerState.firstChild(this)}get children(){return this._routerState.children(this)}get pathFromRoot(){return this._routerState.pathFromRoot(this)}get paramMap(){return this._paramMap??=Oc(this.params),this._paramMap}get queryParamMap(){return this._queryParamMap??=Oc(this.queryParams),this._queryParamMap}toString(){return`Route(url:'${this.url.map(i=>i.toString()).join("/")}', path:'${this.routeConfig?this.routeConfig.path:""}')`}}class vP extends gP{constructor(n,e){super(e),this.url=n,tx(this,e)}toString(){return yP(this._root)}}function tx(t,n){n.value._routerState=t,n.children.forEach(e=>tx(t,e))}function yP(t){const n=t.children.length>0?` { ${t.children.map(yP).join(", ")} } `:"";return`${t.value}${n}`}function nx(t){if(t.snapshot){const n=t.snapshot,e=t._futureSnapshot;t.snapshot=e,Ir(n.queryParams,e.queryParams)||t.queryParamsSubject.next(e.queryParams),n.fragment!==e.fragment&&t.fragmentSubject.next(e.fragment),Ir(n.params,e.params)||t.paramsSubject.next(e.params),function ote(t,n){if(t.length!==n.length)return!1;for(let e=0;eIr(e.parameters,n[i].parameters))}(t.url,n.url);return e&&!(!t.parent!=!n.parent)&&(!t.parent||ix(t.parent,n.parent))}function wP(t){return"string"==typeof t.title||null===t.title}let rx=(()=>{class t{constructor(){this.activated=null,this._activatedRoute=null,this.name=Pe,this.activateEvents=new G,this.deactivateEvents=new G,this.attachEvents=new G,this.detachEvents=new G,this.parentContexts=T(Du),this.location=T(Tt),this.changeDetector=T(Ke),this.environmentInjector=T(ni),this.inputBinder=T(ig,{optional:!0}),this.supportsBindingToComponentInputs=!0}get activatedComponentRef(){return this.activated}ngOnChanges(e){if(e.name){const{firstChange:i,previousValue:r}=e.name;if(i)return;this.isTrackedInParentContexts(r)&&(this.deactivate(),this.parentContexts.onChildOutletDestroyed(r)),this.initializeOutletWithName()}}ngOnDestroy(){this.isTrackedInParentContexts(this.name)&&this.parentContexts.onChildOutletDestroyed(this.name),this.inputBinder?.unsubscribeFromRouteData(this)}isTrackedInParentContexts(e){return this.parentContexts.getContext(e)?.outlet===this}ngOnInit(){this.initializeOutletWithName()}initializeOutletWithName(){if(this.parentContexts.onChildOutletCreated(this.name,this),this.activated)return;const e=this.parentContexts.getContext(this.name);e?.route&&(e.attachRef?this.attach(e.attachRef,e.route):this.activateWith(e.route,e.injector))}get isActivated(){return!!this.activated}get component(){if(!this.activated)throw new E(4012,!1);return this.activated.instance}get activatedRoute(){if(!this.activated)throw new E(4012,!1);return this._activatedRoute}get activatedRouteData(){return this._activatedRoute?this._activatedRoute.snapshot.data:{}}detach(){if(!this.activated)throw new E(4012,!1);this.location.detach();const e=this.activated;return this.activated=null,this._activatedRoute=null,this.detachEvents.emit(e.instance),e}attach(e,i){this.activated=e,this._activatedRoute=i,this.location.insert(e.hostView),this.inputBinder?.bindActivatedRouteToOutletComponent(this),this.attachEvents.emit(e.instance)}deactivate(){if(this.activated){const e=this.component;this.activated.destroy(),this.activated=null,this._activatedRoute=null,this.deactivateEvents.emit(e)}}activateWith(e,i){if(this.isActivated)throw new E(4013,!1);this._activatedRoute=e;const r=this.location,s=e.snapshot.component,a=this.parentContexts.getOrCreateContext(this.name).children,c=new ox(e,a,r.injector);this.activated=r.createComponent(s,{index:r.length,injector:c,environmentInjector:i??this.environmentInjector}),this.changeDetector.markForCheck(),this.inputBinder?.bindActivatedRouteToOutletComponent(this),this.activateEvents.emit(this.activated.instance)}static#e=this.\u0275fac=function(i){return new(i||t)};static#t=this.\u0275dir=R({type:t,selectors:[["router-outlet"]],inputs:{name:"name"},outputs:{activateEvents:"activate",deactivateEvents:"deactivate",attachEvents:"attach",detachEvents:"detach"},exportAs:["outlet"],standalone:!0,features:[Ft]})}return t})();class ox{__ngOutletInjector(n){return new ox(this.route,this.childContexts,n)}constructor(n,e,i){this.route=n,this.childContexts=e,this.parent=i}get(n,e){return n===jc?this.route:n===Du?this.childContexts:this.parent.get(n,e)}}const ig=new M("");let xP=(()=>{class t{constructor(){this.outletDataSubscriptions=new Map}bindActivatedRouteToOutletComponent(e){this.unsubscribeFromRouteData(e),this.subscribeToRouteData(e)}unsubscribeFromRouteData(e){this.outletDataSubscriptions.get(e)?.unsubscribe(),this.outletDataSubscriptions.delete(e)}subscribeToRouteData(e){const{activatedRoute:i}=e,r=Fs([i.queryParams,i.params,i.data]).pipe(nn(([o,s,a],c)=>(a={...o,...s,...a},0===c?se(a):Promise.resolve(a)))).subscribe(o=>{if(!e.isActivated||!e.activatedComponentRef||e.activatedRoute!==i||null===i.component)return void this.unsubscribeFromRouteData(e);const s=function e6(t){const n=Ve(t);if(!n)return null;const e=new hd(n);return{get selector(){return e.selector},get type(){return e.componentType},get inputs(){return e.inputs},get outputs(){return e.outputs},get ngContentSelectors(){return e.ngContentSelectors},get isStandalone(){return n.standalone},get isSignal(){return n.signals}}}(i.component);if(s)for(const{templateName:a}of s.inputs)e.activatedComponentRef.setInput(a,o[a]);else this.unsubscribeFromRouteData(e)});this.outletDataSubscriptions.set(e,r)}static#e=this.\u0275fac=function(i){return new(i||t)};static#t=this.\u0275prov=P({token:t,factory:t.\u0275fac})}return t})();function Eu(t,n,e){if(e&&t.shouldReuseRoute(n.value,e.value.snapshot)){const i=e.value;i._futureSnapshot=n.value;const r=function $te(t,n,e){return n.children.map(i=>{for(const r of e.children)if(t.shouldReuseRoute(i.value,r.value.snapshot))return Eu(t,i,r);return Eu(t,i)})}(t,n,e);return new rr(i,r)}{if(t.shouldAttach(n.value)){const o=t.retrieve(n.value);if(null!==o){const s=o.route;return s.value._futureSnapshot=n.value,s.children=n.children.map(a=>Eu(t,a)),s}}const i=function qte(t){return new jc(new ct(t.url),new ct(t.params),new ct(t.queryParams),new ct(t.fragment),new ct(t.data),t.outlet,t.component,t)}(n.value),r=n.children.map(o=>Eu(t,o));return new rr(i,r)}}const CP="ngNavigationCancelingError";function DP(t,n){const{redirectTo:e,navigationBehaviorOptions:i}=Pc(n)?{redirectTo:n,navigationBehaviorOptions:void 0}:n,r=EP(!1,Ti.Redirect);return r.url=e,r.navigationBehaviorOptions=i,r}function EP(t,n){const e=new Error(`NavigationCancelingError: ${t||""}`);return e[CP]=!0,e.cancellationCode=n,e}function kP(t){return!!t&&t[CP]}let TP=(()=>{class t{static#e=this.\u0275fac=function(i){return new(i||t)};static#t=this.\u0275cmp=ue({type:t,selectors:[["ng-component"]],standalone:!0,features:[ve],decls:1,vars:0,template:function(i,r){1&i&&re(0,"router-outlet")},dependencies:[rx],encapsulation:2})}return t})();function sx(t){const n=t.children&&t.children.map(sx),e=n?{...t,children:n}:{...t};return!e.component&&!e.loadComponent&&(n||e.loadChildren)&&e.outlet&&e.outlet!==Pe&&(e.component=TP),e}function Rr(t){return t.outlet||Pe}function ku(t){if(!t)return null;if(t.routeConfig?._injector)return t.routeConfig._injector;for(let n=t.parent;n;n=n.parent){const e=n.routeConfig;if(e?._loadedInjector)return e._loadedInjector;if(e?._injector)return e._injector}return null}class Jte{constructor(n,e,i,r,o){this.routeReuseStrategy=n,this.futureState=e,this.currState=i,this.forwardEvent=r,this.inputBindingEnabled=o}activate(n){const e=this.futureState._root,i=this.currState?this.currState._root:null;this.deactivateChildRoutes(e,i,n),nx(this.futureState.root),this.activateChildRoutes(e,i,n)}deactivateChildRoutes(n,e,i){const r=Bc(e);n.children.forEach(o=>{const s=o.value.outlet;this.deactivateRoutes(o,r[s],i),delete r[s]}),Object.values(r).forEach(o=>{this.deactivateRouteAndItsChildren(o,i)})}deactivateRoutes(n,e,i){const r=n.value,o=e?e.value:null;if(r===o)if(r.component){const s=i.getContext(r.outlet);s&&this.deactivateChildRoutes(n,e,s.children)}else this.deactivateChildRoutes(n,e,i);else o&&this.deactivateRouteAndItsChildren(e,i)}deactivateRouteAndItsChildren(n,e){n.value.component&&this.routeReuseStrategy.shouldDetach(n.value.snapshot)?this.detachAndStoreRouteSubtree(n,e):this.deactivateRouteAndOutlet(n,e)}detachAndStoreRouteSubtree(n,e){const i=e.getContext(n.value.outlet),r=i&&n.value.component?i.children:e,o=Bc(n);for(const s of Object.values(o))this.deactivateRouteAndItsChildren(s,r);if(i&&i.outlet){const s=i.outlet.detach(),a=i.children.onOutletDeactivated();this.routeReuseStrategy.store(n.value.snapshot,{componentRef:s,route:n,contexts:a})}}deactivateRouteAndOutlet(n,e){const i=e.getContext(n.value.outlet),r=i&&n.value.component?i.children:e,o=Bc(n);for(const s of Object.values(o))this.deactivateRouteAndItsChildren(s,r);i&&(i.outlet&&(i.outlet.deactivate(),i.children.onOutletDeactivated()),i.attachRef=null,i.route=null)}activateChildRoutes(n,e,i){const r=Bc(e);n.children.forEach(o=>{this.activateRoutes(o,r[o.value.outlet],i),this.forwardEvent(new jte(o.value.snapshot))}),n.children.length&&this.forwardEvent(new Vte(n.value.snapshot))}activateRoutes(n,e,i){const r=n.value,o=e?e.value:null;if(nx(r),r===o)if(r.component){const s=i.getOrCreateContext(r.outlet);this.activateChildRoutes(n,e,s.children)}else this.activateChildRoutes(n,e,i);else if(r.component){const s=i.getOrCreateContext(r.outlet);if(this.routeReuseStrategy.shouldAttach(r.snapshot)){const a=this.routeReuseStrategy.retrieve(r.snapshot);this.routeReuseStrategy.store(r.snapshot,null),s.children.onOutletReAttached(a.contexts),s.attachRef=a.componentRef,s.route=a.route.value,s.outlet&&s.outlet.attach(a.componentRef,a.route.value),nx(a.route.value),this.activateChildRoutes(n,null,s.children)}else{const a=ku(r.snapshot);s.attachRef=null,s.route=r,s.injector=a,s.outlet&&s.outlet.activateWith(r,s.injector),this.activateChildRoutes(n,null,s.children)}}else this.activateChildRoutes(n,null,i)}}class SP{constructor(n){this.path=n,this.route=this.path[this.path.length-1]}}class rg{constructor(n,e){this.component=n,this.route=e}}function ene(t,n,e){const i=t._root;return Tu(i,n?n._root:null,e,[i.value])}function Hc(t,n){const e=Symbol(),i=n.get(t,e);return i===e?"function"!=typeof t||function GB(t){return null!==vh(t)}(t)?n.get(t):t:i}function Tu(t,n,e,i,r={canDeactivateChecks:[],canActivateChecks:[]}){const o=Bc(n);return t.children.forEach(s=>{(function nne(t,n,e,i,r={canDeactivateChecks:[],canActivateChecks:[]}){const o=t.value,s=n?n.value:null,a=e?e.getContext(t.value.outlet):null;if(s&&o.routeConfig===s.routeConfig){const c=function ine(t,n,e){if("function"==typeof e)return e(t,n);switch(e){case"pathParamsChange":return!qs(t.url,n.url);case"pathParamsOrQueryParamsChange":return!qs(t.url,n.url)||!Ir(t.queryParams,n.queryParams);case"always":return!0;case"paramsOrQueryParamsChange":return!ix(t,n)||!Ir(t.queryParams,n.queryParams);default:return!ix(t,n)}}(s,o,o.routeConfig.runGuardsAndResolvers);c?r.canActivateChecks.push(new SP(i)):(o.data=s.data,o._resolvedData=s._resolvedData),Tu(t,n,o.component?a?a.children:null:e,i,r),c&&a&&a.outlet&&a.outlet.isActivated&&r.canDeactivateChecks.push(new rg(a.outlet.component,s))}else s&&Su(n,a,r),r.canActivateChecks.push(new SP(i)),Tu(t,null,o.component?a?a.children:null:e,i,r)})(s,o[s.value.outlet],e,i.concat([s.value]),r),delete o[s.value.outlet]}),Object.entries(o).forEach(([s,a])=>Su(a,e.getContext(s),r)),r}function Su(t,n,e){const i=Bc(t),r=t.value;Object.entries(i).forEach(([o,s])=>{Su(s,r.component?n?n.children.getContext(o):null:n,e)}),e.canDeactivateChecks.push(new rg(r.component&&n&&n.outlet&&n.outlet.isActivated?n.outlet.component:null,r))}function Mu(t){return"function"==typeof t}function MP(t){return t instanceof qp||"EmptyError"===t?.name}const og=Symbol("INITIAL_VALUE");function zc(){return nn(t=>Fs(t.map(n=>n.pipe(gt(1),gn(og)))).pipe(ne(n=>{for(const e of n)if(!0!==e){if(e===og)return og;if(!1===e||e instanceof Nc)return e}return!0}),Ge(n=>n!==og),gt(1)))}function IP(t){return function PB(...t){return gD(t)}(pt(n=>{if(Pc(n))throw DP(0,n)}),ne(n=>!0===n))}class ax{constructor(n){this.segmentGroup=n||null}}class cx extends Error{constructor(n){super(),this.urlTree=n}}function Uc(t){return nu(new ax(t))}class xne{constructor(n,e){this.urlSerializer=n,this.urlTree=e}lineralizeSegments(n,e){let i=[],r=e.root;for(;;){if(i=i.concat(r.segments),0===r.numberOfChildren)return se(i);if(r.numberOfChildren>1||!r.children[Pe])return nu(new E(4e3,!1));r=r.children[Pe]}}applyRedirectCommands(n,e,i){const r=this.applyRedirectCreateUrlTree(e,this.urlSerializer.parse(e),n,i);if(e.startsWith("/"))throw new cx(r);return r}applyRedirectCreateUrlTree(n,e,i,r){const o=this.createSegmentGroup(n,e.root,i,r);return new Nc(o,this.createQueryParams(e.queryParams,this.urlTree.queryParams),e.fragment)}createQueryParams(n,e){const i={};return Object.entries(n).forEach(([r,o])=>{if("string"==typeof o&&o.startsWith(":")){const a=o.substring(1);i[r]=e[a]}else i[r]=o}),i}createSegmentGroup(n,e,i,r){const o=this.createSegments(n,e.segments,i,r);let s={};return Object.entries(e.children).forEach(([a,c])=>{s[a]=this.createSegmentGroup(n,c,i,r)}),new _t(o,s)}createSegments(n,e,i,r){return e.map(o=>o.path.startsWith(":")?this.findPosParam(n,o,r):this.findOrReturn(o,i))}findPosParam(n,e,i){const r=i[e.path.substring(1)];if(!r)throw new E(4001,!1);return r}findOrReturn(n,e){let i=0;for(const r of e){if(r.path===n.path)return e.splice(i),r;i++}return n}}const lx={matched:!1,consumedSegments:[],remainingSegments:[],parameters:{},positionalParamSegments:{}};function Cne(t,n,e,i,r){const o=dx(t,n,e);return o.matched?(i=function Wte(t,n){return t.providers&&!t._injector&&(t._injector=Of(t.providers,n,`Route: ${t.path}`)),t._injector??n}(n,i),function vne(t,n,e,i){const r=n.canMatch;return r&&0!==r.length?se(r.map(s=>{const a=Hc(s,t);return qo(function lne(t){return t&&Mu(t.canMatch)}(a)?a.canMatch(n,e):ur(t,()=>a(n,e)))})).pipe(zc(),IP()):se(!0)}(i,n,e).pipe(ne(s=>!0===s?o:{...lx}))):se(o)}function dx(t,n,e){if("**"===n.path)return function Dne(t){return{matched:!0,parameters:t.length>0?KF(t).parameters:{},consumedSegments:t,remainingSegments:[],positionalParamSegments:{}}}(e);if(""===n.path)return"full"===n.pathMatch&&(t.hasChildren()||e.length>0)?{...lx}:{matched:!0,consumedSegments:[],remainingSegments:e,parameters:{},positionalParamSegments:{}};const r=(n.matcher||rte)(e,t,n);if(!r)return{...lx};const o={};Object.entries(r.posParams??{}).forEach(([a,c])=>{o[a]=c.path});const s=r.consumed.length>0?{...o,...r.consumed[r.consumed.length-1].parameters}:o;return{matched:!0,consumedSegments:r.consumed,remainingSegments:e.slice(r.consumed.length),parameters:s,positionalParamSegments:r.posParams??{}}}function AP(t,n,e,i){return e.length>0&&function Tne(t,n,e){return e.some(i=>sg(t,n,i)&&Rr(i)!==Pe)}(t,e,i)?{segmentGroup:new _t(n,kne(i,new _t(e,t.children))),slicedSegments:[]}:0===e.length&&function Sne(t,n,e){return e.some(i=>sg(t,n,i))}(t,e,i)?{segmentGroup:new _t(t.segments,Ene(t,e,i,t.children)),slicedSegments:e}:{segmentGroup:new _t(t.segments,t.children),slicedSegments:e}}function Ene(t,n,e,i){const r={};for(const o of e)if(sg(t,n,o)&&!i[Rr(o)]){const s=new _t([],{});r[Rr(o)]=s}return{...i,...r}}function kne(t,n){const e={};e[Pe]=n;for(const i of t)if(""===i.path&&Rr(i)!==Pe){const r=new _t([],{});e[Rr(i)]=r}return e}function sg(t,n,e){return(!(t.hasChildren()||n.length>0)||"full"!==e.pathMatch)&&""===e.path}class Ane{}class Nne{constructor(n,e,i,r,o,s,a){this.injector=n,this.configLoader=e,this.rootComponentType=i,this.config=r,this.urlTree=o,this.paramsInheritanceStrategy=s,this.urlSerializer=a,this.applyRedirects=new xne(this.urlSerializer,this.urlTree),this.absoluteRedirectCount=0,this.allowRedirects=!0}noMatchError(n){return new E(4002,`'${n.segmentGroup}'`)}recognize(){const n=AP(this.urlTree.root,[],[],this.config).segmentGroup;return this.match(n).pipe(ne(e=>{const i=new ex([],Object.freeze({}),Object.freeze({...this.urlTree.queryParams}),this.urlTree.fragment,{},Pe,this.rootComponentType,null,{}),r=new rr(i,e),o=new vP("",r),s=function Dte(t,n,e=null,i=null){return cP(aP(t),n,e,i)}(i,[],this.urlTree.queryParams,this.urlTree.fragment);return s.queryParams=this.urlTree.queryParams,o.url=this.urlSerializer.serialize(s),this.inheritParamsAndData(o._root,null),{state:o,tree:s}}))}match(n){return this.processSegmentGroup(this.injector,this.config,n,Pe).pipe(di(i=>{if(i instanceof cx)return this.urlTree=i.urlTree,this.match(i.urlTree.root);throw i instanceof ax?this.noMatchError(i):i}))}inheritParamsAndData(n,e){const i=n.value,r=Jw(i,e,this.paramsInheritanceStrategy);i.params=Object.freeze(r.params),i.data=Object.freeze(r.data),n.children.forEach(o=>this.inheritParamsAndData(o,i))}processSegmentGroup(n,e,i,r){return 0===i.segments.length&&i.hasChildren()?this.processChildren(n,e,i):this.processSegment(n,e,i,i.segments,r,!0).pipe(ne(o=>o instanceof rr?[o]:[]))}processChildren(n,e,i){const r=[];for(const o of Object.keys(i.children))"primary"===o?r.unshift(o):r.push(o);return jt(r).pipe(pc(o=>{const s=i.children[o],a=function Xte(t,n){const e=t.filter(i=>Rr(i)===n);return e.push(...t.filter(i=>Rr(i)!==n)),e}(e,o);return this.processSegmentGroup(n,a,s,o)}),function tte(t,n){return Lt(function ete(t,n,e,i,r){return(o,s)=>{let a=e,c=n,l=0;o.subscribe(Rt(s,d=>{const u=l++;c=a?t(c,d,u):(a=!0,d),i&&s.next(c)},r&&(()=>{a&&s.next(c),s.complete()})))}}(t,n,arguments.length>=2,!0))}((o,s)=>(o.push(...s),o)),Wp(null),function nte(t,n){const e=arguments.length>=2;return i=>i.pipe(t?Ge((r,o)=>t(r,o,i)):go,zw(1),e?Wp(n):QF(()=>new qp))}(),vn(o=>{if(null===o)return Uc(i);const s=RP(o);return function Fne(t){t.sort((n,e)=>n.value.outlet===Pe?-1:e.value.outlet===Pe?1:n.value.outlet.localeCompare(e.value.outlet))}(s),se(s)}))}processSegment(n,e,i,r,o,s){return jt(e).pipe(pc(a=>this.processSegmentAgainstRoute(a._injector??n,e,a,i,r,o,s).pipe(di(c=>{if(c instanceof ax)return se(null);throw c}))),$s(a=>!!a),di(a=>{if(MP(a))return function Ine(t,n,e){return 0===n.length&&!t.children[e]}(i,r,o)?se(new Ane):Uc(i);throw a}))}processSegmentAgainstRoute(n,e,i,r,o,s,a){return function Mne(t,n,e,i){return!!(Rr(t)===i||i!==Pe&&sg(n,e,t))&&dx(n,t,e).matched}(i,r,o,s)?void 0===i.redirectTo?this.matchSegmentAgainstRoute(n,r,i,o,s):this.allowRedirects&&a?this.expandSegmentAgainstRouteUsingRedirect(n,r,e,i,o,s):Uc(r):Uc(r)}expandSegmentAgainstRouteUsingRedirect(n,e,i,r,o,s){const{matched:a,consumedSegments:c,positionalParamSegments:l,remainingSegments:d}=dx(e,r,o);if(!a)return Uc(e);r.redirectTo.startsWith("/")&&(this.absoluteRedirectCount++,this.absoluteRedirectCount>31&&(this.allowRedirects=!1));const u=this.applyRedirects.applyRedirectCommands(c,r.redirectTo,l);return this.applyRedirects.lineralizeSegments(r,u).pipe(vn(h=>this.processSegment(n,i,e,h.concat(d),s,!1)))}matchSegmentAgainstRoute(n,e,i,r,o){const s=Cne(e,i,r,n);return"**"===i.path&&(e.children={}),s.pipe(nn(a=>a.matched?this.getChildConfig(n=i._injector??n,i,r).pipe(nn(({routes:c})=>{const l=i._loadedInjector??n,{consumedSegments:d,remainingSegments:u,parameters:h}=a,f=new ex(d,h,Object.freeze({...this.urlTree.queryParams}),this.urlTree.fragment,function Lne(t){return t.data||{}}(i),Rr(i),i.component??i._loadedComponent??null,i,function Vne(t){return t.resolve||{}}(i)),{segmentGroup:m,slicedSegments:g}=AP(e,d,u,c);if(0===g.length&&m.hasChildren())return this.processChildren(l,c,m).pipe(ne(b=>null===b?null:new rr(f,b)));if(0===c.length&&0===g.length)return se(new rr(f,[]));const _=Rr(i)===o;return this.processSegment(l,c,m,g,_?Pe:o,!0).pipe(ne(b=>new rr(f,b instanceof rr?[b]:[])))})):Uc(e)))}getChildConfig(n,e,i){return e.children?se({routes:e.children,injector:n}):e.loadChildren?void 0!==e._loadedRoutes?se({routes:e._loadedRoutes,injector:e._loadedInjector}):function bne(t,n,e,i){const r=n.canLoad;return void 0===r||0===r.length?se(!0):se(r.map(s=>{const a=Hc(s,t);return qo(function one(t){return t&&Mu(t.canLoad)}(a)?a.canLoad(n,e):ur(t,()=>a(n,e)))})).pipe(zc(),IP())}(n,e,i).pipe(vn(r=>r?this.configLoader.loadChildren(n,e).pipe(pt(o=>{e._loadedRoutes=o.routes,e._loadedInjector=o.injector})):function wne(t){return nu(EP(!1,Ti.GuardRejected))}())):se({routes:[],injector:n})}}function Pne(t){const n=t.value.routeConfig;return n&&""===n.path}function RP(t){const n=[],e=new Set;for(const i of t){if(!Pne(i)){n.push(i);continue}const r=n.find(o=>i.value.routeConfig===o.value.routeConfig);void 0!==r?(r.children.push(...i.children),e.add(r)):n.push(i)}for(const i of e){const r=RP(i.children);n.push(new rr(i.value,r))}return n.filter(i=>!e.has(i))}function OP(t){const n=t.children.map(e=>OP(e)).flat();return[t,...n]}function ux(t){return nn(n=>{const e=t(n);return e?jt(e).pipe(ne(()=>n)):se(n)})}let NP=(()=>{class t{buildTitle(e){let i,r=e.root;for(;void 0!==r;)i=this.getResolvedTitleForRoute(r)??i,r=r.children.find(o=>o.outlet===Pe);return i}getResolvedTitleForRoute(e){return e.data[bu]}static#e=this.\u0275fac=function(i){return new(i||t)};static#t=this.\u0275prov=P({token:t,factory:()=>T($ne),providedIn:"root"})}return t})(),$ne=(()=>{class t extends NP{constructor(e){super(),this.title=e}updateTitle(e){const i=this.buildTitle(e);void 0!==i&&this.title.setTitle(i)}static#e=this.\u0275fac=function(i){return new(i||t)(S(NQ))};static#t=this.\u0275prov=P({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();const $c=new M("",{providedIn:"root",factory:()=>({})}),qc=new M("");let hx=(()=>{class t{constructor(){this.componentLoaders=new WeakMap,this.childrenLoaders=new WeakMap,this.compiler=T(oA)}loadComponent(e){if(this.componentLoaders.get(e))return this.componentLoaders.get(e);if(e._loadedComponent)return se(e._loadedComponent);this.onLoadStartListener&&this.onLoadStartListener(e);const i=qo(e.loadComponent()).pipe(ne(FP),pt(o=>{this.onLoadEndListener&&this.onLoadEndListener(e),e._loadedComponent=o}),gc(()=>{this.componentLoaders.delete(e)})),r=new Hw(i,()=>new Z).pipe(jw());return this.componentLoaders.set(e,r),r}loadChildren(e,i){if(this.childrenLoaders.get(i))return this.childrenLoaders.get(i);if(i._loadedRoutes)return se({routes:i._loadedRoutes,injector:i._loadedInjector});this.onLoadStartListener&&this.onLoadStartListener(i);const o=function qne(t,n,e,i){return qo(t.loadChildren()).pipe(ne(FP),vn(r=>r instanceof xS||Array.isArray(r)?se(r):jt(n.compileModuleAsync(r))),ne(r=>{i&&i(t);let o,s,a=!1;return Array.isArray(r)?(s=r,!0):(o=r.create(e).injector,s=o.get(qc,[],{optional:!0,self:!0}).flat()),{routes:s.map(sx),injector:o}}))}(i,this.compiler,e,this.onLoadEndListener).pipe(gc(()=>{this.childrenLoaders.delete(i)})),s=new Hw(o,()=>new Z).pipe(jw());return this.childrenLoaders.set(i,s),s}static#e=this.\u0275fac=function(i){return new(i||t)};static#t=this.\u0275prov=P({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function FP(t){return function Gne(t){return t&&"object"==typeof t&&"default"in t}(t)?t.default:t}let fx=(()=>{class t{static#e=this.\u0275fac=function(i){return new(i||t)};static#t=this.\u0275prov=P({token:t,factory:()=>T(Wne),providedIn:"root"})}return t})(),Wne=(()=>{class t{shouldProcessUrl(e){return!0}extract(e){return e}merge(e,i){return e}static#e=this.\u0275fac=function(i){return new(i||t)};static#t=this.\u0275prov=P({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();const PP=new M(""),LP=new M("");function Qne(t,n,e){const i=t.get(LP),r=t.get(_e);return t.get(W).runOutsideAngular(()=>{if(!r.startViewTransition||i.skipNextTransition)return i.skipNextTransition=!1,Promise.resolve();let o;const s=new Promise(l=>{o=l}),a=r.startViewTransition(()=>(o(),function Yne(t){return new Promise(n=>{jT(n,{injector:t})})}(t))),{onViewTransitionCreated:c}=i;return c&&ur(t,()=>c({transition:a,from:n,to:e})),s})}let ag=(()=>{class t{get hasRequestedNavigation(){return 0!==this.navigationId}constructor(){this.currentNavigation=null,this.currentTransition=null,this.lastSuccessfulNavigation=null,this.events=new Z,this.transitionAbortSubject=new Z,this.configLoader=T(hx),this.environmentInjector=T(ni),this.urlSerializer=T(Fc),this.rootContexts=T(Du),this.location=T(uc),this.inputBindingEnabled=null!==T(ig,{optional:!0}),this.titleStrategy=T(NP),this.options=T($c,{optional:!0})||{},this.paramsInheritanceStrategy=this.options.paramsInheritanceStrategy||"emptyOnly",this.urlHandlingStrategy=T(fx),this.createViewTransition=T(PP,{optional:!0}),this.navigationId=0,this.afterPreactivation=()=>se(void 0),this.rootComponentType=null,this.configLoader.onLoadEndListener=r=>this.events.next(new Pte(r)),this.configLoader.onLoadStartListener=r=>this.events.next(new Fte(r))}complete(){this.transitions?.complete()}handleNavigationRequest(e){const i=++this.navigationId;this.transitions?.next({...this.transitions.value,...e,id:i})}setupNavigations(e,i,r){return this.transitions=new ct({id:0,currentUrlTree:i,currentRawUrl:i,extractedUrl:this.urlHandlingStrategy.extract(i),urlAfterRedirects:this.urlHandlingStrategy.extract(i),rawUrl:i,extras:{},resolve:null,reject:null,promise:Promise.resolve(!0),source:Cu,restoredState:null,currentSnapshot:r.snapshot,targetSnapshot:null,currentRouterState:r,targetRouterState:null,guards:{canActivateChecks:[],canDeactivateChecks:[]},guardsResult:null}),this.transitions.pipe(Ge(o=>0!==o.id),ne(o=>({...o,extractedUrl:this.urlHandlingStrategy.extract(o.rawUrl)})),nn(o=>{let s=!1,a=!1;return se(o).pipe(nn(c=>{if(this.navigationId>o.id)return this.cancelNavigationTransition(o,"",Ti.SupersededByNewNavigation),Zt;this.currentTransition=o,this.currentNavigation={id:c.id,initialUrl:c.rawUrl,extractedUrl:c.extractedUrl,trigger:c.source,extras:c.extras,previousNavigation:this.lastSuccessfulNavigation?{...this.lastSuccessfulNavigation,previousNavigation:null}:null};const l=!e.navigated||this.isUpdatingInternalState()||this.isUpdatedBrowserUrl();if(!l&&"reload"!==(c.extras.onSameUrlNavigation??e.onSameUrlNavigation)){const u="";return this.events.next(new Vc(c.id,this.urlSerializer.serialize(c.rawUrl),u,tg.IgnoredSameUrlNavigation)),c.resolve(null),Zt}if(this.urlHandlingStrategy.shouldProcessUrl(c.rawUrl))return se(c).pipe(nn(u=>{const h=this.transitions?.getValue();return this.events.next(new eg(u.id,this.urlSerializer.serialize(u.extractedUrl),u.source,u.restoredState)),h!==this.transitions?.getValue()?Zt:Promise.resolve(u)}),function Bne(t,n,e,i,r,o){return vn(s=>function Rne(t,n,e,i,r,o,s="emptyOnly"){return new Nne(t,n,e,i,r,s,o).recognize()}(t,n,e,i,s.extractedUrl,r,o).pipe(ne(({state:a,tree:c})=>({...s,targetSnapshot:a,urlAfterRedirects:c}))))}(this.environmentInjector,this.configLoader,this.rootComponentType,e.config,this.urlSerializer,this.paramsInheritanceStrategy),pt(u=>{o.targetSnapshot=u.targetSnapshot,o.urlAfterRedirects=u.urlAfterRedirects,this.currentNavigation={...this.currentNavigation,finalUrl:u.urlAfterRedirects};const h=new mP(u.id,this.urlSerializer.serialize(u.extractedUrl),this.urlSerializer.serialize(u.urlAfterRedirects),u.targetSnapshot);this.events.next(h)}));if(l&&this.urlHandlingStrategy.shouldProcessUrl(c.currentRawUrl)){const{id:u,extractedUrl:h,source:f,restoredState:m,extras:g}=c,_=new eg(u,this.urlSerializer.serialize(h),f,m);this.events.next(_);const b=bP(this.rootComponentType).snapshot;return this.currentTransition=o={...c,targetSnapshot:b,urlAfterRedirects:h,extras:{...g,skipLocationChange:!1,replaceUrl:!1}},this.currentNavigation.finalUrl=h,se(o)}{const u="";return this.events.next(new Vc(c.id,this.urlSerializer.serialize(c.extractedUrl),u,tg.IgnoredByUrlHandlingStrategy)),c.resolve(null),Zt}}),pt(c=>{const l=new Ate(c.id,this.urlSerializer.serialize(c.extractedUrl),this.urlSerializer.serialize(c.urlAfterRedirects),c.targetSnapshot);this.events.next(l)}),ne(c=>(this.currentTransition=o={...c,guards:ene(c.targetSnapshot,c.currentSnapshot,this.rootContexts)},o)),function dne(t,n){return vn(e=>{const{targetSnapshot:i,currentSnapshot:r,guards:{canActivateChecks:o,canDeactivateChecks:s}}=e;return 0===s.length&&0===o.length?se({...e,guardsResult:!0}):function une(t,n,e,i){return jt(t).pipe(vn(r=>function _ne(t,n,e,i,r){const o=n&&n.routeConfig?n.routeConfig.canDeactivate:null;return o&&0!==o.length?se(o.map(a=>{const c=ku(n)??r,l=Hc(a,c);return qo(function cne(t){return t&&Mu(t.canDeactivate)}(l)?l.canDeactivate(t,n,e,i):ur(c,()=>l(t,n,e,i))).pipe($s())})).pipe(zc()):se(!0)}(r.component,r.route,e,n,i)),$s(r=>!0!==r,!0))}(s,i,r,t).pipe(vn(a=>a&&function rne(t){return"boolean"==typeof t}(a)?function hne(t,n,e,i){return jt(n).pipe(pc(r=>Xd(function mne(t,n){return null!==t&&n&&n(new Lte(t)),se(!0)}(r.route.parent,i),function fne(t,n){return null!==t&&n&&n(new Bte(t)),se(!0)}(r.route,i),function gne(t,n,e){const i=n[n.length-1],o=n.slice(0,n.length-1).reverse().map(s=>function tne(t){const n=t.routeConfig?t.routeConfig.canActivateChild:null;return n&&0!==n.length?{node:t,guards:n}:null}(s)).filter(s=>null!==s).map(s=>Gp(()=>se(s.guards.map(c=>{const l=ku(s.node)??e,d=Hc(c,l);return qo(function ane(t){return t&&Mu(t.canActivateChild)}(d)?d.canActivateChild(i,t):ur(l,()=>d(i,t))).pipe($s())})).pipe(zc())));return se(o).pipe(zc())}(t,r.path,e),function pne(t,n,e){const i=n.routeConfig?n.routeConfig.canActivate:null;if(!i||0===i.length)return se(!0);const r=i.map(o=>Gp(()=>{const s=ku(n)??e,a=Hc(o,s);return qo(function sne(t){return t&&Mu(t.canActivate)}(a)?a.canActivate(n,t):ur(s,()=>a(n,t))).pipe($s())}));return se(r).pipe(zc())}(t,r.route,e))),$s(r=>!0!==r,!0))}(i,o,t,n):se(a)),ne(a=>({...e,guardsResult:a})))})}(this.environmentInjector,c=>this.events.next(c)),pt(c=>{if(o.guardsResult=c.guardsResult,Pc(c.guardsResult))throw DP(0,c.guardsResult);const l=new Rte(c.id,this.urlSerializer.serialize(c.extractedUrl),this.urlSerializer.serialize(c.urlAfterRedirects),c.targetSnapshot,!!c.guardsResult);this.events.next(l)}),Ge(c=>!!c.guardsResult||(this.cancelNavigationTransition(c,"",Ti.GuardRejected),!1)),ux(c=>{if(c.guards.canActivateChecks.length)return se(c).pipe(pt(l=>{const d=new Ote(l.id,this.urlSerializer.serialize(l.extractedUrl),this.urlSerializer.serialize(l.urlAfterRedirects),l.targetSnapshot);this.events.next(d)}),nn(l=>{let d=!1;return se(l).pipe(function jne(t,n){return vn(e=>{const{targetSnapshot:i,guards:{canActivateChecks:r}}=e;if(!r.length)return se(e);const o=new Set(r.map(c=>c.route)),s=new Set;for(const c of o)if(!s.has(c))for(const l of OP(c))s.add(l);let a=0;return jt(s).pipe(pc(c=>o.has(c)?function Hne(t,n,e,i){const r=t.routeConfig,o=t._resolve;return void 0!==r?.title&&!wP(r)&&(o[bu]=r.title),function zne(t,n,e,i){const r=Uw(t);if(0===r.length)return se({});const o={};return jt(r).pipe(vn(s=>function Une(t,n,e,i){const r=ku(n)??i,o=Hc(t,r);return qo(o.resolve?o.resolve(n,e):ur(r,()=>o(n,e)))}(t[s],n,e,i).pipe($s(),pt(a=>{o[s]=a}))),zw(1),vp(o),di(s=>MP(s)?Zt:nu(s)))}(o,t,n,i).pipe(ne(s=>(t._resolvedData=s,t.data=Jw(t,t.parent,e).resolve,null)))}(c,i,t,n):(c.data=Jw(c,c.parent,t).resolve,se(void 0))),pt(()=>a++),zw(1),vn(c=>a===s.size?se(e):Zt))})}(this.paramsInheritanceStrategy,this.environmentInjector),pt({next:()=>d=!0,complete:()=>{d||this.cancelNavigationTransition(l,"",Ti.NoDataFromResolver)}}))}),pt(l=>{const d=new Nte(l.id,this.urlSerializer.serialize(l.extractedUrl),this.urlSerializer.serialize(l.urlAfterRedirects),l.targetSnapshot);this.events.next(d)}))}),ux(c=>{const l=d=>{const u=[];d.routeConfig?.loadComponent&&!d.routeConfig._loadedComponent&&u.push(this.configLoader.loadComponent(d.routeConfig).pipe(pt(h=>{d.component=h}),ne(()=>{})));for(const h of d.children)u.push(...l(h));return u};return Fs(l(c.targetSnapshot.root)).pipe(Wp(null),gt(1))}),ux(()=>this.afterPreactivation()),nn(()=>{const{currentSnapshot:c,targetSnapshot:l}=o,d=this.createViewTransition?.(this.environmentInjector,c.root,l.root);return d?jt(d).pipe(ne(()=>o)):se(o)}),ne(c=>{const l=function Ute(t,n,e){const i=Eu(t,n._root,e?e._root:void 0);return new _P(i,n)}(e.routeReuseStrategy,c.targetSnapshot,c.currentRouterState);return this.currentTransition=o={...c,targetRouterState:l},this.currentNavigation.targetRouterState=l,o}),pt(()=>{this.events.next(new Yw)}),((t,n,e,i)=>ne(r=>(new Jte(n,r.targetRouterState,r.currentRouterState,e,i).activate(t),r)))(this.rootContexts,e.routeReuseStrategy,c=>this.events.next(c),this.inputBindingEnabled),gt(1),pt({next:c=>{s=!0,this.lastSuccessfulNavigation=this.currentNavigation,this.events.next(new so(c.id,this.urlSerializer.serialize(c.extractedUrl),this.urlSerializer.serialize(c.urlAfterRedirects))),this.titleStrategy?.updateTitle(c.targetRouterState.snapshot),c.resolve(!0)},complete:()=>{s=!0}}),pe(this.transitionAbortSubject.pipe(pt(c=>{throw c}))),gc(()=>{!s&&!a&&this.cancelNavigationTransition(o,"",Ti.SupersededByNewNavigation),this.currentTransition?.id===o.id&&(this.currentNavigation=null,this.currentTransition=null)}),di(c=>{if(a=!0,kP(c))this.events.next(new Lc(o.id,this.urlSerializer.serialize(o.extractedUrl),c.message,c.cancellationCode)),function Gte(t){return kP(t)&&Pc(t.url)}(c)?this.events.next(new Kw(c.url)):o.resolve(!1);else{this.events.next(new ng(o.id,this.urlSerializer.serialize(o.extractedUrl),c,o.targetSnapshot??void 0));try{o.resolve(e.errorHandler(c))}catch(l){this.options.resolveNavigationPromiseOnError?o.resolve(!1):o.reject(l)}}return Zt}))}))}cancelNavigationTransition(e,i,r){const o=new Lc(e.id,this.urlSerializer.serialize(e.extractedUrl),i,r);this.events.next(o),e.resolve(!1)}isUpdatingInternalState(){return this.currentTransition?.extractedUrl.toString()!==this.currentTransition?.currentUrlTree.toString()}isUpdatedBrowserUrl(){return this.urlHandlingStrategy.extract(this.urlSerializer.parse(this.location.path(!0))).toString()!==this.currentTransition?.extractedUrl.toString()&&!this.currentTransition?.extras.skipLocationChange}static#e=this.\u0275fac=function(i){return new(i||t)};static#t=this.\u0275prov=P({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function Kne(t){return t!==Cu}let Xne=(()=>{class t{static#e=this.\u0275fac=function(i){return new(i||t)};static#t=this.\u0275prov=P({token:t,factory:()=>T(Jne),providedIn:"root"})}return t})();class Zne{shouldDetach(n){return!1}store(n,e){}shouldAttach(n){return!1}retrieve(n){return null}shouldReuseRoute(n,e){return n.routeConfig===e.routeConfig}}let Jne=(()=>{class t extends Zne{static#e=this.\u0275fac=(()=>{let e;return function(r){return(e||(e=Be(t)))(r||t)}})();static#t=this.\u0275prov=P({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),VP=(()=>{class t{static#e=this.\u0275fac=function(i){return new(i||t)};static#t=this.\u0275prov=P({token:t,factory:()=>T(eie),providedIn:"root"})}return t})(),eie=(()=>{class t extends VP{constructor(){super(...arguments),this.location=T(uc),this.urlSerializer=T(Fc),this.options=T($c,{optional:!0})||{},this.canceledNavigationResolution=this.options.canceledNavigationResolution||"replace",this.urlHandlingStrategy=T(fx),this.urlUpdateStrategy=this.options.urlUpdateStrategy||"deferred",this.currentUrlTree=new Nc,this.rawUrlTree=this.currentUrlTree,this.currentPageId=0,this.lastSuccessfulId=-1,this.routerState=bP(null),this.stateMemento=this.createStateMemento()}getCurrentUrlTree(){return this.currentUrlTree}getRawUrlTree(){return this.rawUrlTree}restoredState(){return this.location.getState()}get browserPageId(){return"computed"!==this.canceledNavigationResolution?this.currentPageId:this.restoredState()?.\u0275routerPageId??this.currentPageId}getRouterState(){return this.routerState}createStateMemento(){return{rawUrlTree:this.rawUrlTree,currentUrlTree:this.currentUrlTree,routerState:this.routerState}}registerNonRouterCurrentEntryChangeListener(e){return this.location.subscribe(i=>{"popstate"===i.type&&e(i.url,i.state)})}handleRouterEvent(e,i){if(e instanceof eg)this.stateMemento=this.createStateMemento();else if(e instanceof Vc)this.rawUrlTree=i.initialUrl;else if(e instanceof mP){if("eager"===this.urlUpdateStrategy&&!i.extras.skipLocationChange){const r=this.urlHandlingStrategy.merge(i.finalUrl,i.initialUrl);this.setBrowserUrl(r,i)}}else e instanceof Yw?(this.currentUrlTree=i.finalUrl,this.rawUrlTree=this.urlHandlingStrategy.merge(i.finalUrl,i.initialUrl),this.routerState=i.targetRouterState,"deferred"===this.urlUpdateStrategy&&(i.extras.skipLocationChange||this.setBrowserUrl(this.rawUrlTree,i))):e instanceof Lc&&(e.code===Ti.GuardRejected||e.code===Ti.NoDataFromResolver)?this.restoreHistory(i):e instanceof ng?this.restoreHistory(i,!0):e instanceof so&&(this.lastSuccessfulId=e.id,this.currentPageId=this.browserPageId)}setBrowserUrl(e,i){const r=this.urlSerializer.serialize(e);if(this.location.isCurrentPathEqualTo(r)||i.extras.replaceUrl){const s={...i.extras.state,...this.generateNgRouterState(i.id,this.browserPageId)};this.location.replaceState(r,"",s)}else{const o={...i.extras.state,...this.generateNgRouterState(i.id,this.browserPageId+1)};this.location.go(r,"",o)}}restoreHistory(e,i=!1){if("computed"===this.canceledNavigationResolution){const o=this.currentPageId-this.browserPageId;0!==o?this.location.historyGo(o):this.currentUrlTree===e.finalUrl&&0===o&&(this.resetState(e),this.resetUrlToCurrentUrlTree())}else"replace"===this.canceledNavigationResolution&&(i&&this.resetState(e),this.resetUrlToCurrentUrlTree())}resetState(e){this.routerState=this.stateMemento.routerState,this.currentUrlTree=this.stateMemento.currentUrlTree,this.rawUrlTree=this.urlHandlingStrategy.merge(this.currentUrlTree,e.finalUrl??this.rawUrlTree)}resetUrlToCurrentUrlTree(){this.location.replaceState(this.urlSerializer.serialize(this.rawUrlTree),"",this.generateNgRouterState(this.lastSuccessfulId,this.currentPageId))}generateNgRouterState(e,i){return"computed"===this.canceledNavigationResolution?{navigationId:e,\u0275routerPageId:i}:{navigationId:e}}static#e=this.\u0275fac=(()=>{let e;return function(r){return(e||(e=Be(t)))(r||t)}})();static#t=this.\u0275prov=P({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();var Iu=function(t){return t[t.COMPLETE=0]="COMPLETE",t[t.FAILED=1]="FAILED",t[t.REDIRECTING=2]="REDIRECTING",t}(Iu||{});function BP(t,n){t.events.pipe(Ge(e=>e instanceof so||e instanceof Lc||e instanceof ng||e instanceof Vc),ne(e=>e instanceof so||e instanceof Vc?Iu.COMPLETE:e instanceof Lc&&(e.code===Ti.Redirect||e.code===Ti.SupersededByNewNavigation)?Iu.REDIRECTING:Iu.FAILED),Ge(e=>e!==Iu.REDIRECTING),gt(1)).subscribe(()=>{n()})}function tie(t){throw t}const nie={paths:"exact",fragment:"ignored",matrixParams:"ignored",queryParams:"exact"},iie={paths:"subset",fragment:"ignored",matrixParams:"ignored",queryParams:"subset"};let or=(()=>{class t{get currentUrlTree(){return this.stateManager.getCurrentUrlTree()}get rawUrlTree(){return this.stateManager.getRawUrlTree()}get events(){return this._events}get routerState(){return this.stateManager.getRouterState()}constructor(){this.disposed=!1,this.isNgZoneEnabled=!1,this.console=T(YI),this.stateManager=T(VP),this.options=T($c,{optional:!0})||{},this.pendingTasks=T(Eo),this.urlUpdateStrategy=this.options.urlUpdateStrategy||"deferred",this.navigationTransitions=T(ag),this.urlSerializer=T(Fc),this.location=T(uc),this.urlHandlingStrategy=T(fx),this._events=new Z,this.errorHandler=this.options.errorHandler||tie,this.navigated=!1,this.routeReuseStrategy=T(Xne),this.onSameUrlNavigation=this.options.onSameUrlNavigation||"ignore",this.config=T(qc,{optional:!0})?.flat()??[],this.componentInputBindingEnabled=!!T(ig,{optional:!0}),this.eventsSubscription=new Ae,this.isNgZoneEnabled=T(W)instanceof W&&W.isInAngularZone(),this.resetConfig(this.config),this.navigationTransitions.setupNavigations(this,this.currentUrlTree,this.routerState).subscribe({error:e=>{this.console.warn(e)}}),this.subscribeToNavigationEvents()}subscribeToNavigationEvents(){const e=this.navigationTransitions.events.subscribe(i=>{try{const r=this.navigationTransitions.currentTransition,o=this.navigationTransitions.currentNavigation;if(null!==r&&null!==o)if(this.stateManager.handleRouterEvent(i,o),i instanceof Lc&&i.code!==Ti.Redirect&&i.code!==Ti.SupersededByNewNavigation)this.navigated=!0;else if(i instanceof so)this.navigated=!0;else if(i instanceof Kw){const s=this.urlHandlingStrategy.merge(i.url,r.currentRawUrl),a={info:r.extras.info,skipLocationChange:r.extras.skipLocationChange,replaceUrl:"eager"===this.urlUpdateStrategy||Kne(r.source)};this.scheduleNavigation(s,Cu,null,a,{resolve:r.resolve,reject:r.reject,promise:r.promise})}(function oie(t){return!(t instanceof Yw||t instanceof Kw)})(i)&&this._events.next(i)}catch(r){this.navigationTransitions.transitionAbortSubject.next(r)}});this.eventsSubscription.add(e)}resetRootComponentType(e){this.routerState.root.component=e,this.navigationTransitions.rootComponentType=e}initialNavigation(){this.setUpLocationChangeListener(),this.navigationTransitions.hasRequestedNavigation||this.navigateToSyncWithBrowser(this.location.path(!0),Cu,this.stateManager.restoredState())}setUpLocationChangeListener(){this.nonRouterCurrentEntryChangeSubscription??=this.stateManager.registerNonRouterCurrentEntryChangeListener((e,i)=>{setTimeout(()=>{this.navigateToSyncWithBrowser(e,"popstate",i)},0)})}navigateToSyncWithBrowser(e,i,r){const o={replaceUrl:!0},s=r?.navigationId?r:null;if(r){const c={...r};delete c.navigationId,delete c.\u0275routerPageId,0!==Object.keys(c).length&&(o.state=c)}const a=this.parseUrl(e);this.scheduleNavigation(a,i,s,o)}get url(){return this.serializeUrl(this.currentUrlTree)}getCurrentNavigation(){return this.navigationTransitions.currentNavigation}get lastSuccessfulNavigation(){return this.navigationTransitions.lastSuccessfulNavigation}resetConfig(e){this.config=e.map(sx),this.navigated=!1}ngOnDestroy(){this.dispose()}dispose(){this.navigationTransitions.complete(),this.nonRouterCurrentEntryChangeSubscription&&(this.nonRouterCurrentEntryChangeSubscription.unsubscribe(),this.nonRouterCurrentEntryChangeSubscription=void 0),this.disposed=!0,this.eventsSubscription.unsubscribe()}createUrlTree(e,i={}){const{relativeTo:r,queryParams:o,fragment:s,queryParamsHandling:a,preserveFragment:c}=i,l=c?this.currentUrlTree.fragment:s;let u,d=null;switch(a){case"merge":d={...this.currentUrlTree.queryParams,...o};break;case"preserve":d=this.currentUrlTree.queryParams;break;default:d=o||null}null!==d&&(d=this.removeEmptyProps(d));try{u=aP(r?r.snapshot:this.routerState.snapshot.root)}catch{("string"!=typeof e[0]||!e[0].startsWith("/"))&&(e=[]),u=this.currentUrlTree.root}return cP(u,e,d,l??null)}navigateByUrl(e,i={skipLocationChange:!1}){const r=Pc(e)?e:this.parseUrl(e),o=this.urlHandlingStrategy.merge(r,this.rawUrlTree);return this.scheduleNavigation(o,Cu,null,i)}navigate(e,i={skipLocationChange:!1}){return function rie(t){for(let n=0;n(null!=o&&(i[r]=o),i),{})}scheduleNavigation(e,i,r,o,s){if(this.disposed)return Promise.resolve(!1);let a,c,l;s?(a=s.resolve,c=s.reject,l=s.promise):l=new Promise((u,h)=>{a=u,c=h});const d=this.pendingTasks.add();return BP(this,()=>{queueMicrotask(()=>this.pendingTasks.remove(d))}),this.navigationTransitions.handleNavigationRequest({source:i,restoredState:r,currentUrlTree:this.currentUrlTree,currentRawUrl:this.currentUrlTree,rawUrl:e,extras:o,resolve:a,reject:c,promise:l,currentSnapshot:this.routerState.snapshot,currentRouterState:this.routerState}),l.catch(u=>Promise.reject(u))}static#e=this.\u0275fac=function(i){return new(i||t)};static#t=this.\u0275prov=P({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();class jP{}let cie=(()=>{class t{constructor(e,i,r,o,s){this.router=e,this.injector=r,this.preloadingStrategy=o,this.loader=s}setUpPreloading(){this.subscription=this.router.events.pipe(Ge(e=>e instanceof so),pc(()=>this.preload())).subscribe(()=>{})}preload(){return this.processRoutes(this.injector,this.router.config)}ngOnDestroy(){this.subscription&&this.subscription.unsubscribe()}processRoutes(e,i){const r=[];for(const o of i){o.providers&&!o._injector&&(o._injector=Of(o.providers,e,`Route: ${o.path}`));const s=o._injector??e,a=o._loadedInjector??s;(o.loadChildren&&!o._loadedRoutes&&void 0===o.canLoad||o.loadComponent&&!o._loadedComponent)&&r.push(this.preloadConfig(s,o)),(o.children||o._loadedRoutes)&&r.push(this.processRoutes(a,o.children??o._loadedRoutes))}return jt(r).pipe(xc())}preloadConfig(e,i){return this.preloadingStrategy.preload(i,()=>{let r;r=i.loadChildren&&void 0===i.canLoad?this.loader.loadChildren(e,i):se(null);const o=r.pipe(vn(s=>null===s?se(void 0):(i._loadedRoutes=s.routes,i._loadedInjector=s.injector,this.processRoutes(s.injector??e,s.routes))));return i.loadComponent&&!i._loadedComponent?jt([o,this.loader.loadComponent(i)]).pipe(xc()):o})}static#e=this.\u0275fac=function(i){return new(i||t)(S(or),S(oA),S(ni),S(jP),S(hx))};static#t=this.\u0275prov=P({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();const px=new M("");let HP=(()=>{class t{constructor(e,i,r,o,s={}){this.urlSerializer=e,this.transitions=i,this.viewportScroller=r,this.zone=o,this.options=s,this.lastId=0,this.lastSource="imperative",this.restoredId=0,this.store={},s.scrollPositionRestoration||="disabled",s.anchorScrolling||="disabled"}init(){"disabled"!==this.options.scrollPositionRestoration&&this.viewportScroller.setHistoryScrollRestoration("manual"),this.routerEventsSubscription=this.createScrollEvents(),this.scrollEventsSubscription=this.consumeScrollEvents()}createScrollEvents(){return this.transitions.events.subscribe(e=>{e instanceof eg?(this.store[this.lastId]=this.viewportScroller.getScrollPosition(),this.lastSource=e.navigationTrigger,this.restoredId=e.restoredState?e.restoredState.navigationId:0):e instanceof so?(this.lastId=e.id,this.scheduleScrollEvent(e,this.urlSerializer.parse(e.urlAfterRedirects).fragment)):e instanceof Vc&&e.code===tg.IgnoredSameUrlNavigation&&(this.lastSource=void 0,this.restoredId=0,this.scheduleScrollEvent(e,this.urlSerializer.parse(e.url).fragment))})}consumeScrollEvents(){return this.transitions.events.subscribe(e=>{e instanceof pP&&(e.position?"top"===this.options.scrollPositionRestoration?this.viewportScroller.scrollToPosition([0,0]):"enabled"===this.options.scrollPositionRestoration&&this.viewportScroller.scrollToPosition(e.position):e.anchor&&"enabled"===this.options.anchorScrolling?this.viewportScroller.scrollToAnchor(e.anchor):"disabled"!==this.options.scrollPositionRestoration&&this.viewportScroller.scrollToPosition([0,0]))})}scheduleScrollEvent(e,i){this.zone.runOutsideAngular(()=>{setTimeout(()=>{this.zone.run(()=>{this.transitions.events.next(new pP(e,"popstate"===this.lastSource?this.store[this.restoredId]:null,i))})},0)})}ngOnDestroy(){this.routerEventsSubscription?.unsubscribe(),this.scrollEventsSubscription?.unsubscribe()}static#e=this.\u0275fac=function(i){gf()};static#t=this.\u0275prov=P({token:t,factory:t.\u0275fac})}return t})();function Or(t,n){return{\u0275kind:t,\u0275providers:n}}function UP(){const t=T(Gt);return n=>{const e=t.get(Yr);if(n!==e.components[0])return;const i=t.get(or),r=t.get($P);1===t.get(gx)&&i.initialNavigation(),t.get(qP,null,He.Optional)?.setUpPreloading(),t.get(px,null,He.Optional)?.init(),i.resetRootComponentType(e.componentTypes[0]),r.closed||(r.next(),r.complete(),r.unsubscribe())}}const $P=new M("",{factory:()=>new Z}),gx=new M("",{providedIn:"root",factory:()=>1}),qP=new M("");function hie(t){return Or(0,[{provide:qP,useExisting:cie},{provide:jP,useExisting:t}])}function mie(t){return Or(9,[{provide:PP,useValue:Qne},{provide:LP,useValue:{skipNextTransition:!!t?.skipInitialTransition,...t}}])}const GP=new M("ROUTER_FORROOT_GUARD"),pie=[uc,{provide:Fc,useClass:$w},or,Du,{provide:jc,useFactory:function zP(t){return t.routerState.root},deps:[or]},hx,[]];let WP=(()=>{class t{constructor(e){}static forRoot(e,i){return{ngModule:t,providers:[pie,[],{provide:qc,multi:!0,useValue:e},{provide:GP,useFactory:vie,deps:[[or,new cs,new El]]},{provide:$c,useValue:i||{}},i?.useHash?{provide:Ss,useClass:o6}:{provide:Ss,useClass:KA},{provide:px,useFactory:()=>{const t=T(CW),n=T(W),e=T($c),i=T(ag),r=T(Fc);return e.scrollOffset&&t.setOffset(e.scrollOffset),new HP(r,i,t,n,e)}},i?.preloadingStrategy?hie(i.preloadingStrategy).\u0275providers:[],i?.initialNavigation?yie(i):[],i?.bindToComponentInputs?Or(8,[xP,{provide:ig,useExisting:xP}]).\u0275providers:[],i?.enableViewTransitions?mie().\u0275providers:[],[{provide:QP,useFactory:UP},{provide:ly,multi:!0,useExisting:QP}]]}}static forChild(e){return{ngModule:t,providers:[{provide:qc,multi:!0,useValue:e}]}}static#e=this.\u0275fac=function(i){return new(i||t)(S(GP,8))};static#t=this.\u0275mod=ge({type:t});static#n=this.\u0275inj=he({})}return t})();function vie(t){return"guarded"}function yie(t){return["disabled"===t.initialNavigation?Or(3,[{provide:ay,multi:!0,useFactory:()=>{const n=T(or);return()=>{n.setUpLocationChangeListener()}}},{provide:gx,useValue:2}]).\u0275providers:[],"enabledBlocking"===t.initialNavigation?Or(2,[{provide:gx,useValue:0},{provide:ay,multi:!0,deps:[Gt],useFactory:n=>{const e=n.get(i6,Promise.resolve());return()=>e.then(()=>new Promise(i=>{const r=n.get(or),o=n.get($P);BP(r,()=>{i(!0)}),n.get(ag).afterPreactivation=()=>(i(!0),o.closed?se(void 0):o),r.initialNavigation()}))}}]).\u0275providers:[]]}const QP=new M(""),xie=[];let Cie=(()=>{class t{static#e=this.\u0275fac=function(i){return new(i||t)};static#t=this.\u0275mod=ge({type:t});static#n=this.\u0275inj=he({imports:[WP.forRoot(xie),WP]})}return t})();function _x(t){return t&&"function"==typeof t.connect&&!(t instanceof Hw)}var ao=function(t){return t[t.REPLACED=0]="REPLACED",t[t.INSERTED=1]="INSERTED",t[t.MOVED=2]="MOVED",t[t.REMOVED=3]="REMOVED",t}(ao||{});const Au=new M("_ViewRepeater");class KP{applyChanges(n,e,i,r,o){n.forEachOperation((s,a,c)=>{let l,d;if(null==s.previousIndex){const u=i(s,a,c);l=e.createEmbeddedView(u.templateRef,u.context,u.index),d=ao.INSERTED}else null==c?(e.remove(a),d=ao.REMOVED):(l=e.get(a),e.move(l,c),d=ao.MOVED);o&&o({context:l?.context,operation:d,record:s})})}detach(){}}class ZP{get selected(){return this._selected||(this._selected=Array.from(this._selection.values())),this._selected}constructor(n=!1,e,i=!0,r){this._multiple=n,this._emitChanges=i,this.compareWith=r,this._selection=new Set,this._deselectedToEmit=[],this._selectedToEmit=[],this.changed=new Z,e&&e.length&&(n?e.forEach(o=>this._markSelected(o)):this._markSelected(e[0]),this._selectedToEmit.length=0)}select(...n){this._verifyValueAssignment(n),n.forEach(i=>this._markSelected(i));const e=this._hasQueuedChanges();return this._emitChangeEvent(),e}deselect(...n){this._verifyValueAssignment(n),n.forEach(i=>this._unmarkSelected(i));const e=this._hasQueuedChanges();return this._emitChangeEvent(),e}setSelection(...n){this._verifyValueAssignment(n);const e=this.selected,i=new Set(n);n.forEach(o=>this._markSelected(o)),e.filter(o=>!i.has(this._getConcreteValue(o,i))).forEach(o=>this._unmarkSelected(o));const r=this._hasQueuedChanges();return this._emitChangeEvent(),r}toggle(n){return this.isSelected(n)?this.deselect(n):this.select(n)}clear(n=!0){this._unmarkAll();const e=this._hasQueuedChanges();return n&&this._emitChangeEvent(),e}isSelected(n){return this._selection.has(this._getConcreteValue(n))}isEmpty(){return 0===this._selection.size}hasValue(){return!this.isEmpty()}sort(n){this._multiple&&this.selected&&this._selected.sort(n)}isMultipleSelection(){return this._multiple}_emitChangeEvent(){this._selected=null,(this._selectedToEmit.length||this._deselectedToEmit.length)&&(this.changed.next({source:this,added:this._selectedToEmit,removed:this._deselectedToEmit}),this._deselectedToEmit=[],this._selectedToEmit=[])}_markSelected(n){n=this._getConcreteValue(n),this.isSelected(n)||(this._multiple||this._unmarkAll(),this.isSelected(n)||this._selection.add(n),this._emitChanges&&this._selectedToEmit.push(n))}_unmarkSelected(n){n=this._getConcreteValue(n),this.isSelected(n)&&(this._selection.delete(n),this._emitChanges&&this._deselectedToEmit.push(n))}_unmarkAll(){this.isEmpty()||this._selection.forEach(n=>this._unmarkSelected(n))}_verifyValueAssignment(n){}_hasQueuedChanges(){return!(!this._deselectedToEmit.length&&!this._selectedToEmit.length)}_getConcreteValue(n,e){if(this.compareWith){e=e??this._selection;for(let i of e)if(this.compareWith(n,i))return i;return n}return n}}let bx=(()=>{class t{constructor(){this._listeners=[]}notify(e,i){for(let r of this._listeners)r(e,i)}listen(e){return this._listeners.push(e),()=>{this._listeners=this._listeners.filter(i=>e!==i)}}ngOnDestroy(){this._listeners=[]}static#e=this.\u0275fac=function(i){return new(i||t)};static#t=this.\u0275prov=P({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();const JP=t=>t.toLowerCase().replaceAll(/[^a-z0-9\-]/g,"-").replace(/^-+/,"").replaceAll(/-+/g,"-");class Gs{constructor(n,e,i,r){this.name=n,this.icon=e,this.aggregations=[],this.active=!1,this.selected=new Set,this.relevantContentTypes=null===i?null:new Set(i),r.subscribe(o=>{this.aggregations=o})}isRelevant(n){return null===this.relevantContentTypes||!!n&&"null"!==n&&this.relevantContentTypes.has(n)}isActive(){return this.active}isEmpty(){return 0===this.selected.size}filterValues(){return this.selected.size?[...this.selected]:void 0}isSelected(n){return void 0!==n&&this.selected.has(n)}activate(){this.active=!0}deactivate(){this.active=!1}select(n){void 0!==n&&this.selected.add(n)}deselect(n){void 0!==n&&this.selected.delete(n)}toggle(n){void 0!==n&&(this.selected.has(n)?this.deselect(n):this.select(n))}reset(){this.selected.clear()}deactivateAndReset(){this.deactivate(),this.reset()}}const eL={items:[],totalCount:0,totalCountIsEstimate:!1,aggregations:{}},tL={count:0,isEstimate:!1};class Die{constructor(n,e){this.graphQLService=n,this.errorsService=e,this.queryStringSubject=new ct(""),this.contentTypeSubject=new ct(void 0),this.orderBySubject=new ct({field:"PublishedAt",descending:!0}),this.orderByOptions=Eie,this.pageIndexSubject=new ct(0),this.pageIndex$=this.pageIndexSubject.asObservable(),this.pageSizeSubject=new ct(20),this.pageSize$=this.pageSizeSubject.asObservable(),this.pageLengthSubject=new ct(0),this.pageLength$=this.pageLengthSubject.asObservable(),this.itemsResultSubject=new ct(eL),this.aggsResultSubject=new ct(eL),this.loadingSubject=new ct(!1),this.lastRequestTimeSubject=new ct(0),this.items$=this.itemsResultSubject.pipe(ne(i=>i.items)),this.aggregations$=this.aggsResultSubject.pipe(ne(i=>i.aggregations)),this.loading$=this.loadingSubject.asObservable(),this.hasNextPage$=this.itemsResultSubject.pipe(ne(i=>i.hasNextPage)),this.torrentSourceFacet=new Gs("Torrent Source","mediation",null,this.aggregations$.pipe(ne(i=>i.torrentSource??[]))),this.torrentTagFacet=new Gs("Torrent Tag","sell",null,this.aggregations$.pipe(ne(i=>i.torrentTag??[]))),this.torrentFileTypeFacet=new Gs("File Type","file_present",null,this.aggregations$.pipe(ne(i=>i.torrentFileType??[]))),this.languageFacet=new Gs("Language","translate",null,this.aggregations$.pipe(ne(i=>i.language??[]))),this.genreFacet=new Gs("Genre","theater_comedy",["movie","tv_show"],this.aggregations$.pipe(ne(i=>i.genre??[]))),this.videoResolutionFacet=new Gs("Video Resolution","screenshot_monitor",["movie","tv_show","xxx"],this.aggregations$.pipe(ne(i=>i.videoResolution??[]))),this.videoSourceFacet=new Gs("Video Source","album",["movie","tv_show","xxx"],this.aggregations$.pipe(ne(i=>i.videoSource??[]))),this.facets=[this.torrentSourceFacet,this.torrentTagFacet,this.torrentFileTypeFacet,this.languageFacet,this.videoResolutionFacet,this.videoSourceFacet,this.genreFacet],this.overallTotalCountSubject=new ct(tL),this.overallTotalCount$=this.overallTotalCountSubject.asObservable(),this.totalCountSubject=new ct(tL),this.totalCount$=this.totalCountSubject.asObservable(),this.contentTypes=nL,this.availableContentTypes=new Set,this.contentTypeSubject.subscribe(i=>{this.facets.forEach(r=>r.isRelevant(i)||r.deactivateAndReset()),this.pageIndexSubject.next(0),this.loadResult()})}connect({}){return this.items$}disconnect(){this.itemsResultSubject.complete(),this.loadingSubject.complete()}loadResult(n=!0){const e=Date.now();this.loadingSubject.next(!0);const i=this.pageSizeSubject.getValue(),r=this.queryStringSubject.getValue()||void 0,o=this.pageIndexSubject.getValue()*i,s=this.orderBySubject.getValue();this.graphQLService.torrentContentSearch({query:{queryString:r,limit:i,offset:o,hasNextPage:!0,cached:n,totalCount:!0},facets:this.facetsInput(!0),orderBy:[s]}).pipe(di(c=>(this.errorsService.addError(`Error loading item results: ${c.message}`),Zt))).subscribe(c=>{const l=this.lastRequestTimeSubject.getValue();if(e>=l){this.itemsResultSubject.next(c),this.aggsResultSubject.next(c),this.loadingSubject.next(!1),this.lastRequestTimeSubject.next(e),this.pageLengthSubject.next(c.items.length),this.totalCountSubject.next({count:c.totalCount,isEstimate:c.totalCountIsEstimate});let d=0,u=!1;for(const h of c.aggregations.contentType??[])d+=h.count,u=u||h.isEstimate,this.availableContentTypes.add(h.value??"null");this.overallTotalCountSubject.next({count:d,isEstimate:u})}})}facetsInput(n){const e=this.contentTypeSubject.getValue();return{contentType:{aggregate:n,filter:"null"===e?[null]:e?[e]:void 0},torrentSource:Ws(this.torrentSourceFacet,n),torrentTag:Ws(this.torrentTagFacet,n),torrentFileType:Ws(this.torrentFileTypeFacet,n),language:Ws(this.languageFacet,n),genre:Ws(this.genreFacet,n),videoResolution:Ws(this.videoResolutionFacet,n),videoSource:Ws(this.videoSourceFacet,n)}}selectContentType(n){this.contentTypeSubject.next(n)}setQueryString(n){this.queryStringSubject.getValue()!==n&&(this.queryStringSubject.next(n),this.orderBySubject.next(n?{field:"Relevance",descending:!0}:{field:"PublishedAt",descending:!0}),this.firstPage(),this.loadResult())}selectOrderBy(n){this.orderBySubject.next({field:n,descending:this.orderByOptions[n]?.descending??!1}),this.loadResult()}toggleOrderByDirection(){const n=this.orderBySubject.getValue();this.orderBySubject.next({field:n.field,descending:!n.descending}),this.loadResult()}firstPage(){this.pageIndexSubject.next(0)}handlePageEvent(n){this.pageIndexSubject.next(n.pageIndex),this.pageSizeSubject.next(n.pageSize),this.loadResult()}contentTypeCount(n){return this.aggregations$.pipe(ne(e=>e.contentType?.find(r=>(r.value??"null")===n)??{count:0,isEstimate:!1}))}contentTypeInfo(n){return nL[n]}}const nL={movie:{singular:"Movie",plural:"Movies",icon:"movie"},tv_show:{singular:"TV Show",plural:"TV Shows",icon:"live_tv"},music:{singular:"Music",plural:"Music",icon:"music_note"},ebook:{singular:"E-Book",plural:"E-Books",icon:"auto_stories"},comic:{singular:"Comic",plural:"Comics",icon:"comic_bubble"},audiobook:{singular:"Audiobook",plural:"Audiobooks",icon:"mic"},software:{singular:"Software",plural:"Software",icon:"desktop_windows"},game:{singular:"Game",plural:"Games",icon:"sports_esports"},xxx:{singular:"XXX",plural:"XXX",icon:"18_up_rating_outline"},null:{singular:"Unknown",plural:"Unknown",icon:"question_mark"}};function Ws(t,n){return t.isActive()?{aggregate:n,filter:t.filterValues()}:void 0}const Eie={Relevance:{label:"Relevance",descending:!0},PublishedAt:{label:"Published",descending:!0},UpdatedAt:{label:"Updated",descending:!0},Size:{label:"Size",descending:!0},Files:{label:"Files Count",descending:!0},Seeders:{label:"Seeders",descending:!0},Leechers:{label:"Leechers",descending:!0},Name:{label:"Name",descending:!1}},Sie=new class Tie extends Xm{}(class kie extends Km{constructor(n,e){super(n,e),this.scheduler=n,this.work=e}schedule(n,e=0){return e>0?super.schedule(n,e):(this.delay=e,this.state=n,this.scheduler.flush(this),this)}execute(n,e){return e>0||this.closed?super.execute(n,e):this._execute(n,e)}requestAsyncId(n,e,i=0){return null!=i&&i>0||null==i&&this.delay>0?super.requestAsyncId(n,e,i):(n.flush(this),0)}});var bt=function(t){return t[t.loading=1]="loading",t[t.setVariables=2]="setVariables",t[t.fetchMore=3]="fetchMore",t[t.refetch=4]="refetch",t[t.poll=6]="poll",t[t.ready=7]="ready",t[t.error=8]="error",t}(bt||{});function Ru(t){return!!t&&t<7}var vx="Invariant Violation",iL=Object.setPrototypeOf,Mie=void 0===iL?function(t,n){return t.__proto__=n,t}:iL,rL=function(t){function n(e){void 0===e&&(e=vx);var i=t.call(this,"number"==typeof e?vx+": "+e+" (see https://github.com/apollographql/invariant-packages)":e)||this;return i.framesToPop=1,i.name=vx,Mie(i,n.prototype),i}return Fi(n,t),n}(Error);function Qs(t,n){if(!t)throw new rL(n)}var t,cg=["debug","log","warn","error","silent"],yx=cg.indexOf("log");function lg(t){return function(){if(cg.indexOf(t)>=yx)return(console[t]||console.log).apply(console,arguments)}}(t=Qs||(Qs={})).debug=lg("debug"),t.log=lg("log"),t.warn=lg("warn"),t.error=lg("error");var wx="3.10.1";function sr(t){try{return t()}catch{}}const xx=sr(function(){return globalThis})||sr(function(){return window})||sr(function(){return self})||sr(function(){return global})||sr(function(){return sr.constructor("return this")()});var oL=new Map;function Cx(t){var n=oL.get(t)||1;return oL.set(t,n+1),"".concat(t,":").concat(n,":").concat(Math.random().toString(36).slice(2))}function sL(t,n){void 0===n&&(n=0);var e=Cx("stringifyForDisplay");return JSON.stringify(t,function(i,r){return void 0===r?e:r},n).split(JSON.stringify(e)).join("")}function dg(t){return function(n){for(var e=[],i=1;it.length)&&(n=t.length);for(var e=0,i=new Array(n);e1,a=!1,l=arguments[1];return new o(function(d){return r.subscribe({next:function(u){var h=!a;if(a=!0,!h||s)try{l=i(l,u)}catch(f){return d.error(f)}else l=u},error:function(u){d.error(u)},complete:function(){if(!a&&!s)return d.error(new TypeError("Cannot reduce an empty sequence"));d.next(l),d.complete()}})})},n.concat=function(){for(var i=this,r=arguments.length,o=new Array(r),s=0;s=0&&a.splice(h,1),l()}});a.push(u)},error:function(d){s.error(d)},complete:function(){l()}});function l(){c.closed&&0===a.length&&s.complete()}return function(){a.forEach(function(d){return d.unsubscribe()}),c.unsubscribe()}})},n[Ix]=function(){return this},t.from=function(i){var r="function"==typeof this?this:t;if(null==i)throw new TypeError(i+" is not an object");var o=ug(i,Ix);if(o){var s=o.call(i);if(Object(s)!==s)throw new TypeError(s+" is not an object");return function Oie(t){return t instanceof ht}(s)&&s.constructor===r?s:new r(function(a){return s.subscribe(a)})}if(Sx("iterator")&&(o=ug(i,Rie)))return new r(function(a){hg(function(){if(!a.closed){for(var l,c=function Iie(t,n){var e=typeof Symbol<"u"&&t[Symbol.iterator]||t["@@iterator"];if(e)return(e=e.call(t)).next.bind(e);if(Array.isArray(t)||(e=function Aie(t,n){if(t){if("string"==typeof t)return lL(t,n);var e=Object.prototype.toString.call(t).slice(8,-1);if("Object"===e&&t.constructor&&(e=t.constructor.name),"Map"===e||"Set"===e)return Array.from(t);if("Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e))return lL(t,n)}}(t))||n&&t&&"number"==typeof t.length){e&&(t=e);var i=0;return function(){return i>=t.length?{done:!0}:{done:!1,value:t[i++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(o.call(i));!(l=c()).done;)if(a.next(l.value),a.closed)return;a.complete()}})});if(Array.isArray(i))return new r(function(a){hg(function(){if(!a.closed){for(var c=0;c"u"&&(ke(1===i.length,72,i.length),e=i[0].name.value),k(k({},t),{definitions:Pi([{kind:"OperationDefinition",operation:"query",selectionSet:{kind:"SelectionSet",selections:[{kind:"FragmentSpread",name:{kind:"Name",value:e}}]}}],t.definitions,!0)})}function fg(t){void 0===t&&(t=[]);var n={};return t.forEach(function(e){n[e.name.value]=e}),n}function mg(t,n){switch(t.kind){case"InlineFragment":return t;case"FragmentSpread":var e=t.name.value;if("function"==typeof n)return n(e);var i=n&&n[e];return ke(i,73,e),i||null;default:return null}}function Ox(){}Tx()&&Object.defineProperty(ht,Symbol("extensions"),{value:{symbol:Ix,hostReportError:Gc},configurable:!0});const Bie=Ox,jie=typeof WeakRef<"u"?WeakRef:function(t){return{deref:()=>t}},Hie=typeof WeakMap<"u"?WeakMap:Map,zie=typeof FinalizationRegistry<"u"?FinalizationRegistry:function(){return{register:Ox,unregister:Ox}};class pg{constructor(n=1/0,e=Bie){this.max=n,this.dispose=e,this.map=new Hie,this.newest=null,this.oldest=null,this.unfinalizedNodes=new Set,this.finalizationScheduled=!1,this.size=0,this.finalize=()=>{const i=this.unfinalizedNodes.values();for(let r=0;r<10024;r++){const o=i.next().value;if(!o)break;this.unfinalizedNodes.delete(o);const s=o.key;delete o.key,o.keyRef=new jie(s),this.registry.register(s,o,o)}this.unfinalizedNodes.size>0?queueMicrotask(this.finalize):this.finalizationScheduled=!1},this.registry=new zie(this.deleteNode.bind(this))}has(n){return this.map.has(n)}get(n){const e=this.getNode(n);return e&&e.value}getNode(n){const e=this.map.get(n);if(e&&e!==this.newest){const{older:i,newer:r}=e;r&&(r.older=i),i&&(i.newer=r),e.older=this.newest,e.older.newer=e,e.newer=null,this.newest=e,e===this.oldest&&(this.oldest=r)}return e}set(n,e){let i=this.getNode(n);return i?i.value=e:(i={key:n,value:e,newer:null,older:this.newest},this.newest&&(this.newest.newer=i),this.newest=i,this.oldest=this.oldest||i,this.scheduleFinalization(i),this.map.set(n,i),this.size++,i.value)}clean(){for(;this.oldest&&this.size>this.max;)this.deleteNode(this.oldest)}deleteNode(n){n===this.newest&&(this.newest=n.older),n===this.oldest&&(this.oldest=n.newer),n.newer&&(n.newer.older=n.older),n.older&&(n.older.newer=n.newer),this.size--;const e=n.key||n.keyRef&&n.keyRef.deref();this.dispose(n.value,e),n.keyRef?this.registry.unregister(n):this.unfinalizedNodes.delete(n),e&&this.map.delete(e)}delete(n){const e=this.map.get(n);return!!e&&(this.deleteNode(e),!0)}scheduleFinalization(n){this.unfinalizedNodes.add(n),this.finalizationScheduled||(this.finalizationScheduled=!0,queueMicrotask(this.finalize))}}function $ie(){}class Nx{constructor(n=1/0,e=$ie){this.max=n,this.dispose=e,this.map=new Map,this.newest=null,this.oldest=null}has(n){return this.map.has(n)}get(n){const e=this.getNode(n);return e&&e.value}get size(){return this.map.size}getNode(n){const e=this.map.get(n);if(e&&e!==this.newest){const{older:i,newer:r}=e;r&&(r.older=i),i&&(i.newer=r),e.older=this.newest,e.older.newer=e,e.newer=null,this.newest=e,e===this.oldest&&(this.oldest=r)}return e}set(n,e){let i=this.getNode(n);return i?i.value=e:(i={key:n,value:e,newer:null,older:this.newest},this.newest&&(this.newest.newer=i),this.newest=i,this.oldest=this.oldest||i,this.map.set(n,i),i.value)}clean(){for(;this.oldest&&this.map.size>this.max;)this.delete(this.oldest.key)}delete(n){const e=this.map.get(n);return!!e&&(e===this.newest&&(this.newest=e.older),e===this.oldest&&(this.oldest=e.newer),e.newer&&(e.newer.older=e.older),e.older&&(e.older.newer=e.newer),this.map.delete(n),this.dispose(e.value,n),!0)}}var Fx=new WeakSet;function mL(t){t.size<=(t.max||-1)||Fx.has(t)||(Fx.add(t),setTimeout(function(){t.clean(),Fx.delete(t)},100))}var pL=function(t,n){var e=new pg(t,n);return e.set=function(i,r){var o=pg.prototype.set.call(this,i,r);return mL(this),o},e},qie=function(t,n){var e=new Nx(t,n);return e.set=function(i,r){var o=Nx.prototype.set.call(this,i,r);return mL(this),o},e},Gie=Symbol.for("apollo.cacheSize"),co=k({},xx[Gie]),Ys={};function gL(t,n){Ys[t]=n}var Wie=!1!==globalThis.__DEV__?function Xie(){var t,n,e,i,r;if(!1===globalThis.__DEV__)throw new Error("only supported in development mode");return{limits:Object.fromEntries(Object.entries({parser:1e3,canonicalStringify:1e3,print:2e3,"documentTransform.cache":2e3,"queryManager.getDocumentInfo":2e3,"PersistedQueryLink.persistedQueryHashes":2e3,"fragmentRegistry.transform":2e3,"fragmentRegistry.lookup":1e3,"fragmentRegistry.findFragmentSpreads":4e3,"cache.fragmentQueryDocuments":1e3,"removeTypenameFromVariables.getVariableDefinitions":2e3,"inMemoryCache.maybeBroadcastWatch":5e3,"inMemoryCache.executeSelectionSet":5e4,"inMemoryCache.executeSubSelectedArray":1e4}).map(function(n){var e=n[0];return[e,co[e]||n[1]]})),sizes:k({print:null===(t=Ys.print)||void 0===t?void 0:t.call(Ys),parser:null===(n=Ys.parser)||void 0===n?void 0:n.call(Ys),canonicalStringify:null===(e=Ys.canonicalStringify)||void 0===e?void 0:e.call(Ys),links:Lx(this.link),queryManager:{getDocumentInfo:this.queryManager.transformCache.size,documentTransforms:vL(this.queryManager.documentTransform)}},null===(r=(i=this.cache).getMemoryInternals)||void 0===r?void 0:r.call(i))}}:void 0,Qie=!1!==globalThis.__DEV__?function Zie(){var t=this.config.fragments;return k(k({},_L.apply(this)),{addTypenameDocumentTransform:vL(this.addTypenameTransform),inMemoryCache:{executeSelectionSet:Go(this.storeReader.executeSelectionSet),executeSubSelectedArray:Go(this.storeReader.executeSubSelectedArray),maybeBroadcastWatch:Go(this.maybeBroadcastWatch)},fragmentRegistry:{findFragmentSpreads:Go(t?.findFragmentSpreads),lookup:Go(t?.lookup),transform:Go(t?.transform)}})}:void 0,Yie=!1!==globalThis.__DEV__?_L:void 0;function _L(){return{cache:{fragmentQueryDocuments:Go(this.getFragmentDoc)}}}function Go(t){return function Jie(t){return!!t&&"dirtyKey"in t}(t)?t.size:void 0}function bL(t){return null!=t}function vL(t){return Px(t).map(function(n){return{cache:n}})}function Px(t){return t?Pi(Pi([Go(t?.performWork)],Px(t?.left),!0),Px(t?.right),!0).filter(bL):[]}function Lx(t){var n;return t?Pi(Pi([null===(n=t?.getMemoryInternals)||void 0===n?void 0:n.call(t)],Lx(t?.left),!0),Lx(t?.right),!0).filter(bL):[]}var Wc,Wo=Object.assign(function(n){return JSON.stringify(n,ere)},{reset:function(){Wc=new qie(co.canonicalStringify||1e3)}});function ere(t,n){if(n&&"object"==typeof n){var e=Object.getPrototypeOf(n);if(e===Object.prototype||null===e){var i=Object.keys(n);if(i.every(tre))return n;var r=JSON.stringify(i),o=Wc.get(r);if(!o){i.sort();var s=JSON.stringify(i);o=Wc.get(s)||i,Wc.set(r,o),Wc.set(s,o)}var a=Object.create(e);return o.forEach(function(c){a[c]=n[c]}),a}}return n}function tre(t,n,e){return 0===n||e[n-1]<=t}function Qc(t){return{__ref:String(t)}}function at(t){return!(!t||"object"!=typeof t||"string"!=typeof t.__ref)}function Yc(t,n,e,i){if(function ore(t){return"IntValue"===t.kind}(e)||function sre(t){return"FloatValue"===t.kind}(e))t[n.value]=Number(e.value);else if(function rre(t){return"BooleanValue"===t.kind}(e)||function ire(t){return"StringValue"===t.kind}(e))t[n.value]=e.value;else if(function cre(t){return"ObjectValue"===t.kind}(e)){var r={};e.fields.map(function(s){return Yc(r,s.name,s.value,i)}),t[n.value]=r}else if(function are(t){return"Variable"===t.kind}(e))t[n.value]=(i||{})[e.name.value];else if(function lre(t){return"ListValue"===t.kind}(e))t[n.value]=e.values.map(function(s){var a={};return Yc(a,n,s,i),a[n.value]});else if(function dre(t){return"EnumValue"===t.kind}(e))t[n.value]=e.value;else{if(!function ure(t){return"NullValue"===t.kind}(e))throw Jn(82,n.value,e.kind);t[n.value]=null}}!1!==globalThis.__DEV__&&gL("canonicalStringify",function(){return Wc.size}),Wo.reset();var fre=["connection","include","skip","client","rest","export","nonreactive"],Nu=Wo,yL=Object.assign(function(t,n,e){if(n&&e&&e.connection&&e.connection.key){if(e.connection.filter&&e.connection.filter.length>0){var i=e.connection.filter?e.connection.filter:[];i.sort();var r={};return i.forEach(function(a){r[a]=n[a]}),"".concat(e.connection.key,"(").concat(Nu(r),")")}return e.connection.key}var o=t;if(n){var s=Nu(n);o+="(".concat(s,")")}return e&&Object.keys(e).forEach(function(a){-1===fre.indexOf(a)&&(e[a]&&Object.keys(e[a]).length?o+="@".concat(a,"(").concat(Nu(e[a]),")"):o+="@".concat(a))}),o},{setStringify:function(t){var n=Nu;return Nu=t,n}});function gg(t,n){if(t.arguments&&t.arguments.length){var e={};return t.arguments.forEach(function(i){return Yc(e,i.name,i.value,n)}),e}return null}function Qo(t){return t.alias?t.alias.value:t.name.value}function Vx(t,n,e){for(var i,r=0,o=n.selections;rCL)return"[Array]";const e=Math.min(bre,t.length),i=t.length-e,r=[];for(let o=0;o1&&r.push(`... ${i} more items`),"["+r.join(", ")+"]"}(t,e);return function wre(t,n){const e=Object.entries(t);return 0===e.length?"{}":n.length>CL?"["+function Cre(t){const n=Object.prototype.toString.call(t).replace(/^\[object /,"").replace(/]$/,"");if("Object"===n&&"function"==typeof t.constructor){const e=t.constructor.name;if("string"==typeof e&&""!==e)return e}return n}(t)+"]":"{ "+e.map(([r,o])=>r+": "+yg(o,n)).join(", ")+" }"}(t,e)}(t,n);default:return String(t)}}class Dre{constructor(n,e,i){this.start=n.start,this.end=e.end,this.startToken=n,this.endToken=e,this.source=i}get[Symbol.toStringTag](){return"Location"}toJSON(){return{start:this.start,end:this.end}}}class DL{constructor(n,e,i,r,o,s){this.kind=n,this.start=e,this.end=i,this.line=r,this.column=o,this.value=s,this.prev=null,this.next=null}get[Symbol.toStringTag](){return"Token"}toJSON(){return{kind:this.kind,value:this.value,line:this.line,column:this.column}}}const EL={Name:[],Document:["definitions"],OperationDefinition:["name","variableDefinitions","directives","selectionSet"],VariableDefinition:["variable","type","defaultValue","directives"],Variable:["name"],SelectionSet:["selections"],Field:["alias","name","arguments","directives","selectionSet"],Argument:["name","value"],FragmentSpread:["name","directives"],InlineFragment:["typeCondition","directives","selectionSet"],FragmentDefinition:["name","variableDefinitions","typeCondition","directives","selectionSet"],IntValue:[],FloatValue:[],StringValue:[],BooleanValue:[],NullValue:[],EnumValue:[],ListValue:["values"],ObjectValue:["fields"],ObjectField:["name","value"],Directive:["name","arguments"],NamedType:["name"],ListType:["type"],NonNullType:["type"],SchemaDefinition:["description","directives","operationTypes"],OperationTypeDefinition:["type"],ScalarTypeDefinition:["description","name","directives"],ObjectTypeDefinition:["description","name","interfaces","directives","fields"],FieldDefinition:["description","name","arguments","type","directives"],InputValueDefinition:["description","name","type","defaultValue","directives"],InterfaceTypeDefinition:["description","name","interfaces","directives","fields"],UnionTypeDefinition:["description","name","directives","types"],EnumTypeDefinition:["description","name","directives","values"],EnumValueDefinition:["description","name","directives"],InputObjectTypeDefinition:["description","name","directives","fields"],DirectiveDefinition:["description","name","arguments","locations"],SchemaExtension:["directives","operationTypes"],ScalarTypeExtension:["name","directives"],ObjectTypeExtension:["name","interfaces","directives","fields"],InterfaceTypeExtension:["name","interfaces","directives","fields"],UnionTypeExtension:["name","directives","types"],EnumTypeExtension:["name","directives","values"],InputObjectTypeExtension:["name","directives","fields"]},Ere=new Set(Object.keys(EL));function kL(t){const n=t?.kind;return"string"==typeof n&&Ere.has(n)}var Bu=function(t){return t.QUERY="query",t.MUTATION="mutation",t.SUBSCRIPTION="subscription",t}(Bu||{}),ae=function(t){return t.NAME="Name",t.DOCUMENT="Document",t.OPERATION_DEFINITION="OperationDefinition",t.VARIABLE_DEFINITION="VariableDefinition",t.SELECTION_SET="SelectionSet",t.FIELD="Field",t.ARGUMENT="Argument",t.FRAGMENT_SPREAD="FragmentSpread",t.INLINE_FRAGMENT="InlineFragment",t.FRAGMENT_DEFINITION="FragmentDefinition",t.VARIABLE="Variable",t.INT="IntValue",t.FLOAT="FloatValue",t.STRING="StringValue",t.BOOLEAN="BooleanValue",t.NULL="NullValue",t.ENUM="EnumValue",t.LIST="ListValue",t.OBJECT="ObjectValue",t.OBJECT_FIELD="ObjectField",t.DIRECTIVE="Directive",t.NAMED_TYPE="NamedType",t.LIST_TYPE="ListType",t.NON_NULL_TYPE="NonNullType",t.SCHEMA_DEFINITION="SchemaDefinition",t.OPERATION_TYPE_DEFINITION="OperationTypeDefinition",t.SCALAR_TYPE_DEFINITION="ScalarTypeDefinition",t.OBJECT_TYPE_DEFINITION="ObjectTypeDefinition",t.FIELD_DEFINITION="FieldDefinition",t.INPUT_VALUE_DEFINITION="InputValueDefinition",t.INTERFACE_TYPE_DEFINITION="InterfaceTypeDefinition",t.UNION_TYPE_DEFINITION="UnionTypeDefinition",t.ENUM_TYPE_DEFINITION="EnumTypeDefinition",t.ENUM_VALUE_DEFINITION="EnumValueDefinition",t.INPUT_OBJECT_TYPE_DEFINITION="InputObjectTypeDefinition",t.DIRECTIVE_DEFINITION="DirectiveDefinition",t.SCHEMA_EXTENSION="SchemaExtension",t.SCALAR_TYPE_EXTENSION="ScalarTypeExtension",t.OBJECT_TYPE_EXTENSION="ObjectTypeExtension",t.INTERFACE_TYPE_EXTENSION="InterfaceTypeExtension",t.UNION_TYPE_EXTENSION="UnionTypeExtension",t.ENUM_TYPE_EXTENSION="EnumTypeExtension",t.INPUT_OBJECT_TYPE_EXTENSION="InputObjectTypeExtension",t}(ae||{});const Ks=Object.freeze({});function lo(t,n,e=EL){const i=new Map;for(const b of Object.values(ae))i.set(b,Ux(n,b));let r,d,u,o=Array.isArray(t),s=[t],a=-1,c=[],l=t;const h=[],f=[];do{a++;const b=a===s.length,v=b&&0!==c.length;if(b){if(d=0===f.length?void 0:h[h.length-1],l=u,u=f.pop(),v)if(o){l=l.slice();let I=0;for(const[N,V]of c){const Q=N-I;null===V?(l.splice(Q,1),I++):l[Q]=V}}else{l=Object.defineProperties({},Object.getOwnPropertyDescriptors(l));for(const[I,N]of c)l[I]=N}a=r.index,s=r.keys,c=r.edits,o=r.inArray,r=r.prev}else if(u){if(d=o?a:s[a],l=u[d],null==l)continue;h.push(d)}let x;if(!Array.isArray(l)){var m,g;kL(l)||vg(!1,`Invalid AST Node: ${zx(l)}.`);const I=b?null===(m=i.get(l.kind))||void 0===m?void 0:m.leave:null===(g=i.get(l.kind))||void 0===g?void 0:g.enter;if(x=I?.call(n,l,d,u,h,f),x===Ks)break;if(!1===x){if(!b){h.pop();continue}}else if(void 0!==x&&(c.push([d,x]),!b)){if(!kL(x)){h.pop();continue}l=x}}var _;void 0===x&&v&&c.push([d,l]),b?h.pop():(r={inArray:o,index:a,keys:s,edits:c,prev:r},o=Array.isArray(l),s=o?l:null!==(_=e[l.kind])&&void 0!==_?_:[],a=-1,c=[],u&&f.push(u),u=l)}while(void 0!==r);return 0!==c.length?c[c.length-1][1]:t}function Ux(t,n){const e=t[n];return"object"==typeof e?e:"function"==typeof e?{enter:e,leave:void 0}:{enter:t.enter,leave:t.leave}}function ju(t,n){var e=t.directives;return!e||!e.length||function Sre(t){var n=[];return t&&t.length&&t.forEach(function(e){if(function Tre(t){var n=t.name.value;return"skip"===n||"include"===n}(e)){var i=e.arguments,r=e.name.value;ke(i&&1===i.length,68,r);var o=i[0];ke(o.name&&"if"===o.name.value,69,r);var s=o.value;ke(s&&("Variable"===s.kind||"BooleanValue"===s.kind),70,r),n.push({directive:e,ifArgument:o})}}),n}(e).every(function(i){var r=i.directive,o=i.ifArgument,s=!1;return"Variable"===o.value.kind?ke(void 0!==(s=n&&n[o.value.name.value]),67,r.name.value):s=o.value.value,"skip"===r.name.value?!s:s})}function Xs(t,n,e){var i=new Set(t),r=i.size;return lo(n,{Directive:function(o){if(i.delete(o.name.value)&&(!e||!i.size))return Ks}}),e?!i.size:i.size=0});var IL=function(t,n,e){var i=new Error(e);throw i.name="ServerError",i.response=t,i.statusCode=t.status,i.result=n,i},qx=Symbol(),Xc=function(t){function n(e){var i=e.graphQLErrors,r=e.protocolErrors,o=e.clientErrors,s=e.networkError,a=e.errorMessage,c=e.extraInfo,l=t.call(this,a)||this;return l.name="ApolloError",l.graphQLErrors=i||[],l.protocolErrors=r||[],l.clientErrors=o||[],l.networkError=s||null,l.message=a||function(t){var n=Pi(Pi(Pi([],t.graphQLErrors,!0),t.clientErrors,!0),t.protocolErrors,!0);return t.networkError&&n.push(t.networkError),n.map(function(e){return zt(e)&&e.message||"Error message not found."}).join("\n")}(l),l.extraInfo=c,l.__proto__=n.prototype,l}return Fi(n,t),n}(Error),Ut=Array.isArray;function Nr(t){return Array.isArray(t)&&t.length>0}var qre=Object.prototype.hasOwnProperty;function AL(){for(var t=[],n=0;n1)for(var i=new Xo,r=1;r=0;--a){var c=s[a],d=isNaN(+c)?{}:[];d[c]=o,o=d}e=i.merge(e,o)}),e}var OL=Object.prototype.hasOwnProperty;function Xre(t){var n={};return t.split("\n").forEach(function(e){var i=e.indexOf(":");if(i>-1){var r=e.slice(0,i).trim().toLowerCase(),o=e.slice(i+1).trim();n[r]=o}}),n}function NL(t,n){t.status>=300&&IL(t,function(){try{return JSON.parse(n)}catch{return n}}(),"Response not successful: Received status code ".concat(t.status));try{return JSON.parse(n)}catch(r){var i=r;throw i.name="ServerParseError",i.response=t,i.statusCode=t.status,i.bodyText=n,i}}function Gx(t){return 9===t||32===t}function Hu(t){return t>=48&&t<=57}function FL(t){return t>=97&&t<=122||t>=65&&t<=90}function PL(t){return FL(t)||95===t}function toe(t){return FL(t)||Hu(t)||95===t}function noe(t){var n;let e=Number.MAX_SAFE_INTEGER,i=null,r=-1;for(let s=0;s0===a?s:s.slice(e)).slice(null!==(n=i)&&void 0!==n?n:0,r+1)}function ioe(t){let n=0;for(;nt.value},Variable:{leave:t=>"$"+t.name},Document:{leave:t=>ce(t.definitions,"\n\n")},OperationDefinition:{leave(t){const n=qe("(",ce(t.variableDefinitions,", "),")"),e=ce([t.operation,ce([t.name,n]),ce(t.directives," ")]," ");return("query"===e?"":e+" ")+t.selectionSet}},VariableDefinition:{leave:({variable:t,type:n,defaultValue:e,directives:i})=>t+": "+n+qe(" = ",e)+qe(" ",ce(i," "))},SelectionSet:{leave:({selections:t})=>ar(t)},Field:{leave({alias:t,name:n,arguments:e,directives:i,selectionSet:r}){const o=qe("",t,": ")+n;let s=o+qe("(",ce(e,", "),")");return s.length>80&&(s=o+qe("(\n",Cg(ce(e,"\n")),"\n)")),ce([s,ce(i," "),r]," ")}},Argument:{leave:({name:t,value:n})=>t+": "+n},FragmentSpread:{leave:({name:t,directives:n})=>"..."+t+qe(" ",ce(n," "))},InlineFragment:{leave:({typeCondition:t,directives:n,selectionSet:e})=>ce(["...",qe("on ",t),ce(n," "),e]," ")},FragmentDefinition:{leave:({name:t,typeCondition:n,variableDefinitions:e,directives:i,selectionSet:r})=>`fragment ${t}${qe("(",ce(e,", "),")")} on ${n} ${qe("",ce(i," ")," ")}`+r},IntValue:{leave:({value:t})=>t},FloatValue:{leave:({value:t})=>t},StringValue:{leave:({value:t,block:n})=>n?function roe(t,n){const e=t.replace(/"""/g,'\\"""'),i=e.split(/\r\n|[\n\r]/g),r=1===i.length,o=i.length>1&&i.slice(1).every(f=>0===f.length||Gx(f.charCodeAt(0))),s=e.endsWith('\\"""'),a=t.endsWith('"')&&!s,c=t.endsWith("\\"),l=a||c,d=!(null!=n&&n.minimize)&&(!r||t.length>70||l||o||s);let u="";const h=r&&Gx(t.charCodeAt(0));return(d&&!h||o)&&(u+="\n"),u+=e,(d||l)&&(u+="\n"),'"""'+u+'"""'}(t):function ooe(t){return`"${t.replace(soe,aoe)}"`}(t)},BooleanValue:{leave:({value:t})=>t?"true":"false"},NullValue:{leave:()=>"null"},EnumValue:{leave:({value:t})=>t},ListValue:{leave:({values:t})=>"["+ce(t,", ")+"]"},ObjectValue:{leave:({fields:t})=>"{"+ce(t,", ")+"}"},ObjectField:{leave:({name:t,value:n})=>t+": "+n},Directive:{leave:({name:t,arguments:n})=>"@"+t+qe("(",ce(n,", "),")")},NamedType:{leave:({name:t})=>t},ListType:{leave:({type:t})=>"["+t+"]"},NonNullType:{leave:({type:t})=>t+"!"},SchemaDefinition:{leave:({description:t,directives:n,operationTypes:e})=>qe("",t,"\n")+ce(["schema",ce(n," "),ar(e)]," ")},OperationTypeDefinition:{leave:({operation:t,type:n})=>t+": "+n},ScalarTypeDefinition:{leave:({description:t,name:n,directives:e})=>qe("",t,"\n")+ce(["scalar",n,ce(e," ")]," ")},ObjectTypeDefinition:{leave:({description:t,name:n,interfaces:e,directives:i,fields:r})=>qe("",t,"\n")+ce(["type",n,qe("implements ",ce(e," & ")),ce(i," "),ar(r)]," ")},FieldDefinition:{leave:({description:t,name:n,arguments:e,type:i,directives:r})=>qe("",t,"\n")+n+(LL(e)?qe("(\n",Cg(ce(e,"\n")),"\n)"):qe("(",ce(e,", "),")"))+": "+i+qe(" ",ce(r," "))},InputValueDefinition:{leave:({description:t,name:n,type:e,defaultValue:i,directives:r})=>qe("",t,"\n")+ce([n+": "+e,qe("= ",i),ce(r," ")]," ")},InterfaceTypeDefinition:{leave:({description:t,name:n,interfaces:e,directives:i,fields:r})=>qe("",t,"\n")+ce(["interface",n,qe("implements ",ce(e," & ")),ce(i," "),ar(r)]," ")},UnionTypeDefinition:{leave:({description:t,name:n,directives:e,types:i})=>qe("",t,"\n")+ce(["union",n,ce(e," "),qe("= ",ce(i," | "))]," ")},EnumTypeDefinition:{leave:({description:t,name:n,directives:e,values:i})=>qe("",t,"\n")+ce(["enum",n,ce(e," "),ar(i)]," ")},EnumValueDefinition:{leave:({description:t,name:n,directives:e})=>qe("",t,"\n")+ce([n,ce(e," ")]," ")},InputObjectTypeDefinition:{leave:({description:t,name:n,directives:e,fields:i})=>qe("",t,"\n")+ce(["input",n,ce(e," "),ar(i)]," ")},DirectiveDefinition:{leave:({description:t,name:n,arguments:e,repeatable:i,locations:r})=>qe("",t,"\n")+"directive @"+n+(LL(e)?qe("(\n",Cg(ce(e,"\n")),"\n)"):qe("(",ce(e,", "),")"))+(i?" repeatable":"")+" on "+ce(r," | ")},SchemaExtension:{leave:({directives:t,operationTypes:n})=>ce(["extend schema",ce(t," "),ar(n)]," ")},ScalarTypeExtension:{leave:({name:t,directives:n})=>ce(["extend scalar",t,ce(n," ")]," ")},ObjectTypeExtension:{leave:({name:t,interfaces:n,directives:e,fields:i})=>ce(["extend type",t,qe("implements ",ce(n," & ")),ce(e," "),ar(i)]," ")},InterfaceTypeExtension:{leave:({name:t,interfaces:n,directives:e,fields:i})=>ce(["extend interface",t,qe("implements ",ce(n," & ")),ce(e," "),ar(i)]," ")},UnionTypeExtension:{leave:({name:t,directives:n,types:e})=>ce(["extend union",t,ce(n," "),qe("= ",ce(e," | "))]," ")},EnumTypeExtension:{leave:({name:t,directives:n,values:e})=>ce(["extend enum",t,ce(n," "),ar(e)]," ")},InputObjectTypeExtension:{leave:({name:t,directives:n,fields:e})=>ce(["extend input",t,ce(n," "),ar(e)]," ")}};function ce(t,n=""){var e;return null!==(e=t?.filter(i=>i).join(n))&&void 0!==e?e:""}function ar(t){return qe("{\n",Cg(ce(t,"\n")),"\n}")}function qe(t,n,e=""){return null!=n&&""!==n?t+n+e:""}function Cg(t){return qe(" ",t.replace(/\n/g,"\n "))}function LL(t){var n;return null!==(n=t?.some(e=>e.includes("\n")))&&void 0!==n&&n}var zu,Dg=Object.assign(function(t){var n=zu.get(t);return n||(n=Wx(t),zu.set(t,n)),n},{reset:function(){zu=new pL(co.print||2e3)}});Dg.reset(),!1!==globalThis.__DEV__&&gL("print",function(){return zu?zu.size:0});var moe={http:{includeQuery:!0,includeExtensions:!1,preserveHeaderCase:!1},headers:{accept:"*/*","content-type":"application/json"},options:{method:"POST"}},VL=function(t,n){return n(t)};function Qx(t){return new ht(function(n){n.error(t)})}var jL={kind:ae.FIELD,name:{kind:ae.NAME,value:"__typename"}};function HL(t,n){return!t||t.selectionSet.selections.every(function(e){return e.kind===ae.FRAGMENT_SPREAD&&HL(n[e.name.value],n)})}function Yx(t){return HL(Pu(t)||function pre(t){ke("Document"===t.kind,78),ke(t.definitions.length<=1,79);var n=t.definitions[0];return ke("FragmentDefinition"===n.kind,80),n}(t),fg(_g(t)))?null:t}function UL(t){var n=new Map;return function(i){void 0===i&&(i=t);var r=n.get(i);return r||n.set(i,r={variables:new Set,fragmentSpreads:new Set}),r}}function Kx(t,n){Fu(n);for(var e=UL(""),i=UL(""),r=function(b){for(var v=0,x=void 0;v=0;--s)n.definitions[s].kind===ae.OPERATION_DEFINITION&&++o;var a=function zL(t){var n=new Map,e=new Map;return t.forEach(function(i){i&&(i.name?n.set(i.name,i):i.test&&e.set(i.test,i))}),function(i){var r=n.get(i.name.value);return!r&&e.size&&e.forEach(function(o,s){s(i)&&(r=o)}),r}}(t),c=function(b){return Nr(b)&&b.map(a).some(function(v){return v&&v.remove})},l=new Map,d=!1,u={enter:function(b){if(c(b.directives))return d=!0,null}},h=lo(n,{Field:u,InlineFragment:u,VariableDefinition:{enter:function(){return!1}},Variable:{enter:function(b,v,x,I,N){var V=r(N);V&&V.variables.add(b.name.value)}},FragmentSpread:{enter:function(b,v,x,I,N){if(c(b.directives))return d=!0,null;var V=r(N);V&&V.fragmentSpreads.add(b.name.value)}},FragmentDefinition:{enter:function(b,v,x,I){l.set(JSON.stringify(I),b)},leave:function(b,v,x,I){return b===l.get(JSON.stringify(I))?b:o>0&&b.selectionSet.selections.every(function(V){return V.kind===ae.FIELD&&"__typename"===V.name.value})?(i(b.name.value).removed=!0,d=!0,null):void 0}},Directive:{leave:function(b){if(a(b))return d=!0,null}}});if(!d)return n;var f=function(b){return b.transitiveVars||(b.transitiveVars=new Set(b.variables),b.removed||b.fragmentSpreads.forEach(function(v){f(i(v)).transitiveVars.forEach(function(x){b.transitiveVars.add(x)})})),b},m=new Set;h.definitions.forEach(function(b){b.kind===ae.OPERATION_DEFINITION?f(e(b.name&&b.name.value)).fragmentSpreads.forEach(function(v){m.add(v)}):b.kind===ae.FRAGMENT_DEFINITION&&0===o&&!i(b.name.value).removed&&m.add(b.name.value)}),m.forEach(function(b){f(i(b)).fragmentSpreads.forEach(function(v){m.add(v)})});var _={enter:function(b){if(function(b){return!(m.has(b)&&!i(b).removed)}(b.name.value))return null}};return Yx(lo(h,{FragmentSpread:_,FragmentDefinition:_,OperationDefinition:{leave:function(b){if(b.variableDefinitions){var v=f(e(b.name&&b.name.value)).transitiveVars;if(v.size"u")throw Jn(37)}(i||qL);var h={http:{includeExtensions:s,preserveHeaderCase:a},options:u.fetchOptions,credentials:u.credentials,headers:u.headers};return new Ko(function(f){var m=function(t,n){return t.getContext().uri||("function"==typeof n?n(t):n||"/graphql")}(f,e),g=f.getContext(),_={};if(g.clientAwareness){var b=g.clientAwareness,v=b.name,x=b.version;v&&(_["apollographql-client-name"]=v),x&&(_["apollographql-client-version"]=x)}var I=k(k({},_),g.headers),N={http:g.http,options:g.fetchOptions,credentials:g.credentials,headers:I};if(Xs(["client"],f.query)){var V=$L(f.query);if(!V)return Qx(new Error("HttpLink: Trying to send a client-only query to the server. To send to the server, ensure a non-client field is added to the query or set the `transformOptions.removeClientFields` option to `true`."));f.query=V}var ot,Q=function BL(t,n){for(var e=[],i=2;i-1;){if(_=void 0,Q=[a.slice(0,g),a.slice(g+s.length)],a=Q[1],b=(_=Q[0]).indexOf("\r\n\r\n"),v=Xre(_.slice(0,b)),(x=v["content-type"])&&-1===x.toLowerCase().indexOf("application/json"))throw new Error("Unsupported patch content type: application/json is required.");if(I=_.slice(b))if(N=NL(t,I),Object.keys(N).length>1||"data"in N||"incremental"in N||"errors"in N||"payload"in N)if(Yre(N)){if(V={},"payload"in N){if(1===Object.keys(N).length&&null===N.payload)return[2];V=k({},N.payload)}"errors"in N&&(V=k(k({},V),{extensions:k(k({},"extensions"in V?V.extensions:null),(le={},le[qx]=N.errors,le))})),n(V)}else n(N);else if(1===Object.keys(N).length&&"hasNext"in N&&!N.hasNext)return[2];g=a.indexOf(s)}return[3,1];case 3:return[2]}})})}(ln,Si):function Jre(t){return function(n){return n.text().then(function(e){return NL(n,e)}).then(function(e){return!Array.isArray(e)&&!OL.call(e,"data")&&!OL.call(e,"errors")&&IL(n,e,"Server response was missing for query '".concat(Array.isArray(t)?t.map(function(i){return i.operationName}):t.operationName,"'.")),e})}}(f)(ln).then(Si)}).then(function(){ot=void 0,Se.complete()}).catch(function(ln){ot=void 0,function Zre(t,n){t.result&&t.result.errors&&t.result.data&&n.next(t.result),n.error(t)}(ln,Se)}),function(){ot&&ot.abort()}})})},Doe=function(t){function n(e){void 0===e&&(e={});var i=t.call(this,Coe(e).request)||this;return i.options=e,i}return Fi(n,t),n}(Ko);const{toString:GL,hasOwnProperty:Eoe}=Object.prototype,WL=Function.prototype.toString,Zx=new Map;function Ot(t,n){try{return Jx(t,n)}finally{Zx.clear()}}const QL=Ot;function Jx(t,n){if(t===n)return!0;const e=GL.call(t);if(e!==GL.call(n))return!1;switch(e){case"[object Array]":if(t.length!==n.length)return!1;case"[object Object]":{if(KL(t,n))return!0;const r=YL(t),o=YL(n),s=r.length;if(s!==o.length)return!1;for(let a=0;a=0&&t.indexOf(n,e)===e}(r,Toe)}}return!1}function YL(t){return Object.keys(t).filter(koe,t)}function koe(t){return void 0!==this[t]}const Toe="{ [native code] }";function KL(t,n){let e=Zx.get(t);if(e){if(e.has(n))return!0}else Zx.set(t,e=new Set);return e.add(n),!1}const Moe=()=>Object.create(null),{forEach:Ioe,slice:XL}=Array.prototype,{hasOwnProperty:Aoe}=Object.prototype;class Zo{constructor(n=!0,e=Moe){this.weakness=n,this.makeData=e}lookup(){return this.lookupArray(arguments)}lookupArray(n){let e=this;return Ioe.call(n,i=>e=e.getChildTrie(i)),Aoe.call(e,"data")?e.data:e.data=this.makeData(XL.call(n))}peek(){return this.peekArray(arguments)}peekArray(n){let e=this;for(let i=0,r=n.length;e&&iObject.create(null),{forEach:Noe,slice:Foe}=Array.prototype,{hasOwnProperty:Poe}=Object.prototype;class eC{constructor(n=!0,e=Ooe){this.weakness=n,this.makeData=e}lookup(...n){return this.lookupArray(n)}lookupArray(n){let e=this;return Noe.call(n,i=>e=e.getChildTrie(i)),Poe.call(e,"data")?e.data:e.data=this.makeData(Foe.call(n))}peek(...n){return this.peekArray(n)}peekArray(n){let e=this;for(let i=0,r=n.length;e&&iglobalThis)||e2(()=>global)||Object.create(null),nC=t2[tC]||Array[tC]||function(t){try{Object.defineProperty(t2,tC,{value:t,enumerable:!1,writable:!1,configurable:!0})}finally{return t}}(class{constructor(){this.id=["slot",Loe++,Date.now(),Math.random().toString(36).slice(2)].join(":")}hasValue(){for(let n=Sn;n;n=n.parent)if(this.id in n.slots){const e=n.slots[this.id];if(e===JL)break;return n!==Sn&&(Sn.slots[this.id]=e),!0}return Sn&&(Sn.slots[this.id]=JL),!1}getValue(){if(this.hasValue())return Sn.slots[this.id]}withValue(n,e,i,r){const s=Sn;Sn={parent:s,slots:{__proto__:null,[this.id]:n}};try{return e.apply(r,i)}finally{Sn=s}}static bind(n){const e=Sn;return function(){const i=Sn;try{return Sn=e,n.apply(this,arguments)}finally{Sn=i}}}static noContext(n,e,i){if(!Sn)return n.apply(i,e);{const r=Sn;try{return Sn=null,n.apply(i,e)}finally{Sn=r}}}}),Uu=new nC,{hasOwnProperty:Hoe}=Object.prototype,rC=Array.from||function(t){const n=[];return t.forEach(e=>n.push(e)),n};function Eg(t){const{unsubscribe:n}=t;"function"==typeof n&&(t.unsubscribe=void 0,n())}const $u=[],zoe=100;function Jc(t,n){if(!t)throw new Error(n||"assertion failure")}function r2(t,n){const e=t.length;return e>0&&e===n.length&&t[e-1]===n[e-1]}function o2(t){switch(t.length){case 0:throw new Error("unknown value");case 1:return t[0];case 2:throw t[1]}}function s2(t){return t.slice(0)}let Uoe=(()=>{class t{constructor(e){this.fn=e,this.parents=new Set,this.childValues=new Map,this.dirtyChildren=null,this.dirty=!0,this.recomputing=!1,this.value=[],this.deps=null,++t.count}peek(){if(1===this.value.length&&!Jo(this))return a2(this),this.value[0]}recompute(e){return Jc(!this.recomputing,"already recomputing"),a2(this),Jo(this)?function $oe(t,n){return f2(t),Uu.withValue(t,qoe,[t,n]),function Woe(t,n){if("function"==typeof t.subscribe)try{Eg(t),t.unsubscribe=t.subscribe.apply(null,n)}catch{return t.setDirty(),!1}return!0}(t,n)&&function Goe(t){t.dirty=!1,!Jo(t)&&l2(t)}(t),o2(t.value)}(this,e):o2(this.value)}setDirty(){this.dirty||(this.dirty=!0,c2(this),Eg(this))}dispose(){this.setDirty(),f2(this),oC(this,(e,i)=>{e.setDirty(),m2(e,this)})}forget(){this.dispose()}dependOn(e){e.add(this),this.deps||(this.deps=$u.pop()||new Set),this.deps.add(e)}forgetDeps(){this.deps&&(rC(this.deps).forEach(e=>e.delete(this)),this.deps.clear(),$u.push(this.deps),this.deps=null)}}return t.count=0,t})();function a2(t){const n=Uu.getValue();if(n)return t.parents.add(n),n.childValues.has(t)||n.childValues.set(t,[]),Jo(t)?d2(n,t):u2(n,t),n}function qoe(t,n){t.recomputing=!0;const{normalizeResult:e}=t;let i;e&&1===t.value.length&&(i=s2(t.value)),t.value.length=0;try{if(t.value[0]=t.fn.apply(null,n),e&&i&&!r2(i,t.value))try{t.value[0]=e(t.value[0],i[0])}catch{}}catch(r){t.value[1]=r}t.recomputing=!1}function Jo(t){return t.dirty||!(!t.dirtyChildren||!t.dirtyChildren.size)}function c2(t){oC(t,d2)}function l2(t){oC(t,u2)}function oC(t,n){const e=t.parents.size;if(e){const i=rC(t.parents);for(let r=0;r0&&t.childValues.forEach((n,e)=>{m2(t,e)}),t.forgetDeps(),Jc(null===t.dirtyChildren)}function m2(t,n){n.parents.delete(t),t.childValues.delete(n),h2(t,n)}const Qoe={setDirty:!0,dispose:!0,forget:!0};function p2(t){const n=new Map,e=t&&t.subscribe;function i(r){const o=Uu.getValue();if(o){let s=n.get(r);s||n.set(r,s=new Set),o.dependOn(s),"function"==typeof e&&(Eg(s),s.unsubscribe=e(r))}}return i.dirty=function(o,s){const a=n.get(o);if(a){const c=s&&Hoe.call(Qoe,s)?s:"setDirty";rC(a).forEach(l=>l[c]()),n.delete(o),Eg(a)}},i}let g2;function Yoe(...t){return(g2||(g2=new eC("function"==typeof WeakMap))).lookupArray(t)}const sC=new Set;function qu(t,{max:n=Math.pow(2,16),keyArgs:e,makeCacheKey:i=Yoe,normalizeResult:r,subscribe:o,cache:s=Nx}=Object.create(null)){const a="function"==typeof s?new s(n,h=>h.dispose()):s,c=function(){const h=i.apply(null,e?e.apply(null,arguments):arguments);if(void 0===h)return t.apply(null,arguments);let f=a.get(h);f||(a.set(h,f=new Uoe(t)),f.normalizeResult=r,f.subscribe=o,f.forget=()=>a.delete(h));const m=f.recompute(Array.prototype.slice.call(arguments));return a.set(h,f),sC.add(a),Uu.hasValue()||(sC.forEach(g=>g.clean()),sC.clear()),m};function l(h){const f=h&&a.get(h);f&&f.setDirty()}function d(h){const f=h&&a.get(h);if(f)return f.peek()}function u(h){return!!h&&a.delete(h)}return Object.defineProperty(c,"size",{get:()=>a.size,configurable:!1,enumerable:!1}),Object.freeze(c.options={max:n,keyArgs:e,makeCacheKey:i,normalizeResult:r,subscribe:o,cache:a}),c.dirtyKey=l,c.dirty=function(){l(i.apply(null,arguments))},c.peekKey=d,c.peek=function(){return d(i.apply(null,arguments))},c.forgetKey=u,c.forget=function(){return u(i.apply(null,arguments))},c.makeCacheKey=i,c.getKey=e?function(){return i.apply(null,e.apply(null,arguments))}:i,Object.freeze(c)}function Koe(t){return t}var _2=function(){function t(n,e){void 0===e&&(e=Object.create(null)),this.resultCache=TL?new WeakSet:new Set,this.transform=n,e.getCacheKey&&(this.getCacheKey=e.getCacheKey),this.cached=!1!==e.cache,this.resetCache()}return t.prototype.getCacheKey=function(n){return[n]},t.identity=function(){return new t(Koe,{cache:!1})},t.split=function(n,e,i){return void 0===i&&(i=t.identity()),Object.assign(new t(function(r){return(n(r)?e:i).transformDocument(r)},{cache:!1}),{left:e,right:i})},t.prototype.resetCache=function(){var n=this;if(this.cached){var e=new Zo(Kc);this.performWork=qu(t.prototype.performWork.bind(this),{makeCacheKey:function(i){var r=n.getCacheKey(i);if(r)return ke(Array.isArray(r),66),e.lookupArray(r)},max:co["documentTransform.cache"],cache:pg})}},t.prototype.performWork=function(n){return Fu(n),this.transform(n)},t.prototype.transformDocument=function(n){if(this.resultCache.has(n))return n;var e=this.performWork(n);return this.resultCache.add(e),e},t.prototype.concat=function(n){var e=this;return Object.assign(new t(function(i){return n.transformDocument(e.transformDocument(i))},{cache:!1}),{left:this,right:n})},t}();function aC(t,n,e){return new ht(function(i){var r={then:function(c){return new Promise(function(l){return l(c())})}};function o(c,l){return function(d){if(c){var u=function(){return i.closed?0:c(d)};r=r.then(u,u).then(function(h){return i.next(h)},function(h){return i.error(h)})}else i[l](d)}}var s={next:o(n,"next"),error:o(e,"error"),complete:function(){r.then(function(){return i.complete()})}},a=t.subscribe(s);return function(){return a.unsubscribe()}})}function kg(t){return Nr(cC(t))}function cC(t){var n=Nr(t.errors)?t.errors.slice(0):[];return Zc(t)&&Nr(t.incremental)&&t.incremental.forEach(function(e){e.errors&&n.push.apply(n,e.errors)}),n}function Gu(t,n,e){var i=[];t.forEach(function(r){return r[n]&&i.push(r)}),i.forEach(function(r){return r[n](e)})}function b2(t){function n(e){Object.defineProperty(t,e,{value:ht})}return SL&&Symbol.species&&n(Symbol.species),n("@@species"),t}function v2(t){return t&&"function"==typeof t.then}var el=function(t){function n(e){var i=t.call(this,function(r){return i.addObserver(r),function(){return i.removeObserver(r)}})||this;return i.observers=new Set,i.promise=new Promise(function(r,o){i.resolve=r,i.reject=o}),i.handlers={next:function(r){null!==i.sub&&(i.latest=["next",r],i.notify("next",r),Gu(i.observers,"next",r))},error:function(r){var o=i.sub;null!==o&&(o&&setTimeout(function(){return o.unsubscribe()}),i.sub=null,i.latest=["error",r],i.reject(r),i.notify("error",r),Gu(i.observers,"error",r))},complete:function(){var o=i.sub,s=i.sources;if(null!==o){var c=(void 0===s?[]:s).shift();c?v2(c)?c.then(function(l){return i.sub=l.subscribe(i.handlers)},i.handlers.error):i.sub=c.subscribe(i.handlers):(o&&setTimeout(function(){return o.unsubscribe()}),i.sub=null,i.latest&&"next"===i.latest[0]?i.resolve(i.latest[1]):i.resolve(),i.notify("complete"),Gu(i.observers,"complete"))}}},i.nextResultListeners=new Set,i.cancel=function(r){i.reject(r),i.sources=[],i.handlers.complete()},i.promise.catch(function(r){}),"function"==typeof e&&(e=[new ht(e)]),v2(e)?e.then(function(r){return i.start(r)},i.handlers.error):i.start(e),i}return Fi(n,t),n.prototype.start=function(e){void 0===this.sub&&(this.sources=Array.from(e),this.handlers.complete())},n.prototype.deliverLastMessage=function(e){if(this.latest){var i=this.latest[0],r=e[i];r&&r.call(e,this.latest[1]),null===this.sub&&"next"===i&&e.complete&&e.complete()}},n.prototype.addObserver=function(e){this.observers.has(e)||(this.deliverLastMessage(e),this.observers.add(e))},n.prototype.removeObserver=function(e){this.observers.delete(e)&&this.observers.size<1&&this.handlers.complete()},n.prototype.notify=function(e,i){var r=this.nextResultListeners;r.size&&(this.nextResultListeners=new Set,r.forEach(function(o){return o(e,i)}))},n.prototype.beforeNext=function(e){var i=!1;this.nextResultListeners.add(function(r,o){i||(i=!0,e(r,o))})},n}(ht);function tl(){for(var t=[],n=0;n0},n.prototype.tearDownQuery=function(){this.isTornDown||(this.concast&&this.observer&&(this.concast.removeObserver(this.observer),delete this.concast,delete this.observer),this.stopPolling(),this.subscriptions.forEach(function(e){return e.unsubscribe()}),this.subscriptions.clear(),this.queryManager.stopQuery(this.queryId),this.observers.clear(),this.isTornDown=!0)},n.prototype.transformDocument=function(e){return this.queryManager.transform(e)},n}(ht);function C2(t){var n=t.options,e=n.fetchPolicy,i=n.nextFetchPolicy;return"cache-and-network"===e||"network-only"===e?t.reobserve({fetchPolicy:"cache-first",nextFetchPolicy:function(r,o){return this.nextFetchPolicy=i,"function"==typeof this.nextFetchPolicy?this.nextFetchPolicy(r,o):e}}):t.reobserve()}function tse(t){!1!==globalThis.__DEV__&&ke.error(23,t.message,t.stack)}function D2(t){!1!==globalThis.__DEV__&&t&&!1!==globalThis.__DEV__&&ke.debug(24,t)}function uC(t){return"network-only"===t||"no-cache"===t||"standby"===t}function E2(t){return t.kind===ae.FIELD||t.kind===ae.FRAGMENT_SPREAD||t.kind===ae.INLINE_FRAGMENT}b2(dC);var hC=new nC,T2=new WeakMap;function Wu(t){var n=T2.get(t);return n||T2.set(t,n={vars:new Set,dep:p2()}),n}function S2(t){Wu(t).vars.forEach(function(n){return n.forgetCache(t)})}function lse(t){var n=new Set,e=new Set,i=function(o){if(arguments.length>0){if(t!==o){t=o,n.forEach(function(c){Wu(c).dep.dirty(i),function dse(t){t.broadcastWatches&&t.broadcastWatches()}(c)});var s=Array.from(e);e.clear(),s.forEach(function(c){return c(t)})}}else{var a=hC.getValue();a&&(r(a),Wu(a).dep(i))}return t};i.onNextChange=function(o){return e.add(o),function(){e.delete(o)}};var r=i.attachCache=function(o){return n.add(o),Wu(o).vars.add(i),i};return i.forgetCache=function(o){return n.delete(o)},i}var M2=function(){function t(n){var e=n.cache,i=n.client,r=n.resolvers,o=n.fragmentMatcher;this.selectionsToResolveCache=new WeakMap,this.cache=e,i&&(this.client=i),r&&this.addResolvers(r),o&&this.setFragmentMatcher(o)}return t.prototype.addResolvers=function(n){var e=this;this.resolvers=this.resolvers||{},Array.isArray(n)?n.forEach(function(i){e.resolvers=AL(e.resolvers,i)}):this.resolvers=AL(this.resolvers,n)},t.prototype.setResolvers=function(n){this.resolvers={},this.addResolvers(n)},t.prototype.getResolvers=function(){return this.resolvers||{}},t.prototype.runResolvers=function(n){return kr(this,arguments,void 0,function(e){var i=e.document,r=e.remoteResult,o=e.context,s=e.variables,a=e.onlyRunForcedResolvers,c=void 0!==a&&a;return eo(this,function(l){return i?[2,this.resolveDocument(i,r.data,o,s,this.fragmentMatcher,c).then(function(d){return k(k({},r),{data:d.result})})]:[2,r]})})},t.prototype.setFragmentMatcher=function(n){this.fragmentMatcher=n},t.prototype.getFragmentMatcher=function(){return this.fragmentMatcher},t.prototype.clientQuery=function(n){return Xs(["client"],n)&&this.resolvers?n:null},t.prototype.serverQuery=function(n){return $L(n)},t.prototype.prepareContext=function(n){var e=this.cache;return k(k({},n),{cache:e,getCacheKey:function(i){return e.identify(i)}})},t.prototype.addExportedVariables=function(n){return kr(this,arguments,void 0,function(e,i,r){return void 0===i&&(i={}),void 0===r&&(r={}),eo(this,function(o){return e?[2,this.resolveDocument(e,this.buildRootValueFromCache(e,i)||{},this.prepareContext(r),i).then(function(s){return k(k({},i),s.exportedVariables)})]:[2,k({},i)]})})},t.prototype.shouldForceResolvers=function(n){var e=!1;return lo(n,{Directive:{enter:function(i){if("client"===i.name.value&&i.arguments&&(e=i.arguments.some(function(r){return"always"===r.name.value&&"BooleanValue"===r.value.kind&&!0===r.value.value})))return Ks}}}),e},t.prototype.buildRootValueFromCache=function(n,e){return this.cache.diff({query:xoe(n),variables:e,returnPartialData:!0,optimistic:!1}).result},t.prototype.resolveDocument=function(n,e){return kr(this,arguments,void 0,function(i,r,o,s,a,c){var l,d,u,h,f,m,g,_,b,v;return void 0===o&&(o={}),void 0===s&&(s={}),void 0===a&&(a=function(){return!0}),void 0===c&&(c=!1),eo(this,function(I){return l=Lu(i),d=_g(i),u=fg(d),h=this.collectSelectionsToResolve(l,u),m=(f=l.operation)?f.charAt(0).toUpperCase()+f.slice(1):"Query",_=(g=this).cache,b=g.client,v={fragmentMap:u,context:k(k({},o),{cache:_,client:b}),variables:s,fragmentMatcher:a,defaultOperationType:m,exportedVariables:{},selectionsToResolve:h,onlyRunForcedResolvers:c},[2,this.resolveSelectionSet(l.selectionSet,!1,r,v).then(function(N){return{result:N,exportedVariables:v.exportedVariables}})]})})},t.prototype.resolveSelectionSet=function(n,e,i,r){return kr(this,void 0,void 0,function(){var o,s,a,c,l,d=this;return eo(this,function(u){return o=r.fragmentMap,s=r.context,a=r.variables,c=[i],l=function(h){return kr(d,void 0,void 0,function(){var f;return eo(this,function(g){return(e||r.selectionsToResolve.has(h))&&ju(h,a)?Yo(h)?[2,this.resolveField(h,e,i,r).then(function(_){var b;typeof _<"u"&&c.push(((b={})[Qo(h)]=_,b))})]:(function mre(t){return"InlineFragment"===t.kind}(h)?f=h:ke(f=o[h.name.value],18,h.name.value),f&&f.typeCondition&&r.fragmentMatcher(i,f.typeCondition.name.value,s)?[2,this.resolveSelectionSet(f.selectionSet,e,i,r).then(function(_){c.push(_)})]:[2]):[2]})})},[2,Promise.all(n.selections.map(l)).then(function(){return xg(c)})]})})},t.prototype.resolveField=function(n,e,i,r){return kr(this,void 0,void 0,function(){var o,s,a,c,l,d,u,h,f,m=this;return eo(this,function(g){return i?(o=r.variables,s=n.name.value,a=Qo(n),c=s!==a,l=i[a]||i[s],d=Promise.resolve(l),(!r.onlyRunForcedResolvers||this.shouldForceResolvers(n))&&(u=i.__typename||r.defaultOperationType,(h=this.resolvers&&this.resolvers[u])&&(f=h[c?s:a])&&(d=Promise.resolve(hC.withValue(this.cache,f,[i,gg(n,o),r.context,{field:n,fragmentMap:r.fragmentMap}])))),[2,d.then(function(_){var b,v;if(void 0===_&&(_=l),n.directives&&n.directives.forEach(function(I){"export"===I.name.value&&I.arguments&&I.arguments.forEach(function(N){"as"===N.name.value&&"StringValue"===N.value.kind&&(r.exportedVariables[N.value.value]=_)})}),!n.selectionSet||null==_)return _;var x=null!==(v=null===(b=n.directives)||void 0===b?void 0:b.some(function(I){return"client"===I.name.value}))&&void 0!==v&&v;return Array.isArray(_)?m.resolveSubSelectedArray(n,e||x,_,r):n.selectionSet?m.resolveSelectionSet(n.selectionSet,e||x,_,r):void 0})]):[2,null]})})},t.prototype.resolveSubSelectedArray=function(n,e,i,r){var o=this;return Promise.all(i.map(function(s){return null===s?null:Array.isArray(s)?o.resolveSubSelectedArray(n,e,s,r):n.selectionSet?o.resolveSelectionSet(n.selectionSet,e,s,r):void 0}))},t.prototype.collectSelectionsToResolve=function(n,e){var i=function(s){return!Array.isArray(s)},r=this.selectionsToResolveCache;return function o(s){if(!r.has(s)){var a=new Set;r.set(s,a),lo(s,{Directive:function(c,l,d,u,h){"client"===c.name.value&&h.forEach(function(f){i(f)&&E2(f)&&a.add(f)})},FragmentSpread:function(c,l,d,u,h){var f=e[c.name.value];ke(f,19,c.name.value);var m=o(f);m.size>0&&(h.forEach(function(g){i(g)&&E2(g)&&a.add(g)}),a.add(c),m.forEach(function(g){a.add(g)}))}})}return r.get(s)}(n)},t}(),nl=new(Kc?WeakMap:Map);function fC(t,n){var e=t[n];"function"==typeof e&&(t[n]=function(){return nl.set(t,(nl.get(t)+1)%1e15),e.apply(this,arguments)})}function I2(t){t.notifyTimeout&&(clearTimeout(t.notifyTimeout),t.notifyTimeout=void 0)}var mC=function(){function t(n,e){void 0===e&&(e=n.generateQueryId()),this.queryId=e,this.listeners=new Set,this.document=null,this.lastRequestId=1,this.stopped=!1,this.dirty=!1,this.observableQuery=null;var i=this.cache=n.cache;nl.has(i)||(nl.set(i,0),fC(i,"evict"),fC(i,"modify"),fC(i,"reset"))}return t.prototype.init=function(n){var e=n.networkStatus||bt.loading;return this.variables&&this.networkStatus!==bt.loading&&!Ot(this.variables,n.variables)&&(e=bt.setVariables),Ot(n.variables,this.variables)||(this.lastDiff=void 0),Object.assign(this,{document:n.document,variables:n.variables,networkError:null,graphQLErrors:this.graphQLErrors||[],networkStatus:e}),n.observableQuery&&this.setObservableQuery(n.observableQuery),n.lastRequestId&&(this.lastRequestId=n.lastRequestId),this},t.prototype.reset=function(){I2(this),this.dirty=!1},t.prototype.resetDiff=function(){this.lastDiff=void 0},t.prototype.getDiff=function(){var n=this.getDiffOptions();if(this.lastDiff&&Ot(n,this.lastDiff.options))return this.lastDiff.diff;this.updateWatch(this.variables);var e=this.observableQuery;if(e&&"no-cache"===e.options.fetchPolicy)return{complete:!1};var i=this.cache.diff(n);return this.updateLastDiff(i,n),i},t.prototype.updateLastDiff=function(n,e){this.lastDiff=n?{diff:n,options:e||this.getDiffOptions()}:void 0},t.prototype.getDiffOptions=function(n){var e;return void 0===n&&(n=this.variables),{query:this.document,variables:n,returnPartialData:!0,optimistic:!0,canonizeResults:null===(e=this.observableQuery)||void 0===e?void 0:e.options.canonizeResults}},t.prototype.setDiff=function(n){var i,e=this,r=this.lastDiff&&this.lastDiff.diff;n&&!n.complete&&(null===(i=this.observableQuery)||void 0===i||!i.options.returnPartialData)&&(!r||!r.complete)||(this.updateLastDiff(n),!this.dirty&&!Ot(r&&r.result,n&&n.result)&&(this.dirty=!0,this.notifyTimeout||(this.notifyTimeout=setTimeout(function(){return e.notify()},0))))},t.prototype.setObservableQuery=function(n){var e=this;n!==this.observableQuery&&(this.oqListener&&this.listeners.delete(this.oqListener),this.observableQuery=n,n?(n.queryInfo=this,this.listeners.add(this.oqListener=function(){e.getDiff().fromOptimisticTransaction?n.observe():C2(n)})):delete this.oqListener)},t.prototype.notify=function(){var n=this;I2(this),this.shouldNotify()&&this.listeners.forEach(function(e){return e(n)}),this.dirty=!1},t.prototype.shouldNotify=function(){if(!this.dirty||!this.listeners.size)return!1;if(Ru(this.networkStatus)&&this.observableQuery){var n=this.observableQuery.options.fetchPolicy;if("cache-only"!==n&&"cache-and-network"!==n)return!1}return!0},t.prototype.stop=function(){if(!this.stopped){this.stopped=!0,this.reset(),this.cancel(),this.cancel=t.prototype.cancel;var n=this.observableQuery;n&&n.stopPolling()}},t.prototype.cancel=function(){},t.prototype.updateWatch=function(n){var e=this;void 0===n&&(n=this.variables);var i=this.observableQuery;if(!i||"no-cache"!==i.options.fetchPolicy){var r=k(k({},this.getDiffOptions(n)),{watcher:this,callback:function(o){return e.setDiff(o)}});(!this.lastWatch||!Ot(r,this.lastWatch))&&(this.cancel(),this.cancel=this.cache.watch(this.lastWatch=r))}},t.prototype.resetLastWrite=function(){this.lastWrite=void 0},t.prototype.shouldWrite=function(n,e){var i=this.lastWrite;return!(i&&i.dmCount===nl.get(this.cache)&&Ot(e,i.variables)&&Ot(n.data,i.result.data))},t.prototype.markResult=function(n,e,i,r){var o=this,s=new Xo,a=Nr(n.errors)?n.errors.slice(0):[];if(this.reset(),"incremental"in n&&Nr(n.incremental)){var c=RL(this.getDiff().result,n);n.data=c}else if("hasNext"in n&&n.hasNext){var l=this.getDiff();n.data=s.merge(l.result,n.data)}this.graphQLErrors=a,"no-cache"===i.fetchPolicy?this.updateLastDiff({result:n.data,complete:!0},this.getDiffOptions(i.variables)):0!==r&&(pC(n,i.errorPolicy)?this.cache.performTransaction(function(d){if(o.shouldWrite(n,i.variables))d.writeQuery({query:e,data:n.data,variables:i.variables,overwrite:1===r}),o.lastWrite={result:n,variables:i.variables,dmCount:nl.get(o.cache)};else if(o.lastDiff&&o.lastDiff.diff.complete)return void(n.data=o.lastDiff.diff.result);var u=o.getDiffOptions(i.variables),h=d.diff(u);!o.stopped&&Ot(o.variables,i.variables)&&o.updateWatch(i.variables),o.updateLastDiff(h,u),h.complete&&(n.data=h.result)}):this.lastWrite=void 0)},t.prototype.markReady=function(){return this.networkError=null,this.networkStatus=bt.ready},t.prototype.markError=function(n){return this.networkStatus=bt.error,this.lastWrite=void 0,this.reset(),n.graphQLErrors&&(this.graphQLErrors=n.graphQLErrors),n.networkError&&(this.networkError=n.networkError),n},t}();function pC(t,n){void 0===n&&(n="none");var e="ignore"===n||"all"===n,i=!kg(t);return!i&&e&&t.data&&(i=!0),i}var use=Object.prototype.hasOwnProperty,A2=Object.create(null),hse=function(){function t(n){var e=n.cache,i=n.link,r=n.defaultOptions,o=n.documentTransform,s=n.queryDeduplication,a=void 0!==s&&s,c=n.onBroadcast,l=n.ssrMode,d=void 0!==l&&l,u=n.clientAwareness,h=void 0===u?{}:u,f=n.localState,m=n.assumeImmutableResults,g=void 0===m?!!e.assumeImmutableResults:m,_=n.defaultContext,b=this;this.clientAwareness={},this.queries=new Map,this.fetchCancelFns=new Map,this.transformCache=new pL(co["queryManager.getDocumentInfo"]||2e3),this.queryIdCounter=1,this.requestIdCounter=1,this.mutationIdCounter=1,this.inFlightLinkObservables=new Zo(!1);var v=new _2(function(x){return b.cache.transformDocument(x)},{cache:!1});this.cache=e,this.link=i,this.defaultOptions=r||Object.create(null),this.queryDeduplication=a,this.clientAwareness=h,this.localState=f||new M2({cache:e}),this.ssrMode=d,this.assumeImmutableResults=g,this.documentTransform=o?v.concat(o).concat(v):v,this.defaultContext=_||Object.create(null),(this.onBroadcast=c)&&(this.mutationStore=Object.create(null))}return t.prototype.stop=function(){var n=this;this.queries.forEach(function(e,i){n.stopQueryNoBroadcast(i)}),this.cancelPendingFetches(Jn(25))},t.prototype.cancelPendingFetches=function(n){this.fetchCancelFns.forEach(function(e){return e(n)}),this.fetchCancelFns.clear()},t.prototype.mutate=function(n){return kr(this,arguments,void 0,function(e){var i,r,o,s,a,c,l,d=e.mutation,u=e.variables,h=e.optimisticResponse,f=e.updateQueries,m=e.refetchQueries,g=void 0===m?[]:m,_=e.awaitRefetchQueries,b=void 0!==_&&_,v=e.update,x=e.onQueryUpdated,I=e.fetchPolicy,N=void 0===I?(null===(c=this.defaultOptions.mutate)||void 0===c?void 0:c.fetchPolicy)||"network-only":I,V=e.errorPolicy,Q=void 0===V?(null===(l=this.defaultOptions.mutate)||void 0===l?void 0:l.errorPolicy)||"none":V,le=e.keepRootFields,je=e.context;return eo(this,function(ot){switch(ot.label){case 0:return ke(d,26),ke("network-only"===N||"no-cache"===N,27),i=this.generateMutationId(),d=this.cache.transformForLink(this.transform(d)),r=this.getDocumentInfo(d).hasClientExports,u=this.getVariables(d,u),r?[4,this.localState.addExportedVariables(d,u,je)]:[3,2];case 1:u=ot.sent(),ot.label=2;case 2:return o=this.mutationStore&&(this.mutationStore[i]={mutation:d,variables:u,loading:!0,error:null}),s=h&&this.markMutationOptimistic(h,{mutationId:i,document:d,variables:u,fetchPolicy:N,errorPolicy:Q,context:je,updateQueries:f,update:v,keepRootFields:le}),this.broadcastQueries(),a=this,[2,new Promise(function(mo,hi){return aC(a.getObservableFromLink(d,k(k({},je),{optimisticResponse:s?h:void 0}),u,!1),function(an){if(kg(an)&&"none"===Q)throw new Xc({graphQLErrors:cC(an)});o&&(o.loading=!1,o.error=null);var cr=k({},an);return"function"==typeof g&&(g=g(cr)),"ignore"===Q&&kg(cr)&&delete cr.errors,a.markMutationResult({mutationId:i,result:cr,document:d,variables:u,fetchPolicy:N,errorPolicy:Q,context:je,update:v,updateQueries:f,awaitRefetchQueries:b,refetchQueries:g,removeOptimistic:s?i:void 0,onQueryUpdated:x,keepRootFields:le})}).subscribe({next:function(an){a.broadcastQueries(),(!("hasNext"in an)||!1===an.hasNext)&&mo(an)},error:function(an){o&&(o.loading=!1,o.error=an),s&&a.cache.removeOptimistic(i),a.broadcastQueries(),hi(an instanceof Xc?an:new Xc({networkError:an}))}})})]}})})},t.prototype.markMutationResult=function(n,e){var i=this;void 0===e&&(e=this.cache);var r=n.result,o=[],s="no-cache"===n.fetchPolicy;if(!s&&pC(r,n.errorPolicy)){if(Zc(r)||o.push({result:r.data,dataId:"ROOT_MUTATION",query:n.document,variables:n.variables}),Zc(r)&&Nr(r.incremental)){var a=e.diff({id:"ROOT_MUTATION",query:this.getDocumentInfo(n.document).asQuery,variables:n.variables,optimistic:!1,returnPartialData:!0}),c=void 0;a.result&&(c=RL(a.result,r)),typeof c<"u"&&(r.data=c,o.push({result:c,dataId:"ROOT_MUTATION",query:n.document,variables:n.variables}))}var l=n.updateQueries;l&&this.queries.forEach(function(u,h){var f=u.observableQuery,m=f&&f.queryName;if(m&&use.call(l,m)){var g=l[m],_=i.queries.get(h),b=_.document,v=_.variables,x=e.diff({query:b,variables:v,returnPartialData:!0,optimistic:!1}),I=x.result;if(x.complete&&I){var V=g(I,{mutationResult:r,queryName:b&&Bx(b)||void 0,queryVariables:v});V&&o.push({result:V,dataId:"ROOT_QUERY",query:b,variables:v})}}})}if(o.length>0||(n.refetchQueries||"").length>0||n.update||n.onQueryUpdated||n.removeOptimistic){var d=[];if(this.refetchQueries({updateCache:function(u){s||o.forEach(function(g){return u.write(g)});var h=n.update,f=!function Qre(t){return Zc(t)||function Wre(t){return"hasNext"in t&&"data"in t}(t)}(r)||Zc(r)&&!r.hasNext;if(h){if(!s){var m=u.diff({id:"ROOT_MUTATION",query:i.getDocumentInfo(n.document).asQuery,variables:n.variables,optimistic:!1,returnPartialData:!0});m.complete&&("incremental"in(r=k(k({},r),{data:m.result}))&&delete r.incremental,"hasNext"in r&&delete r.hasNext)}f&&h(u,r,{context:n.context,variables:n.variables})}!s&&!n.keepRootFields&&f&&u.modify({id:"ROOT_MUTATION",fields:function(g,_){return"__typename"===_.fieldName?g:_.DELETE}})},include:n.refetchQueries,optimistic:!1,removeOptimistic:n.removeOptimistic,onQueryUpdated:n.onQueryUpdated||null}).forEach(function(u){return d.push(u)}),n.awaitRefetchQueries||n.onQueryUpdated)return Promise.all(d).then(function(){return r})}return Promise.resolve(r)},t.prototype.markMutationOptimistic=function(n,e){var i=this,r="function"==typeof n?n(e.variables,{IGNORE:A2}):n;return r!==A2&&(this.cache.recordOptimisticTransaction(function(o){try{i.markMutationResult(k(k({},e),{result:{data:r}}),o)}catch(s){!1!==globalThis.__DEV__&&ke.error(s)}},e.mutationId),!0)},t.prototype.fetchQuery=function(n,e,i){return this.fetchConcastWithInfo(n,e,i).concast.promise},t.prototype.getQueryStore=function(){var n=Object.create(null);return this.queries.forEach(function(e,i){n[i]={variables:e.variables,networkStatus:e.networkStatus,networkError:e.networkError,graphQLErrors:e.graphQLErrors}}),n},t.prototype.resetErrors=function(n){var e=this.queries.get(n);e&&(e.networkError=void 0,e.graphQLErrors=[])},t.prototype.transform=function(n){return this.documentTransform.transformDocument(n)},t.prototype.getDocumentInfo=function(n){var e=this.transformCache;if(!e.has(n)){var i={hasClientExports:kre(n),hasForcedResolvers:this.localState.shouldForceResolvers(n),hasNonreactiveDirective:Xs(["nonreactive"],n),clientQuery:this.localState.clientQuery(n),serverQuery:Kx([{name:"client",remove:!0},{name:"connection"},{name:"nonreactive"}],n),defaultVars:jx(Pu(n)),asQuery:k(k({},n),{definitions:n.definitions.map(function(r){return"OperationDefinition"===r.kind&&"query"!==r.operation?k(k({},r),{operation:"query"}):r})})};e.set(n,i)}return e.get(n)},t.prototype.getVariables=function(n,e){return k(k({},this.getDocumentInfo(n).defaultVars),e)},t.prototype.watchQuery=function(n){var e=this.transform(n.query);typeof(n=k(k({},n),{variables:this.getVariables(e,n.variables)})).notifyOnNetworkStatusChange>"u"&&(n.notifyOnNetworkStatusChange=!1);var i=new mC(this),r=new dC({queryManager:this,queryInfo:i,options:n});return r.lastQuery=e,this.queries.set(r.queryId,i),i.init({document:e,observableQuery:r,variables:r.variables}),r},t.prototype.query=function(n,e){var i=this;return void 0===e&&(e=this.generateQueryId()),ke(n.query,28),ke("Document"===n.query.kind,29),ke(!n.returnPartialData,30),ke(!n.pollInterval,31),this.fetchQuery(e,k(k({},n),{query:this.transform(n.query)})).finally(function(){return i.stopQuery(e)})},t.prototype.generateQueryId=function(){return String(this.queryIdCounter++)},t.prototype.generateRequestId=function(){return this.requestIdCounter++},t.prototype.generateMutationId=function(){return String(this.mutationIdCounter++)},t.prototype.stopQueryInStore=function(n){this.stopQueryInStoreNoBroadcast(n),this.broadcastQueries()},t.prototype.stopQueryInStoreNoBroadcast=function(n){var e=this.queries.get(n);e&&e.stop()},t.prototype.clearStore=function(n){return void 0===n&&(n={discardWatches:!0}),this.cancelPendingFetches(Jn(32)),this.queries.forEach(function(e){e.observableQuery?e.networkStatus=bt.loading:e.stop()}),this.mutationStore&&(this.mutationStore=Object.create(null)),this.cache.reset(n)},t.prototype.getObservableQueries=function(n){var e=this;void 0===n&&(n="active");var i=new Map,r=new Map,o=new Set;return Array.isArray(n)&&n.forEach(function(s){"string"==typeof s?r.set(s,!1):function nre(t){return zt(t)&&"Document"===t.kind&&Array.isArray(t.definitions)}(s)?r.set(e.transform(s),!1):zt(s)&&s.query&&o.add(s)}),this.queries.forEach(function(s,a){var c=s.observableQuery,l=s.document;if(c){if("all"===n)return void i.set(a,c);var d=c.queryName;if("standby"===c.options.fetchPolicy||"active"===n&&!c.hasObservers())return;("active"===n||d&&r.has(d)||l&&r.has(l))&&(i.set(a,c),d&&r.set(d,!0),l&&r.set(l,!0))}}),o.size&&o.forEach(function(s){var a=Cx("legacyOneTimeQuery"),c=e.getQuery(a).init({document:s.query,variables:s.variables}),l=new dC({queryManager:e,queryInfo:c,options:k(k({},s),{fetchPolicy:"network-only"})});ke(l.queryId===a),c.setObservableQuery(l),i.set(a,l)}),!1!==globalThis.__DEV__&&r.size&&r.forEach(function(s,a){s||!1!==globalThis.__DEV__&&ke.warn("string"==typeof a?33:34,a)}),i},t.prototype.reFetchObservableQueries=function(n){var e=this;void 0===n&&(n=!1);var i=[];return this.getObservableQueries(n?"all":"active").forEach(function(r,o){var s=r.options.fetchPolicy;r.resetLastResults(),(n||"standby"!==s&&"cache-only"!==s)&&i.push(r.refetch()),e.getQuery(o).setDiff(null)}),this.broadcastQueries(),Promise.all(i)},t.prototype.setObservableQuery=function(n){this.getQuery(n.queryId).setObservableQuery(n)},t.prototype.startGraphQLSubscription=function(n){var e=this,i=n.query,r=n.fetchPolicy,o=n.errorPolicy,s=void 0===o?"none":o,a=n.variables,c=n.context,l=void 0===c?{}:c;i=this.transform(i),a=this.getVariables(i,a);var d=function(h){return e.getObservableFromLink(i,l,h).map(function(f){"no-cache"!==r&&(pC(f,s)&&e.cache.write({query:i,result:f.data,dataId:"ROOT_SUBSCRIPTION",variables:h}),e.broadcastQueries());var m=kg(f),g=function zre(t){return!!t.extensions&&Array.isArray(t.extensions[qx])}(f);if(m||g){var _={};if(m&&(_.graphQLErrors=f.errors),g&&(_.protocolErrors=f.extensions[qx]),"none"===s||g)throw new Xc(_)}return"ignore"===s&&delete f.errors,f})};if(this.getDocumentInfo(i).hasClientExports){var u=this.localState.addExportedVariables(i,a,l).then(d);return new ht(function(h){var f=null;return u.then(function(m){return f=m.subscribe(h)},h.error),function(){return f&&f.unsubscribe()}})}return d(a)},t.prototype.stopQuery=function(n){this.stopQueryNoBroadcast(n),this.broadcastQueries()},t.prototype.stopQueryNoBroadcast=function(n){this.stopQueryInStoreNoBroadcast(n),this.removeQuery(n)},t.prototype.removeQuery=function(n){this.fetchCancelFns.delete(n),this.queries.has(n)&&(this.getQuery(n).stop(),this.queries.delete(n))},t.prototype.broadcastQueries=function(){this.onBroadcast&&this.onBroadcast(),this.queries.forEach(function(n){return n.notify()})},t.prototype.getLocalState=function(){return this.localState},t.prototype.getObservableFromLink=function(n,e,i,r){var s,o=this;void 0===r&&(r=null!==(s=e?.queryDeduplication)&&void 0!==s?s:this.queryDeduplication);var a,c=this.getDocumentInfo(n),l=c.serverQuery,d=c.clientQuery;if(l){var h=this.inFlightLinkObservables,f=this.link,m={query:l,variables:i,operationName:Bx(l)||void 0,context:this.prepareContext(k(k({},e),{forceFetch:!r}))};if(e=m.context,r){var g=Dg(l),_=Wo(i),b=h.lookup(g,_);if(!(a=b.observable)){var v=new el([Hx(f,m)]);a=b.observable=v,v.beforeNext(function(){h.remove(g,_)})}}else a=new el([Hx(f,m)])}else a=new el([ht.of({data:{}})]),e=this.prepareContext(e);return d&&(a=aC(a,function(x){return o.localState.runResolvers({document:d,remoteResult:x,context:e,variables:i})})),a},t.prototype.getResultsFromLink=function(n,e,i){var r=n.lastRequestId=this.generateRequestId(),o=this.cache.transformForLink(i.query);return aC(this.getObservableFromLink(o,i.context,i.variables),function(s){var a=cC(s),c=a.length>0;if(r>=n.lastRequestId){if(c&&"none"===i.errorPolicy)throw n.markError(new Xc({graphQLErrors:a}));n.markResult(s,o,i,e),n.markReady()}var l={data:s.data,loading:!1,networkStatus:bt.ready};return c&&"ignore"!==i.errorPolicy&&(l.errors=a,l.networkStatus=bt.error),l},function(s){var a=function Ure(t){return t.hasOwnProperty("graphQLErrors")}(s)?s:new Xc({networkError:s});throw r>=n.lastRequestId&&n.markError(a),a})},t.prototype.fetchConcastWithInfo=function(n,e,i,r){var o=this;void 0===i&&(i=bt.loading),void 0===r&&(r=e.query);var V,Q,s=this.getVariables(r,e.variables),a=this.getQuery(n),c=this.defaultOptions.watchQuery,l=e.fetchPolicy,u=e.errorPolicy,f=e.returnPartialData,g=e.notifyOnNetworkStatusChange,b=e.context,x=Object.assign({},e,{query:r,variables:s,fetchPolicy:void 0===l?c&&c.fetchPolicy||"cache-first":l,errorPolicy:void 0===u?c&&c.errorPolicy||"none":u,returnPartialData:void 0!==f&&f,notifyOnNetworkStatusChange:void 0!==g&&g,context:void 0===b?{}:b}),I=function(je){x.variables=je;var ot=o.fetchQueryByPolicy(a,x,i);return"standby"!==x.fetchPolicy&&ot.sources.length>0&&a.observableQuery&&a.observableQuery.applyNextFetchPolicy("after-fetch",e),ot},N=function(){return o.fetchCancelFns.delete(n)};if(this.fetchCancelFns.set(n,function(je){N(),setTimeout(function(){return V.cancel(je)})}),this.getDocumentInfo(x.query).hasClientExports)V=new el(this.localState.addExportedVariables(x.query,x.variables,x.context).then(I).then(function(je){return je.sources})),Q=!0;else{var le=I(x.variables);Q=le.fromLink,V=new el(le.sources)}return V.promise.then(N,N),{concast:V,fromLink:Q}},t.prototype.refetchQueries=function(n){var e=this,i=n.updateCache,r=n.include,o=n.optimistic,s=void 0!==o&&o,a=n.removeOptimistic,c=void 0===a?s?Cx("refetchQueries"):void 0:a,l=n.onQueryUpdated,d=new Map;r&&this.getObservableQueries(r).forEach(function(h,f){d.set(f,{oq:h,lastDiff:e.getQuery(f).getDiff()})});var u=new Map;return i&&this.cache.batch({update:i,optimistic:s&&c||!1,removeOptimistic:c,onWatchUpdated:function(h,f,m){var g=h.watcher instanceof mC&&h.watcher.observableQuery;if(g){if(l){d.delete(g.queryId);var _=l(g,f,m);return!0===_&&(_=g.refetch()),!1!==_&&u.set(g,_),_}null!==l&&d.set(g.queryId,{oq:g,lastDiff:m,diff:f})}}}),d.size&&d.forEach(function(h,f){var b,m=h.oq,g=h.lastDiff,_=h.diff;if(l){if(!_){var v=m.queryInfo;v.reset(),_=v.getDiff()}b=l(m,_,g)}(!l||!0===b)&&(b=m.refetch()),!1!==b&&u.set(m,b),f.indexOf("legacyOneTimeQuery")>=0&&e.stopQueryNoBroadcast(f)}),c&&this.cache.removeOptimistic(c),u},t.prototype.fetchQueryByPolicy=function(n,e,i){var r=this,o=e.query,s=e.variables,a=e.fetchPolicy,c=e.refetchWritePolicy,l=e.errorPolicy,d=e.returnPartialData,u=e.context,h=e.notifyOnNetworkStatusChange,f=n.networkStatus;n.init({document:o,variables:s,networkStatus:i});var m=function(){return n.getDiff()},g=function(I,N){void 0===N&&(N=n.networkStatus||bt.loading);var V=I.result;!1!==globalThis.__DEV__&&!d&&!Ot(V,{})&&D2(I.missing);var Q=function(le){return ht.of(k({data:le,loading:Ru(N),networkStatus:N},I.complete?null:{partial:!0}))};return V&&r.getDocumentInfo(o).hasForcedResolvers?r.localState.runResolvers({document:o,remoteResult:{data:V},context:u,variables:s,onlyRunForcedResolvers:!0}).then(function(le){return Q(le.data||void 0)}):"none"===l&&N===bt.refetch&&Array.isArray(I.missing)?Q(void 0):Q(V)},_="no-cache"===a?0:i===bt.refetch&&"merge"!==c?1:2,b=function(){return r.getResultsFromLink(n,_,{query:o,variables:s,context:u,fetchPolicy:a,errorPolicy:l})},v=h&&"number"==typeof f&&f!==i&&Ru(i);switch(a){default:case"cache-first":return(x=m()).complete?{fromLink:!1,sources:[g(x,n.markReady())]}:d||v?{fromLink:!0,sources:[g(x),b()]}:{fromLink:!0,sources:[b()]};case"cache-and-network":var x;return(x=m()).complete||d||v?{fromLink:!0,sources:[g(x),b()]}:{fromLink:!0,sources:[b()]};case"cache-only":return{fromLink:!1,sources:[g(m(),n.markReady())]};case"network-only":return v?{fromLink:!0,sources:[g(m()),b()]}:{fromLink:!0,sources:[b()]};case"no-cache":return v?{fromLink:!0,sources:[g(n.getDiff()),b()]}:{fromLink:!0,sources:[b()]};case"standby":return{fromLink:!1,sources:[]}}},t.prototype.getQuery=function(n){return n&&!this.queries.has(n)&&this.queries.set(n,new mC(this,n)),this.queries.get(n)},t.prototype.prepareContext=function(n){void 0===n&&(n={});var e=this.localState.prepareContext(n);return k(k(k({},this.defaultContext),e),{clientAwareness:this.clientAwareness})},t}();function gC(t,n){return tl(t,n,n.variables&&{variables:tl(k(k({},t&&t.variables),n.variables))})}var R2=!1,_C=function(){function t(n){var e=this;if(this.resetStoreCallbacks=[],this.clearStoreCallbacks=[],!n.cache)throw Jn(15);var i=n.uri,s=n.cache,a=n.documentTransform,c=n.ssrMode,l=void 0!==c&&c,d=n.ssrForceFetchDelay,u=void 0===d?0:d,h=n.connectToDevTools,f=void 0===h?"object"==typeof window&&!window.__APOLLO_CLIENT__&&!1!==globalThis.__DEV__:h,m=n.queryDeduplication,g=void 0===m||m,_=n.defaultOptions,b=n.defaultContext,v=n.assumeImmutableResults,x=void 0===v?s.assumeImmutableResults:v,I=n.resolvers,N=n.typeDefs,V=n.fragmentMatcher,Q=n.name,le=n.version,je=n.link;je||(je=i?new Doe({uri:i,credentials:n.credentials,headers:n.headers}):Ko.empty()),this.link=je,this.cache=s,this.disableNetworkFetches=l||u>0,this.queryDeduplication=g,this.defaultOptions=_||Object.create(null),this.typeDefs=N,u&&setTimeout(function(){return e.disableNetworkFetches=!1},u),this.watchQuery=this.watchQuery.bind(this),this.query=this.query.bind(this),this.mutate=this.mutate.bind(this),this.watchFragment=this.watchFragment.bind(this),this.resetStore=this.resetStore.bind(this),this.reFetchObservableQueries=this.reFetchObservableQueries.bind(this),this.version=wx,this.localState=new M2({cache:s,client:this,resolvers:I,fragmentMatcher:V}),this.queryManager=new hse({cache:this.cache,link:this.link,defaultOptions:this.defaultOptions,defaultContext:b,documentTransform:a,queryDeduplication:g,ssrMode:l,clientAwareness:{name:Q,version:le},localState:this.localState,assumeImmutableResults:x,onBroadcast:f?function(){e.devToolsHookCb&&e.devToolsHookCb({action:{},state:{queries:e.queryManager.getQueryStore(),mutations:e.queryManager.mutationStore||{}},dataWithOptimisticResults:e.cache.extract(!0)})}:void 0}),f&&this.connectToDevTools()}return t.prototype.connectToDevTools=function(){if("object"==typeof window){var n=window,e=Symbol.for("apollo.devtools");(n[e]=n[e]||[]).push(this),n.__APOLLO_CLIENT__=this}!R2&&!1!==globalThis.__DEV__&&(R2=!0,setTimeout(function(){if(typeof window<"u"&&window.document&&window.top===window.self&&!window.__APOLLO_DEVTOOLS_GLOBAL_HOOK__){var i=window.navigator,r=i&&i.userAgent,o=void 0;"string"==typeof r&&(r.indexOf("Chrome/")>-1?o="https://chrome.google.com/webstore/detail/apollo-client-developer-t/jdkknkkbebbapilgoeccciglkfbmbnfm":r.indexOf("Firefox/")>-1&&(o="https://addons.mozilla.org/en-US/firefox/addon/apollo-developer-tools/")),o&&!1!==globalThis.__DEV__&&ke.log("Download the Apollo DevTools for a better development experience: %s",o)}},1e4))},Object.defineProperty(t.prototype,"documentTransform",{get:function(){return this.queryManager.documentTransform},enumerable:!1,configurable:!0}),t.prototype.stop=function(){this.queryManager.stop()},t.prototype.watchQuery=function(n){return this.defaultOptions.watchQuery&&(n=gC(this.defaultOptions.watchQuery,n)),this.disableNetworkFetches&&("network-only"===n.fetchPolicy||"cache-and-network"===n.fetchPolicy)&&(n=k(k({},n),{fetchPolicy:"cache-first"})),this.queryManager.watchQuery(n)},t.prototype.query=function(n){return this.defaultOptions.query&&(n=gC(this.defaultOptions.query,n)),ke("cache-and-network"!==n.fetchPolicy,16),this.disableNetworkFetches&&"network-only"===n.fetchPolicy&&(n=k(k({},n),{fetchPolicy:"cache-first"})),this.queryManager.query(n)},t.prototype.mutate=function(n){return this.defaultOptions.mutate&&(n=gC(this.defaultOptions.mutate,n)),this.queryManager.mutate(n)},t.prototype.subscribe=function(n){return this.queryManager.startGraphQLSubscription(n)},t.prototype.readQuery=function(n,e){return void 0===e&&(e=!1),this.cache.readQuery(n,e)},t.prototype.watchFragment=function(n){return this.cache.watchFragment(n)},t.prototype.readFragment=function(n,e){return void 0===e&&(e=!1),this.cache.readFragment(n,e)},t.prototype.writeQuery=function(n){var e=this.cache.writeQuery(n);return!1!==n.broadcast&&this.queryManager.broadcastQueries(),e},t.prototype.writeFragment=function(n){var e=this.cache.writeFragment(n);return!1!==n.broadcast&&this.queryManager.broadcastQueries(),e},t.prototype.__actionHookForDevTools=function(n){this.devToolsHookCb=n},t.prototype.__requestRaw=function(n){return Hx(this.link,n)},t.prototype.resetStore=function(){var n=this;return Promise.resolve().then(function(){return n.queryManager.clearStore({discardWatches:!1})}).then(function(){return Promise.all(n.resetStoreCallbacks.map(function(e){return e()}))}).then(function(){return n.reFetchObservableQueries()})},t.prototype.clearStore=function(){var n=this;return Promise.resolve().then(function(){return n.queryManager.clearStore({discardWatches:!0})}).then(function(){return Promise.all(n.clearStoreCallbacks.map(function(e){return e()}))})},t.prototype.onResetStore=function(n){var e=this;return this.resetStoreCallbacks.push(n),function(){e.resetStoreCallbacks=e.resetStoreCallbacks.filter(function(i){return i!==n})}},t.prototype.onClearStore=function(n){var e=this;return this.clearStoreCallbacks.push(n),function(){e.clearStoreCallbacks=e.clearStoreCallbacks.filter(function(i){return i!==n})}},t.prototype.reFetchObservableQueries=function(n){return this.queryManager.reFetchObservableQueries(n)},t.prototype.refetchQueries=function(n){var e=this.queryManager.refetchQueries(n),i=[],r=[];e.forEach(function(s,a){i.push(a),r.push(s)});var o=Promise.all(r);return o.queries=i,o.results=r,o.catch(function(s){!1!==globalThis.__DEV__&&ke.debug(17,s)}),o},t.prototype.getObservableQueries=function(n){return void 0===n&&(n="active"),this.queryManager.getObservableQueries(n)},t.prototype.extract=function(n){return this.cache.extract(n)},t.prototype.restore=function(n){return this.cache.restore(n)},t.prototype.addResolvers=function(n){this.localState.addResolvers(n)},t.prototype.setResolvers=function(n){this.localState.setResolvers(n)},t.prototype.getResolvers=function(){return this.localState.getResolvers()},t.prototype.setLocalStateFragmentMatcher=function(n){this.localState.setFragmentMatcher(n)},t.prototype.setLink=function(n){this.link=this.queryManager.link=n},Object.defineProperty(t.prototype,"defaultContext",{get:function(){return this.queryManager.defaultContext},enumerable:!1,configurable:!0}),t}();function mse(t,n){if(!t)throw new Error(n??"Unexpected invariant triggered.")}!1!==globalThis.__DEV__&&(_C.prototype.getMemoryInternals=Wie);const pse=/\r\n|[\n\r]/g;function bC(t,n){let e=0,i=1;for(const r of t.body.matchAll(pse)){if("number"==typeof r.index||mse(!1),r.index>=n)break;e=r.index+r[0].length,i+=1}return{line:i,column:n+1-e}}function gse(t){return O2(t.source,bC(t.source,t.start))}function O2(t,n){const e=t.locationOffset.column-1,i="".padStart(e)+t.body,r=n.line-1,s=n.line+(t.locationOffset.line-1),c=n.column+(1===n.line?e:0),l=`${t.name}:${s}:${c}\n`,d=i.split(/\r\n|[\n\r]/g),u=d[r];if(u.length>120){const h=Math.floor(c/80),f=c%80,m=[];for(let g=0;g["|",g]),["|","^".padStart(f)],["|",m[h+1]]])}return l+N2([[s-1+" |",d[r-1]],[`${s} |`,u],["|","^".padStart(c)],[`${s+1} |`,d[r+1]]])}function N2(t){const n=t.filter(([i,r])=>void 0!==r),e=Math.max(...n.map(([i])=>i.length));return n.map(([i,r])=>i.padStart(e)+(r?" "+r:"")).join("\n")}class vC extends Error{constructor(n,...e){var i,r,o;const{nodes:s,source:a,positions:c,path:l,originalError:d,extensions:u}=function _se(t){const n=t[0];return null==n||"kind"in n||"length"in n?{nodes:n,source:t[1],positions:t[2],path:t[3],originalError:t[4],extensions:t[5]}:n}(e);super(n),this.name="GraphQLError",this.path=l??void 0,this.originalError=d??void 0,this.nodes=F2(Array.isArray(s)?s:s?[s]:void 0);const h=F2(null===(i=this.nodes)||void 0===i?void 0:i.map(m=>m.loc).filter(m=>null!=m));this.source=a??(null==h||null===(r=h[0])||void 0===r?void 0:r.source),this.positions=c??h?.map(m=>m.start),this.locations=c&&a?c.map(m=>bC(a,m)):h?.map(m=>bC(m.source,m.start));const f=function fse(t){return"object"==typeof t&&null!==t}(d?.extensions)?d?.extensions:void 0;this.extensions=null!==(o=u??f)&&void 0!==o?o:Object.create(null),Object.defineProperties(this,{message:{writable:!0,enumerable:!0},name:{enumerable:!1},nodes:{enumerable:!1},source:{enumerable:!1},positions:{enumerable:!1},originalError:{enumerable:!1}}),null!=d&&d.stack?Object.defineProperty(this,"stack",{value:d.stack,writable:!0,configurable:!0}):Error.captureStackTrace?Error.captureStackTrace(this,vC):Object.defineProperty(this,"stack",{value:Error().stack,writable:!0,configurable:!0})}get[Symbol.toStringTag](){return"GraphQLError"}toString(){let n=this.message;if(this.nodes)for(const e of this.nodes)e.loc&&(n+="\n\n"+gse(e.loc));else if(this.source&&this.locations)for(const e of this.locations)n+="\n\n"+O2(this.source,e);return n}toJSON(){const n={message:this.message};return null!=this.locations&&(n.locations=this.locations),null!=this.path&&(n.path=this.path),null!=this.extensions&&Object.keys(this.extensions).length>0&&(n.extensions=this.extensions),n}}function F2(t){return void 0===t||0===t.length?void 0:t}function wn(t,n,e){return new vC(`Syntax Error: ${e}`,{source:t,positions:[n]})}var P2=function(t){return t.QUERY="QUERY",t.MUTATION="MUTATION",t.SUBSCRIPTION="SUBSCRIPTION",t.FIELD="FIELD",t.FRAGMENT_DEFINITION="FRAGMENT_DEFINITION",t.FRAGMENT_SPREAD="FRAGMENT_SPREAD",t.INLINE_FRAGMENT="INLINE_FRAGMENT",t.VARIABLE_DEFINITION="VARIABLE_DEFINITION",t.SCHEMA="SCHEMA",t.SCALAR="SCALAR",t.OBJECT="OBJECT",t.FIELD_DEFINITION="FIELD_DEFINITION",t.ARGUMENT_DEFINITION="ARGUMENT_DEFINITION",t.INTERFACE="INTERFACE",t.UNION="UNION",t.ENUM="ENUM",t.ENUM_VALUE="ENUM_VALUE",t.INPUT_OBJECT="INPUT_OBJECT",t.INPUT_FIELD_DEFINITION="INPUT_FIELD_DEFINITION",t}(P2||{}),F=function(t){return t.SOF="",t.EOF="",t.BANG="!",t.DOLLAR="$",t.AMP="&",t.PAREN_L="(",t.PAREN_R=")",t.SPREAD="...",t.COLON=":",t.EQUALS="=",t.AT="@",t.BRACKET_L="[",t.BRACKET_R="]",t.BRACE_L="{",t.PIPE="|",t.BRACE_R="}",t.NAME="Name",t.INT="Int",t.FLOAT="Float",t.STRING="String",t.BLOCK_STRING="BlockString",t.COMMENT="Comment",t}(F||{});class bse{constructor(n){const e=new DL(F.SOF,0,0,0,0);this.source=n,this.lastToken=e,this.token=e,this.line=1,this.lineStart=0}get[Symbol.toStringTag](){return"Lexer"}advance(){return this.lastToken=this.token,this.token=this.lookahead()}lookahead(){let n=this.token;if(n.kind!==F.EOF)do{if(n.next)n=n.next;else{const e=yse(this,n.end);n.next=e,e.prev=n,n=e}}while(n.kind===F.COMMENT);return n}}function il(t){return t>=0&&t<=55295||t>=57344&&t<=1114111}function Sg(t,n){return L2(t.charCodeAt(n))&&V2(t.charCodeAt(n+1))}function L2(t){return t>=55296&&t<=56319}function V2(t){return t>=56320&&t<=57343}function Zs(t,n){const e=t.source.body.codePointAt(n);if(void 0===e)return F.EOF;if(e>=32&&e<=126){const i=String.fromCodePoint(e);return'"'===i?"'\"'":`"${i}"`}return"U+"+e.toString(16).toUpperCase().padStart(4,"0")}function sn(t,n,e,i,r){return new DL(n,e,i,t.line,1+e-t.lineStart,r)}function yse(t,n){const e=t.source.body,i=e.length;let r=n;for(;r=48&&t<=57?t-48:t>=65&&t<=70?t-55:t>=97&&t<=102?t-87:-1}function kse(t,n){const e=t.source.body;switch(e.charCodeAt(n+1)){case 34:return{value:'"',size:2};case 92:return{value:"\\",size:2};case 47:return{value:"/",size:2};case 98:return{value:"\b",size:2};case 102:return{value:"\f",size:2};case 110:return{value:"\n",size:2};case 114:return{value:"\r",size:2};case 116:return{value:"\t",size:2}}throw wn(t.source,n,`Invalid character escape sequence: "${e.slice(n,n+2)}".`)}function Tse(t,n){const e=t.source.body,i=e.length;let r=t.lineStart,o=n+3,s=o,a="";const c=[];for(;o0||vg(!1,"line in locationOffset is 1-indexed and must be positive."),this.locationOffset.column>0||vg(!1,"column in locationOffset is 1-indexed and must be positive.")}get[Symbol.toStringTag](){return"Source"}}class Mg{constructor(n,e={}){const i=function Ise(t){return Mse(t,j2)}(n)?n:new j2(n);this._lexer=new bse(i),this._options=e,this._tokenCounter=0}parseName(){const n=this.expectToken(F.NAME);return this.node(n,{kind:ae.NAME,value:n.value})}parseDocument(){return this.node(this._lexer.token,{kind:ae.DOCUMENT,definitions:this.many(F.SOF,this.parseDefinition,F.EOF)})}parseDefinition(){if(this.peek(F.BRACE_L))return this.parseOperationDefinition();const n=this.peekDescription(),e=n?this._lexer.lookahead():this._lexer.token;if(e.kind===F.NAME){switch(e.value){case"schema":return this.parseSchemaDefinition();case"scalar":return this.parseScalarTypeDefinition();case"type":return this.parseObjectTypeDefinition();case"interface":return this.parseInterfaceTypeDefinition();case"union":return this.parseUnionTypeDefinition();case"enum":return this.parseEnumTypeDefinition();case"input":return this.parseInputObjectTypeDefinition();case"directive":return this.parseDirectiveDefinition()}if(n)throw wn(this._lexer.source,this._lexer.token.start,"Unexpected description, descriptions are supported only on type definitions.");switch(e.value){case"query":case"mutation":case"subscription":return this.parseOperationDefinition();case"fragment":return this.parseFragmentDefinition();case"extend":return this.parseTypeSystemExtension()}}throw this.unexpected(e)}parseOperationDefinition(){const n=this._lexer.token;if(this.peek(F.BRACE_L))return this.node(n,{kind:ae.OPERATION_DEFINITION,operation:Bu.QUERY,name:void 0,variableDefinitions:[],directives:[],selectionSet:this.parseSelectionSet()});const e=this.parseOperationType();let i;return this.peek(F.NAME)&&(i=this.parseName()),this.node(n,{kind:ae.OPERATION_DEFINITION,operation:e,name:i,variableDefinitions:this.parseVariableDefinitions(),directives:this.parseDirectives(!1),selectionSet:this.parseSelectionSet()})}parseOperationType(){const n=this.expectToken(F.NAME);switch(n.value){case"query":return Bu.QUERY;case"mutation":return Bu.MUTATION;case"subscription":return Bu.SUBSCRIPTION}throw this.unexpected(n)}parseVariableDefinitions(){return this.optionalMany(F.PAREN_L,this.parseVariableDefinition,F.PAREN_R)}parseVariableDefinition(){return this.node(this._lexer.token,{kind:ae.VARIABLE_DEFINITION,variable:this.parseVariable(),type:(this.expectToken(F.COLON),this.parseTypeReference()),defaultValue:this.expectOptionalToken(F.EQUALS)?this.parseConstValueLiteral():void 0,directives:this.parseConstDirectives()})}parseVariable(){const n=this._lexer.token;return this.expectToken(F.DOLLAR),this.node(n,{kind:ae.VARIABLE,name:this.parseName()})}parseSelectionSet(){return this.node(this._lexer.token,{kind:ae.SELECTION_SET,selections:this.many(F.BRACE_L,this.parseSelection,F.BRACE_R)})}parseSelection(){return this.peek(F.SPREAD)?this.parseFragment():this.parseField()}parseField(){const n=this._lexer.token,e=this.parseName();let i,r;return this.expectOptionalToken(F.COLON)?(i=e,r=this.parseName()):r=e,this.node(n,{kind:ae.FIELD,alias:i,name:r,arguments:this.parseArguments(!1),directives:this.parseDirectives(!1),selectionSet:this.peek(F.BRACE_L)?this.parseSelectionSet():void 0})}parseArguments(n){return this.optionalMany(F.PAREN_L,n?this.parseConstArgument:this.parseArgument,F.PAREN_R)}parseArgument(n=!1){const e=this._lexer.token,i=this.parseName();return this.expectToken(F.COLON),this.node(e,{kind:ae.ARGUMENT,name:i,value:this.parseValueLiteral(n)})}parseConstArgument(){return this.parseArgument(!0)}parseFragment(){const n=this._lexer.token;this.expectToken(F.SPREAD);const e=this.expectOptionalKeyword("on");return!e&&this.peek(F.NAME)?this.node(n,{kind:ae.FRAGMENT_SPREAD,name:this.parseFragmentName(),directives:this.parseDirectives(!1)}):this.node(n,{kind:ae.INLINE_FRAGMENT,typeCondition:e?this.parseNamedType():void 0,directives:this.parseDirectives(!1),selectionSet:this.parseSelectionSet()})}parseFragmentDefinition(){const n=this._lexer.token;return this.expectKeyword("fragment"),this.node(n,!0===this._options.allowLegacyFragmentVariables?{kind:ae.FRAGMENT_DEFINITION,name:this.parseFragmentName(),variableDefinitions:this.parseVariableDefinitions(),typeCondition:(this.expectKeyword("on"),this.parseNamedType()),directives:this.parseDirectives(!1),selectionSet:this.parseSelectionSet()}:{kind:ae.FRAGMENT_DEFINITION,name:this.parseFragmentName(),typeCondition:(this.expectKeyword("on"),this.parseNamedType()),directives:this.parseDirectives(!1),selectionSet:this.parseSelectionSet()})}parseFragmentName(){if("on"===this._lexer.token.value)throw this.unexpected();return this.parseName()}parseValueLiteral(n){const e=this._lexer.token;switch(e.kind){case F.BRACKET_L:return this.parseList(n);case F.BRACE_L:return this.parseObject(n);case F.INT:return this.advanceLexer(),this.node(e,{kind:ae.INT,value:e.value});case F.FLOAT:return this.advanceLexer(),this.node(e,{kind:ae.FLOAT,value:e.value});case F.STRING:case F.BLOCK_STRING:return this.parseStringLiteral();case F.NAME:switch(this.advanceLexer(),e.value){case"true":return this.node(e,{kind:ae.BOOLEAN,value:!0});case"false":return this.node(e,{kind:ae.BOOLEAN,value:!1});case"null":return this.node(e,{kind:ae.NULL});default:return this.node(e,{kind:ae.ENUM,value:e.value})}case F.DOLLAR:if(n){if(this.expectToken(F.DOLLAR),this._lexer.token.kind===F.NAME)throw wn(this._lexer.source,e.start,`Unexpected variable "$${this._lexer.token.value}" in constant value.`);throw this.unexpected(e)}return this.parseVariable();default:throw this.unexpected()}}parseConstValueLiteral(){return this.parseValueLiteral(!0)}parseStringLiteral(){const n=this._lexer.token;return this.advanceLexer(),this.node(n,{kind:ae.STRING,value:n.value,block:n.kind===F.BLOCK_STRING})}parseList(n){return this.node(this._lexer.token,{kind:ae.LIST,values:this.any(F.BRACKET_L,()=>this.parseValueLiteral(n),F.BRACKET_R)})}parseObject(n){return this.node(this._lexer.token,{kind:ae.OBJECT,fields:this.any(F.BRACE_L,()=>this.parseObjectField(n),F.BRACE_R)})}parseObjectField(n){const e=this._lexer.token,i=this.parseName();return this.expectToken(F.COLON),this.node(e,{kind:ae.OBJECT_FIELD,name:i,value:this.parseValueLiteral(n)})}parseDirectives(n){const e=[];for(;this.peek(F.AT);)e.push(this.parseDirective(n));return e}parseConstDirectives(){return this.parseDirectives(!0)}parseDirective(n){const e=this._lexer.token;return this.expectToken(F.AT),this.node(e,{kind:ae.DIRECTIVE,name:this.parseName(),arguments:this.parseArguments(n)})}parseTypeReference(){const n=this._lexer.token;let e;if(this.expectOptionalToken(F.BRACKET_L)){const i=this.parseTypeReference();this.expectToken(F.BRACKET_R),e=this.node(n,{kind:ae.LIST_TYPE,type:i})}else e=this.parseNamedType();return this.expectOptionalToken(F.BANG)?this.node(n,{kind:ae.NON_NULL_TYPE,type:e}):e}parseNamedType(){return this.node(this._lexer.token,{kind:ae.NAMED_TYPE,name:this.parseName()})}peekDescription(){return this.peek(F.STRING)||this.peek(F.BLOCK_STRING)}parseDescription(){if(this.peekDescription())return this.parseStringLiteral()}parseSchemaDefinition(){const n=this._lexer.token,e=this.parseDescription();this.expectKeyword("schema");const i=this.parseConstDirectives(),r=this.many(F.BRACE_L,this.parseOperationTypeDefinition,F.BRACE_R);return this.node(n,{kind:ae.SCHEMA_DEFINITION,description:e,directives:i,operationTypes:r})}parseOperationTypeDefinition(){const n=this._lexer.token,e=this.parseOperationType();this.expectToken(F.COLON);const i=this.parseNamedType();return this.node(n,{kind:ae.OPERATION_TYPE_DEFINITION,operation:e,type:i})}parseScalarTypeDefinition(){const n=this._lexer.token,e=this.parseDescription();this.expectKeyword("scalar");const i=this.parseName(),r=this.parseConstDirectives();return this.node(n,{kind:ae.SCALAR_TYPE_DEFINITION,description:e,name:i,directives:r})}parseObjectTypeDefinition(){const n=this._lexer.token,e=this.parseDescription();this.expectKeyword("type");const i=this.parseName(),r=this.parseImplementsInterfaces(),o=this.parseConstDirectives(),s=this.parseFieldsDefinition();return this.node(n,{kind:ae.OBJECT_TYPE_DEFINITION,description:e,name:i,interfaces:r,directives:o,fields:s})}parseImplementsInterfaces(){return this.expectOptionalKeyword("implements")?this.delimitedMany(F.AMP,this.parseNamedType):[]}parseFieldsDefinition(){return this.optionalMany(F.BRACE_L,this.parseFieldDefinition,F.BRACE_R)}parseFieldDefinition(){const n=this._lexer.token,e=this.parseDescription(),i=this.parseName(),r=this.parseArgumentDefs();this.expectToken(F.COLON);const o=this.parseTypeReference(),s=this.parseConstDirectives();return this.node(n,{kind:ae.FIELD_DEFINITION,description:e,name:i,arguments:r,type:o,directives:s})}parseArgumentDefs(){return this.optionalMany(F.PAREN_L,this.parseInputValueDef,F.PAREN_R)}parseInputValueDef(){const n=this._lexer.token,e=this.parseDescription(),i=this.parseName();this.expectToken(F.COLON);const r=this.parseTypeReference();let o;this.expectOptionalToken(F.EQUALS)&&(o=this.parseConstValueLiteral());const s=this.parseConstDirectives();return this.node(n,{kind:ae.INPUT_VALUE_DEFINITION,description:e,name:i,type:r,defaultValue:o,directives:s})}parseInterfaceTypeDefinition(){const n=this._lexer.token,e=this.parseDescription();this.expectKeyword("interface");const i=this.parseName(),r=this.parseImplementsInterfaces(),o=this.parseConstDirectives(),s=this.parseFieldsDefinition();return this.node(n,{kind:ae.INTERFACE_TYPE_DEFINITION,description:e,name:i,interfaces:r,directives:o,fields:s})}parseUnionTypeDefinition(){const n=this._lexer.token,e=this.parseDescription();this.expectKeyword("union");const i=this.parseName(),r=this.parseConstDirectives(),o=this.parseUnionMemberTypes();return this.node(n,{kind:ae.UNION_TYPE_DEFINITION,description:e,name:i,directives:r,types:o})}parseUnionMemberTypes(){return this.expectOptionalToken(F.EQUALS)?this.delimitedMany(F.PIPE,this.parseNamedType):[]}parseEnumTypeDefinition(){const n=this._lexer.token,e=this.parseDescription();this.expectKeyword("enum");const i=this.parseName(),r=this.parseConstDirectives(),o=this.parseEnumValuesDefinition();return this.node(n,{kind:ae.ENUM_TYPE_DEFINITION,description:e,name:i,directives:r,values:o})}parseEnumValuesDefinition(){return this.optionalMany(F.BRACE_L,this.parseEnumValueDefinition,F.BRACE_R)}parseEnumValueDefinition(){const n=this._lexer.token,e=this.parseDescription(),i=this.parseEnumValueName(),r=this.parseConstDirectives();return this.node(n,{kind:ae.ENUM_VALUE_DEFINITION,description:e,name:i,directives:r})}parseEnumValueName(){if("true"===this._lexer.token.value||"false"===this._lexer.token.value||"null"===this._lexer.token.value)throw wn(this._lexer.source,this._lexer.token.start,`${Ig(this._lexer.token)} is reserved and cannot be used for an enum value.`);return this.parseName()}parseInputObjectTypeDefinition(){const n=this._lexer.token,e=this.parseDescription();this.expectKeyword("input");const i=this.parseName(),r=this.parseConstDirectives(),o=this.parseInputFieldsDefinition();return this.node(n,{kind:ae.INPUT_OBJECT_TYPE_DEFINITION,description:e,name:i,directives:r,fields:o})}parseInputFieldsDefinition(){return this.optionalMany(F.BRACE_L,this.parseInputValueDef,F.BRACE_R)}parseTypeSystemExtension(){const n=this._lexer.lookahead();if(n.kind===F.NAME)switch(n.value){case"schema":return this.parseSchemaExtension();case"scalar":return this.parseScalarTypeExtension();case"type":return this.parseObjectTypeExtension();case"interface":return this.parseInterfaceTypeExtension();case"union":return this.parseUnionTypeExtension();case"enum":return this.parseEnumTypeExtension();case"input":return this.parseInputObjectTypeExtension()}throw this.unexpected(n)}parseSchemaExtension(){const n=this._lexer.token;this.expectKeyword("extend"),this.expectKeyword("schema");const e=this.parseConstDirectives(),i=this.optionalMany(F.BRACE_L,this.parseOperationTypeDefinition,F.BRACE_R);if(0===e.length&&0===i.length)throw this.unexpected();return this.node(n,{kind:ae.SCHEMA_EXTENSION,directives:e,operationTypes:i})}parseScalarTypeExtension(){const n=this._lexer.token;this.expectKeyword("extend"),this.expectKeyword("scalar");const e=this.parseName(),i=this.parseConstDirectives();if(0===i.length)throw this.unexpected();return this.node(n,{kind:ae.SCALAR_TYPE_EXTENSION,name:e,directives:i})}parseObjectTypeExtension(){const n=this._lexer.token;this.expectKeyword("extend"),this.expectKeyword("type");const e=this.parseName(),i=this.parseImplementsInterfaces(),r=this.parseConstDirectives(),o=this.parseFieldsDefinition();if(0===i.length&&0===r.length&&0===o.length)throw this.unexpected();return this.node(n,{kind:ae.OBJECT_TYPE_EXTENSION,name:e,interfaces:i,directives:r,fields:o})}parseInterfaceTypeExtension(){const n=this._lexer.token;this.expectKeyword("extend"),this.expectKeyword("interface");const e=this.parseName(),i=this.parseImplementsInterfaces(),r=this.parseConstDirectives(),o=this.parseFieldsDefinition();if(0===i.length&&0===r.length&&0===o.length)throw this.unexpected();return this.node(n,{kind:ae.INTERFACE_TYPE_EXTENSION,name:e,interfaces:i,directives:r,fields:o})}parseUnionTypeExtension(){const n=this._lexer.token;this.expectKeyword("extend"),this.expectKeyword("union");const e=this.parseName(),i=this.parseConstDirectives(),r=this.parseUnionMemberTypes();if(0===i.length&&0===r.length)throw this.unexpected();return this.node(n,{kind:ae.UNION_TYPE_EXTENSION,name:e,directives:i,types:r})}parseEnumTypeExtension(){const n=this._lexer.token;this.expectKeyword("extend"),this.expectKeyword("enum");const e=this.parseName(),i=this.parseConstDirectives(),r=this.parseEnumValuesDefinition();if(0===i.length&&0===r.length)throw this.unexpected();return this.node(n,{kind:ae.ENUM_TYPE_EXTENSION,name:e,directives:i,values:r})}parseInputObjectTypeExtension(){const n=this._lexer.token;this.expectKeyword("extend"),this.expectKeyword("input");const e=this.parseName(),i=this.parseConstDirectives(),r=this.parseInputFieldsDefinition();if(0===i.length&&0===r.length)throw this.unexpected();return this.node(n,{kind:ae.INPUT_OBJECT_TYPE_EXTENSION,name:e,directives:i,fields:r})}parseDirectiveDefinition(){const n=this._lexer.token,e=this.parseDescription();this.expectKeyword("directive"),this.expectToken(F.AT);const i=this.parseName(),r=this.parseArgumentDefs(),o=this.expectOptionalKeyword("repeatable");this.expectKeyword("on");const s=this.parseDirectiveLocations();return this.node(n,{kind:ae.DIRECTIVE_DEFINITION,description:e,name:i,arguments:r,repeatable:o,locations:s})}parseDirectiveLocations(){return this.delimitedMany(F.PIPE,this.parseDirectiveLocation)}parseDirectiveLocation(){const n=this._lexer.token,e=this.parseName();if(Object.prototype.hasOwnProperty.call(P2,e.value))return e;throw this.unexpected(n)}node(n,e){return!0!==this._options.noLocation&&(e.loc=new Dre(n,this._lexer.lastToken,this._lexer.source)),e}peek(n){return this._lexer.token.kind===n}expectToken(n){const e=this._lexer.token;if(e.kind===n)return this.advanceLexer(),e;throw wn(this._lexer.source,e.start,`Expected ${H2(n)}, found ${Ig(e)}.`)}expectOptionalToken(n){return this._lexer.token.kind===n&&(this.advanceLexer(),!0)}expectKeyword(n){const e=this._lexer.token;if(e.kind!==F.NAME||e.value!==n)throw wn(this._lexer.source,e.start,`Expected "${n}", found ${Ig(e)}.`);this.advanceLexer()}expectOptionalKeyword(n){const e=this._lexer.token;return e.kind===F.NAME&&e.value===n&&(this.advanceLexer(),!0)}unexpected(n){const e=n??this._lexer.token;return wn(this._lexer.source,e.start,`Unexpected ${Ig(e)}.`)}any(n,e,i){this.expectToken(n);const r=[];for(;!this.expectOptionalToken(i);)r.push(e.call(this));return r}optionalMany(n,e,i){if(this.expectOptionalToken(n)){const r=[];do{r.push(e.call(this))}while(!this.expectOptionalToken(i));return r}return[]}many(n,e,i){this.expectToken(n);const r=[];do{r.push(e.call(this))}while(!this.expectOptionalToken(i));return r}delimitedMany(n,e){this.expectOptionalToken(n);const i=[];do{i.push(e.call(this))}while(this.expectOptionalToken(n));return i}advanceLexer(){const{maxTokens:n}=this._options,e=this._lexer.advance();if(void 0!==n&&e.kind!==F.EOF&&(++this._tokenCounter,this._tokenCounter>n))throw wn(this._lexer.source,e.start,`Document contains more that ${n} tokens. Parsing aborted.`)}}function Ig(t){const n=t.value;return H2(t.kind)+(null!=n?` "${n}"`:"")}function H2(t){return function vse(t){return t===F.BANG||t===F.DOLLAR||t===F.AMP||t===F.PAREN_L||t===F.PAREN_R||t===F.SPREAD||t===F.COLON||t===F.EQUALS||t===F.AT||t===F.BRACKET_L||t===F.BRACKET_R||t===F.BRACE_L||t===F.PIPE||t===F.BRACE_R}(t)?`"${t}"`:t}var Ag=new Map,wC=new Map,z2=!0,Rg=!1;function U2(t){return t.replace(/[\s,]+/g," ").trim()}function Fse(t){var n=U2(t);if(!Ag.has(n)){var e=function Ase(t,n){return new Mg(t,n).parseDocument()}(t,{experimentalFragmentVariables:Rg,allowLegacyFragmentVariables:Rg});if(!e||"Document"!==e.kind)throw new Error("Not a valid GraphQL document.");Ag.set(n,function Nse(t){var n=new Set(t.definitions);n.forEach(function(i){i.loc&&delete i.loc,Object.keys(i).forEach(function(r){var o=i[r];o&&"object"==typeof o&&n.add(o)})});var e=t.loc;return e&&(delete e.startToken,delete e.endToken),t}(function Ose(t){var n=new Set,e=[];return t.definitions.forEach(function(i){if("FragmentDefinition"===i.kind){var r=i.name.value,o=function Rse(t){return U2(t.source.body.substring(t.start,t.end))}(i.loc),s=wC.get(r);s&&!s.has(o)?z2&&console.warn("Warning: fragment with name "+r+" already exists.\ngraphql-tag enforces all fragment names across your application to be unique; read more about\nthis in the docs: http://dev.apollodata.com/core/fragments.html#unique-names"):s||wC.set(r,s=new Set),s.add(o),n.has(o)||(n.add(o),e.push(i))}else e.push(i)}),k(k({},t),{definitions:e})}(e)))}return Ag.get(n)}function rl(t){for(var n=[],e=1;e(t().then(e=>{n.closed||(n.next(e),n.complete())},e=>{n.closed||n.error(e)}),()=>n.unsubscribe()))}(function(t){t.gql=Yu_gql,t.resetCaches=Yu_resetCaches,t.disableFragmentWarnings=Yu_disableFragmentWarnings,t.enableExperimentalFragmentVariables=Yu_enableExperimentalFragmentVariables,t.disableExperimentalFragmentVariables=Yu_disableExperimentalFragmentVariables})(rl||(rl={})),rl.default=rl;class Hse{zone;constructor(n){this.zone=n}now=Date.now?Date.now:()=>+new Date;schedule(n,e=0,i){return this.zone.run(()=>Sie.schedule(n,e,i))}}function q2(t){return t[gh]=()=>t,t}function G2(t,n){return t.pipe(Zy(new Hse(n)))}class Use{obsQuery;valueChanges;queryId;constructor(n,e,i){this.obsQuery=n;const r=G2(jt(q2(this.obsQuery)),e);this.valueChanges=i.useInitialLoading?r.pipe(function zse(t){return function(e){return new Ye(function(r){const o=t.getCurrentResult(),{loading:s,errors:a,error:c,partial:l,data:d}=o,{partialRefetch:u,fetchPolicy:h}=t.options,f=a||c;return u&&l&&(!d||0===Object.keys(d).length)&&"cache-only"!==h&&!s&&!f&&r.next({...o,loading:!0,networkStatus:bt.loading}),e.subscribe(r)})}}(this.obsQuery)):r,this.queryId=this.obsQuery.queryId}get options(){return this.obsQuery.options}get variables(){return this.obsQuery.variables}result(){return this.obsQuery.result()}getCurrentResult(){return this.obsQuery.getCurrentResult()}getLastResult(){return this.obsQuery.getLastResult()}getLastError(){return this.obsQuery.getLastError()}resetLastResults(){return this.obsQuery.resetLastResults()}refetch(n){return this.obsQuery.refetch(n)}fetchMore(n){return this.obsQuery.fetchMore(n)}subscribeToMore(n){return this.obsQuery.subscribeToMore(n)}updateQuery(n){return this.obsQuery.updateQuery(n)}stopPolling(){return this.obsQuery.stopPolling()}startPolling(n){return this.obsQuery.startPolling(n)}setOptions(n){return this.obsQuery.setOptions(n)}setVariables(n){return this.obsQuery.setVariables(n)}}const $se=new M("APOLLO_FLAGS"),W2=new M("APOLLO_OPTIONS"),qse=new M("APOLLO_NAMED_OPTIONS");class Q2{ngZone;flags;_client;useInitialLoading;useMutationLoading;constructor(n,e,i){this.ngZone=n,this.flags=e,this._client=i,this.useInitialLoading=e?.useInitialLoading??!1,this.useMutationLoading=e?.useMutationLoading??!1}watchQuery(n){return new Use(this.ensureClient().watchQuery({...n}),this.ngZone,{useInitialLoading:this.useInitialLoading,...n})}query(n){return $2(()=>this.ensureClient().query({...n}))}mutate(n){return function jse(t,n){return n?t.pipe(gn({loading:!0}),ne(e=>({...e,loading:!!e.loading}))):t.pipe(ne(e=>({...e,loading:!1})))}($2(()=>this.ensureClient().mutate({...n})),n.useMutationLoading??this.useMutationLoading)}subscribe(n,e){const i=jt(q2(this.ensureClient().subscribe({...n})));return e&&!0!==e.useZone?i:G2(i,this.ngZone)}get client(){return this.ensureClient()}set client(n){if(this._client)throw new Error("Client has been already defined");this._client=n}ensureClient(){return this.checkInstance(),this._client}checkInstance(){if(this._client)return!0;throw new Error("Client has not been defined yet")}}let Y2=(()=>{class t extends Q2{_ngZone;map=new Map;constructor(e,i,r,o){if(super(e,o),this._ngZone=e,i&&this.createDefault(i),r&&"object"==typeof r)for(let s in r)r.hasOwnProperty(s)&&this.create(r[s],s)}create(e,i){xC(i)?this.createNamed(i,e):this.createDefault(e)}default(){return this}use(e){return xC(e)?this.map.get(e):this.default()}createDefault(e){if(this._client)throw new Error("Apollo has been already created.");this.client=new _C(e)}createNamed(e,i){if(this.map.has(e))throw new Error(`Client ${e} has been already created`);this.map.set(e,new Q2(this._ngZone,this.flags,new _C(i)))}removeClient(e){xC(e)?this.map.delete(e):this._client=void 0}static \u0275fac=function(i){return new(i||t)(S(W),S(W2,8),S(qse,8),S($se,8))};static \u0275prov=P({token:t,factory:t.\u0275fac})}return t})();function xC(t){return!!t&&"default"!==t}const Gse=[Y2];let Wse=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275mod=ge({type:t});static \u0275inj=he({providers:Gse})}return t})();const Bi=function Qse(t,...n){return rl(t,...n)},Jse=Bi` - fragment TorrentContentSearchResult on TorrentContentSearchResult { - items { - ...TorrentContent - } - totalCount - totalCountIsEstimate - hasNextPage - aggregations { - contentType { - value - label - count - isEstimate - } - torrentSource { - value - label - count - isEstimate - } - torrentTag { - value - label - count - isEstimate - } - torrentFileType { - value - label - count - isEstimate - } - language { - value - label - count - isEstimate - } - genre { - value - label - count - isEstimate - } - releaseYear { - value - label - count - isEstimate - } - videoResolution { - value - label - count - isEstimate - } - videoSource { - value - label - count - isEstimate - } - } -} - ${Bi` - fragment TorrentContent on TorrentContent { - id - infoHash - contentType - title - torrent { - ...Torrent - } - content { - ...Content - } - languages { - id - name - } - episodes { - label - seasons { - season - episodes - } - } - video3d - videoCodec - videoModifier - videoResolution - videoSource - seeders - leechers - publishedAt - createdAt - updatedAt -} - ${Bi` - fragment Torrent on Torrent { - infoHash - name - size - filesStatus - filesCount - hasFilesInfo - singleFile - fileType - files { - ...TorrentFile - } - sources { - key - name - } - seeders - leechers - tagNames - magnetUri - createdAt - updatedAt -} - ${Bi` - fragment TorrentFile on TorrentFile { - infoHash - index - path - size - fileType - createdAt - updatedAt -} - `}`} -${Bi` - fragment Content on Content { - type - source - id - metadataSource { - key - name - } - title - releaseDate - releaseYear - overview - runtime - voteAverage - voteCount - originalLanguage { - id - name - } - attributes { - metadataSource { - key - name - } - source - key - value - createdAt - updatedAt - } - collections { - metadataSource { - key - name - } - type - source - id - name - createdAt - updatedAt - } - externalLinks { - metadataSource { - key - name - } - url - } - createdAt - updatedAt -} - `}`}`,eae=Bi` - mutation TorrentDelete($infoHashes: [Hash20!]!) { - torrent { - delete(infoHashes: $infoHashes) - } -} - `,tae=Bi` - mutation TorrentDeleteTags($infoHashes: [Hash20!], $tagNames: [String!]) { - torrent { - deleteTags(infoHashes: $infoHashes, tagNames: $tagNames) - } -} - `,nae=Bi` - mutation TorrentPutTags($infoHashes: [Hash20!]!, $tagNames: [String!]!) { - torrent { - putTags(infoHashes: $infoHashes, tagNames: $tagNames) - } -} - `,iae=Bi` - mutation TorrentSetTags($infoHashes: [Hash20!]!, $tagNames: [String!]!) { - torrent { - setTags(infoHashes: $infoHashes, tagNames: $tagNames) - } -} - `,rae=Bi` - query SystemQuery { - system { - version - } -} - `,oae=Bi` - query TorrentContentSearch($query: SearchQueryInput, $facets: TorrentContentFacetsInput, $orderBy: [TorrentContentOrderByInput!]) { - torrentContent { - search(query: $query, facets: $facets, orderBy: $orderBy) { - ...TorrentContentSearchResult - } - } -} - ${Jse}`,sae=Bi` - query TorrentSuggestTags($query: SuggestTagsQueryInput!) { - torrent { - suggestTags(query: $query) { - suggestions { - name - count - } - } - } -} - `;let Og=(()=>{class t{constructor(e){this.apollo=e}torrentContentSearch(e){return this.apollo.query({query:oae,variables:e,fetchPolicy:Js}).pipe(ne(i=>i.data.torrentContent.search))}torrentDelete(e){return this.apollo.mutate({mutation:eae,variables:e,fetchPolicy:Js}).pipe(ne(()=>{}))}torrentPutTags(e){return this.apollo.mutate({mutation:nae,variables:e,fetchPolicy:Js}).pipe(ne(()=>{}))}torrentSetTags(e){return this.apollo.mutate({mutation:iae,variables:e,fetchPolicy:Js}).pipe(ne(()=>{}))}torrentDeleteTags(e){return this.apollo.mutate({mutation:tae,variables:e,fetchPolicy:Js}).pipe(ne(()=>{}))}torrentSuggestTags(e){return this.apollo.query({query:sae,variables:e,fetchPolicy:Js}).pipe(ne(i=>i.data.torrent.suggestTags))}systemQuery(){return this.apollo.query({query:rae,fetchPolicy:Js}).pipe(ne(e=>e.data.system))}static#e=this.\u0275fac=function(i){return new(i||t)(S(Y2))};static#t=this.\u0275prov=P({token:t,factory:t.\u0275fac})}return t})();const Js="no-cache";function aae(t,n){if(1&t){const e=et();y(0,"div",1)(1,"button",2),q("click",function(){return ee(e),te(L().action())}),A(2),w()()}if(2&t){const e=L();C(2),Ue(" ",e.data.action," ")}}const cae=["label"];function lae(t,n){}const dae=Math.pow(2,31)-1;class CC{constructor(n,e){this._overlayRef=e,this._afterDismissed=new Z,this._afterOpened=new Z,this._onAction=new Z,this._dismissedByAction=!1,this.containerInstance=n,n._onExit.subscribe(()=>this._finishDismiss())}dismiss(){this._afterDismissed.closed||this.containerInstance.exit(),clearTimeout(this._durationTimeoutId)}dismissWithAction(){this._onAction.closed||(this._dismissedByAction=!0,this._onAction.next(),this._onAction.complete(),this.dismiss()),clearTimeout(this._durationTimeoutId)}closeWithAction(){this.dismissWithAction()}_dismissAfter(n){this._durationTimeoutId=setTimeout(()=>this.dismiss(),Math.min(n,dae))}_open(){this._afterOpened.closed||(this._afterOpened.next(),this._afterOpened.complete())}_finishDismiss(){this._overlayRef.dispose(),this._onAction.closed||this._onAction.complete(),this._afterDismissed.next({dismissedByAction:this._dismissedByAction}),this._afterDismissed.complete(),this._dismissedByAction=!1}afterDismissed(){return this._afterDismissed}afterOpened(){return this.containerInstance._onEnter}onAction(){return this._onAction}}const K2=new M("MatSnackBarData");class Ng{constructor(){this.politeness="assertive",this.announcementMessage="",this.duration=0,this.data=null,this.horizontalPosition="center",this.verticalPosition="bottom"}}let X2=(()=>{class t{static#e=this.\u0275fac=function(i){return new(i||t)};static#t=this.\u0275dir=R({type:t,selectors:[["","matSnackBarLabel",""]],hostAttrs:[1,"mat-mdc-snack-bar-label","mdc-snackbar__label"],standalone:!0})}return t})(),Z2=(()=>{class t{static#e=this.\u0275fac=function(i){return new(i||t)};static#t=this.\u0275dir=R({type:t,selectors:[["","matSnackBarActions",""]],hostAttrs:[1,"mat-mdc-snack-bar-actions","mdc-snackbar__actions"],standalone:!0})}return t})(),J2=(()=>{class t{static#e=this.\u0275fac=function(i){return new(i||t)};static#t=this.\u0275dir=R({type:t,selectors:[["","matSnackBarAction",""]],hostAttrs:[1,"mat-mdc-snack-bar-action","mdc-snackbar__action"],standalone:!0})}return t})(),eV=(()=>{class t{constructor(e,i){this.snackBarRef=e,this.data=i}action(){this.snackBarRef.dismissWithAction()}get hasAction(){return!!this.data.action}static#e=this.\u0275fac=function(i){return new(i||t)(p(CC),p(K2))};static#t=this.\u0275cmp=ue({type:t,selectors:[["simple-snack-bar"]],hostAttrs:[1,"mat-mdc-simple-snack-bar"],exportAs:["matSnackBar"],standalone:!0,features:[ve],decls:3,vars:2,consts:[["matSnackBarLabel",""],["matSnackBarActions",""],["mat-button","","matSnackBarAction","",3,"click"]],template:function(i,r){1&i&&(y(0,"div",0),A(1),w(),H(2,aae,3,1,"div",1)),2&i&&(C(),Ue(" ",r.data.message,"\n"),C(),X(2,r.hasAction?2:-1))},dependencies:[pp,X2,Z2,J2],styles:[".mat-mdc-simple-snack-bar{display:flex}"],encapsulation:2,changeDetection:0})}return t})();const uae={snackBarState:Ci("state",[rn("void, hidden",Xe({transform:"scale(0.8)",opacity:0})),rn("visible",Xe({transform:"scale(1)",opacity:1})),Xt("* => visible",Kt("150ms cubic-bezier(0, 0, 0.2, 1)")),Xt("* => void, * => hidden",Kt("75ms cubic-bezier(0.4, 0.0, 1, 1)",Xe({opacity:0})))])};let hae=0,tV=(()=>{class t extends ow{constructor(e,i,r,o,s){super(),this._ngZone=e,this._elementRef=i,this._changeDetectorRef=r,this._platform=o,this.snackBarConfig=s,this._document=T(_e),this._trackedModals=new Set,this._announceDelay=150,this._destroyed=!1,this._onAnnounce=new Z,this._onExit=new Z,this._onEnter=new Z,this._animationState="void",this._liveElementId="mat-snack-bar-container-live-"+hae++,this.attachDomPortal=a=>{this._assertNotAttached();const c=this._portalOutlet.attachDomPortal(a);return this._afterPortalAttached(),c},this._live="assertive"!==s.politeness||s.announcementMessage?"off"===s.politeness?"off":"polite":"assertive",this._platform.FIREFOX&&("polite"===this._live&&(this._role="status"),"assertive"===this._live&&(this._role="alert"))}attachComponentPortal(e){this._assertNotAttached();const i=this._portalOutlet.attachComponentPortal(e);return this._afterPortalAttached(),i}attachTemplatePortal(e){this._assertNotAttached();const i=this._portalOutlet.attachTemplatePortal(e);return this._afterPortalAttached(),i}onAnimationEnd(e){const{fromState:i,toState:r}=e;if(("void"===r&&"void"!==i||"hidden"===r)&&this._completeExit(),"visible"===r){const o=this._onEnter;this._ngZone.run(()=>{o.next(),o.complete()})}}enter(){this._destroyed||(this._animationState="visible",this._changeDetectorRef.markForCheck(),this._changeDetectorRef.detectChanges(),this._screenReaderAnnounce())}exit(){return this._ngZone.run(()=>{this._animationState="hidden",this._changeDetectorRef.markForCheck(),this._elementRef.nativeElement.setAttribute("mat-exit",""),clearTimeout(this._announceTimeoutId)}),this._onExit}ngOnDestroy(){this._destroyed=!0,this._clearFromModals(),this._completeExit()}_completeExit(){queueMicrotask(()=>{this._onExit.next(),this._onExit.complete()})}_afterPortalAttached(){const e=this._elementRef.nativeElement,i=this.snackBarConfig.panelClass;i&&(Array.isArray(i)?i.forEach(s=>e.classList.add(s)):e.classList.add(i)),this._exposeToModals();const r=this._label.nativeElement,o="mdc-snackbar__label";r.classList.toggle(o,!r.querySelector(`.${o}`))}_exposeToModals(){const e=this._liveElementId,i=this._document.querySelectorAll('body > .cdk-overlay-container [aria-modal="true"]');for(let r=0;r{const i=e.getAttribute("aria-owns");if(i){const r=i.replace(this._liveElementId,"").trim();r.length>0?e.setAttribute("aria-owns",r):e.removeAttribute("aria-owns")}}),this._trackedModals.clear()}_assertNotAttached(){this._portalOutlet.hasAttached()}_screenReaderAnnounce(){this._announceTimeoutId||this._ngZone.runOutsideAngular(()=>{this._announceTimeoutId=setTimeout(()=>{const e=this._elementRef.nativeElement.querySelector("[aria-hidden]"),i=this._elementRef.nativeElement.querySelector("[aria-live]");if(e&&i){let r=null;this._platform.isBrowser&&document.activeElement instanceof HTMLElement&&e.contains(document.activeElement)&&(r=document.activeElement),e.removeAttribute("aria-hidden"),i.appendChild(e),r?.focus(),this._onAnnounce.next(),this._onAnnounce.complete()}},this._announceDelay)})}static#e=this.\u0275fac=function(i){return new(i||t)(p(W),p(K),p(Ke),p(ut),p(Ng))};static#t=this.\u0275cmp=ue({type:t,selectors:[["mat-snack-bar-container"]],viewQuery:function(i,r){if(1&i&&(Le(kc,7),Le(cae,7)),2&i){let o;U(o=$())&&(r._portalOutlet=o.first),U(o=$())&&(r._label=o.first)}},hostAttrs:[1,"mdc-snackbar","mat-mdc-snack-bar-container","mdc-snackbar--open"],hostVars:1,hostBindings:function(i,r){1&i&&Yf("@state.done",function(s){return r.onAnimationEnd(s)}),2&i&&$f("@state",r._animationState)},standalone:!0,features:[J,ve],decls:6,vars:3,consts:[["label",""],[1,"mdc-snackbar__surface"],[1,"mat-mdc-snack-bar-label"],["aria-hidden","true"],["cdkPortalOutlet",""]],template:function(i,r){1&i&&(y(0,"div",1)(1,"div",2,0)(3,"div",3),H(4,lae,0,0,"ng-template",4),w(),re(5,"div"),w()()),2&i&&(C(5),me("aria-live",r._live)("role",r._role)("id",r._liveElementId))},dependencies:[kc],styles:['.mdc-snackbar{display:none;position:fixed;right:0;bottom:0;left:0;align-items:center;justify-content:center;box-sizing:border-box;pointer-events:none;-webkit-tap-highlight-color:rgba(0,0,0,0)}.mdc-snackbar--opening,.mdc-snackbar--open,.mdc-snackbar--closing{display:flex}.mdc-snackbar--open .mdc-snackbar__label,.mdc-snackbar--open .mdc-snackbar__actions{visibility:visible}.mdc-snackbar__surface{padding-left:0;padding-right:8px;display:flex;align-items:center;justify-content:flex-start;box-sizing:border-box;transform:scale(0.8);opacity:0}.mdc-snackbar__surface::before{position:absolute;box-sizing:border-box;width:100%;height:100%;top:0;left:0;border:1px solid rgba(0,0,0,0);border-radius:inherit;content:"";pointer-events:none}@media screen and (forced-colors: active){.mdc-snackbar__surface::before{border-color:CanvasText}}[dir=rtl] .mdc-snackbar__surface,.mdc-snackbar__surface[dir=rtl]{padding-left:8px;padding-right:0}.mdc-snackbar--open .mdc-snackbar__surface{transform:scale(1);opacity:1;pointer-events:auto}.mdc-snackbar--closing .mdc-snackbar__surface{transform:scale(1)}.mdc-snackbar__label{padding-left:16px;padding-right:8px;width:100%;flex-grow:1;box-sizing:border-box;margin:0;visibility:hidden;padding-top:14px;padding-bottom:14px}[dir=rtl] .mdc-snackbar__label,.mdc-snackbar__label[dir=rtl]{padding-left:8px;padding-right:16px}.mdc-snackbar__label::before{display:inline;content:attr(data-mdc-snackbar-label-text)}.mdc-snackbar__actions{display:flex;flex-shrink:0;align-items:center;box-sizing:border-box;visibility:hidden}.mdc-snackbar__action+.mdc-snackbar__dismiss{margin-left:8px;margin-right:0}[dir=rtl] .mdc-snackbar__action+.mdc-snackbar__dismiss,.mdc-snackbar__action+.mdc-snackbar__dismiss[dir=rtl]{margin-left:0;margin-right:8px}.mat-mdc-snack-bar-container{margin:8px;position:static}.mat-mdc-snack-bar-container .mdc-snackbar__surface{min-width:344px}@media(max-width: 480px),(max-width: 344px){.mat-mdc-snack-bar-container .mdc-snackbar__surface{min-width:100%}}@media(max-width: 480px),(max-width: 344px){.mat-mdc-snack-bar-container{width:100vw}}.mat-mdc-snack-bar-container .mdc-snackbar__surface{max-width:672px}.mat-mdc-snack-bar-container .mdc-snackbar__surface{box-shadow:0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 6px 10px 0px rgba(0, 0, 0, 0.14), 0px 1px 18px 0px rgba(0, 0, 0, 0.12)}.mat-mdc-snack-bar-container .mdc-snackbar__surface{background-color:var(--mdc-snackbar-container-color)}.mat-mdc-snack-bar-container .mdc-snackbar__surface{border-radius:var(--mdc-snackbar-container-shape)}.mat-mdc-snack-bar-container .mdc-snackbar__label{color:var(--mdc-snackbar-supporting-text-color)}.mat-mdc-snack-bar-container .mdc-snackbar__label{font-size:var(--mdc-snackbar-supporting-text-size);font-family:var(--mdc-snackbar-supporting-text-font);font-weight:var(--mdc-snackbar-supporting-text-weight);line-height:var(--mdc-snackbar-supporting-text-line-height)}.mat-mdc-snack-bar-container .mat-mdc-button.mat-mdc-snack-bar-action:not(:disabled){color:var(--mat-snack-bar-button-color);--mat-text-button-state-layer-color:currentColor;--mat-text-button-ripple-color:currentColor}.mat-mdc-snack-bar-container .mat-mdc-button.mat-mdc-snack-bar-action:not(:disabled) .mat-ripple-element{opacity:.1}.mat-mdc-snack-bar-container .mdc-snackbar__label::before{display:none}.mat-mdc-snack-bar-handset,.mat-mdc-snack-bar-container,.mat-mdc-snack-bar-label{flex:1 1 auto}.mat-mdc-snack-bar-handset .mdc-snackbar__surface{width:100%}'],encapsulation:2,data:{animation:[uae.snackBarState]}})}return t})();const mae=new M("mat-snack-bar-default-options",{providedIn:"root",factory:function fae(){return new Ng}});let nV=(()=>{class t{get _openedSnackBarRef(){const e=this._parentSnackBar;return e?e._openedSnackBarRef:this._snackBarRefAtThisLevel}set _openedSnackBarRef(e){this._parentSnackBar?this._parentSnackBar._openedSnackBarRef=e:this._snackBarRefAtThisLevel=e}constructor(e,i,r,o,s,a){this._overlay=e,this._live=i,this._injector=r,this._breakpointObserver=o,this._parentSnackBar=s,this._defaultConfig=a,this._snackBarRefAtThisLevel=null,this.simpleSnackBarComponent=eV,this.snackBarContainerComponent=tV,this.handsetCssClass="mat-mdc-snack-bar-handset"}openFromComponent(e,i){return this._attach(e,i)}openFromTemplate(e,i){return this._attach(e,i)}open(e,i="",r){const o={...this._defaultConfig,...r};return o.data={message:e,action:i},o.announcementMessage===e&&(o.announcementMessage=void 0),this.openFromComponent(this.simpleSnackBarComponent,o)}dismiss(){this._openedSnackBarRef&&this._openedSnackBarRef.dismiss()}ngOnDestroy(){this._snackBarRefAtThisLevel&&this._snackBarRefAtThisLevel.dismiss()}_attachSnackBarContainer(e,i){const o=Gt.create({parent:i&&i.viewContainerRef&&i.viewContainerRef.injector||this._injector,providers:[{provide:Ng,useValue:i}]}),s=new yp(this.snackBarContainerComponent,i.viewContainerRef,o),a=e.attach(s);return a.instance.snackBarConfig=i,a.instance}_attach(e,i){const r={...new Ng,...this._defaultConfig,...i},o=this._createOverlay(r),s=this._attachSnackBarContainer(o,r),a=new CC(s,o);if(e instanceof yt){const c=new jo(e,null,{$implicit:r.data,snackBarRef:a});a.instance=s.attachTemplatePortal(c)}else{const c=this._createInjector(r,a),l=new yp(e,void 0,c),d=s.attachComponentPortal(l);a.instance=d.instance}return this._breakpointObserver.observe("(max-width: 599.98px) and (orientation: portrait)").pipe(pe(o.detachments())).subscribe(c=>{o.overlayElement.classList.toggle(this.handsetCssClass,c.matches)}),r.announcementMessage&&s._onAnnounce.subscribe(()=>{this._live.announce(r.announcementMessage,r.politeness)}),this._animateSnackBar(a,r),this._openedSnackBarRef=a,this._openedSnackBarRef}_animateSnackBar(e,i){e.afterDismissed().subscribe(()=>{this._openedSnackBarRef==e&&(this._openedSnackBarRef=null),i.announcementMessage&&this._live.clear()}),this._openedSnackBarRef?(this._openedSnackBarRef.afterDismissed().subscribe(()=>{e.containerInstance.enter()}),this._openedSnackBarRef.dismiss()):e.containerInstance.enter(),i.duration&&i.duration>0&&e.afterOpened().subscribe(()=>e._dismissAfter(i.duration))}_createOverlay(e){const i=new au;i.direction=e.direction;let r=this._overlay.position().global();const o="rtl"===e.direction,s="left"===e.horizontalPosition||"start"===e.horizontalPosition&&!o||"end"===e.horizontalPosition&&o,a=!s&&"center"!==e.horizontalPosition;return s?r.left("0"):a?r.right("0"):r.centerHorizontally(),"top"===e.verticalPosition?r.top("0"):r.bottom("0"),i.positionStrategy=r,this._overlay.create(i)}_createInjector(e,i){return Gt.create({parent:e&&e.viewContainerRef&&e.viewContainerRef.injector||this._injector,providers:[{provide:CC,useValue:i},{provide:K2,useValue:e.data}]})}static#e=this.\u0275fac=function(i){return new(i||t)(S(Hn),S(PO),S(Gt),S(DO),S(t,12),S(mae))};static#t=this.\u0275prov=P({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),pae=(()=>{class t{static#e=this.\u0275fac=function(i){return new(i||t)};static#t=this.\u0275mod=ge({type:t});static#n=this.\u0275inj=he({providers:[nV],imports:[cu,sw,gp,Te,eV,Te]})}return t})(),DC=(()=>{class t{constructor(e){this.snackBar=e,this.expiry=1e4}addError(e,i=this.expiry){this.snackBar.open(e,"Dismiss",{duration:i,panelClass:["snack-bar-error"]})}static#e=this.\u0275fac=function(i){return new(i||t)(S(nV))};static#t=this.\u0275prov=P({token:t,factory:t.\u0275fac})}return t})();const gae=["panel"],_ae=["*"];function bae(t,n){if(1&t){const e=et();y(0,"div",1,0),q("@panelAnimation.done",function(r){return ee(e),te(L()._animationDone.next(r))}),Y(2),w()}if(2&t){const e=n.id,i=L();bn(i._classList),de("mat-mdc-autocomplete-visible",i.showPanel)("mat-mdc-autocomplete-hidden",!i.showPanel)("mat-primary","primary"===i._color)("mat-accent","accent"===i._color)("mat-warn","warn"===i._color),z("id",i.id)("@panelAnimation",i.isOpen?"visible":"hidden"),me("aria-label",i.ariaLabel||null)("aria-labelledby",i._getPanelAriaLabelledby(e))}}const vae=Ci("panelAnimation",[rn("void, hidden",Xe({opacity:0,transform:"scaleY(0.8)"})),Xt(":enter, hidden => visible",[K7([Kt("0.03s linear",Xe({opacity:1})),Kt("0.12s cubic-bezier(0, 0, 0.2, 1)",Xe({transform:"scaleY(1)"}))])]),Xt(":leave, visible => hidden",[Kt("0.075s linear",Xe({opacity:0}))])]);let yae=0;class wae{constructor(n,e){this.source=n,this.option=e}}const iV=new M("mat-autocomplete-default-options",{providedIn:"root",factory:function xae(){return{autoActiveFirstOption:!1,autoSelectActiveOption:!1,hideSingleSelectionIndicator:!1,requireSelection:!1}}});let EC=(()=>{class t{get isOpen(){return this._isOpen&&this.showPanel}_setColor(e){this._color=e,this._changeDetectorRef.markForCheck()}set classList(e){this._classList=e,this._elementRef.nativeElement.className=""}get hideSingleSelectionIndicator(){return this._hideSingleSelectionIndicator}set hideSingleSelectionIndicator(e){this._hideSingleSelectionIndicator=e,this._syncParentProperties()}_syncParentProperties(){if(this.options)for(const e of this.options)e._changeDetectorRef.markForCheck()}constructor(e,i,r,o){this._changeDetectorRef=e,this._elementRef=i,this._defaults=r,this._activeOptionChanges=Ae.EMPTY,this._animationDone=new G,this.showPanel=!1,this._isOpen=!1,this.displayWith=null,this.optionSelected=new G,this.opened=new G,this.closed=new G,this.optionActivated=new G,this.id="mat-autocomplete-"+yae++,this.inertGroups=o?.SAFARI||!1,this.autoActiveFirstOption=!!r.autoActiveFirstOption,this.autoSelectActiveOption=!!r.autoSelectActiveOption,this.requireSelection=!!r.requireSelection,this._hideSingleSelectionIndicator=this._defaults.hideSingleSelectionIndicator??!1}ngAfterContentInit(){this._keyManager=new IO(this.options).withWrap().skipPredicate(this._skipPredicate),this._activeOptionChanges=this._keyManager.change.subscribe(e=>{this.isOpen&&this.optionActivated.emit({source:this,option:this.options.toArray()[e]||null})}),this._setVisibility()}ngOnDestroy(){this._keyManager?.destroy(),this._activeOptionChanges.unsubscribe(),this._animationDone.complete()}_setScrollTop(e){this.panel&&(this.panel.nativeElement.scrollTop=e)}_getScrollTop(){return this.panel?this.panel.nativeElement.scrollTop:0}_setVisibility(){this.showPanel=!!this.options.length,this._changeDetectorRef.markForCheck()}_emitSelectEvent(e){const i=new wae(this,e);this.optionSelected.emit(i)}_getPanelAriaLabelledby(e){return this.ariaLabel?null:this.ariaLabelledby?(e?e+" ":"")+this.ariaLabelledby:e}_skipPredicate(){return!1}static#e=this.\u0275fac=function(i){return new(i||t)(p(Ke),p(K),p(iV),p(ut))};static#t=this.\u0275cmp=ue({type:t,selectors:[["mat-autocomplete"]],contentQueries:function(i,r,o){if(1&i&&(Oe(o,Ec,5),Oe(o,G0,5)),2&i){let s;U(s=$())&&(r.options=s),U(s=$())&&(r.optionGroups=s)}},viewQuery:function(i,r){if(1&i&&(Le(yt,7),Le(gae,5)),2&i){let o;U(o=$())&&(r.template=o.first),U(o=$())&&(r.panel=o.first)}},hostAttrs:[1,"mat-mdc-autocomplete"],inputs:{ariaLabel:[D.None,"aria-label","ariaLabel"],ariaLabelledby:[D.None,"aria-labelledby","ariaLabelledby"],displayWith:"displayWith",autoActiveFirstOption:[D.HasDecoratorInputTransform,"autoActiveFirstOption","autoActiveFirstOption",j],autoSelectActiveOption:[D.HasDecoratorInputTransform,"autoSelectActiveOption","autoSelectActiveOption",j],requireSelection:[D.HasDecoratorInputTransform,"requireSelection","requireSelection",j],panelWidth:"panelWidth",disableRipple:[D.HasDecoratorInputTransform,"disableRipple","disableRipple",j],classList:[D.None,"class","classList"],hideSingleSelectionIndicator:[D.HasDecoratorInputTransform,"hideSingleSelectionIndicator","hideSingleSelectionIndicator",j]},outputs:{optionSelected:"optionSelected",opened:"opened",closed:"closed",optionActivated:"optionActivated"},exportAs:["matAutocomplete"],standalone:!0,features:[ie([{provide:q0,useExisting:t}]),Fe,ve],ngContentSelectors:_ae,decls:1,vars:0,consts:[["panel",""],["role","listbox",1,"mat-mdc-autocomplete-panel","mdc-menu-surface","mdc-menu-surface--open",3,"id"]],template:function(i,r){1&i&&($e(),H(0,bae,3,16,"ng-template"))},styles:["div.mat-mdc-autocomplete-panel{width:100%;max-height:256px;visibility:hidden;transform-origin:center top;overflow:auto;padding:8px 0;box-sizing:border-box;position:static;border-radius:var(--mat-autocomplete-container-shape);box-shadow:var(--mat-autocomplete-container-elevation-shadow);background-color:var(--mat-autocomplete-background-color)}.cdk-high-contrast-active div.mat-mdc-autocomplete-panel{outline:solid 1px}.cdk-overlay-pane:not(.mat-mdc-autocomplete-panel-above) div.mat-mdc-autocomplete-panel{border-top-left-radius:0;border-top-right-radius:0}.mat-mdc-autocomplete-panel-above div.mat-mdc-autocomplete-panel{border-bottom-left-radius:0;border-bottom-right-radius:0;transform-origin:center bottom}div.mat-mdc-autocomplete-panel.mat-mdc-autocomplete-visible{visibility:visible}div.mat-mdc-autocomplete-panel.mat-mdc-autocomplete-hidden{visibility:hidden;pointer-events:none}mat-autocomplete{display:none}"],encapsulation:2,data:{animation:[vae]},changeDetection:0})}return t})();const Cae={provide:ui,useExisting:Ze(()=>kC),multi:!0},rV=new M("mat-autocomplete-scroll-strategy",{providedIn:"root",factory:()=>{const t=T(Hn);return()=>t.scrollStrategies.reposition()}}),Eae={provide:rV,deps:[Hn],useFactory:function Dae(t){return()=>t.scrollStrategies.reposition()}};let kC=(()=>{class t{constructor(e,i,r,o,s,a,c,l,d,u,h){this._element=e,this._overlay=i,this._viewContainerRef=r,this._zone=o,this._changeDetectorRef=s,this._dir=c,this._formField=l,this._document=d,this._viewportRuler=u,this._defaults=h,this._componentDestroyed=!1,this._manuallyFloatingLabel=!1,this._viewportSubscription=Ae.EMPTY,this._canOpenOnNextFocus=!0,this._closeKeyEventStream=new Z,this._windowBlurHandler=()=>{this._canOpenOnNextFocus=this._document.activeElement!==this._element.nativeElement||this.panelOpen},this._onChange=()=>{},this._onTouched=()=>{},this.position="auto",this.autocompleteAttribute="off",this._aboveClass="mat-mdc-autocomplete-panel-above",this._overlayAttached=!1,this.optionSelections=Gp(()=>{const f=this.autocomplete?this.autocomplete.options:null;return f?f.changes.pipe(gn(f),nn(()=>Ht(...f.map(m=>m.onSelectionChange)))):this._zone.onStable.pipe(gt(1),nn(()=>this.optionSelections))}),this._handlePanelKeydown=f=>{(27===f.keyCode&&!Kn(f)||38===f.keyCode&&Kn(f,"altKey"))&&(this._pendingAutoselectedOption&&(this._updateNativeInputValue(this._valueBeforeAutoSelection??""),this._pendingAutoselectedOption=null),this._closeKeyEventStream.next(),this._resetActiveItem(),f.stopPropagation(),f.preventDefault())},this._trackedModal=null,this._scrollStrategy=a}ngAfterViewInit(){const e=this._getWindow();typeof e<"u"&&this._zone.runOutsideAngular(()=>e.addEventListener("blur",this._windowBlurHandler))}ngOnChanges(e){e.position&&this._positionStrategy&&(this._setStrategyPositions(this._positionStrategy),this.panelOpen&&this._overlayRef.updatePosition())}ngOnDestroy(){const e=this._getWindow();typeof e<"u"&&e.removeEventListener("blur",this._windowBlurHandler),this._viewportSubscription.unsubscribe(),this._componentDestroyed=!0,this._destroyPanel(),this._closeKeyEventStream.complete(),this._clearFromModal()}get panelOpen(){return this._overlayAttached&&this.autocomplete.showPanel}openPanel(){this._openPanelInternal()}closePanel(){this._resetLabel(),this._overlayAttached&&(this.panelOpen&&this._zone.run(()=>{this.autocomplete.closed.emit()}),this.autocomplete._latestOpeningTrigger===this&&(this.autocomplete._isOpen=!1,this.autocomplete._latestOpeningTrigger=null),this._overlayAttached=!1,this._pendingAutoselectedOption=null,this._overlayRef&&this._overlayRef.hasAttached()&&(this._overlayRef.detach(),this._closingActionsSubscription.unsubscribe()),this._updatePanelState(),this._componentDestroyed||this._changeDetectorRef.detectChanges(),this._trackedModal&&Cc(this._trackedModal,"aria-owns",this.autocomplete.id))}updatePosition(){this._overlayAttached&&this._overlayRef.updatePosition()}get panelClosingActions(){return Ht(this.optionSelections,this.autocomplete._keyManager.tabOut.pipe(Ge(()=>this._overlayAttached)),this._closeKeyEventStream,this._getOutsideClickStream(),this._overlayRef?this._overlayRef.detachments().pipe(Ge(()=>this._overlayAttached)):se()).pipe(ne(e=>e instanceof QO?e:null))}get activeOption(){return this.autocomplete&&this.autocomplete._keyManager?this.autocomplete._keyManager.activeItem:null}_getOutsideClickStream(){return Ht(nr(this._document,"click"),nr(this._document,"auxclick"),nr(this._document,"touchend")).pipe(Ge(e=>{const i=ro(e),r=this._formField?this._formField.getConnectedOverlayOrigin().nativeElement:null,o=this.connectedTo?this.connectedTo.elementRef.nativeElement:null;return this._overlayAttached&&i!==this._element.nativeElement&&this._document.activeElement!==this._element.nativeElement&&(!r||!r.contains(i))&&(!o||!o.contains(i))&&!!this._overlayRef&&!this._overlayRef.overlayElement.contains(i)}))}writeValue(e){Promise.resolve(null).then(()=>this._assignOptionValue(e))}registerOnChange(e){this._onChange=e}registerOnTouched(e){this._onTouched=e}setDisabledState(e){this._element.nativeElement.disabled=e}_handleKeydown(e){const i=e.keyCode,r=Kn(e);if(27===i&&!r&&e.preventDefault(),this._valueOnLastKeydown=this._element.nativeElement.value,this.activeOption&&13===i&&this.panelOpen&&!r)this.activeOption._selectViaInteraction(),this._resetActiveItem(),e.preventDefault();else if(this.autocomplete){const o=this.autocomplete._keyManager.activeItem,s=38===i||40===i;9===i||s&&!r&&this.panelOpen?this.autocomplete._keyManager.onKeydown(e):s&&this._canOpen()&&this._openPanelInternal(this._valueOnLastKeydown),(s||this.autocomplete._keyManager.activeItem!==o)&&(this._scrollToOption(this.autocomplete._keyManager.activeItemIndex||0),this.autocomplete.autoSelectActiveOption&&this.activeOption&&(this._pendingAutoselectedOption||(this._valueBeforeAutoSelection=this._valueOnLastKeydown),this._pendingAutoselectedOption=this.activeOption,this._assignOptionValue(this.activeOption.value)))}}_handleInput(e){let i=e.target,r=i.value;if("number"===i.type&&(r=""==r?null:parseFloat(r)),this._previousValue!==r){if(this._previousValue=r,this._pendingAutoselectedOption=null,(!this.autocomplete||!this.autocomplete.requireSelection)&&this._onChange(r),r){if(this.panelOpen&&!this.autocomplete.requireSelection){const o=this.autocomplete.options?.find(s=>s.selected);o&&r!==this._getDisplayValue(o.value)&&o.deselect(!1)}}else this._clearPreviousSelectedOption(null,!1);if(this._canOpen()&&this._document.activeElement===e.target){const o=this._valueOnLastKeydown??this._element.nativeElement.value;this._valueOnLastKeydown=null,this._openPanelInternal(o)}}}_handleFocus(){this._canOpenOnNextFocus?this._canOpen()&&(this._previousValue=this._element.nativeElement.value,this._attachOverlay(this._previousValue),this._floatLabel(!0)):this._canOpenOnNextFocus=!0}_handleClick(){this._canOpen()&&!this.panelOpen&&this._openPanelInternal()}_floatLabel(e=!1){this._formField&&"auto"===this._formField.floatLabel&&(e?this._formField._animateAndLockLabel():this._formField.floatLabel="always",this._manuallyFloatingLabel=!0)}_resetLabel(){this._manuallyFloatingLabel&&(this._formField&&(this._formField.floatLabel="auto"),this._manuallyFloatingLabel=!1)}_subscribeToClosingActions(){return Ht(this._zone.onStable.pipe(gt(1)),this.autocomplete.options.changes.pipe(pt(()=>this._positionStrategy.reapplyLastPosition()),iw(0))).pipe(nn(()=>(this._zone.run(()=>{const r=this.panelOpen;this._resetActiveItem(),this._updatePanelState(),this._changeDetectorRef.detectChanges(),this.panelOpen&&this._overlayRef.updatePosition(),r!==this.panelOpen&&(this.panelOpen?this._emitOpened():this.autocomplete.closed.emit())}),this.panelClosingActions)),gt(1)).subscribe(r=>this._setValueAndClose(r))}_emitOpened(){this.autocomplete.opened.emit()}_destroyPanel(){this._overlayRef&&(this.closePanel(),this._overlayRef.dispose(),this._overlayRef=null)}_getDisplayValue(e){const i=this.autocomplete;return i&&i.displayWith?i.displayWith(e):e}_assignOptionValue(e){const i=this._getDisplayValue(e);null==e&&this._clearPreviousSelectedOption(null,!1),this._updateNativeInputValue(i??"")}_updateNativeInputValue(e){this._formField?this._formField._control.value=e:this._element.nativeElement.value=e,this._previousValue=e}_setValueAndClose(e){const i=this.autocomplete,r=e?e.source:this._pendingAutoselectedOption;r?(this._clearPreviousSelectedOption(r),this._assignOptionValue(r.value),this._onChange(r.value),i._emitSelectEvent(r),this._element.nativeElement.focus()):i.requireSelection&&this._element.nativeElement.value!==this._valueOnAttach&&(this._clearPreviousSelectedOption(null),this._assignOptionValue(null),i._animationDone?i._animationDone.pipe(gt(1)).subscribe(()=>this._onChange(null)):this._onChange(null)),this.closePanel()}_clearPreviousSelectedOption(e,i){this.autocomplete?.options?.forEach(r=>{r!==e&&r.selected&&r.deselect(i)})}_openPanelInternal(e=this._element.nativeElement.value){this._attachOverlay(e),this._floatLabel(),this._trackedModal&&np(this._trackedModal,"aria-owns",this.autocomplete.id)}_attachOverlay(e){let i=this._overlayRef;i?(this._positionStrategy.setOrigin(this._getConnectedElement()),i.updateSize({width:this._getPanelWidth()})):(this._portal=new jo(this.autocomplete.template,this._viewContainerRef,{id:this._formField?.getLabelId()}),i=this._overlay.create(this._getOverlayConfig()),this._overlayRef=i,this._viewportSubscription=this._viewportRuler.change().subscribe(()=>{this.panelOpen&&i&&i.updateSize({width:this._getPanelWidth()})})),i&&!i.hasAttached()&&(i.attach(this._portal),this._valueOnAttach=e,this._valueOnLastKeydown=null,this._closingActionsSubscription=this._subscribeToClosingActions());const r=this.panelOpen;this.autocomplete._isOpen=this._overlayAttached=!0,this.autocomplete._latestOpeningTrigger=this,this.autocomplete._setColor(this._formField?.color),this._updatePanelState(),this._applyModalPanelOwnership(),this.panelOpen&&r!==this.panelOpen&&this._emitOpened()}_updatePanelState(){if(this.autocomplete._setVisibility(),this.panelOpen){const e=this._overlayRef;this._keydownSubscription||(this._keydownSubscription=e.keydownEvents().subscribe(this._handlePanelKeydown)),this._outsideClickSubscription||(this._outsideClickSubscription=e.outsidePointerEvents().subscribe())}else this._keydownSubscription?.unsubscribe(),this._outsideClickSubscription?.unsubscribe(),this._keydownSubscription=this._outsideClickSubscription=null}_getOverlayConfig(){return new au({positionStrategy:this._getOverlayPosition(),scrollStrategy:this._scrollStrategy(),width:this._getPanelWidth(),direction:this._dir??void 0,panelClass:this._defaults?.overlayPanelClass})}_getOverlayPosition(){const e=this._overlay.position().flexibleConnectedTo(this._getConnectedElement()).withFlexibleDimensions(!1).withPush(!1);return this._setStrategyPositions(e),this._positionStrategy=e,e}_setStrategyPositions(e){const i=[{originX:"start",originY:"bottom",overlayX:"start",overlayY:"top"},{originX:"end",originY:"bottom",overlayX:"end",overlayY:"top"}],r=this._aboveClass,o=[{originX:"start",originY:"top",overlayX:"start",overlayY:"bottom",panelClass:r},{originX:"end",originY:"top",overlayX:"end",overlayY:"bottom",panelClass:r}];let s;s="above"===this.position?o:"below"===this.position?i:[...i,...o],e.withPositions(s)}_getConnectedElement(){return this.connectedTo?this.connectedTo.elementRef:this._formField?this._formField.getConnectedOverlayOrigin():this._element}_getPanelWidth(){return this.autocomplete.panelWidth||this._getHostWidth()}_getHostWidth(){return this._getConnectedElement().nativeElement.getBoundingClientRect().width}_resetActiveItem(){const e=this.autocomplete;if(e.autoActiveFirstOption){let i=-1;for(let r=0;r .cdk-overlay-container [aria-modal="true"]');if(!e)return;const i=this.autocomplete.id;this._trackedModal&&Cc(this._trackedModal,"aria-owns",i),np(e,"aria-owns",i),this._trackedModal=e}_clearFromModal(){this._trackedModal&&(Cc(this._trackedModal,"aria-owns",this.autocomplete.id),this._trackedModal=null)}static#e=this.\u0275fac=function(i){return new(i||t)(p(K),p(Hn),p(Tt),p(W),p(Ke),p(rV),p(Xn,8),p(pu,9),p(_e,8),p(Ho),p(iV,8))};static#t=this.\u0275dir=R({type:t,selectors:[["input","matAutocomplete",""],["textarea","matAutocomplete",""]],hostAttrs:[1,"mat-mdc-autocomplete-trigger"],hostVars:7,hostBindings:function(i,r){1&i&&q("focusin",function(){return r._handleFocus()})("blur",function(){return r._onTouched()})("input",function(s){return r._handleInput(s)})("keydown",function(s){return r._handleKeydown(s)})("click",function(){return r._handleClick()}),2&i&&me("autocomplete",r.autocompleteAttribute)("role",r.autocompleteDisabled?null:"combobox")("aria-autocomplete",r.autocompleteDisabled?null:"list")("aria-activedescendant",r.panelOpen&&r.activeOption?r.activeOption.id:null)("aria-expanded",r.autocompleteDisabled?null:r.panelOpen.toString())("aria-controls",r.autocompleteDisabled||!r.panelOpen||null==r.autocomplete?null:r.autocomplete.id)("aria-haspopup",r.autocompleteDisabled?null:"listbox")},inputs:{autocomplete:[D.None,"matAutocomplete","autocomplete"],position:[D.None,"matAutocompletePosition","position"],connectedTo:[D.None,"matAutocompleteConnectedTo","connectedTo"],autocompleteAttribute:[D.None,"autocomplete","autocompleteAttribute"],autocompleteDisabled:[D.HasDecoratorInputTransform,"matAutocompleteDisabled","autocompleteDisabled",j]},exportAs:["matAutocompleteTrigger"],standalone:!0,features:[ie([Cae]),Fe,Ft]})}return t})(),kae=(()=>{class t{static#e=this.\u0275fac=function(i){return new(i||t)};static#t=this.\u0275mod=ge({type:t});static#n=this.\u0275inj=he({providers:[Eae],imports:[cu,tu,Te,Ni,zo,tu,Te]})}return t})();const Tae=["*"],Rae=new M("MAT_CARD_CONFIG");let Fg=(()=>{class t{constructor(e){this.appearance=e?.appearance||"raised"}static#e=this.\u0275fac=function(i){return new(i||t)(p(Rae,8))};static#t=this.\u0275cmp=ue({type:t,selectors:[["mat-card"]],hostAttrs:[1,"mat-mdc-card","mdc-card"],hostVars:4,hostBindings:function(i,r){2&i&&de("mat-mdc-card-outlined","outlined"===r.appearance)("mdc-card--outlined","outlined"===r.appearance)},inputs:{appearance:"appearance"},exportAs:["matCard"],standalone:!0,features:[ve],ngContentSelectors:Tae,decls:1,vars:0,template:function(i,r){1&i&&($e(),Y(0))},styles:['.mdc-card{display:flex;flex-direction:column;box-sizing:border-box}.mdc-card::after{position:absolute;box-sizing:border-box;width:100%;height:100%;top:0;left:0;border:1px solid rgba(0,0,0,0);border-radius:inherit;content:"";pointer-events:none;pointer-events:none}@media screen and (forced-colors: active){.mdc-card::after{border-color:CanvasText}}.mdc-card--outlined::after{border:none}.mdc-card__content{border-radius:inherit;height:100%}.mdc-card__media{position:relative;box-sizing:border-box;background-repeat:no-repeat;background-position:center;background-size:cover}.mdc-card__media::before{display:block;content:""}.mdc-card__media:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.mdc-card__media:last-child{border-bottom-left-radius:inherit;border-bottom-right-radius:inherit}.mdc-card__media--square::before{margin-top:100%}.mdc-card__media--16-9::before{margin-top:56.25%}.mdc-card__media-content{position:absolute;top:0;right:0;bottom:0;left:0;box-sizing:border-box}.mdc-card__primary-action{display:flex;flex-direction:column;box-sizing:border-box;position:relative;outline:none;color:inherit;text-decoration:none;cursor:pointer;overflow:hidden}.mdc-card__primary-action:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.mdc-card__primary-action:last-child{border-bottom-left-radius:inherit;border-bottom-right-radius:inherit}.mdc-card__actions{display:flex;flex-direction:row;align-items:center;box-sizing:border-box;min-height:52px;padding:8px}.mdc-card__actions--full-bleed{padding:0}.mdc-card__action-buttons,.mdc-card__action-icons{display:flex;flex-direction:row;align-items:center;box-sizing:border-box}.mdc-card__action-icons{color:rgba(0, 0, 0, 0.6);flex-grow:1;justify-content:flex-end}.mdc-card__action-buttons+.mdc-card__action-icons{margin-left:16px;margin-right:0}[dir=rtl] .mdc-card__action-buttons+.mdc-card__action-icons,.mdc-card__action-buttons+.mdc-card__action-icons[dir=rtl]{margin-left:0;margin-right:16px}.mdc-card__action{display:inline-flex;flex-direction:row;align-items:center;box-sizing:border-box;justify-content:center;cursor:pointer;user-select:none}.mdc-card__action:focus{outline:none}.mdc-card__action--button{margin-left:0;margin-right:8px;padding:0 8px}[dir=rtl] .mdc-card__action--button,.mdc-card__action--button[dir=rtl]{margin-left:8px;margin-right:0}.mdc-card__action--button:last-child{margin-left:0;margin-right:0}[dir=rtl] .mdc-card__action--button:last-child,.mdc-card__action--button:last-child[dir=rtl]{margin-left:0;margin-right:0}.mdc-card__actions--full-bleed .mdc-card__action--button{justify-content:space-between;width:100%;height:auto;max-height:none;margin:0;padding:8px 16px;text-align:left}[dir=rtl] .mdc-card__actions--full-bleed .mdc-card__action--button,.mdc-card__actions--full-bleed .mdc-card__action--button[dir=rtl]{text-align:right}.mdc-card__action--icon{margin:-6px 0;padding:12px}.mdc-card__action--icon:not(:disabled){color:rgba(0, 0, 0, 0.6)}.mat-mdc-card{border-radius:var(--mdc-elevated-card-container-shape);background-color:var(--mdc-elevated-card-container-color);border-width:0;border-style:solid;border-color:var(--mdc-elevated-card-container-color);box-shadow:var(--mdc-elevated-card-container-elevation)}.mat-mdc-card .mdc-card::after{border-radius:var(--mdc-elevated-card-container-shape)}.mat-mdc-card-outlined{border-width:var(--mdc-outlined-card-outline-width);border-style:solid;border-color:var(--mdc-outlined-card-outline-color);border-radius:var(--mdc-outlined-card-container-shape);background-color:var(--mdc-outlined-card-container-color);box-shadow:var(--mdc-outlined-card-container-elevation)}.mat-mdc-card-outlined .mdc-card::after{border-radius:var(--mdc-outlined-card-container-shape)}.mat-mdc-card-title{font-family:var(--mat-card-title-text-font);line-height:var(--mat-card-title-text-line-height);font-size:var(--mat-card-title-text-size);letter-spacing:var(--mat-card-title-text-tracking);font-weight:var(--mat-card-title-text-weight)}.mat-mdc-card-subtitle{color:var(--mat-card-subtitle-text-color);font-family:var(--mat-card-subtitle-text-font);line-height:var(--mat-card-subtitle-text-line-height);font-size:var(--mat-card-subtitle-text-size);letter-spacing:var(--mat-card-subtitle-text-tracking);font-weight:var(--mat-card-subtitle-text-weight)}.mat-mdc-card{position:relative}.mat-mdc-card-title,.mat-mdc-card-subtitle{display:block;margin:0}.mat-mdc-card-avatar~.mat-mdc-card-header-text .mat-mdc-card-title,.mat-mdc-card-avatar~.mat-mdc-card-header-text .mat-mdc-card-subtitle{padding:16px 16px 0}.mat-mdc-card-header{display:flex;padding:16px 16px 0}.mat-mdc-card-content{display:block;padding:0 16px}.mat-mdc-card-content:first-child{padding-top:16px}.mat-mdc-card-content:last-child{padding-bottom:16px}.mat-mdc-card-title-group{display:flex;justify-content:space-between;width:100%}.mat-mdc-card-avatar{height:40px;width:40px;border-radius:50%;flex-shrink:0;margin-bottom:16px;object-fit:cover}.mat-mdc-card-avatar~.mat-mdc-card-header-text .mat-mdc-card-subtitle,.mat-mdc-card-avatar~.mat-mdc-card-header-text .mat-mdc-card-title{line-height:normal}.mat-mdc-card-sm-image{width:80px;height:80px}.mat-mdc-card-md-image{width:112px;height:112px}.mat-mdc-card-lg-image{width:152px;height:152px}.mat-mdc-card-xl-image{width:240px;height:240px}.mat-mdc-card-subtitle~.mat-mdc-card-title,.mat-mdc-card-title~.mat-mdc-card-subtitle,.mat-mdc-card-header .mat-mdc-card-header-text .mat-mdc-card-title,.mat-mdc-card-header .mat-mdc-card-header-text .mat-mdc-card-subtitle,.mat-mdc-card-title-group .mat-mdc-card-title,.mat-mdc-card-title-group .mat-mdc-card-subtitle{padding-top:0}.mat-mdc-card-content>:last-child:not(.mat-mdc-card-footer){margin-bottom:0}.mat-mdc-card-actions-align-end{justify-content:flex-end}'],encapsulation:2,changeDetection:0})}return t})(),TC=(()=>{class t{static#e=this.\u0275fac=function(i){return new(i||t)};static#t=this.\u0275dir=R({type:t,selectors:[["mat-card-content"]],hostAttrs:[1,"mat-mdc-card-content"],standalone:!0})}return t})(),SC=(()=>{class t{constructor(){this.align="start"}static#e=this.\u0275fac=function(i){return new(i||t)};static#t=this.\u0275dir=R({type:t,selectors:[["mat-card-actions"]],hostAttrs:[1,"mat-mdc-card-actions","mdc-card__actions"],hostVars:2,hostBindings:function(i,r){2&i&&de("mat-mdc-card-actions-align-end","end"===r.align)},inputs:{align:"align"},exportAs:["matCardActions"],standalone:!0})}return t})(),Pae=(()=>{class t{static#e=this.\u0275fac=function(i){return new(i||t)};static#t=this.\u0275mod=ge({type:t});static#n=this.\u0275inj=he({imports:[Te,Ni,Te]})}return t})();const Lae=["input"],Vae=["label"],Bae=["*"],jae=new M("mat-checkbox-default-options",{providedIn:"root",factory:oV});function oV(){return{color:"accent",clickAction:"check-indeterminate"}}var zn=function(t){return t[t.Init=0]="Init",t[t.Checked=1]="Checked",t[t.Unchecked=2]="Unchecked",t[t.Indeterminate=3]="Indeterminate",t}(zn||{});const Hae={provide:ui,useExisting:Ze(()=>MC),multi:!0};class zae{}let Uae=0;const sV=oV();let MC=(()=>{class t{focus(){this._inputElement.nativeElement.focus()}_createChangeEvent(e){const i=new zae;return i.source=this,i.checked=e,i}_getAnimationTargetElement(){return this._inputElement?.nativeElement}get inputId(){return`${this.id||this._uniqueId}-input`}constructor(e,i,r,o,s,a){this._elementRef=e,this._changeDetectorRef=i,this._ngZone=r,this._animationMode=s,this._options=a,this._animationClasses={uncheckedToChecked:"mdc-checkbox--anim-unchecked-checked",uncheckedToIndeterminate:"mdc-checkbox--anim-unchecked-indeterminate",checkedToUnchecked:"mdc-checkbox--anim-checked-unchecked",checkedToIndeterminate:"mdc-checkbox--anim-checked-indeterminate",indeterminateToChecked:"mdc-checkbox--anim-indeterminate-checked",indeterminateToUnchecked:"mdc-checkbox--anim-indeterminate-unchecked"},this.ariaLabel="",this.ariaLabelledby=null,this.labelPosition="after",this.name=null,this.change=new G,this.indeterminateChange=new G,this._onTouched=()=>{},this._currentAnimationClass="",this._currentCheckState=zn.Init,this._controlValueAccessorChangeFn=()=>{},this._validatorChangeFn=()=>{},this._checked=!1,this._disabled=!1,this._indeterminate=!1,this._options=this._options||sV,this.color=this._options.color||sV.color,this.tabIndex=parseInt(o)||0,this.id=this._uniqueId="mat-mdc-checkbox-"+ ++Uae}ngOnChanges(e){e.required&&this._validatorChangeFn()}ngAfterViewInit(){this._syncIndeterminate(this._indeterminate)}get checked(){return this._checked}set checked(e){e!=this.checked&&(this._checked=e,this._changeDetectorRef.markForCheck())}get disabled(){return this._disabled}set disabled(e){e!==this.disabled&&(this._disabled=e,this._changeDetectorRef.markForCheck())}get indeterminate(){return this._indeterminate}set indeterminate(e){const i=e!=this._indeterminate;this._indeterminate=e,i&&(this._transitionCheckState(this._indeterminate?zn.Indeterminate:this.checked?zn.Checked:zn.Unchecked),this.indeterminateChange.emit(this._indeterminate)),this._syncIndeterminate(this._indeterminate)}_isRippleDisabled(){return this.disableRipple||this.disabled}_onLabelTextChange(){this._changeDetectorRef.detectChanges()}writeValue(e){this.checked=!!e}registerOnChange(e){this._controlValueAccessorChangeFn=e}registerOnTouched(e){this._onTouched=e}setDisabledState(e){this.disabled=e}validate(e){return this.required&&!0!==e.value?{required:!0}:null}registerOnValidatorChange(e){this._validatorChangeFn=e}_transitionCheckState(e){let i=this._currentCheckState,r=this._getAnimationTargetElement();if(i!==e&&r&&(this._currentAnimationClass&&r.classList.remove(this._currentAnimationClass),this._currentAnimationClass=this._getAnimationClassForCheckStateTransition(i,e),this._currentCheckState=e,this._currentAnimationClass.length>0)){r.classList.add(this._currentAnimationClass);const o=this._currentAnimationClass;this._ngZone.runOutsideAngular(()=>{setTimeout(()=>{r.classList.remove(o)},1e3)})}}_emitChangeEvent(){this._controlValueAccessorChangeFn(this.checked),this.change.emit(this._createChangeEvent(this.checked)),this._inputElement&&(this._inputElement.nativeElement.checked=this.checked)}toggle(){this.checked=!this.checked,this._controlValueAccessorChangeFn(this.checked)}_handleInputClick(){const e=this._options?.clickAction;this.disabled||"noop"===e?!this.disabled&&"noop"===e&&(this._inputElement.nativeElement.checked=this.checked,this._inputElement.nativeElement.indeterminate=this.indeterminate):(this.indeterminate&&"check"!==e&&Promise.resolve().then(()=>{this._indeterminate=!1,this.indeterminateChange.emit(this._indeterminate)}),this._checked=!this._checked,this._transitionCheckState(this._checked?zn.Checked:zn.Unchecked),this._emitChangeEvent())}_onInteractionEvent(e){e.stopPropagation()}_onBlur(){Promise.resolve().then(()=>{this._onTouched(),this._changeDetectorRef.markForCheck()})}_getAnimationClassForCheckStateTransition(e,i){if("NoopAnimations"===this._animationMode)return"";switch(e){case zn.Init:if(i===zn.Checked)return this._animationClasses.uncheckedToChecked;if(i==zn.Indeterminate)return this._checked?this._animationClasses.checkedToIndeterminate:this._animationClasses.uncheckedToIndeterminate;break;case zn.Unchecked:return i===zn.Checked?this._animationClasses.uncheckedToChecked:this._animationClasses.uncheckedToIndeterminate;case zn.Checked:return i===zn.Unchecked?this._animationClasses.checkedToUnchecked:this._animationClasses.checkedToIndeterminate;case zn.Indeterminate:return i===zn.Checked?this._animationClasses.indeterminateToChecked:this._animationClasses.indeterminateToUnchecked}return""}_syncIndeterminate(e){const i=this._inputElement;i&&(i.nativeElement.indeterminate=e)}_onInputClick(){this._handleInputClick()}_onTouchTargetClick(){this._handleInputClick(),this.disabled||this._inputElement.nativeElement.focus()}_preventBubblingFromLabel(e){e.target&&this._labelElement.nativeElement.contains(e.target)&&e.stopPropagation()}static#e=this.\u0275fac=function(i){return new(i||t)(p(K),p(Ke),p(W),bi("tabindex"),p(Bt,8),p(jae,8))};static#t=this.\u0275cmp=ue({type:t,selectors:[["mat-checkbox"]],viewQuery:function(i,r){if(1&i&&(Le(Lae,5),Le(Vae,5),Le(Bo,5)),2&i){let o;U(o=$())&&(r._inputElement=o.first),U(o=$())&&(r._labelElement=o.first),U(o=$())&&(r.ripple=o.first)}},hostAttrs:[1,"mat-mdc-checkbox"],hostVars:14,hostBindings:function(i,r){2&i&&(Zi("id",r.id),me("tabindex",null)("aria-label",null)("aria-labelledby",null),bn(r.color?"mat-"+r.color:"mat-accent"),de("_mat-animation-noopable","NoopAnimations"===r._animationMode)("mdc-checkbox--disabled",r.disabled)("mat-mdc-checkbox-disabled",r.disabled)("mat-mdc-checkbox-checked",r.checked))},inputs:{ariaLabel:[D.None,"aria-label","ariaLabel"],ariaLabelledby:[D.None,"aria-labelledby","ariaLabelledby"],ariaDescribedby:[D.None,"aria-describedby","ariaDescribedby"],id:"id",required:[D.HasDecoratorInputTransform,"required","required",j],labelPosition:"labelPosition",name:"name",value:"value",disableRipple:[D.HasDecoratorInputTransform,"disableRipple","disableRipple",j],tabIndex:[D.HasDecoratorInputTransform,"tabIndex","tabIndex",e=>null==e?void 0:Jt(e)],color:"color",checked:[D.HasDecoratorInputTransform,"checked","checked",j],disabled:[D.HasDecoratorInputTransform,"disabled","disabled",j],indeterminate:[D.HasDecoratorInputTransform,"indeterminate","indeterminate",j]},outputs:{change:"change",indeterminateChange:"indeterminateChange"},exportAs:["matCheckbox"],standalone:!0,features:[ie([Hae,{provide:yn,useExisting:t,multi:!0}]),Fe,Ft,ve],ngContentSelectors:Bae,decls:15,vars:19,consts:[["checkbox",""],["input",""],["label",""],["mat-internal-form-field","",3,"click","labelPosition"],[1,"mdc-checkbox"],[1,"mat-mdc-checkbox-touch-target",3,"click"],["type","checkbox",1,"mdc-checkbox__native-control",3,"blur","click","change","checked","indeterminate","disabled","id","required","tabIndex"],[1,"mdc-checkbox__ripple"],[1,"mdc-checkbox__background"],["focusable","false","viewBox","0 0 24 24","aria-hidden","true",1,"mdc-checkbox__checkmark"],["fill","none","d","M1.73,12.91 8.1,19.28 22.79,4.59",1,"mdc-checkbox__checkmark-path"],[1,"mdc-checkbox__mixedmark"],["mat-ripple","",1,"mat-mdc-checkbox-ripple","mat-mdc-focus-indicator",3,"matRippleTrigger","matRippleDisabled","matRippleCentered"],[1,"mdc-label",3,"for"]],template:function(i,r){if(1&i){const o=et();$e(),y(0,"div",3),q("click",function(a){return ee(o),te(r._preventBubblingFromLabel(a))}),y(1,"div",4,0)(3,"div",5),q("click",function(){return ee(o),te(r._onTouchTargetClick())}),w(),y(4,"input",6,1),q("blur",function(){return ee(o),te(r._onBlur())})("click",function(){return ee(o),te(r._onInputClick())})("change",function(a){return ee(o),te(r._onInteractionEvent(a))}),w(),re(6,"div",7),y(7,"div",8),Ma(),y(8,"svg",9),re(9,"path",10),w(),function CE(){!function vH(){De.lFrame.currentNamespace=null}()}(),re(10,"div",11),w(),re(11,"div",12),w(),y(12,"label",13,2),Y(14),w()()}if(2&i){const o=ai(2);z("labelPosition",r.labelPosition),C(4),de("mdc-checkbox--selected",r.checked),z("checked",r.checked)("indeterminate",r.indeterminate)("disabled",r.disabled)("id",r.inputId)("required",r.required)("tabIndex",r.disabled?-1:r.tabIndex),me("aria-label",r.ariaLabel||null)("aria-labelledby",r.ariaLabelledby)("aria-describedby",r.ariaDescribedby)("aria-checked",r.indeterminate?"mixed":null)("name",r.name)("value",r.value),C(7),z("matRippleTrigger",o)("matRippleDisabled",r.disableRipple||r.disabled)("matRippleCentered",!0),C(),z("for",r.inputId)}},dependencies:[Bo,tN],styles:['.mdc-touch-target-wrapper{display:inline}@keyframes mdc-checkbox-unchecked-checked-checkmark-path{0%,50%{stroke-dashoffset:29.7833385}50%{animation-timing-function:cubic-bezier(0, 0, 0.2, 1)}100%{stroke-dashoffset:0}}@keyframes mdc-checkbox-unchecked-indeterminate-mixedmark{0%,68.2%{transform:scaleX(0)}68.2%{animation-timing-function:cubic-bezier(0, 0, 0, 1)}100%{transform:scaleX(1)}}@keyframes mdc-checkbox-checked-unchecked-checkmark-path{from{animation-timing-function:cubic-bezier(0.4, 0, 1, 1);opacity:1;stroke-dashoffset:0}to{opacity:0;stroke-dashoffset:-29.7833385}}@keyframes mdc-checkbox-checked-indeterminate-checkmark{from{animation-timing-function:cubic-bezier(0, 0, 0.2, 1);transform:rotate(0deg);opacity:1}to{transform:rotate(45deg);opacity:0}}@keyframes mdc-checkbox-indeterminate-checked-checkmark{from{animation-timing-function:cubic-bezier(0.14, 0, 0, 1);transform:rotate(45deg);opacity:0}to{transform:rotate(360deg);opacity:1}}@keyframes mdc-checkbox-checked-indeterminate-mixedmark{from{animation-timing-function:mdc-animation-deceleration-curve-timing-function;transform:rotate(-45deg);opacity:0}to{transform:rotate(0deg);opacity:1}}@keyframes mdc-checkbox-indeterminate-checked-mixedmark{from{animation-timing-function:cubic-bezier(0.14, 0, 0, 1);transform:rotate(0deg);opacity:1}to{transform:rotate(315deg);opacity:0}}@keyframes mdc-checkbox-indeterminate-unchecked-mixedmark{0%{animation-timing-function:linear;transform:scaleX(1);opacity:1}32.8%,100%{transform:scaleX(0);opacity:0}}.mdc-checkbox{display:inline-block;position:relative;flex:0 0 18px;box-sizing:content-box;width:18px;height:18px;line-height:0;white-space:nowrap;cursor:pointer;vertical-align:bottom}.mdc-checkbox[hidden]{display:none}.mdc-checkbox.mdc-ripple-upgraded--background-focused .mdc-checkbox__focus-ring,.mdc-checkbox:not(.mdc-ripple-upgraded):focus .mdc-checkbox__focus-ring{pointer-events:none;border:2px solid rgba(0,0,0,0);border-radius:6px;box-sizing:content-box;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:100%;width:100%}@media screen and (forced-colors: active){.mdc-checkbox.mdc-ripple-upgraded--background-focused .mdc-checkbox__focus-ring,.mdc-checkbox:not(.mdc-ripple-upgraded):focus .mdc-checkbox__focus-ring{border-color:CanvasText}}.mdc-checkbox.mdc-ripple-upgraded--background-focused .mdc-checkbox__focus-ring::after,.mdc-checkbox:not(.mdc-ripple-upgraded):focus .mdc-checkbox__focus-ring::after{content:"";border:2px solid rgba(0,0,0,0);border-radius:8px;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:calc(100% + 4px);width:calc(100% + 4px)}@media screen and (forced-colors: active){.mdc-checkbox.mdc-ripple-upgraded--background-focused .mdc-checkbox__focus-ring::after,.mdc-checkbox:not(.mdc-ripple-upgraded):focus .mdc-checkbox__focus-ring::after{border-color:CanvasText}}@media all and (-ms-high-contrast: none){.mdc-checkbox .mdc-checkbox__focus-ring{display:none}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-checkbox__mixedmark{margin:0 1px}}.mdc-checkbox--disabled{cursor:default;pointer-events:none}.mdc-checkbox__background{display:inline-flex;position:absolute;align-items:center;justify-content:center;box-sizing:border-box;width:18px;height:18px;border:2px solid currentColor;border-radius:2px;background-color:rgba(0,0,0,0);pointer-events:none;will-change:background-color,border-color;transition:background-color 90ms 0ms cubic-bezier(0.4, 0, 0.6, 1),border-color 90ms 0ms cubic-bezier(0.4, 0, 0.6, 1)}.mdc-checkbox__checkmark{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;opacity:0;transition:opacity 180ms 0ms cubic-bezier(0.4, 0, 0.6, 1)}.mdc-checkbox--upgraded .mdc-checkbox__checkmark{opacity:1}.mdc-checkbox__checkmark-path{transition:stroke-dashoffset 180ms 0ms cubic-bezier(0.4, 0, 0.6, 1);stroke:currentColor;stroke-width:3.12px;stroke-dashoffset:29.7833385;stroke-dasharray:29.7833385}.mdc-checkbox__mixedmark{width:100%;height:0;transform:scaleX(0) rotate(0deg);border-width:1px;border-style:solid;opacity:0;transition:opacity 90ms 0ms cubic-bezier(0.4, 0, 0.6, 1),transform 90ms 0ms cubic-bezier(0.4, 0, 0.6, 1)}.mdc-checkbox--anim-unchecked-checked .mdc-checkbox__background,.mdc-checkbox--anim-unchecked-indeterminate .mdc-checkbox__background,.mdc-checkbox--anim-checked-unchecked .mdc-checkbox__background,.mdc-checkbox--anim-indeterminate-unchecked .mdc-checkbox__background{animation-duration:180ms;animation-timing-function:linear}.mdc-checkbox--anim-unchecked-checked .mdc-checkbox__checkmark-path{animation:mdc-checkbox-unchecked-checked-checkmark-path 180ms linear 0s;transition:none}.mdc-checkbox--anim-unchecked-indeterminate .mdc-checkbox__mixedmark{animation:mdc-checkbox-unchecked-indeterminate-mixedmark 90ms linear 0s;transition:none}.mdc-checkbox--anim-checked-unchecked .mdc-checkbox__checkmark-path{animation:mdc-checkbox-checked-unchecked-checkmark-path 90ms linear 0s;transition:none}.mdc-checkbox--anim-checked-indeterminate .mdc-checkbox__checkmark{animation:mdc-checkbox-checked-indeterminate-checkmark 90ms linear 0s;transition:none}.mdc-checkbox--anim-checked-indeterminate .mdc-checkbox__mixedmark{animation:mdc-checkbox-checked-indeterminate-mixedmark 90ms linear 0s;transition:none}.mdc-checkbox--anim-indeterminate-checked .mdc-checkbox__checkmark{animation:mdc-checkbox-indeterminate-checked-checkmark 500ms linear 0s;transition:none}.mdc-checkbox--anim-indeterminate-checked .mdc-checkbox__mixedmark{animation:mdc-checkbox-indeterminate-checked-mixedmark 500ms linear 0s;transition:none}.mdc-checkbox--anim-indeterminate-unchecked .mdc-checkbox__mixedmark{animation:mdc-checkbox-indeterminate-unchecked-mixedmark 300ms linear 0s;transition:none}.mdc-checkbox__native-control:checked~.mdc-checkbox__background,.mdc-checkbox__native-control:indeterminate~.mdc-checkbox__background,.mdc-checkbox__native-control[data-indeterminate=true]~.mdc-checkbox__background{transition:border-color 90ms 0ms cubic-bezier(0, 0, 0.2, 1),background-color 90ms 0ms cubic-bezier(0, 0, 0.2, 1)}.mdc-checkbox__native-control:checked~.mdc-checkbox__background .mdc-checkbox__checkmark-path,.mdc-checkbox__native-control:indeterminate~.mdc-checkbox__background .mdc-checkbox__checkmark-path,.mdc-checkbox__native-control[data-indeterminate=true]~.mdc-checkbox__background .mdc-checkbox__checkmark-path{stroke-dashoffset:0}.mdc-checkbox__native-control{position:absolute;margin:0;padding:0;opacity:0;cursor:inherit}.mdc-checkbox__native-control:disabled{cursor:default;pointer-events:none}.mdc-checkbox--touch{margin:calc((var(--mdc-checkbox-state-layer-size) - var(--mdc-checkbox-state-layer-size)) / 2)}.mdc-checkbox--touch .mdc-checkbox__native-control{top:calc((var(--mdc-checkbox-state-layer-size) - var(--mdc-checkbox-state-layer-size)) / 2);right:calc((var(--mdc-checkbox-state-layer-size) - var(--mdc-checkbox-state-layer-size)) / 2);left:calc((var(--mdc-checkbox-state-layer-size) - var(--mdc-checkbox-state-layer-size)) / 2);width:var(--mdc-checkbox-state-layer-size);height:var(--mdc-checkbox-state-layer-size)}.mdc-checkbox__native-control:checked~.mdc-checkbox__background .mdc-checkbox__checkmark{transition:opacity 180ms 0ms cubic-bezier(0, 0, 0.2, 1),transform 180ms 0ms cubic-bezier(0, 0, 0.2, 1);opacity:1}.mdc-checkbox__native-control:checked~.mdc-checkbox__background .mdc-checkbox__mixedmark{transform:scaleX(1) rotate(-45deg)}.mdc-checkbox__native-control:indeterminate~.mdc-checkbox__background .mdc-checkbox__checkmark,.mdc-checkbox__native-control[data-indeterminate=true]~.mdc-checkbox__background .mdc-checkbox__checkmark{transform:rotate(45deg);opacity:0;transition:opacity 90ms 0ms cubic-bezier(0.4, 0, 0.6, 1),transform 90ms 0ms cubic-bezier(0.4, 0, 0.6, 1)}.mdc-checkbox__native-control:indeterminate~.mdc-checkbox__background .mdc-checkbox__mixedmark,.mdc-checkbox__native-control[data-indeterminate=true]~.mdc-checkbox__background .mdc-checkbox__mixedmark{transform:scaleX(1) rotate(0deg);opacity:1}.mdc-checkbox.mdc-checkbox--upgraded .mdc-checkbox__background,.mdc-checkbox.mdc-checkbox--upgraded .mdc-checkbox__checkmark,.mdc-checkbox.mdc-checkbox--upgraded .mdc-checkbox__checkmark-path,.mdc-checkbox.mdc-checkbox--upgraded .mdc-checkbox__mixedmark{transition:none}.mdc-checkbox{padding:calc((var(--mdc-checkbox-state-layer-size) - 18px) / 2);margin:calc((var(--mdc-checkbox-state-layer-size) - var(--mdc-checkbox-state-layer-size)) / 2)}.mdc-checkbox .mdc-checkbox__native-control[disabled]:not(:checked):not(:indeterminate):not([data-indeterminate=true])~.mdc-checkbox__background{border-color:var(--mdc-checkbox-disabled-unselected-icon-color);background-color:transparent}.mdc-checkbox .mdc-checkbox__native-control[disabled]:checked~.mdc-checkbox__background,.mdc-checkbox .mdc-checkbox__native-control[disabled]:indeterminate~.mdc-checkbox__background,.mdc-checkbox .mdc-checkbox__native-control[data-indeterminate=true][disabled]~.mdc-checkbox__background{border-color:transparent;background-color:var(--mdc-checkbox-disabled-selected-icon-color)}.mdc-checkbox .mdc-checkbox__native-control:enabled~.mdc-checkbox__background .mdc-checkbox__checkmark{color:var(--mdc-checkbox-selected-checkmark-color)}.mdc-checkbox .mdc-checkbox__native-control:enabled~.mdc-checkbox__background .mdc-checkbox__mixedmark{border-color:var(--mdc-checkbox-selected-checkmark-color)}.mdc-checkbox .mdc-checkbox__native-control:disabled~.mdc-checkbox__background .mdc-checkbox__checkmark{color:var(--mdc-checkbox-disabled-selected-checkmark-color)}.mdc-checkbox .mdc-checkbox__native-control:disabled~.mdc-checkbox__background .mdc-checkbox__mixedmark{border-color:var(--mdc-checkbox-disabled-selected-checkmark-color)}.mdc-checkbox .mdc-checkbox__native-control:enabled:not(:checked):not(:indeterminate):not([data-indeterminate=true])~.mdc-checkbox__background{border-color:var(--mdc-checkbox-unselected-icon-color);background-color:transparent}.mdc-checkbox .mdc-checkbox__native-control:enabled:checked~.mdc-checkbox__background,.mdc-checkbox .mdc-checkbox__native-control:enabled:indeterminate~.mdc-checkbox__background,.mdc-checkbox .mdc-checkbox__native-control[data-indeterminate=true]:enabled~.mdc-checkbox__background{border-color:var(--mdc-checkbox-selected-icon-color);background-color:var(--mdc-checkbox-selected-icon-color)}@keyframes mdc-checkbox-fade-in-background-8A000000FFF4433600000000FFF44336{0%{border-color:var(--mdc-checkbox-unselected-icon-color);background-color:transparent}50%{border-color:var(--mdc-checkbox-selected-icon-color);background-color:var(--mdc-checkbox-selected-icon-color)}}@keyframes mdc-checkbox-fade-out-background-8A000000FFF4433600000000FFF44336{0%,80%{border-color:var(--mdc-checkbox-selected-icon-color);background-color:var(--mdc-checkbox-selected-icon-color)}100%{border-color:var(--mdc-checkbox-unselected-icon-color);background-color:transparent}}.mdc-checkbox.mdc-checkbox--anim-unchecked-checked .mdc-checkbox__native-control:enabled~.mdc-checkbox__background,.mdc-checkbox.mdc-checkbox--anim-unchecked-indeterminate .mdc-checkbox__native-control:enabled~.mdc-checkbox__background{animation-name:mdc-checkbox-fade-in-background-8A000000FFF4433600000000FFF44336}.mdc-checkbox.mdc-checkbox--anim-checked-unchecked .mdc-checkbox__native-control:enabled~.mdc-checkbox__background,.mdc-checkbox.mdc-checkbox--anim-indeterminate-unchecked .mdc-checkbox__native-control:enabled~.mdc-checkbox__background{animation-name:mdc-checkbox-fade-out-background-8A000000FFF4433600000000FFF44336}.mdc-checkbox:hover .mdc-checkbox__native-control:enabled:not(:checked):not(:indeterminate):not([data-indeterminate=true])~.mdc-checkbox__background{border-color:var(--mdc-checkbox-unselected-hover-icon-color);background-color:transparent}.mdc-checkbox:hover .mdc-checkbox__native-control:enabled:checked~.mdc-checkbox__background,.mdc-checkbox:hover .mdc-checkbox__native-control:enabled:indeterminate~.mdc-checkbox__background,.mdc-checkbox:hover .mdc-checkbox__native-control[data-indeterminate=true]:enabled~.mdc-checkbox__background{border-color:var(--mdc-checkbox-selected-hover-icon-color);background-color:var(--mdc-checkbox-selected-hover-icon-color)}@keyframes mdc-checkbox-fade-in-background-FF212121FFF4433600000000FFF44336{0%{border-color:var(--mdc-checkbox-unselected-hover-icon-color);background-color:transparent}50%{border-color:var(--mdc-checkbox-selected-hover-icon-color);background-color:var(--mdc-checkbox-selected-hover-icon-color)}}@keyframes mdc-checkbox-fade-out-background-FF212121FFF4433600000000FFF44336{0%,80%{border-color:var(--mdc-checkbox-selected-hover-icon-color);background-color:var(--mdc-checkbox-selected-hover-icon-color)}100%{border-color:var(--mdc-checkbox-unselected-hover-icon-color);background-color:transparent}}.mdc-checkbox:hover.mdc-checkbox--anim-unchecked-checked .mdc-checkbox__native-control:enabled~.mdc-checkbox__background,.mdc-checkbox:hover.mdc-checkbox--anim-unchecked-indeterminate .mdc-checkbox__native-control:enabled~.mdc-checkbox__background{animation-name:mdc-checkbox-fade-in-background-FF212121FFF4433600000000FFF44336}.mdc-checkbox:hover.mdc-checkbox--anim-checked-unchecked .mdc-checkbox__native-control:enabled~.mdc-checkbox__background,.mdc-checkbox:hover.mdc-checkbox--anim-indeterminate-unchecked .mdc-checkbox__native-control:enabled~.mdc-checkbox__background{animation-name:mdc-checkbox-fade-out-background-FF212121FFF4433600000000FFF44336}.mdc-checkbox:not(:disabled):active .mdc-checkbox__native-control:enabled:not(:checked):not(:indeterminate):not([data-indeterminate=true])~.mdc-checkbox__background{border-color:var(--mdc-checkbox-unselected-pressed-icon-color);background-color:transparent}.mdc-checkbox:not(:disabled):active .mdc-checkbox__native-control:enabled:checked~.mdc-checkbox__background,.mdc-checkbox:not(:disabled):active .mdc-checkbox__native-control:enabled:indeterminate~.mdc-checkbox__background,.mdc-checkbox:not(:disabled):active .mdc-checkbox__native-control[data-indeterminate=true]:enabled~.mdc-checkbox__background{border-color:var(--mdc-checkbox-selected-pressed-icon-color);background-color:var(--mdc-checkbox-selected-pressed-icon-color)}@keyframes mdc-checkbox-fade-in-background-8A000000FFF4433600000000FFF44336{0%{border-color:var(--mdc-checkbox-unselected-pressed-icon-color);background-color:transparent}50%{border-color:var(--mdc-checkbox-selected-pressed-icon-color);background-color:var(--mdc-checkbox-selected-pressed-icon-color)}}@keyframes mdc-checkbox-fade-out-background-8A000000FFF4433600000000FFF44336{0%,80%{border-color:var(--mdc-checkbox-selected-pressed-icon-color);background-color:var(--mdc-checkbox-selected-pressed-icon-color)}100%{border-color:var(--mdc-checkbox-unselected-pressed-icon-color);background-color:transparent}}.mdc-checkbox:not(:disabled):active.mdc-checkbox--anim-unchecked-checked .mdc-checkbox__native-control:enabled~.mdc-checkbox__background,.mdc-checkbox:not(:disabled):active.mdc-checkbox--anim-unchecked-indeterminate .mdc-checkbox__native-control:enabled~.mdc-checkbox__background{animation-name:mdc-checkbox-fade-in-background-8A000000FFF4433600000000FFF44336}.mdc-checkbox:not(:disabled):active.mdc-checkbox--anim-checked-unchecked .mdc-checkbox__native-control:enabled~.mdc-checkbox__background,.mdc-checkbox:not(:disabled):active.mdc-checkbox--anim-indeterminate-unchecked .mdc-checkbox__native-control:enabled~.mdc-checkbox__background{animation-name:mdc-checkbox-fade-out-background-8A000000FFF4433600000000FFF44336}.mdc-checkbox .mdc-checkbox__background{top:calc((var(--mdc-checkbox-state-layer-size) - 18px) / 2);left:calc((var(--mdc-checkbox-state-layer-size) - 18px) / 2)}.mdc-checkbox .mdc-checkbox__native-control{top:calc((var(--mdc-checkbox-state-layer-size) - var(--mdc-checkbox-state-layer-size)) / 2);right:calc((var(--mdc-checkbox-state-layer-size) - var(--mdc-checkbox-state-layer-size)) / 2);left:calc((var(--mdc-checkbox-state-layer-size) - var(--mdc-checkbox-state-layer-size)) / 2);width:var(--mdc-checkbox-state-layer-size);height:var(--mdc-checkbox-state-layer-size)}.mdc-checkbox .mdc-checkbox__native-control:enabled:focus:focus:not(:checked):not(:indeterminate)~.mdc-checkbox__background{border-color:var(--mdc-checkbox-unselected-focus-icon-color)}.mdc-checkbox .mdc-checkbox__native-control:enabled:focus:checked~.mdc-checkbox__background,.mdc-checkbox .mdc-checkbox__native-control:enabled:focus:indeterminate~.mdc-checkbox__background{border-color:var(--mdc-checkbox-selected-focus-icon-color);background-color:var(--mdc-checkbox-selected-focus-icon-color)}.mdc-checkbox:hover .mdc-checkbox__ripple{opacity:var(--mdc-checkbox-unselected-hover-state-layer-opacity);background-color:var(--mdc-checkbox-unselected-hover-state-layer-color)}.mdc-checkbox:hover .mat-mdc-checkbox-ripple .mat-ripple-element{background-color:var(--mdc-checkbox-unselected-hover-state-layer-color)}.mdc-checkbox .mdc-checkbox__native-control:focus~.mdc-checkbox__ripple{opacity:var(--mdc-checkbox-unselected-focus-state-layer-opacity);background-color:var(--mdc-checkbox-unselected-focus-state-layer-color)}.mdc-checkbox .mdc-checkbox__native-control:focus~.mat-mdc-checkbox-ripple .mat-ripple-element{background-color:var(--mdc-checkbox-unselected-focus-state-layer-color)}.mdc-checkbox:active .mdc-checkbox__native-control~.mdc-checkbox__ripple{opacity:var(--mdc-checkbox-unselected-pressed-state-layer-opacity);background-color:var(--mdc-checkbox-unselected-pressed-state-layer-color)}.mdc-checkbox:active .mdc-checkbox__native-control~.mat-mdc-checkbox-ripple .mat-ripple-element{background-color:var(--mdc-checkbox-unselected-pressed-state-layer-color)}.mdc-checkbox:hover .mdc-checkbox__native-control:checked~.mdc-checkbox__ripple{opacity:var(--mdc-checkbox-selected-hover-state-layer-opacity);background-color:var(--mdc-checkbox-selected-hover-state-layer-color)}.mdc-checkbox:hover .mdc-checkbox__native-control:checked~.mat-mdc-checkbox-ripple .mat-ripple-element{background-color:var(--mdc-checkbox-selected-hover-state-layer-color)}.mdc-checkbox .mdc-checkbox__native-control:focus:checked~.mdc-checkbox__ripple{opacity:var(--mdc-checkbox-selected-focus-state-layer-opacity);background-color:var(--mdc-checkbox-selected-focus-state-layer-color)}.mdc-checkbox .mdc-checkbox__native-control:focus:checked~.mat-mdc-checkbox-ripple .mat-ripple-element{background-color:var(--mdc-checkbox-selected-focus-state-layer-color)}.mdc-checkbox:active .mdc-checkbox__native-control:checked~.mdc-checkbox__ripple{opacity:var(--mdc-checkbox-selected-pressed-state-layer-opacity);background-color:var(--mdc-checkbox-selected-pressed-state-layer-color)}.mdc-checkbox:active .mdc-checkbox__native-control:checked~.mat-mdc-checkbox-ripple .mat-ripple-element{background-color:var(--mdc-checkbox-selected-pressed-state-layer-color)}.mat-mdc-checkbox{display:inline-block;position:relative;-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-checkbox .mdc-checkbox__background{-webkit-print-color-adjust:exact;color-adjust:exact}.mat-mdc-checkbox._mat-animation-noopable *,.mat-mdc-checkbox._mat-animation-noopable *::before{transition:none !important;animation:none !important}.mat-mdc-checkbox label{cursor:pointer}.mat-mdc-checkbox.mat-mdc-checkbox-disabled label{cursor:default;color:var(--mat-checkbox-disabled-label-color)}.mat-mdc-checkbox label:empty{display:none}.cdk-high-contrast-active .mat-mdc-checkbox.mat-mdc-checkbox-disabled{opacity:.5}.cdk-high-contrast-active .mat-mdc-checkbox .mdc-checkbox__checkmark{--mdc-checkbox-selected-checkmark-color: CanvasText;--mdc-checkbox-disabled-selected-checkmark-color: CanvasText}.mat-mdc-checkbox .mdc-checkbox__ripple{opacity:0}.mat-mdc-checkbox-ripple,.mdc-checkbox__ripple{top:0;left:0;right:0;bottom:0;position:absolute;border-radius:50%;pointer-events:none}.mat-mdc-checkbox-ripple:not(:empty),.mdc-checkbox__ripple:not(:empty){transform:translateZ(0)}.mat-mdc-checkbox-ripple .mat-ripple-element{opacity:.1}.mat-mdc-checkbox-touch-target{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%, -50%);display:var(--mat-checkbox-touch-target-display)}.mat-mdc-checkbox-ripple::before{border-radius:50%}.mdc-checkbox__native-control:focus~.mat-mdc-focus-indicator::before{content:""}'],encapsulation:2,changeDetection:0})}return t})(),Gae=(()=>{class t{static#e=this.\u0275fac=function(i){return new(i||t)};static#t=this.\u0275mod=ge({type:t});static#n=this.\u0275inj=he({imports:[MC,Te,Te]})}return t})(),IC=(()=>{class t{constructor(){this._vertical=!1,this._inset=!1}get vertical(){return this._vertical}set vertical(e){this._vertical=ki(e)}get inset(){return this._inset}set inset(e){this._inset=ki(e)}static#e=this.\u0275fac=function(i){return new(i||t)};static#t=this.\u0275cmp=ue({type:t,selectors:[["mat-divider"]],hostAttrs:["role","separator",1,"mat-divider"],hostVars:7,hostBindings:function(i,r){2&i&&(me("aria-orientation",r.vertical?"vertical":"horizontal"),de("mat-divider-vertical",r.vertical)("mat-divider-horizontal",!r.vertical)("mat-divider-inset",r.inset))},inputs:{vertical:"vertical",inset:"inset"},standalone:!0,features:[ve],decls:0,vars:0,template:function(i,r){},styles:[".mat-divider{display:block;margin:0;border-top-style:solid;border-top-color:var(--mat-divider-color);border-top-width:var(--mat-divider-width)}.mat-divider.mat-divider-vertical{border-top:0;border-right-style:solid;border-right-color:var(--mat-divider-color);border-right-width:var(--mat-divider-width)}.mat-divider.mat-divider-inset{margin-left:80px}[dir=rtl] .mat-divider.mat-divider-inset{margin-left:auto;margin-right:80px}"],encapsulation:2,changeDetection:0})}return t})(),Wae=(()=>{class t{static#e=this.\u0275fac=function(i){return new(i||t)};static#t=this.\u0275mod=ge({type:t});static#n=this.\u0275inj=he({imports:[Te,Te]})}return t})();const aV=new M("CdkAccordion");let Qae=0,Yae=(()=>{class t{get expanded(){return this._expanded}set expanded(e){this._expanded!==e&&(this._expanded=e,this.expandedChange.emit(e),e?(this.opened.emit(),this._expansionDispatcher.notify(this.id,this.accordion?this.accordion.id:this.id)):this.closed.emit(),this._changeDetectorRef.markForCheck())}constructor(e,i,r){this.accordion=e,this._changeDetectorRef=i,this._expansionDispatcher=r,this._openCloseAllSubscription=Ae.EMPTY,this.closed=new G,this.opened=new G,this.destroyed=new G,this.expandedChange=new G,this.id="cdk-accordion-child-"+Qae++,this._expanded=!1,this.disabled=!1,this._removeUniqueSelectionListener=()=>{},this._removeUniqueSelectionListener=r.listen((o,s)=>{this.accordion&&!this.accordion.multi&&this.accordion.id===s&&this.id!==o&&(this.expanded=!1)}),this.accordion&&(this._openCloseAllSubscription=this._subscribeToOpenCloseAllActions())}ngOnDestroy(){this.opened.complete(),this.closed.complete(),this.destroyed.emit(),this.destroyed.complete(),this._removeUniqueSelectionListener(),this._openCloseAllSubscription.unsubscribe()}toggle(){this.disabled||(this.expanded=!this.expanded)}close(){this.disabled||(this.expanded=!1)}open(){this.disabled||(this.expanded=!0)}_subscribeToOpenCloseAllActions(){return this.accordion._openCloseAllActions.subscribe(e=>{this.disabled||(this.expanded=e)})}static#e=this.\u0275fac=function(i){return new(i||t)(p(aV,12),p(Ke),p(bx))};static#t=this.\u0275dir=R({type:t,selectors:[["cdk-accordion-item"],["","cdkAccordionItem",""]],inputs:{expanded:[D.HasDecoratorInputTransform,"expanded","expanded",j],disabled:[D.HasDecoratorInputTransform,"disabled","disabled",j]},outputs:{closed:"closed",opened:"opened",destroyed:"destroyed",expandedChange:"expandedChange"},exportAs:["cdkAccordionItem"],standalone:!0,features:[ie([{provide:aV,useValue:void 0}]),Fe]})}return t})(),Kae=(()=>{class t{static#e=this.\u0275fac=function(i){return new(i||t)};static#t=this.\u0275mod=ge({type:t});static#n=this.\u0275inj=he({})}return t})();const Xae=["body"],Zae=[[["mat-expansion-panel-header"]],"*",[["mat-action-row"]]],Jae=["mat-expansion-panel-header","*","mat-action-row"];function ece(t,n){}const tce=[[["mat-panel-title"]],[["mat-panel-description"]],"*"],nce=["mat-panel-title","mat-panel-description","*"];function ice(t,n){1&t&&(y(0,"span",1),Ma(),y(1,"svg",2),re(2,"path",3),w()()),2&t&&z("@indicatorRotate",L()._getExpandedState())}const cV=new M("MAT_ACCORDION"),lV="225ms cubic-bezier(0.4,0.0,0.2,1)",dV={indicatorRotate:Ci("indicatorRotate",[rn("collapsed, void",Xe({transform:"rotate(0deg)"})),rn("expanded",Xe({transform:"rotate(180deg)"})),Xt("expanded <=> collapsed, void => collapsed",Kt(lV))]),bodyExpansion:Ci("bodyExpansion",[rn("collapsed, void",Xe({height:"0px",visibility:"hidden"})),rn("expanded",Xe({height:"*",visibility:""})),Xt("expanded <=> collapsed, void => collapsed",Kt(lV))])},uV=new M("MAT_EXPANSION_PANEL");let rce=(()=>{class t{constructor(e,i){this._template=e,this._expansionPanel=i}static#e=this.\u0275fac=function(i){return new(i||t)(p(yt),p(uV,8))};static#t=this.\u0275dir=R({type:t,selectors:[["ng-template","matExpansionPanelContent",""]],standalone:!0})}return t})(),oce=0;const hV=new M("MAT_EXPANSION_PANEL_DEFAULT_OPTIONS");let fV=(()=>{class t extends Yae{get hideToggle(){return this._hideToggle||this.accordion&&this.accordion.hideToggle}set hideToggle(e){this._hideToggle=e}get togglePosition(){return this._togglePosition||this.accordion&&this.accordion.togglePosition}set togglePosition(e){this._togglePosition=e}constructor(e,i,r,o,s,a,c){super(e,i,r),this._viewContainerRef=o,this._animationMode=a,this._hideToggle=!1,this.afterExpand=new G,this.afterCollapse=new G,this._inputChanges=new Z,this._headerId="mat-expansion-panel-header-"+oce++,this.accordion=e,this._document=s,this._animationsDisabled="NoopAnimations"===a,c&&(this.hideToggle=c.hideToggle)}_hasSpacing(){return!!this.accordion&&this.expanded&&"default"===this.accordion.displayMode}_getExpandedState(){return this.expanded?"expanded":"collapsed"}toggle(){this.expanded=!this.expanded}close(){this.expanded=!1}open(){this.expanded=!0}ngAfterContentInit(){this._lazyContent&&this._lazyContent._expansionPanel===this&&this.opened.pipe(gn(null),Ge(()=>this.expanded&&!this._portal),gt(1)).subscribe(()=>{this._portal=new jo(this._lazyContent._template,this._viewContainerRef)})}ngOnChanges(e){this._inputChanges.next(e)}ngOnDestroy(){super.ngOnDestroy(),this._inputChanges.complete()}_containsFocus(){if(this._body){const e=this._document.activeElement,i=this._body.nativeElement;return e===i||i.contains(e)}return!1}_animationStarted(e){!mV(e)&&!this._animationsDisabled&&this._body&&this._body?.nativeElement.setAttribute("inert","")}_animationDone(e){mV(e)||("expanded"===e.toState?this.afterExpand.emit():"collapsed"===e.toState&&this.afterCollapse.emit(),!this._animationsDisabled&&this._body&&this._body.nativeElement.removeAttribute("inert"))}static#e=this.\u0275fac=function(i){return new(i||t)(p(cV,12),p(Ke),p(bx),p(Tt),p(_e),p(Bt,8),p(hV,8))};static#t=this.\u0275cmp=ue({type:t,selectors:[["mat-expansion-panel"]],contentQueries:function(i,r,o){if(1&i&&Oe(o,rce,5),2&i){let s;U(s=$())&&(r._lazyContent=s.first)}},viewQuery:function(i,r){if(1&i&&Le(Xae,5),2&i){let o;U(o=$())&&(r._body=o.first)}},hostAttrs:[1,"mat-expansion-panel"],hostVars:6,hostBindings:function(i,r){2&i&&de("mat-expanded",r.expanded)("_mat-animation-noopable",r._animationsDisabled)("mat-expansion-panel-spacing",r._hasSpacing())},inputs:{hideToggle:[D.HasDecoratorInputTransform,"hideToggle","hideToggle",j],togglePosition:"togglePosition"},outputs:{afterExpand:"afterExpand",afterCollapse:"afterCollapse"},exportAs:["matExpansionPanel"],standalone:!0,features:[ie([{provide:cV,useValue:void 0},{provide:uV,useExisting:t}]),Fe,J,Ft,ve],ngContentSelectors:Jae,decls:7,vars:4,consts:[["body",""],["role","region",1,"mat-expansion-panel-content",3,"id"],[1,"mat-expansion-panel-body"],[3,"cdkPortalOutlet"]],template:function(i,r){if(1&i){const o=et();$e(Zae),Y(0),y(1,"div",1,0),q("@bodyExpansion.start",function(a){return ee(o),te(r._animationStarted(a))})("@bodyExpansion.done",function(a){return ee(o),te(r._animationDone(a))}),y(3,"div",2),Y(4,1),H(5,ece,0,0,"ng-template",3),w(),Y(6,2),w()}2&i&&(C(),z("@bodyExpansion",r._getExpandedState())("id",r.id),me("aria-labelledby",r._headerId),C(4),z("cdkPortalOutlet",r._portal))},dependencies:[kc],styles:['.mat-expansion-panel{box-sizing:content-box;display:block;margin:0;overflow:hidden;transition:margin 225ms cubic-bezier(0.4, 0, 0.2, 1),box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);position:relative;background:var(--mat-expansion-container-background-color);color:var(--mat-expansion-container-text-color);border-radius:var(--mat-expansion-container-shape)}.mat-expansion-panel:not([class*=mat-elevation-z]){box-shadow:0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12)}.mat-accordion .mat-expansion-panel:not(.mat-expanded),.mat-accordion .mat-expansion-panel:not(.mat-expansion-panel-spacing){border-radius:0}.mat-accordion .mat-expansion-panel:first-of-type{border-top-right-radius:var(--mat-expansion-container-shape);border-top-left-radius:var(--mat-expansion-container-shape)}.mat-accordion .mat-expansion-panel:last-of-type{border-bottom-right-radius:var(--mat-expansion-container-shape);border-bottom-left-radius:var(--mat-expansion-container-shape)}.cdk-high-contrast-active .mat-expansion-panel{outline:solid 1px}.mat-expansion-panel.ng-animate-disabled,.ng-animate-disabled .mat-expansion-panel,.mat-expansion-panel._mat-animation-noopable{transition:none}.mat-expansion-panel-content{display:flex;flex-direction:column;overflow:visible;font-family:var(--mat-expansion-container-text-font);font-size:var(--mat-expansion-container-text-size);font-weight:var(--mat-expansion-container-text-weight);line-height:var(--mat-expansion-container-text-line-height);letter-spacing:var(--mat-expansion-container-text-tracking)}.mat-expansion-panel-content[style*="visibility: hidden"] *{visibility:hidden !important}.mat-expansion-panel-body{padding:0 24px 16px}.mat-expansion-panel-spacing{margin:16px 0}.mat-accordion>.mat-expansion-panel-spacing:first-child,.mat-accordion>*:first-child:not(.mat-expansion-panel) .mat-expansion-panel-spacing{margin-top:0}.mat-accordion>.mat-expansion-panel-spacing:last-child,.mat-accordion>*:last-child:not(.mat-expansion-panel) .mat-expansion-panel-spacing{margin-bottom:0}.mat-action-row{border-top-style:solid;border-top-width:1px;display:flex;flex-direction:row;justify-content:flex-end;padding:16px 8px 16px 24px;border-top-color:var(--mat-expansion-actions-divider-color)}.mat-action-row .mat-button-base,.mat-action-row .mat-mdc-button-base{margin-left:8px}[dir=rtl] .mat-action-row .mat-button-base,[dir=rtl] .mat-action-row .mat-mdc-button-base{margin-left:0;margin-right:8px}'],encapsulation:2,data:{animation:[dV.bodyExpansion]},changeDetection:0})}return t})();function mV(t){return"void"===t.fromState}let sce=(()=>{class t{constructor(e,i,r,o,s,a,c){this.panel=e,this._element=i,this._focusMonitor=r,this._changeDetectorRef=o,this._animationMode=a,this._parentChangeSubscription=Ae.EMPTY,this.tabIndex=0;const l=e.accordion?e.accordion._stateChanges.pipe(Ge(d=>!(!d.hideToggle&&!d.togglePosition))):Zt;this.tabIndex=parseInt(c||"")||0,this._parentChangeSubscription=Ht(e.opened,e.closed,l,e._inputChanges.pipe(Ge(d=>!!(d.hideToggle||d.disabled||d.togglePosition)))).subscribe(()=>this._changeDetectorRef.markForCheck()),e.closed.pipe(Ge(()=>e._containsFocus())).subscribe(()=>r.focusVia(i,"program")),s&&(this.expandedHeight=s.expandedHeight,this.collapsedHeight=s.collapsedHeight)}get disabled(){return this.panel.disabled}_toggle(){this.disabled||this.panel.toggle()}_isExpanded(){return this.panel.expanded}_getExpandedState(){return this.panel._getExpandedState()}_getPanelId(){return this.panel.id}_getTogglePosition(){return this.panel.togglePosition}_showToggle(){return!this.panel.hideToggle&&!this.panel.disabled}_getHeaderHeight(){const e=this._isExpanded();return e&&this.expandedHeight?this.expandedHeight:!e&&this.collapsedHeight?this.collapsedHeight:null}_keydown(e){switch(e.keyCode){case 32:case 13:Kn(e)||(e.preventDefault(),this._toggle());break;default:return void(this.panel.accordion&&this.panel.accordion._handleHeaderKeydown(e))}}focus(e,i){e?this._focusMonitor.focusVia(this._element,e,i):this._element.nativeElement.focus(i)}ngAfterViewInit(){this._focusMonitor.monitor(this._element).subscribe(e=>{e&&this.panel.accordion&&this.panel.accordion._handleHeaderFocus(this)})}ngOnDestroy(){this._parentChangeSubscription.unsubscribe(),this._focusMonitor.stopMonitoring(this._element)}static#e=this.\u0275fac=function(i){return new(i||t)(p(fV,1),p(K),p(Mr),p(Ke),p(hV,8),p(Bt,8),bi("tabindex"))};static#t=this.\u0275cmp=ue({type:t,selectors:[["mat-expansion-panel-header"]],hostAttrs:["role","button",1,"mat-expansion-panel-header","mat-focus-indicator"],hostVars:15,hostBindings:function(i,r){1&i&&q("click",function(){return r._toggle()})("keydown",function(s){return r._keydown(s)}),2&i&&(me("id",r.panel._headerId)("tabindex",r.disabled?-1:r.tabIndex)("aria-controls",r._getPanelId())("aria-expanded",r._isExpanded())("aria-disabled",r.panel.disabled),Pn("height",r._getHeaderHeight()),de("mat-expanded",r._isExpanded())("mat-expansion-toggle-indicator-after","after"===r._getTogglePosition())("mat-expansion-toggle-indicator-before","before"===r._getTogglePosition())("_mat-animation-noopable","NoopAnimations"===r._animationMode))},inputs:{expandedHeight:"expandedHeight",collapsedHeight:"collapsedHeight",tabIndex:[D.HasDecoratorInputTransform,"tabIndex","tabIndex",e=>null==e?0:Jt(e)]},standalone:!0,features:[Fe,ve],ngContentSelectors:nce,decls:5,vars:3,consts:[[1,"mat-content"],[1,"mat-expansion-indicator"],["xmlns","http://www.w3.org/2000/svg","viewBox","0 -960 960 960","aria-hidden","true","focusable","false"],["d","M480-345 240-585l56-56 184 184 184-184 56 56-240 240Z"]],template:function(i,r){1&i&&($e(tce),y(0,"span",0),Y(1),Y(2,1),Y(3,2),w(),H(4,ice,3,1,"span",1)),2&i&&(de("mat-content-hide-toggle",!r._showToggle()),C(4),X(4,r._showToggle()?4:-1))},styles:['.mat-expansion-panel-header{display:flex;flex-direction:row;align-items:center;padding:0 24px;border-radius:inherit;transition:height 225ms cubic-bezier(0.4, 0, 0.2, 1);height:var(--mat-expansion-header-collapsed-state-height);font-family:var(--mat-expansion-header-text-font);font-size:var(--mat-expansion-header-text-size);font-weight:var(--mat-expansion-header-text-weight);line-height:var(--mat-expansion-header-text-line-height);letter-spacing:var(--mat-expansion-header-text-tracking)}.mat-expansion-panel-header.mat-expanded{height:var(--mat-expansion-header-expanded-state-height)}.mat-expansion-panel-header[aria-disabled=true]{color:var(--mat-expansion-header-disabled-state-text-color)}.mat-expansion-panel-header:not([aria-disabled=true]){cursor:pointer}.mat-expansion-panel:not(.mat-expanded) .mat-expansion-panel-header:not([aria-disabled=true]):hover{background:var(--mat-expansion-header-hover-state-layer-color)}@media(hover: none){.mat-expansion-panel:not(.mat-expanded) .mat-expansion-panel-header:not([aria-disabled=true]):hover{background:var(--mat-expansion-container-background-color)}}.mat-expansion-panel .mat-expansion-panel-header:not([aria-disabled=true]).cdk-keyboard-focused,.mat-expansion-panel .mat-expansion-panel-header:not([aria-disabled=true]).cdk-program-focused{background:var(--mat-expansion-header-focus-state-layer-color)}.mat-expansion-panel-header._mat-animation-noopable{transition:none}.mat-expansion-panel-header:focus,.mat-expansion-panel-header:hover{outline:none}.mat-expansion-panel-header.mat-expanded:focus,.mat-expansion-panel-header.mat-expanded:hover{background:inherit}.mat-expansion-panel-header.mat-expansion-toggle-indicator-before{flex-direction:row-reverse}.mat-expansion-panel-header.mat-expansion-toggle-indicator-before .mat-expansion-indicator{margin:0 16px 0 0}[dir=rtl] .mat-expansion-panel-header.mat-expansion-toggle-indicator-before .mat-expansion-indicator{margin:0 0 0 16px}.mat-content{display:flex;flex:1;flex-direction:row;overflow:hidden}.mat-content.mat-content-hide-toggle{margin-right:8px}[dir=rtl] .mat-content.mat-content-hide-toggle{margin-right:0;margin-left:8px}.mat-expansion-toggle-indicator-before .mat-content.mat-content-hide-toggle{margin-left:24px;margin-right:0}[dir=rtl] .mat-expansion-toggle-indicator-before .mat-content.mat-content-hide-toggle{margin-right:24px;margin-left:0}.mat-expansion-panel-header-title{color:var(--mat-expansion-header-text-color)}.mat-expansion-panel-header-title,.mat-expansion-panel-header-description{display:flex;flex-grow:1;flex-basis:0;margin-right:16px;align-items:center}[dir=rtl] .mat-expansion-panel-header-title,[dir=rtl] .mat-expansion-panel-header-description{margin-right:0;margin-left:16px}.mat-expansion-panel-header[aria-disabled=true] .mat-expansion-panel-header-title,.mat-expansion-panel-header[aria-disabled=true] .mat-expansion-panel-header-description{color:inherit}.mat-expansion-panel-header-description{flex-grow:2;color:var(--mat-expansion-header-description-color)}.mat-expansion-indicator::after{border-style:solid;border-width:0 2px 2px 0;content:"";display:inline-block;padding:3px;transform:rotate(45deg);vertical-align:middle;color:var(--mat-expansion-header-indicator-color);display:inline-block;display:var(--mat-expansion-legacy-header-indicator-display, inline-block)}.mat-expansion-indicator svg{width:24px;height:24px;margin:0 -8px;vertical-align:middle;fill:var(--mat-expansion-header-indicator-color);display:none;display:var(--mat-expansion-header-indicator-display, none)}.cdk-high-contrast-active .mat-expansion-panel-content{border-top:1px solid;border-top-left-radius:0;border-top-right-radius:0}'],encapsulation:2,data:{animation:[dV.indicatorRotate]},changeDetection:0})}return t})(),ace=(()=>{class t{static#e=this.\u0275fac=function(i){return new(i||t)};static#t=this.\u0275dir=R({type:t,selectors:[["mat-panel-title"]],hostAttrs:[1,"mat-expansion-panel-header-title"],standalone:!0})}return t})(),cce=(()=>{class t{static#e=this.\u0275fac=function(i){return new(i||t)};static#t=this.\u0275mod=ge({type:t});static#n=this.\u0275inj=he({imports:[Te,Kae,sw]})}return t})();const pV=Lo({passive:!0});let lce=(()=>{class t{constructor(e,i){this._platform=e,this._ngZone=i,this._monitoredElements=new Map}monitor(e){if(!this._platform.isBrowser)return Zt;const i=oo(e),r=this._monitoredElements.get(i);if(r)return r.subject;const o=new Z,s="cdk-text-field-autofilled",a=c=>{"cdk-text-field-autofill-start"!==c.animationName||i.classList.contains(s)?"cdk-text-field-autofill-end"===c.animationName&&i.classList.contains(s)&&(i.classList.remove(s),this._ngZone.run(()=>o.next({target:c.target,isAutofilled:!1}))):(i.classList.add(s),this._ngZone.run(()=>o.next({target:c.target,isAutofilled:!0})))};return this._ngZone.runOutsideAngular(()=>{i.addEventListener("animationstart",a,pV),i.classList.add("cdk-text-field-autofill-monitored")}),this._monitoredElements.set(i,{subject:o,unlisten:()=>{i.removeEventListener("animationstart",a,pV)}}),o}stopMonitoring(e){const i=oo(e),r=this._monitoredElements.get(i);r&&(r.unlisten(),r.subject.complete(),i.classList.remove("cdk-text-field-autofill-monitored"),i.classList.remove("cdk-text-field-autofilled"),this._monitoredElements.delete(i))}ngOnDestroy(){this._monitoredElements.forEach((e,i)=>this.stopMonitoring(i))}static#e=this.\u0275fac=function(i){return new(i||t)(S(ut),S(W))};static#t=this.\u0275prov=P({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),dce=(()=>{class t{static#e=this.\u0275fac=function(i){return new(i||t)};static#t=this.\u0275mod=ge({type:t});static#n=this.\u0275inj=he({})}return t})();const uce=new M("MAT_INPUT_VALUE_ACCESSOR"),hce=["button","checkbox","file","hidden","image","radio","range","reset","submit"];let fce=0,mce=(()=>{class t{get disabled(){return this._disabled}set disabled(e){this._disabled=ki(e),this.focused&&(this.focused=!1,this.stateChanges.next())}get id(){return this._id}set id(e){this._id=e||this._uid}get required(){return this._required??this.ngControl?.control?.hasValidator(uw.required)??!1}set required(e){this._required=ki(e)}get type(){return this._type}set type(e){this._type=e||"text",this._validateType(),!this._isTextarea&&fO().has(this._type)&&(this._elementRef.nativeElement.type=this._type)}get errorStateMatcher(){return this._errorStateTracker.matcher}set errorStateMatcher(e){this._errorStateTracker.matcher=e}get value(){return this._inputValueAccessor.value}set value(e){e!==this.value&&(this._inputValueAccessor.value=e,this.stateChanges.next())}get readonly(){return this._readonly}set readonly(e){this._readonly=ki(e)}get errorState(){return this._errorStateTracker.errorState}set errorState(e){this._errorStateTracker.errorState=e}constructor(e,i,r,o,s,a,c,l,d,u){this._elementRef=e,this._platform=i,this.ngControl=r,this._autofillMonitor=l,this._formField=u,this._uid="mat-input-"+fce++,this.focused=!1,this.stateChanges=new Z,this.controlType="mat-input",this.autofilled=!1,this._disabled=!1,this._type="text",this._readonly=!1,this._neverEmptyInputTypes=["date","datetime","datetime-local","month","time","week"].filter(m=>fO().has(m)),this._iOSKeyupListener=m=>{const g=m.target;!g.value&&0===g.selectionStart&&0===g.selectionEnd&&(g.setSelectionRange(1,1),g.setSelectionRange(0,0))};const h=this._elementRef.nativeElement,f=h.nodeName.toLowerCase();this._inputValueAccessor=c||h,this._previousNativeValue=this.value,this.id=this.id,i.IOS&&d.runOutsideAngular(()=>{e.nativeElement.addEventListener("keyup",this._iOSKeyupListener)}),this._errorStateTracker=new ap(a,r,s,o,this.stateChanges),this._isServer=!this._platform.isBrowser,this._isNativeSelect="select"===f,this._isTextarea="textarea"===f,this._isInFormField=!!u,this._isNativeSelect&&(this.controlType=h.multiple?"mat-native-select-multiple":"mat-native-select")}ngAfterViewInit(){this._platform.isBrowser&&this._autofillMonitor.monitor(this._elementRef.nativeElement).subscribe(e=>{this.autofilled=e.isAutofilled,this.stateChanges.next()})}ngOnChanges(){this.stateChanges.next()}ngOnDestroy(){this.stateChanges.complete(),this._platform.isBrowser&&this._autofillMonitor.stopMonitoring(this._elementRef.nativeElement),this._platform.IOS&&this._elementRef.nativeElement.removeEventListener("keyup",this._iOSKeyupListener)}ngDoCheck(){this.ngControl&&(this.updateErrorState(),null!==this.ngControl.disabled&&this.ngControl.disabled!==this.disabled&&(this.disabled=this.ngControl.disabled,this.stateChanges.next())),this._dirtyCheckNativeValue(),this._dirtyCheckPlaceholder()}focus(e){this._elementRef.nativeElement.focus(e)}updateErrorState(){this._errorStateTracker.updateErrorState()}_focusChanged(e){e!==this.focused&&(this.focused=e,this.stateChanges.next())}_onInput(){}_dirtyCheckNativeValue(){const e=this._elementRef.nativeElement.value;this._previousNativeValue!==e&&(this._previousNativeValue=e,this.stateChanges.next())}_dirtyCheckPlaceholder(){const e=this._getPlaceholder();if(e!==this._previousPlaceholder){const i=this._elementRef.nativeElement;this._previousPlaceholder=e,e?i.setAttribute("placeholder",e):i.removeAttribute("placeholder")}}_getPlaceholder(){return this.placeholder||null}_validateType(){hce.indexOf(this._type)}_isNeverEmpty(){return this._neverEmptyInputTypes.indexOf(this._type)>-1}_isBadInput(){let e=this._elementRef.nativeElement.validity;return e&&e.badInput}get empty(){return!(this._isNeverEmpty()||this._elementRef.nativeElement.value||this._isBadInput()||this.autofilled)}get shouldLabelFloat(){if(this._isNativeSelect){const e=this._elementRef.nativeElement,i=e.options[0];return this.focused||e.multiple||!this.empty||!!(e.selectedIndex>-1&&i&&i.label)}return this.focused||!this.empty}setDescribedByIds(e){e.length?this._elementRef.nativeElement.setAttribute("aria-describedby",e.join(" ")):this._elementRef.nativeElement.removeAttribute("aria-describedby")}onContainerClick(){this.focused||this.focus()}_isInlineSelect(){const e=this._elementRef.nativeElement;return this._isNativeSelect&&(e.multiple||e.size>1)}static#e=this.\u0275fac=function(i){return new(i||t)(p(K),p(ut),p(ir,10),p(Mc,8),p(Ac,8),p(cp),p(uce,10),p(lce),p(W),p(pu,8))};static#t=this.\u0275dir=R({type:t,selectors:[["input","matInput",""],["textarea","matInput",""],["select","matNativeControl",""],["input","matNativeControl",""],["textarea","matNativeControl",""]],hostAttrs:[1,"mat-mdc-input-element"],hostVars:18,hostBindings:function(i,r){1&i&&q("focus",function(){return r._focusChanged(!0)})("blur",function(){return r._focusChanged(!1)})("input",function(){return r._onInput()}),2&i&&(Zi("id",r.id)("disabled",r.disabled)("required",r.required),me("name",r.name||null)("readonly",r.readonly&&!r._isNativeSelect||null)("aria-invalid",r.empty&&r.required?null:r.errorState)("aria-required",r.required)("id",r.id),de("mat-input-server",r._isServer)("mat-mdc-form-field-textarea-control",r._isInFormField&&r._isTextarea)("mat-mdc-form-field-input-control",r._isInFormField)("mdc-text-field__input",r._isInFormField)("mat-mdc-native-select-inline",r._isInlineSelect()))},inputs:{disabled:"disabled",id:"id",placeholder:"placeholder",name:"name",required:"required",type:"type",errorStateMatcher:"errorStateMatcher",userAriaDescribedBy:[D.None,"aria-describedby","userAriaDescribedBy"],value:"value",readonly:"readonly"},exportAs:["matInput"],standalone:!0,features:[ie([{provide:Vp,useExisting:t}]),Ft]})}return t})(),pce=(()=>{class t{static#e=this.\u0275fac=function(i){return new(i||t)};static#t=this.\u0275mod=ge({type:t});static#n=this.\u0275inj=he({imports:[Te,gu,gu,dce,Te]})}return t})();function gce(t,n){1&t&&re(0,"div",2)}const _ce=new M("MAT_PROGRESS_BAR_DEFAULT_OPTIONS");let vce=(()=>{class t{constructor(e,i,r,o,s){this._elementRef=e,this._ngZone=i,this._changeDetectorRef=r,this._animationMode=o,this._isNoopAnimation=!1,this._defaultColor="primary",this._value=0,this._bufferValue=0,this.animationEnd=new G,this._mode="determinate",this._transitionendHandler=a=>{0===this.animationEnd.observers.length||!a.target||!a.target.classList.contains("mdc-linear-progress__primary-bar")||("determinate"===this.mode||"buffer"===this.mode)&&this._ngZone.run(()=>this.animationEnd.next({value:this.value}))},this._isNoopAnimation="NoopAnimations"===o,s&&(s.color&&(this.color=this._defaultColor=s.color),this.mode=s.mode||this.mode)}get color(){return this._color||this._defaultColor}set color(e){this._color=e}get value(){return this._value}set value(e){this._value=gV(e||0),this._changeDetectorRef.markForCheck()}get bufferValue(){return this._bufferValue||0}set bufferValue(e){this._bufferValue=gV(e||0),this._changeDetectorRef.markForCheck()}get mode(){return this._mode}set mode(e){this._mode=e,this._changeDetectorRef.markForCheck()}ngAfterViewInit(){this._ngZone.runOutsideAngular(()=>{this._elementRef.nativeElement.addEventListener("transitionend",this._transitionendHandler)})}ngOnDestroy(){this._elementRef.nativeElement.removeEventListener("transitionend",this._transitionendHandler)}_getPrimaryBarTransform(){return`scaleX(${this._isIndeterminate()?1:this.value/100})`}_getBufferBarFlexBasis(){return`${"buffer"===this.mode?this.bufferValue:100}%`}_isIndeterminate(){return"indeterminate"===this.mode||"query"===this.mode}static#e=this.\u0275fac=function(i){return new(i||t)(p(K),p(W),p(Ke),p(Bt,8),p(_ce,8))};static#t=this.\u0275cmp=ue({type:t,selectors:[["mat-progress-bar"]],hostAttrs:["role","progressbar","aria-valuemin","0","aria-valuemax","100","tabindex","-1",1,"mat-mdc-progress-bar","mdc-linear-progress"],hostVars:10,hostBindings:function(i,r){2&i&&(me("aria-valuenow",r._isIndeterminate()?null:r.value)("mode",r.mode),bn("mat-"+r.color),de("_mat-animation-noopable",r._isNoopAnimation)("mdc-linear-progress--animation-ready",!r._isNoopAnimation)("mdc-linear-progress--indeterminate",r._isIndeterminate()))},inputs:{color:"color",value:[D.HasDecoratorInputTransform,"value","value",Jt],bufferValue:[D.HasDecoratorInputTransform,"bufferValue","bufferValue",Jt],mode:"mode"},outputs:{animationEnd:"animationEnd"},exportAs:["matProgressBar"],standalone:!0,features:[Fe,ve],decls:7,vars:5,consts:[["aria-hidden","true",1,"mdc-linear-progress__buffer"],[1,"mdc-linear-progress__buffer-bar"],[1,"mdc-linear-progress__buffer-dots"],["aria-hidden","true",1,"mdc-linear-progress__bar","mdc-linear-progress__primary-bar"],[1,"mdc-linear-progress__bar-inner"],["aria-hidden","true",1,"mdc-linear-progress__bar","mdc-linear-progress__secondary-bar"]],template:function(i,r){1&i&&(y(0,"div",0),re(1,"div",1),H(2,gce,1,0,"div",2),w(),y(3,"div",3),re(4,"span",4),w(),y(5,"div",5),re(6,"span",4),w()),2&i&&(C(),Pn("flex-basis",r._getBufferBarFlexBasis()),C(),X(2,"buffer"===r.mode?2:-1),C(),Pn("transform",r._getPrimaryBarTransform()))},styles:["@keyframes mdc-linear-progress-primary-indeterminate-translate{0%{transform:translateX(0)}20%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(0)}59.15%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(var(--mdc-linear-progress-primary-half))}100%{transform:translateX(var(--mdc-linear-progress-primary-full))}}@keyframes mdc-linear-progress-primary-indeterminate-scale{0%{transform:scaleX(0.08)}36.65%{animation-timing-function:cubic-bezier(0.334731, 0.12482, 0.785844, 1);transform:scaleX(0.08)}69.15%{animation-timing-function:cubic-bezier(0.06, 0.11, 0.6, 1);transform:scaleX(0.661479)}100%{transform:scaleX(0.08)}}@keyframes mdc-linear-progress-secondary-indeterminate-translate{0%{animation-timing-function:cubic-bezier(0.15, 0, 0.515058, 0.409685);transform:translateX(0)}25%{animation-timing-function:cubic-bezier(0.31033, 0.284058, 0.8, 0.733712);transform:translateX(var(--mdc-linear-progress-secondary-quarter))}48.35%{animation-timing-function:cubic-bezier(0.4, 0.627035, 0.6, 0.902026);transform:translateX(var(--mdc-linear-progress-secondary-half))}100%{transform:translateX(var(--mdc-linear-progress-secondary-full))}}@keyframes mdc-linear-progress-secondary-indeterminate-scale{0%{animation-timing-function:cubic-bezier(0.205028, 0.057051, 0.57661, 0.453971);transform:scaleX(0.08)}19.15%{animation-timing-function:cubic-bezier(0.152313, 0.196432, 0.648374, 1.004315);transform:scaleX(0.457104)}44.15%{animation-timing-function:cubic-bezier(0.257759, -0.003163, 0.211762, 1.38179);transform:scaleX(0.72796)}100%{transform:scaleX(0.08)}}@keyframes mdc-linear-progress-primary-indeterminate-translate-reverse{0%{transform:translateX(0)}20%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(0)}59.15%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(var(--mdc-linear-progress-primary-half-neg))}100%{transform:translateX(var(--mdc-linear-progress-primary-full-neg))}}@keyframes mdc-linear-progress-secondary-indeterminate-translate-reverse{0%{animation-timing-function:cubic-bezier(0.15, 0, 0.515058, 0.409685);transform:translateX(0)}25%{animation-timing-function:cubic-bezier(0.31033, 0.284058, 0.8, 0.733712);transform:translateX(var(--mdc-linear-progress-secondary-quarter-neg))}48.35%{animation-timing-function:cubic-bezier(0.4, 0.627035, 0.6, 0.902026);transform:translateX(var(--mdc-linear-progress-secondary-half-neg))}100%{transform:translateX(var(--mdc-linear-progress-secondary-full-neg))}}@keyframes mdc-linear-progress-buffering-reverse{from{transform:translateX(-10px)}}.mdc-linear-progress{position:relative;width:100%;transform:translateZ(0);outline:1px solid rgba(0,0,0,0);overflow-x:hidden;transition:opacity 250ms 0ms cubic-bezier(0.4, 0, 0.6, 1)}@media screen and (forced-colors: active){.mdc-linear-progress{outline-color:CanvasText}}.mdc-linear-progress__bar{position:absolute;top:0;bottom:0;margin:auto 0;width:100%;animation:none;transform-origin:top left;transition:transform 250ms 0ms cubic-bezier(0.4, 0, 0.6, 1)}.mdc-linear-progress__bar-inner{display:inline-block;position:absolute;width:100%;animation:none;border-top-style:solid}.mdc-linear-progress__buffer{display:flex;position:absolute;top:0;bottom:0;margin:auto 0;width:100%;overflow:hidden}.mdc-linear-progress__buffer-dots{background-repeat:repeat-x;flex:auto;transform:rotate(180deg);-webkit-mask-image:url(\"data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='xMinYMin slice'%3E%3Ccircle cx='1' cy='1' r='1'/%3E%3C/svg%3E\");mask-image:url(\"data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='xMinYMin slice'%3E%3Ccircle cx='1' cy='1' r='1'/%3E%3C/svg%3E\");animation:mdc-linear-progress-buffering 250ms infinite linear}.mdc-linear-progress__buffer-bar{flex:0 1 100%;transition:flex-basis 250ms 0ms cubic-bezier(0.4, 0, 0.6, 1)}.mdc-linear-progress__primary-bar{transform:scaleX(0)}.mdc-linear-progress__secondary-bar{display:none}.mdc-linear-progress--indeterminate .mdc-linear-progress__bar{transition:none}.mdc-linear-progress--indeterminate .mdc-linear-progress__primary-bar{left:-145.166611%}.mdc-linear-progress--indeterminate .mdc-linear-progress__secondary-bar{left:-54.888891%;display:block}.mdc-linear-progress--indeterminate.mdc-linear-progress--animation-ready .mdc-linear-progress__primary-bar{animation:mdc-linear-progress-primary-indeterminate-translate 2s infinite linear}.mdc-linear-progress--indeterminate.mdc-linear-progress--animation-ready .mdc-linear-progress__primary-bar>.mdc-linear-progress__bar-inner{animation:mdc-linear-progress-primary-indeterminate-scale 2s infinite linear}.mdc-linear-progress--indeterminate.mdc-linear-progress--animation-ready .mdc-linear-progress__secondary-bar{animation:mdc-linear-progress-secondary-indeterminate-translate 2s infinite linear}.mdc-linear-progress--indeterminate.mdc-linear-progress--animation-ready .mdc-linear-progress__secondary-bar>.mdc-linear-progress__bar-inner{animation:mdc-linear-progress-secondary-indeterminate-scale 2s infinite linear}[dir=rtl] .mdc-linear-progress:not([dir=ltr]) .mdc-linear-progress__bar,.mdc-linear-progress[dir=rtl]:not([dir=ltr]) .mdc-linear-progress__bar{right:0;-webkit-transform-origin:center right;transform-origin:center right}[dir=rtl] .mdc-linear-progress:not([dir=ltr]).mdc-linear-progress--animation-ready .mdc-linear-progress__primary-bar,.mdc-linear-progress[dir=rtl]:not([dir=ltr]).mdc-linear-progress--animation-ready .mdc-linear-progress__primary-bar{animation-name:mdc-linear-progress-primary-indeterminate-translate-reverse}[dir=rtl] .mdc-linear-progress:not([dir=ltr]).mdc-linear-progress--animation-ready .mdc-linear-progress__secondary-bar,.mdc-linear-progress[dir=rtl]:not([dir=ltr]).mdc-linear-progress--animation-ready .mdc-linear-progress__secondary-bar{animation-name:mdc-linear-progress-secondary-indeterminate-translate-reverse}[dir=rtl] .mdc-linear-progress:not([dir=ltr]) .mdc-linear-progress__buffer-dots,.mdc-linear-progress[dir=rtl]:not([dir=ltr]) .mdc-linear-progress__buffer-dots{animation:mdc-linear-progress-buffering-reverse 250ms infinite linear;transform:rotate(0)}[dir=rtl] .mdc-linear-progress:not([dir=ltr]).mdc-linear-progress--indeterminate .mdc-linear-progress__primary-bar,.mdc-linear-progress[dir=rtl]:not([dir=ltr]).mdc-linear-progress--indeterminate .mdc-linear-progress__primary-bar{right:-145.166611%;left:auto}[dir=rtl] .mdc-linear-progress:not([dir=ltr]).mdc-linear-progress--indeterminate .mdc-linear-progress__secondary-bar,.mdc-linear-progress[dir=rtl]:not([dir=ltr]).mdc-linear-progress--indeterminate .mdc-linear-progress__secondary-bar{right:-54.888891%;left:auto}.mdc-linear-progress--closed{opacity:0}.mdc-linear-progress--closed-animation-off .mdc-linear-progress__buffer-dots{animation:none}.mdc-linear-progress--closed-animation-off.mdc-linear-progress--indeterminate .mdc-linear-progress__bar,.mdc-linear-progress--closed-animation-off.mdc-linear-progress--indeterminate .mdc-linear-progress__bar .mdc-linear-progress__bar-inner{animation:none}@keyframes mdc-linear-progress-buffering{from{transform:rotate(180deg) translateX(calc(var(--mdc-linear-progress-track-height) * -2.5))}}.mdc-linear-progress__bar-inner{border-color:var(--mdc-linear-progress-active-indicator-color)}.mdc-linear-progress__buffer-dots{background-color:var(--mdc-linear-progress-track-color)}@media(forced-colors: active){.mdc-linear-progress__buffer-dots{background-color:ButtonBorder}}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.mdc-linear-progress__buffer-dots{background-color:rgba(0,0,0,0);background-image:url(\"data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='none slice'%3E%3Ccircle cx='1' cy='1' r='1' fill='rgba(244, 67, 54, 0.25)'/%3E%3C/svg%3E\")}}.mdc-linear-progress__buffer-bar{background-color:var(--mdc-linear-progress-track-color)}.mdc-linear-progress{height:max(var(--mdc-linear-progress-track-height), var(--mdc-linear-progress-active-indicator-height))}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.mdc-linear-progress{height:4px}}.mdc-linear-progress__bar{height:var(--mdc-linear-progress-active-indicator-height)}.mdc-linear-progress__bar-inner{border-top-width:var(--mdc-linear-progress-active-indicator-height)}.mdc-linear-progress__buffer{height:var(--mdc-linear-progress-track-height)}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.mdc-linear-progress__buffer-dots{background-size:10px var(--mdc-linear-progress-track-height)}}.mdc-linear-progress__buffer{border-radius:var(--mdc-linear-progress-track-shape)}.mat-mdc-progress-bar{display:block;text-align:start;--mdc-linear-progress-primary-half: 83.67142%;--mdc-linear-progress-primary-full: 200.611057%;--mdc-linear-progress-secondary-quarter: 37.651913%;--mdc-linear-progress-secondary-half: 84.386165%;--mdc-linear-progress-secondary-full: 160.277782%;--mdc-linear-progress-primary-half-neg: -83.67142%;--mdc-linear-progress-primary-full-neg: -200.611057%;--mdc-linear-progress-secondary-quarter-neg: -37.651913%;--mdc-linear-progress-secondary-half-neg: -84.386165%;--mdc-linear-progress-secondary-full-neg: -160.277782%}.mat-mdc-progress-bar[mode=query]{transform:scaleX(-1)}.mat-mdc-progress-bar._mat-animation-noopable .mdc-linear-progress__buffer-dots,.mat-mdc-progress-bar._mat-animation-noopable .mdc-linear-progress__primary-bar,.mat-mdc-progress-bar._mat-animation-noopable .mdc-linear-progress__secondary-bar,.mat-mdc-progress-bar._mat-animation-noopable .mdc-linear-progress__bar-inner.mdc-linear-progress__bar-inner{animation:none}.mat-mdc-progress-bar._mat-animation-noopable .mdc-linear-progress__primary-bar,.mat-mdc-progress-bar._mat-animation-noopable .mdc-linear-progress__buffer-bar{transition:transform 1ms}"],encapsulation:2,changeDetection:0})}return t})();function gV(t,n=0,e=100){return Math.max(n,Math.min(e,t))}let yce=(()=>{class t{static#e=this.\u0275fac=function(i){return new(i||t)};static#t=this.\u0275mod=ge({type:t});static#n=this.\u0275inj=he({imports:[Te]})}return t})();const wce=["input"],xce=["formField"],Cce=["*"];let _V=0;class bV{constructor(n,e){this.source=n,this.value=e}}const Dce={provide:ui,useExisting:Ze(()=>yV),multi:!0},vV=new M("MatRadioGroup"),Ece=new M("mat-radio-default-options",{providedIn:"root",factory:function kce(){return{color:"accent"}}});let yV=(()=>{class t{get name(){return this._name}set name(e){this._name=e,this._updateRadioButtonNames()}get labelPosition(){return this._labelPosition}set labelPosition(e){this._labelPosition="before"===e?"before":"after",this._markRadiosForCheck()}get value(){return this._value}set value(e){this._value!==e&&(this._value=e,this._updateSelectedRadioFromValue(),this._checkSelectedRadioButton())}_checkSelectedRadioButton(){this._selected&&!this._selected.checked&&(this._selected.checked=!0)}get selected(){return this._selected}set selected(e){this._selected=e,this.value=e?e.value:null,this._checkSelectedRadioButton()}get disabled(){return this._disabled}set disabled(e){this._disabled=e,this._markRadiosForCheck()}get required(){return this._required}set required(e){this._required=e,this._markRadiosForCheck()}constructor(e){this._changeDetector=e,this._value=null,this._name="mat-radio-group-"+_V++,this._selected=null,this._isInitialized=!1,this._labelPosition="after",this._disabled=!1,this._required=!1,this._controlValueAccessorChangeFn=()=>{},this.onTouched=()=>{},this.change=new G}ngAfterContentInit(){this._isInitialized=!0,this._buttonChanges=this._radios.changes.subscribe(()=>{this.selected&&!this._radios.find(e=>e===this.selected)&&(this._selected=null)})}ngOnDestroy(){this._buttonChanges?.unsubscribe()}_touch(){this.onTouched&&this.onTouched()}_updateRadioButtonNames(){this._radios&&this._radios.forEach(e=>{e.name=this.name,e._markForCheck()})}_updateSelectedRadioFromValue(){this._radios&&(null===this._selected||this._selected.value!==this._value)&&(this._selected=null,this._radios.forEach(i=>{i.checked=this.value===i.value,i.checked&&(this._selected=i)}))}_emitChangeEvent(){this._isInitialized&&this.change.emit(new bV(this._selected,this._value))}_markRadiosForCheck(){this._radios&&this._radios.forEach(e=>e._markForCheck())}writeValue(e){this.value=e,this._changeDetector.markForCheck()}registerOnChange(e){this._controlValueAccessorChangeFn=e}registerOnTouched(e){this.onTouched=e}setDisabledState(e){this.disabled=e,this._changeDetector.markForCheck()}static#e=this.\u0275fac=function(i){return new(i||t)(p(Ke))};static#t=this.\u0275dir=R({type:t,selectors:[["mat-radio-group"]],contentQueries:function(i,r,o){if(1&i&&Oe(o,AC,5),2&i){let s;U(s=$())&&(r._radios=s)}},hostAttrs:["role","radiogroup",1,"mat-mdc-radio-group"],inputs:{color:"color",name:"name",labelPosition:"labelPosition",value:"value",selected:"selected",disabled:[D.HasDecoratorInputTransform,"disabled","disabled",j],required:[D.HasDecoratorInputTransform,"required","required",j]},outputs:{change:"change"},exportAs:["matRadioGroup"],standalone:!0,features:[ie([Dce,{provide:vV,useExisting:t}]),Fe]})}return t})(),AC=(()=>{class t{get checked(){return this._checked}set checked(e){this._checked!==e&&(this._checked=e,e&&this.radioGroup&&this.radioGroup.value!==this.value?this.radioGroup.selected=this:!e&&this.radioGroup&&this.radioGroup.value===this.value&&(this.radioGroup.selected=null),e&&this._radioDispatcher.notify(this.id,this.name),this._changeDetector.markForCheck())}get value(){return this._value}set value(e){this._value!==e&&(this._value=e,null!==this.radioGroup&&(this.checked||(this.checked=this.radioGroup.value===e),this.checked&&(this.radioGroup.selected=this)))}get labelPosition(){return this._labelPosition||this.radioGroup&&this.radioGroup.labelPosition||"after"}set labelPosition(e){this._labelPosition=e}get disabled(){return this._disabled||null!==this.radioGroup&&this.radioGroup.disabled}set disabled(e){this._setDisabled(e)}get required(){return this._required||this.radioGroup&&this.radioGroup.required}set required(e){this._required=e}get color(){return this._color||this.radioGroup&&this.radioGroup.color||this._providerOverride&&this._providerOverride.color||"accent"}set color(e){this._color=e}get inputId(){return`${this.id||this._uniqueId}-input`}constructor(e,i,r,o,s,a,c,l){this._elementRef=i,this._changeDetector=r,this._focusMonitor=o,this._radioDispatcher=s,this._providerOverride=c,this._uniqueId="mat-radio-"+ ++_V,this.id=this._uniqueId,this.disableRipple=!1,this.tabIndex=0,this.change=new G,this._checked=!1,this._value=null,this._removeUniqueSelectionListener=()=>{},this.radioGroup=e,this._noopAnimations="NoopAnimations"===a,l&&(this.tabIndex=Jt(l,0))}focus(e,i){i?this._focusMonitor.focusVia(this._inputElement,i,e):this._inputElement.nativeElement.focus(e)}_markForCheck(){this._changeDetector.markForCheck()}ngOnInit(){this.radioGroup&&(this.checked=this.radioGroup.value===this._value,this.checked&&(this.radioGroup.selected=this),this.name=this.radioGroup.name),this._removeUniqueSelectionListener=this._radioDispatcher.listen((e,i)=>{e!==this.id&&i===this.name&&(this.checked=!1)})}ngDoCheck(){this._updateTabIndex()}ngAfterViewInit(){this._updateTabIndex(),this._focusMonitor.monitor(this._elementRef,!0).subscribe(e=>{!e&&this.radioGroup&&this.radioGroup._touch()})}ngOnDestroy(){this._focusMonitor.stopMonitoring(this._elementRef),this._removeUniqueSelectionListener()}_emitChangeEvent(){this.change.emit(new bV(this,this._value))}_isRippleDisabled(){return this.disableRipple||this.disabled}_onInputClick(e){e.stopPropagation()}_onInputInteraction(e){if(e.stopPropagation(),!this.checked&&!this.disabled){const i=this.radioGroup&&this.value!==this.radioGroup.value;this.checked=!0,this._emitChangeEvent(),this.radioGroup&&(this.radioGroup._controlValueAccessorChangeFn(this.value),i&&this.radioGroup._emitChangeEvent())}}_onTouchTargetClick(e){this._onInputInteraction(e),this.disabled||this._inputElement.nativeElement.focus()}_setDisabled(e){this._disabled!==e&&(this._disabled=e,this._changeDetector.markForCheck())}_updateTabIndex(){const e=this.radioGroup;let i;if(i=e&&e.selected&&!this.disabled?e.selected===this?this.tabIndex:-1:this.tabIndex,i!==this._previousTabIndex){const r=this._inputElement?.nativeElement;r&&(r.setAttribute("tabindex",i+""),this._previousTabIndex=i)}}static#e=this.\u0275fac=function(i){return new(i||t)(p(vV,8),p(K),p(Ke),p(Mr),p(bx),p(Bt,8),p(Ece,8),bi("tabindex"))};static#t=this.\u0275cmp=ue({type:t,selectors:[["mat-radio-button"]],viewQuery:function(i,r){if(1&i&&(Le(wce,5),Le(xce,7,K)),2&i){let o;U(o=$())&&(r._inputElement=o.first),U(o=$())&&(r._rippleTrigger=o.first)}},hostAttrs:[1,"mat-mdc-radio-button"],hostVars:15,hostBindings:function(i,r){1&i&&q("focus",function(){return r._inputElement.nativeElement.focus()}),2&i&&(me("id",r.id)("tabindex",null)("aria-label",null)("aria-labelledby",null)("aria-describedby",null),de("mat-primary","primary"===r.color)("mat-accent","accent"===r.color)("mat-warn","warn"===r.color)("mat-mdc-radio-checked",r.checked)("_mat-animation-noopable",r._noopAnimations))},inputs:{id:"id",name:"name",ariaLabel:[D.None,"aria-label","ariaLabel"],ariaLabelledby:[D.None,"aria-labelledby","ariaLabelledby"],ariaDescribedby:[D.None,"aria-describedby","ariaDescribedby"],disableRipple:[D.HasDecoratorInputTransform,"disableRipple","disableRipple",j],tabIndex:[D.HasDecoratorInputTransform,"tabIndex","tabIndex",e=>null==e?0:Jt(e)],checked:[D.HasDecoratorInputTransform,"checked","checked",j],value:"value",labelPosition:"labelPosition",disabled:[D.HasDecoratorInputTransform,"disabled","disabled",j],required:[D.HasDecoratorInputTransform,"required","required",j],color:"color"},outputs:{change:"change"},exportAs:["matRadioButton"],standalone:!0,features:[Fe,ve],ngContentSelectors:Cce,decls:13,vars:16,consts:[["formField",""],["input",""],["mat-internal-form-field","",3,"labelPosition"],[1,"mdc-radio"],[1,"mat-mdc-radio-touch-target",3,"click"],["type","radio",1,"mdc-radio__native-control",3,"change","id","checked","disabled","required"],[1,"mdc-radio__background"],[1,"mdc-radio__outer-circle"],[1,"mdc-radio__inner-circle"],["mat-ripple","",1,"mat-radio-ripple","mat-mdc-focus-indicator",3,"matRippleTrigger","matRippleDisabled","matRippleCentered"],[1,"mat-ripple-element","mat-radio-persistent-ripple"],[1,"mdc-label",3,"for"]],template:function(i,r){if(1&i){const o=et();$e(),y(0,"div",2,0)(2,"div",3)(3,"div",4),q("click",function(a){return ee(o),te(r._onTouchTargetClick(a))}),w(),y(4,"input",5,1),q("change",function(a){return ee(o),te(r._onInputInteraction(a))}),w(),y(6,"div",6),re(7,"div",7)(8,"div",8),w(),y(9,"div",9),re(10,"div",10),w()(),y(11,"label",11),Y(12),w()()}2&i&&(z("labelPosition",r.labelPosition),C(2),de("mdc-radio--disabled",r.disabled),C(2),z("id",r.inputId)("checked",r.checked)("disabled",r.disabled)("required",r.required),me("name",r.name)("value",r.value)("aria-label",r.ariaLabel)("aria-labelledby",r.ariaLabelledby)("aria-describedby",r.ariaDescribedby),C(5),z("matRippleTrigger",r._rippleTrigger.nativeElement)("matRippleDisabled",r._isRippleDisabled())("matRippleCentered",!0),C(2),z("for",r.inputId))},dependencies:[Bo,tN],styles:['.mdc-radio{display:inline-block;position:relative;flex:0 0 auto;box-sizing:content-box;width:20px;height:20px;cursor:pointer;will-change:opacity,transform,border-color,color}.mdc-radio[hidden]{display:none}.mdc-radio__background{display:inline-block;position:relative;box-sizing:border-box;width:20px;height:20px}.mdc-radio__background::before{position:absolute;transform:scale(0, 0);border-radius:50%;opacity:0;pointer-events:none;content:"";transition:opacity 120ms 0ms cubic-bezier(0.4, 0, 0.6, 1),transform 120ms 0ms cubic-bezier(0.4, 0, 0.6, 1)}.mdc-radio__outer-circle{position:absolute;top:0;left:0;box-sizing:border-box;width:100%;height:100%;border-width:2px;border-style:solid;border-radius:50%;transition:border-color 120ms 0ms cubic-bezier(0.4, 0, 0.6, 1)}.mdc-radio__inner-circle{position:absolute;top:0;left:0;box-sizing:border-box;width:100%;height:100%;transform:scale(0, 0);border-width:10px;border-style:solid;border-radius:50%;transition:transform 120ms 0ms cubic-bezier(0.4, 0, 0.6, 1),border-color 120ms 0ms cubic-bezier(0.4, 0, 0.6, 1)}.mdc-radio__native-control{position:absolute;margin:0;padding:0;opacity:0;cursor:inherit;z-index:1}.mdc-radio--touch{margin-top:4px;margin-bottom:4px;margin-right:4px;margin-left:4px}.mdc-radio--touch .mdc-radio__native-control{top:calc((40px - 48px) / 2);right:calc((40px - 48px) / 2);left:calc((40px - 48px) / 2);width:48px;height:48px}.mdc-radio.mdc-ripple-upgraded--background-focused .mdc-radio__focus-ring,.mdc-radio:not(.mdc-ripple-upgraded):focus .mdc-radio__focus-ring{pointer-events:none;border:2px solid rgba(0,0,0,0);border-radius:6px;box-sizing:content-box;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:100%;width:100%}@media screen and (forced-colors: active){.mdc-radio.mdc-ripple-upgraded--background-focused .mdc-radio__focus-ring,.mdc-radio:not(.mdc-ripple-upgraded):focus .mdc-radio__focus-ring{border-color:CanvasText}}.mdc-radio.mdc-ripple-upgraded--background-focused .mdc-radio__focus-ring::after,.mdc-radio:not(.mdc-ripple-upgraded):focus .mdc-radio__focus-ring::after{content:"";border:2px solid rgba(0,0,0,0);border-radius:8px;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:calc(100% + 4px);width:calc(100% + 4px)}@media screen and (forced-colors: active){.mdc-radio.mdc-ripple-upgraded--background-focused .mdc-radio__focus-ring::after,.mdc-radio:not(.mdc-ripple-upgraded):focus .mdc-radio__focus-ring::after{border-color:CanvasText}}.mdc-radio__native-control:checked+.mdc-radio__background,.mdc-radio__native-control:disabled+.mdc-radio__background{transition:opacity 120ms 0ms cubic-bezier(0, 0, 0.2, 1),transform 120ms 0ms cubic-bezier(0, 0, 0.2, 1)}.mdc-radio__native-control:checked+.mdc-radio__background .mdc-radio__outer-circle,.mdc-radio__native-control:disabled+.mdc-radio__background .mdc-radio__outer-circle{transition:border-color 120ms 0ms cubic-bezier(0, 0, 0.2, 1)}.mdc-radio__native-control:checked+.mdc-radio__background .mdc-radio__inner-circle,.mdc-radio__native-control:disabled+.mdc-radio__background .mdc-radio__inner-circle{transition:transform 120ms 0ms cubic-bezier(0, 0, 0.2, 1),border-color 120ms 0ms cubic-bezier(0, 0, 0.2, 1)}.mdc-radio--disabled{cursor:default;pointer-events:none}.mdc-radio__native-control:checked+.mdc-radio__background .mdc-radio__inner-circle{transform:scale(0.5);transition:transform 120ms 0ms cubic-bezier(0, 0, 0.2, 1),border-color 120ms 0ms cubic-bezier(0, 0, 0.2, 1)}.mdc-radio__native-control:disabled+.mdc-radio__background,[aria-disabled=true] .mdc-radio__native-control+.mdc-radio__background{cursor:default}.mdc-radio__native-control:focus+.mdc-radio__background::before{transform:scale(1);opacity:.12;transition:opacity 120ms 0ms cubic-bezier(0, 0, 0.2, 1),transform 120ms 0ms cubic-bezier(0, 0, 0.2, 1)}.mat-mdc-radio-button{-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-radio-button .mdc-radio{padding:calc((var(--mdc-radio-state-layer-size) - 20px) / 2)}.mat-mdc-radio-button .mdc-radio [aria-disabled=true] .mdc-radio__native-control:checked+.mdc-radio__background .mdc-radio__outer-circle,.mat-mdc-radio-button .mdc-radio .mdc-radio__native-control:disabled:checked+.mdc-radio__background .mdc-radio__outer-circle{border-color:var(--mdc-radio-disabled-selected-icon-color)}.mat-mdc-radio-button .mdc-radio [aria-disabled=true] .mdc-radio__native-control+.mdc-radio__background .mdc-radio__inner-circle,.mat-mdc-radio-button .mdc-radio .mdc-radio__native-control:disabled+.mdc-radio__background .mdc-radio__inner-circle{border-color:var(--mdc-radio-disabled-selected-icon-color)}.mat-mdc-radio-button .mdc-radio [aria-disabled=true] .mdc-radio__native-control:checked+.mdc-radio__background .mdc-radio__outer-circle,.mat-mdc-radio-button .mdc-radio .mdc-radio__native-control:disabled:checked+.mdc-radio__background .mdc-radio__outer-circle{opacity:var(--mdc-radio-disabled-selected-icon-opacity)}.mat-mdc-radio-button .mdc-radio [aria-disabled=true] .mdc-radio__native-control+.mdc-radio__background .mdc-radio__inner-circle,.mat-mdc-radio-button .mdc-radio .mdc-radio__native-control:disabled+.mdc-radio__background .mdc-radio__inner-circle{opacity:var(--mdc-radio-disabled-selected-icon-opacity)}.mat-mdc-radio-button .mdc-radio [aria-disabled=true] .mdc-radio__native-control:not(:checked)+.mdc-radio__background .mdc-radio__outer-circle,.mat-mdc-radio-button .mdc-radio .mdc-radio__native-control:disabled:not(:checked)+.mdc-radio__background .mdc-radio__outer-circle{border-color:var(--mdc-radio-disabled-unselected-icon-color)}.mat-mdc-radio-button .mdc-radio [aria-disabled=true] .mdc-radio__native-control:not(:checked)+.mdc-radio__background .mdc-radio__outer-circle,.mat-mdc-radio-button .mdc-radio .mdc-radio__native-control:disabled:not(:checked)+.mdc-radio__background .mdc-radio__outer-circle{opacity:var(--mdc-radio-disabled-unselected-icon-opacity)}.mat-mdc-radio-button .mdc-radio.mdc-ripple-upgraded--background-focused .mdc-radio__native-control:enabled:checked+.mdc-radio__background .mdc-radio__outer-circle,.mat-mdc-radio-button .mdc-radio:not(.mdc-ripple-upgraded):focus .mdc-radio__native-control:enabled:checked+.mdc-radio__background .mdc-radio__outer-circle{border-color:var(--mdc-radio-selected-focus-icon-color)}.mat-mdc-radio-button .mdc-radio.mdc-ripple-upgraded--background-focused .mdc-radio__native-control:enabled+.mdc-radio__background .mdc-radio__inner-circle,.mat-mdc-radio-button .mdc-radio:not(.mdc-ripple-upgraded):focus .mdc-radio__native-control:enabled+.mdc-radio__background .mdc-radio__inner-circle{border-color:var(--mdc-radio-selected-focus-icon-color)}.mat-mdc-radio-button .mdc-radio:hover .mdc-radio__native-control:enabled:checked+.mdc-radio__background .mdc-radio__outer-circle{border-color:var(--mdc-radio-selected-hover-icon-color)}.mat-mdc-radio-button .mdc-radio:hover .mdc-radio__native-control:enabled+.mdc-radio__background .mdc-radio__inner-circle{border-color:var(--mdc-radio-selected-hover-icon-color)}.mat-mdc-radio-button .mdc-radio .mdc-radio__native-control:enabled:checked+.mdc-radio__background .mdc-radio__outer-circle{border-color:var(--mdc-radio-selected-icon-color)}.mat-mdc-radio-button .mdc-radio .mdc-radio__native-control:enabled+.mdc-radio__background .mdc-radio__inner-circle{border-color:var(--mdc-radio-selected-icon-color)}.mat-mdc-radio-button .mdc-radio:not(:disabled):active .mdc-radio__native-control:enabled:checked+.mdc-radio__background .mdc-radio__outer-circle{border-color:var(--mdc-radio-selected-pressed-icon-color)}.mat-mdc-radio-button .mdc-radio:not(:disabled):active .mdc-radio__native-control:enabled+.mdc-radio__background .mdc-radio__inner-circle{border-color:var(--mdc-radio-selected-pressed-icon-color)}.mat-mdc-radio-button .mdc-radio:hover .mdc-radio__native-control:enabled:not(:checked)+.mdc-radio__background .mdc-radio__outer-circle{border-color:var(--mdc-radio-unselected-hover-icon-color)}.mat-mdc-radio-button .mdc-radio .mdc-radio__native-control:enabled:not(:checked)+.mdc-radio__background .mdc-radio__outer-circle{border-color:var(--mdc-radio-unselected-icon-color)}.mat-mdc-radio-button .mdc-radio:not(:disabled):active .mdc-radio__native-control:enabled:not(:checked)+.mdc-radio__background .mdc-radio__outer-circle{border-color:var(--mdc-radio-unselected-pressed-icon-color)}.mat-mdc-radio-button .mdc-radio .mdc-radio__background::before{top:calc(-1 * (var(--mdc-radio-state-layer-size) - 20px) / 2);left:calc(-1 * (var(--mdc-radio-state-layer-size) - 20px) / 2);width:var(--mdc-radio-state-layer-size);height:var(--mdc-radio-state-layer-size)}.mat-mdc-radio-button .mdc-radio .mdc-radio__native-control{top:calc((var(--mdc-radio-state-layer-size) - var(--mdc-radio-state-layer-size)) / 2);right:calc((var(--mdc-radio-state-layer-size) - var(--mdc-radio-state-layer-size)) / 2);left:calc((var(--mdc-radio-state-layer-size) - var(--mdc-radio-state-layer-size)) / 2);width:var(--mdc-radio-state-layer-size);height:var(--mdc-radio-state-layer-size)}.mat-mdc-radio-button .mdc-radio .mdc-radio__background::before{background-color:var(--mat-radio-ripple-color)}.mat-mdc-radio-button .mdc-radio:hover .mdc-radio__native-control:not([disabled]):not(:focus)~.mdc-radio__background::before{opacity:.04;transform:scale(1)}.mat-mdc-radio-button.mat-mdc-radio-checked .mdc-radio__background::before{background-color:var(--mat-radio-checked-ripple-color)}.mat-mdc-radio-button.mat-mdc-radio-checked .mat-ripple-element{background-color:var(--mat-radio-checked-ripple-color)}.mat-mdc-radio-button .mdc-radio--disabled+label{color:var(--mat-radio-disabled-label-color)}.mat-mdc-radio-button .mat-radio-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:50%}.mat-mdc-radio-button .mat-radio-ripple .mat-ripple-element{opacity:.14}.mat-mdc-radio-button .mat-radio-ripple::before{border-radius:50%}.mat-mdc-radio-button._mat-animation-noopable .mdc-radio__background::before,.mat-mdc-radio-button._mat-animation-noopable .mdc-radio__outer-circle,.mat-mdc-radio-button._mat-animation-noopable .mdc-radio__inner-circle{transition:none !important}.mat-mdc-radio-button .mdc-radio .mdc-radio__native-control:focus:enabled:not(:checked)~.mdc-radio__background .mdc-radio__outer-circle{border-color:var(--mdc-radio-unselected-focus-icon-color, black)}.mat-mdc-radio-button.cdk-focused .mat-mdc-focus-indicator::before{content:""}.mat-mdc-radio-touch-target{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%, -50%);display:var(--mat-radio-touch-target-display)}[dir=rtl] .mat-mdc-radio-touch-target{left:0;right:50%;transform:translate(50%, -50%)}'],encapsulation:2,changeDetection:0})}return t})(),Tce=(()=>{class t{static#e=this.\u0275fac=function(i){return new(i||t)};static#t=this.\u0275mod=ge({type:t});static#n=this.\u0275inj=he({imports:[Te,Ni,eu,AC,Te]})}return t})();const Sce=["trigger"],Mce=["panel"],Ice=[[["mat-select-trigger"]],"*"],Ace=["mat-select-trigger","*"];function Rce(t,n){if(1&t&&(y(0,"span",4),A(1),w()),2&t){const e=L();C(),wt(e.placeholder)}}function Oce(t,n){1&t&&Y(0)}function Nce(t,n){if(1&t&&(y(0,"span",11),A(1),w()),2&t){const e=L(2);C(),wt(e.triggerValue)}}function Fce(t,n){if(1&t&&(y(0,"span",10),H(1,Oce,1,0)(2,Nce,2,1),w()),2&t){const e=L();C(),X(1,e.customTrigger?1:2)}}function Pce(t,n){if(1&t){const e=et();y(0,"div",12,1),q("@transformPanel.done",function(r){return ee(e),te(L()._panelDoneAnimatingStream.next(r.toState))})("keydown",function(r){return ee(e),te(L()._handleKeydown(r))}),Y(2,1),w()}if(2&t){const e=L();(function pM(t,n,e){Xi(pi,Dr,Xa(O(),t,n,e),!0)})("mat-mdc-select-panel mdc-menu-surface mdc-menu-surface--open ",e._getPanelTheme(),""),z("ngClass",e.panelClass)("@transformPanel","showing"),me("id",e.id+"-panel")("aria-multiselectable",e.multiple)("aria-label",e.ariaLabel||null)("aria-labelledby",e._getPanelAriaLabelledby())}}const Lce={transformPanelWrap:Ci("transformPanelWrap",[Xt("* => void",J7("@transformPanel",[Z7()],{optional:!0}))]),transformPanel:Ci("transformPanel",[rn("void",Xe({opacity:0,transform:"scale(1, 0.8)"})),Xt("void => showing",Kt("120ms cubic-bezier(0, 0, 0.2, 1)",Xe({opacity:1,transform:"scale(1, 1)"}))),Xt("* => void",Kt("100ms linear",Xe({opacity:0})))])};let wV=0;const xV=new M("mat-select-scroll-strategy",{providedIn:"root",factory:()=>{const t=T(Hn);return()=>t.scrollStrategies.reposition()}}),Bce=new M("MAT_SELECT_CONFIG"),jce={provide:xV,deps:[Hn],useFactory:function Vce(t){return()=>t.scrollStrategies.reposition()}},Hce=new M("MatSelectTrigger");class zce{constructor(n,e){this.source=n,this.value=e}}let CV=(()=>{class t{_scrollOptionIntoView(e){const i=this.options.toArray()[e];if(i){const r=this.panel.nativeElement,o=YO(e,this.options,this.optionGroups),s=i._getHostElement();r.scrollTop=0===e&&1===o?0:KO(s.offsetTop,s.offsetHeight,r.scrollTop,r.offsetHeight)}}_positioningSettled(){this._scrollOptionIntoView(this._keyManager.activeItemIndex||0)}_getChangeEvent(e){return new zce(this,e)}get focused(){return this._focused||this._panelOpen}get hideSingleSelectionIndicator(){return this._hideSingleSelectionIndicator}set hideSingleSelectionIndicator(e){this._hideSingleSelectionIndicator=e,this._syncParentProperties()}get placeholder(){return this._placeholder}set placeholder(e){this._placeholder=e,this.stateChanges.next()}get required(){return this._required??this.ngControl?.control?.hasValidator(uw.required)??!1}set required(e){this._required=e,this.stateChanges.next()}get multiple(){return this._multiple}set multiple(e){this._multiple=e}get compareWith(){return this._compareWith}set compareWith(e){this._compareWith=e,this._selectionModel&&this._initializeSelection()}get value(){return this._value}set value(e){this._assignValue(e)&&this._onChange(e)}get errorStateMatcher(){return this._errorStateTracker.matcher}set errorStateMatcher(e){this._errorStateTracker.matcher=e}get id(){return this._id}set id(e){this._id=e||this._uid,this.stateChanges.next()}get errorState(){return this._errorStateTracker.errorState}set errorState(e){this._errorStateTracker.errorState=e}constructor(e,i,r,o,s,a,c,l,d,u,h,f,m,g){this._viewportRuler=e,this._changeDetectorRef=i,this._elementRef=s,this._dir=a,this._parentFormField=d,this.ngControl=u,this._liveAnnouncer=m,this._defaultOptions=g,this._positions=[{originX:"start",originY:"bottom",overlayX:"start",overlayY:"top"},{originX:"end",originY:"bottom",overlayX:"end",overlayY:"top"},{originX:"start",originY:"top",overlayX:"start",overlayY:"bottom",panelClass:"mat-mdc-select-panel-above"},{originX:"end",originY:"top",overlayX:"end",overlayY:"bottom",panelClass:"mat-mdc-select-panel-above"}],this._panelOpen=!1,this._compareWith=(_,b)=>_===b,this._uid="mat-select-"+wV++,this._triggerAriaLabelledBy=null,this._destroy=new Z,this.stateChanges=new Z,this.disableAutomaticLabeling=!0,this._onChange=()=>{},this._onTouched=()=>{},this._valueId="mat-select-value-"+wV++,this._panelDoneAnimatingStream=new Z,this._overlayPanelClass=this._defaultOptions?.overlayPanelClass||"",this._focused=!1,this.controlType="mat-select",this.disabled=!1,this.disableRipple=!1,this.tabIndex=0,this._hideSingleSelectionIndicator=this._defaultOptions?.hideSingleSelectionIndicator??!1,this._multiple=!1,this.disableOptionCentering=this._defaultOptions?.disableOptionCentering??!1,this.ariaLabel="",this.panelWidth=this._defaultOptions&&typeof this._defaultOptions.panelWidth<"u"?this._defaultOptions.panelWidth:"auto",this._initialized=new Z,this.optionSelectionChanges=Gp(()=>{const _=this.options;return _?_.changes.pipe(gn(_),nn(()=>Ht(..._.map(b=>b.onSelectionChange)))):this._initialized.pipe(nn(()=>this.optionSelectionChanges))}),this.openedChange=new G,this._openedStream=this.openedChange.pipe(Ge(_=>_),ne(()=>{})),this._closedStream=this.openedChange.pipe(Ge(_=>!_),ne(()=>{})),this.selectionChange=new G,this.valueChange=new G,this._trackedModal=null,this._skipPredicate=_=>!this.panelOpen&&_.disabled,this.ngControl&&(this.ngControl.valueAccessor=this),null!=g?.typeaheadDebounceInterval&&(this.typeaheadDebounceInterval=g.typeaheadDebounceInterval),this._errorStateTracker=new ap(o,u,l,c,this.stateChanges),this._scrollStrategyFactory=f,this._scrollStrategy=this._scrollStrategyFactory(),this.tabIndex=parseInt(h)||0,this.id=this.id}ngOnInit(){this._selectionModel=new ZP(this.multiple),this.stateChanges.next(),this._panelDoneAnimatingStream.pipe(ep(),pe(this._destroy)).subscribe(()=>this._panelDoneAnimating(this.panelOpen)),this._viewportRuler.change().pipe(pe(this._destroy)).subscribe(()=>{this.panelOpen&&(this._overlayWidth=this._getOverlayWidth(this._preferredOverlayOrigin),this._changeDetectorRef.detectChanges())})}ngAfterContentInit(){this._initialized.next(),this._initialized.complete(),this._initKeyManager(),this._selectionModel.changed.pipe(pe(this._destroy)).subscribe(e=>{e.added.forEach(i=>i.select()),e.removed.forEach(i=>i.deselect())}),this.options.changes.pipe(gn(null),pe(this._destroy)).subscribe(()=>{this._resetOptions(),this._initializeSelection()})}ngDoCheck(){const e=this._getTriggerAriaLabelledby(),i=this.ngControl;if(e!==this._triggerAriaLabelledBy){const r=this._elementRef.nativeElement;this._triggerAriaLabelledBy=e,e?r.setAttribute("aria-labelledby",e):r.removeAttribute("aria-labelledby")}i&&(this._previousControl!==i.control&&(void 0!==this._previousControl&&null!==i.disabled&&i.disabled!==this.disabled&&(this.disabled=i.disabled),this._previousControl=i.control),this.updateErrorState())}ngOnChanges(e){(e.disabled||e.userAriaDescribedBy)&&this.stateChanges.next(),e.typeaheadDebounceInterval&&this._keyManager&&this._keyManager.withTypeAhead(this.typeaheadDebounceInterval)}ngOnDestroy(){this._keyManager?.destroy(),this._destroy.next(),this._destroy.complete(),this.stateChanges.complete(),this._clearFromModal()}toggle(){this.panelOpen?this.close():this.open()}open(){this._canOpen()&&(this._parentFormField&&(this._preferredOverlayOrigin=this._parentFormField.getConnectedOverlayOrigin()),this._overlayWidth=this._getOverlayWidth(this._preferredOverlayOrigin),this._applyModalPanelOwnership(),this._panelOpen=!0,this._keyManager.withHorizontalOrientation(null),this._highlightCorrectOption(),this._changeDetectorRef.markForCheck(),this.stateChanges.next())}_applyModalPanelOwnership(){const e=this._elementRef.nativeElement.closest('body > .cdk-overlay-container [aria-modal="true"]');if(!e)return;const i=`${this.id}-panel`;this._trackedModal&&Cc(this._trackedModal,"aria-owns",i),np(e,"aria-owns",i),this._trackedModal=e}_clearFromModal(){this._trackedModal&&(Cc(this._trackedModal,"aria-owns",`${this.id}-panel`),this._trackedModal=null)}close(){this._panelOpen&&(this._panelOpen=!1,this._keyManager.withHorizontalOrientation(this._isRtl()?"rtl":"ltr"),this._changeDetectorRef.markForCheck(),this._onTouched(),this.stateChanges.next())}writeValue(e){this._assignValue(e)}registerOnChange(e){this._onChange=e}registerOnTouched(e){this._onTouched=e}setDisabledState(e){this.disabled=e,this._changeDetectorRef.markForCheck(),this.stateChanges.next()}get panelOpen(){return this._panelOpen}get selected(){return this.multiple?this._selectionModel?.selected||[]:this._selectionModel?.selected[0]}get triggerValue(){if(this.empty)return"";if(this._multiple){const e=this._selectionModel.selected.map(i=>i.viewValue);return this._isRtl()&&e.reverse(),e.join(", ")}return this._selectionModel.selected[0].viewValue}updateErrorState(){this._errorStateTracker.updateErrorState()}_isRtl(){return!!this._dir&&"rtl"===this._dir.value}_handleKeydown(e){this.disabled||(this.panelOpen?this._handleOpenKeydown(e):this._handleClosedKeydown(e))}_handleClosedKeydown(e){const i=e.keyCode,r=40===i||38===i||37===i||39===i,o=13===i||32===i,s=this._keyManager;if(!s.isTyping()&&o&&!Kn(e)||(this.multiple||e.altKey)&&r)e.preventDefault(),this.open();else if(!this.multiple){const a=this.selected;s.onKeydown(e);const c=this.selected;c&&a!==c&&this._liveAnnouncer.announce(c.viewValue,1e4)}}_handleOpenKeydown(e){const i=this._keyManager,r=e.keyCode,o=40===r||38===r,s=i.isTyping();if(o&&e.altKey)e.preventDefault(),this.close();else if(s||13!==r&&32!==r||!i.activeItem||Kn(e))if(!s&&this._multiple&&65===r&&e.ctrlKey){e.preventDefault();const a=this.options.some(c=>!c.disabled&&!c.selected);this.options.forEach(c=>{c.disabled||(a?c.select():c.deselect())})}else{const a=i.activeItemIndex;i.onKeydown(e),this._multiple&&o&&e.shiftKey&&i.activeItem&&i.activeItemIndex!==a&&i.activeItem._selectViaInteraction()}else e.preventDefault(),i.activeItem._selectViaInteraction()}_onFocus(){this.disabled||(this._focused=!0,this.stateChanges.next())}_onBlur(){this._focused=!1,this._keyManager?.cancelTypeahead(),!this.disabled&&!this.panelOpen&&(this._onTouched(),this._changeDetectorRef.markForCheck(),this.stateChanges.next())}_onAttached(){this._overlayDir.positionChange.pipe(gt(1)).subscribe(()=>{this._changeDetectorRef.detectChanges(),this._positioningSettled()})}_getPanelTheme(){return this._parentFormField?`mat-${this._parentFormField.color}`:""}get empty(){return!this._selectionModel||this._selectionModel.isEmpty()}_initializeSelection(){Promise.resolve().then(()=>{this.ngControl&&(this._value=this.ngControl.value),this._setSelectionByValue(this._value),this.stateChanges.next()})}_setSelectionByValue(e){if(this.options.forEach(i=>i.setInactiveStyles()),this._selectionModel.clear(),this.multiple&&e)Array.isArray(e),e.forEach(i=>this._selectOptionByValue(i)),this._sortValues();else{const i=this._selectOptionByValue(e);i?this._keyManager.updateActiveItem(i):this.panelOpen||this._keyManager.updateActiveItem(-1)}this._changeDetectorRef.markForCheck()}_selectOptionByValue(e){const i=this.options.find(r=>{if(this._selectionModel.isSelected(r))return!1;try{return null!=r.value&&this._compareWith(r.value,e)}catch{return!1}});return i&&this._selectionModel.select(i),i}_assignValue(e){return!!(e!==this._value||this._multiple&&Array.isArray(e))&&(this.options&&this._setSelectionByValue(e),this._value=e,!0)}_getOverlayWidth(e){return"auto"===this.panelWidth?(e instanceof lw?e.elementRef:e||this._elementRef).nativeElement.getBoundingClientRect().width:null===this.panelWidth?"":this.panelWidth}_syncParentProperties(){if(this.options)for(const e of this.options)e._changeDetectorRef.markForCheck()}_initKeyManager(){this._keyManager=new IO(this.options).withTypeAhead(this.typeaheadDebounceInterval).withVerticalOrientation().withHorizontalOrientation(this._isRtl()?"rtl":"ltr").withHomeAndEnd().withPageUpDown().withAllowedModifierKeys(["shiftKey"]).skipPredicate(this._skipPredicate),this._keyManager.tabOut.subscribe(()=>{this.panelOpen&&(!this.multiple&&this._keyManager.activeItem&&this._keyManager.activeItem._selectViaInteraction(),this.focus(),this.close())}),this._keyManager.change.subscribe(()=>{this._panelOpen&&this.panel?this._scrollOptionIntoView(this._keyManager.activeItemIndex||0):!this._panelOpen&&!this.multiple&&this._keyManager.activeItem&&this._keyManager.activeItem._selectViaInteraction()})}_resetOptions(){const e=Ht(this.options.changes,this._destroy);this.optionSelectionChanges.pipe(pe(e)).subscribe(i=>{this._onSelect(i.source,i.isUserInput),i.isUserInput&&!this.multiple&&this._panelOpen&&(this.close(),this.focus())}),Ht(...this.options.map(i=>i._stateChanges)).pipe(pe(e)).subscribe(()=>{this._changeDetectorRef.detectChanges(),this.stateChanges.next()})}_onSelect(e,i){const r=this._selectionModel.isSelected(e);null!=e.value||this._multiple?(r!==e.selected&&(e.selected?this._selectionModel.select(e):this._selectionModel.deselect(e)),i&&this._keyManager.setActiveItem(e),this.multiple&&(this._sortValues(),i&&this.focus())):(e.deselect(),this._selectionModel.clear(),null!=this.value&&this._propagateChanges(e.value)),r!==this._selectionModel.isSelected(e)&&this._propagateChanges(),this.stateChanges.next()}_sortValues(){if(this.multiple){const e=this.options.toArray();this._selectionModel.sort((i,r)=>this.sortComparator?this.sortComparator(i,r,e):e.indexOf(i)-e.indexOf(r)),this.stateChanges.next()}}_propagateChanges(e){let i;i=this.multiple?this.selected.map(r=>r.value):this.selected?this.selected.value:e,this._value=i,this.valueChange.emit(i),this._onChange(i),this.selectionChange.emit(this._getChangeEvent(i)),this._changeDetectorRef.markForCheck()}_highlightCorrectOption(){if(this._keyManager)if(this.empty){let e=-1;for(let i=0;i0}focus(e){this._elementRef.nativeElement.focus(e)}_getPanelAriaLabelledby(){if(this.ariaLabel)return null;const e=this._parentFormField?.getLabelId();return this.ariaLabelledby?(e?e+" ":"")+this.ariaLabelledby:e}_getAriaActiveDescendant(){return this.panelOpen&&this._keyManager&&this._keyManager.activeItem?this._keyManager.activeItem.id:null}_getTriggerAriaLabelledby(){if(this.ariaLabel)return null;const e=this._parentFormField?.getLabelId();let i=(e?e+" ":"")+this._valueId;return this.ariaLabelledby&&(i+=" "+this.ariaLabelledby),i}_panelDoneAnimating(e){this.openedChange.emit(e)}setDescribedByIds(e){e.length?this._elementRef.nativeElement.setAttribute("aria-describedby",e.join(" ")):this._elementRef.nativeElement.removeAttribute("aria-describedby")}onContainerClick(){this.focus(),this.open()}get shouldLabelFloat(){return this.panelOpen||!this.empty||this.focused&&!!this.placeholder}static#e=this.\u0275fac=function(i){return new(i||t)(p(Ho),p(Ke),p(W),p(cp),p(K),p(Xn,8),p(Mc,8),p(Ac,8),p(pu,8),p(ir,10),bi("tabindex"),p(xV),p(PO),p(Bce,8))};static#t=this.\u0275cmp=ue({type:t,selectors:[["mat-select"]],contentQueries:function(i,r,o){if(1&i&&(Oe(o,Hce,5),Oe(o,Ec,5),Oe(o,G0,5)),2&i){let s;U(s=$())&&(r.customTrigger=s.first),U(s=$())&&(r.options=s),U(s=$())&&(r.optionGroups=s)}},viewQuery:function(i,r){if(1&i&&(Le(Sce,5),Le(Mce,5),Le(MN,5)),2&i){let o;U(o=$())&&(r.trigger=o.first),U(o=$())&&(r.panel=o.first),U(o=$())&&(r._overlayDir=o.first)}},hostAttrs:["role","combobox","aria-autocomplete","none","aria-haspopup","listbox",1,"mat-mdc-select"],hostVars:19,hostBindings:function(i,r){1&i&&q("keydown",function(s){return r._handleKeydown(s)})("focus",function(){return r._onFocus()})("blur",function(){return r._onBlur()}),2&i&&(me("id",r.id)("tabindex",r.disabled?-1:r.tabIndex)("aria-controls",r.panelOpen?r.id+"-panel":null)("aria-expanded",r.panelOpen)("aria-label",r.ariaLabel||null)("aria-required",r.required.toString())("aria-disabled",r.disabled.toString())("aria-invalid",r.errorState)("aria-activedescendant",r._getAriaActiveDescendant()),de("mat-mdc-select-disabled",r.disabled)("mat-mdc-select-invalid",r.errorState)("mat-mdc-select-required",r.required)("mat-mdc-select-empty",r.empty)("mat-mdc-select-multiple",r.multiple))},inputs:{userAriaDescribedBy:[D.None,"aria-describedby","userAriaDescribedBy"],panelClass:"panelClass",disabled:[D.HasDecoratorInputTransform,"disabled","disabled",j],disableRipple:[D.HasDecoratorInputTransform,"disableRipple","disableRipple",j],tabIndex:[D.HasDecoratorInputTransform,"tabIndex","tabIndex",e=>null==e?0:Jt(e)],hideSingleSelectionIndicator:[D.HasDecoratorInputTransform,"hideSingleSelectionIndicator","hideSingleSelectionIndicator",j],placeholder:"placeholder",required:[D.HasDecoratorInputTransform,"required","required",j],multiple:[D.HasDecoratorInputTransform,"multiple","multiple",j],disableOptionCentering:[D.HasDecoratorInputTransform,"disableOptionCentering","disableOptionCentering",j],compareWith:"compareWith",value:"value",ariaLabel:[D.None,"aria-label","ariaLabel"],ariaLabelledby:[D.None,"aria-labelledby","ariaLabelledby"],errorStateMatcher:"errorStateMatcher",typeaheadDebounceInterval:[D.HasDecoratorInputTransform,"typeaheadDebounceInterval","typeaheadDebounceInterval",Jt],sortComparator:"sortComparator",id:"id",panelWidth:"panelWidth"},outputs:{openedChange:"openedChange",_openedStream:"opened",_closedStream:"closed",selectionChange:"selectionChange",valueChange:"valueChange"},exportAs:["matSelect"],standalone:!0,features:[ie([{provide:Vp,useExisting:t},{provide:q0,useExisting:t}]),Fe,Ft,ve],ngContentSelectors:Ace,decls:11,vars:8,consts:[["fallbackOverlayOrigin","cdkOverlayOrigin","trigger",""],["panel",""],["cdk-overlay-origin","",1,"mat-mdc-select-trigger",3,"click"],[1,"mat-mdc-select-value"],[1,"mat-mdc-select-placeholder","mat-mdc-select-min-line"],[1,"mat-mdc-select-arrow-wrapper"],[1,"mat-mdc-select-arrow"],["viewBox","0 0 24 24","width","24px","height","24px","focusable","false","aria-hidden","true"],["d","M7 10l5 5 5-5z"],["cdk-connected-overlay","","cdkConnectedOverlayLockPosition","","cdkConnectedOverlayHasBackdrop","","cdkConnectedOverlayBackdropClass","cdk-overlay-transparent-backdrop",3,"backdropClick","attach","detach","cdkConnectedOverlayPanelClass","cdkConnectedOverlayScrollStrategy","cdkConnectedOverlayOrigin","cdkConnectedOverlayOpen","cdkConnectedOverlayPositions","cdkConnectedOverlayWidth"],[1,"mat-mdc-select-value-text"],[1,"mat-mdc-select-min-line"],["role","listbox","tabindex","-1",3,"keydown","ngClass"]],template:function(i,r){if(1&i){const o=et();$e(Ice),y(0,"div",2,0),q("click",function(){return ee(o),te(r.open())}),y(3,"div",3),H(4,Rce,2,1,"span",4)(5,Fce,3,1),w(),y(6,"div",5)(7,"div",6),Ma(),y(8,"svg",7),re(9,"path",8),w()()()(),H(10,Pce,3,9,"ng-template",9),q("backdropClick",function(){return ee(o),te(r.close())})("attach",function(){return ee(o),te(r._onAttached())})("detach",function(){return ee(o),te(r.close())})}if(2&i){const o=ai(1);C(3),me("id",r._valueId),C(),X(4,r.empty?4:5),C(6),z("cdkConnectedOverlayPanelClass",r._overlayPanelClass)("cdkConnectedOverlayScrollStrategy",r._scrollStrategy)("cdkConnectedOverlayOrigin",r._preferredOverlayOrigin||o)("cdkConnectedOverlayOpen",r.panelOpen)("cdkConnectedOverlayPositions",r._positions)("cdkConnectedOverlayWidth",r._overlayWidth)}},dependencies:[lw,MN,Ay],styles:['.mat-mdc-select{display:inline-block;width:100%;outline:none;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;color:var(--mat-select-enabled-trigger-text-color);font-family:var(--mat-select-trigger-text-font);line-height:var(--mat-select-trigger-text-line-height);font-size:var(--mat-select-trigger-text-size);font-weight:var(--mat-select-trigger-text-weight);letter-spacing:var(--mat-select-trigger-text-tracking)}div.mat-mdc-select-panel{box-shadow:var(--mat-select-container-elevation-shadow)}.mat-mdc-select-disabled{color:var(--mat-select-disabled-trigger-text-color)}.mat-mdc-select-trigger{display:inline-flex;align-items:center;cursor:pointer;position:relative;box-sizing:border-box;width:100%}.mat-mdc-select-disabled .mat-mdc-select-trigger{-webkit-user-select:none;user-select:none;cursor:default}.mat-mdc-select-value{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mat-mdc-select-value-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mat-mdc-select-arrow-wrapper{height:24px;flex-shrink:0;display:inline-flex;align-items:center}.mat-form-field-appearance-fill .mdc-text-field--no-label .mat-mdc-select-arrow-wrapper{transform:none}.mat-mdc-form-field .mat-mdc-select.mat-mdc-select-invalid .mat-mdc-select-arrow,.mat-form-field-invalid:not(.mat-form-field-disabled) .mat-mdc-form-field-infix::after{color:var(--mat-select-invalid-arrow-color)}.mat-mdc-select-arrow{width:10px;height:5px;position:relative;color:var(--mat-select-enabled-arrow-color)}.mat-mdc-form-field.mat-focused .mat-mdc-select-arrow{color:var(--mat-select-focused-arrow-color)}.mat-mdc-form-field .mat-mdc-select.mat-mdc-select-disabled .mat-mdc-select-arrow{color:var(--mat-select-disabled-arrow-color)}.mat-mdc-select-arrow svg{fill:currentColor;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%)}.cdk-high-contrast-active .mat-mdc-select-arrow svg{fill:CanvasText}.mat-mdc-select-disabled .cdk-high-contrast-active .mat-mdc-select-arrow svg{fill:GrayText}div.mat-mdc-select-panel{width:100%;max-height:275px;outline:0;overflow:auto;padding:8px 0;border-radius:4px;box-sizing:border-box;position:static;background-color:var(--mat-select-panel-background-color)}.cdk-high-contrast-active div.mat-mdc-select-panel{outline:solid 1px}.cdk-overlay-pane:not(.mat-mdc-select-panel-above) div.mat-mdc-select-panel{border-top-left-radius:0;border-top-right-radius:0;transform-origin:top center}.mat-mdc-select-panel-above div.mat-mdc-select-panel{border-bottom-left-radius:0;border-bottom-right-radius:0;transform-origin:bottom center}div.mat-mdc-select-panel .mat-mdc-option{--mdc-list-list-item-container-color: var(--mat-select-panel-background-color)}.mat-mdc-select-placeholder{transition:color 400ms 133.3333333333ms cubic-bezier(0.25, 0.8, 0.25, 1);color:var(--mat-select-placeholder-text-color)}._mat-animation-noopable .mat-mdc-select-placeholder{transition:none}.mat-form-field-hide-placeholder .mat-mdc-select-placeholder{color:rgba(0,0,0,0);-webkit-text-fill-color:rgba(0,0,0,0);transition:none;display:block}.mat-mdc-form-field-type-mat-select:not(.mat-form-field-disabled) .mat-mdc-text-field-wrapper{cursor:pointer}.mat-mdc-form-field-type-mat-select.mat-form-field-appearance-fill .mat-mdc-floating-label{max-width:calc(100% - 18px)}.mat-mdc-form-field-type-mat-select.mat-form-field-appearance-fill .mdc-floating-label--float-above{max-width:calc(100%/0.75 - 24px)}.mat-mdc-form-field-type-mat-select.mat-form-field-appearance-outline .mdc-notched-outline__notch{max-width:calc(100% - 60px)}.mat-mdc-form-field-type-mat-select.mat-form-field-appearance-outline .mdc-text-field--label-floating .mdc-notched-outline__notch{max-width:calc(100% - 24px)}.mat-mdc-select-min-line:empty::before{content:" ";white-space:pre;width:1px;display:inline-block;visibility:hidden}.mat-form-field-appearance-fill .mat-mdc-select-arrow-wrapper{transform:var(--mat-select-arrow-transform)}'],encapsulation:2,data:{animation:[Lce.transformPanel]},changeDetection:0})}return t})(),DV=(()=>{class t{static#e=this.\u0275fac=function(i){return new(i||t)};static#t=this.\u0275mod=ge({type:t});static#n=this.\u0275inj=he({providers:[jce],imports:[Ni,cu,tu,Te,zo,gu,tu,Te]})}return t})();const EV=["*"],Uce=["content"],$ce=[[["mat-drawer"]],[["mat-drawer-content"]],"*"],qce=["mat-drawer","mat-drawer-content","*"];function Gce(t,n){if(1&t){const e=et();y(0,"div",1),q("click",function(){return ee(e),te(L()._onBackdropClicked())}),w()}2&t&&de("mat-drawer-shown",L()._isShowingBackdrop())}function Wce(t,n){1&t&&(y(0,"mat-drawer-content"),Y(1,2),w())}const Qce={transformDrawer:Ci("transform",[rn("open, open-instant",Xe({transform:"none",visibility:"visible"})),rn("void",Xe({"box-shadow":"none",visibility:"hidden"})),Xt("void => open-instant",Kt("0ms")),Xt("void <=> open, open-instant => void",Kt("400ms cubic-bezier(0.25, 0.8, 0.25, 1)"))])},Yce=new M("MAT_DRAWER_DEFAULT_AUTOSIZE",{providedIn:"root",factory:function Kce(){return!1}}),kV=new M("MAT_DRAWER_CONTAINER");let Pg=(()=>{class t extends xp{constructor(e,i,r,o,s){super(r,o,s),this._changeDetectorRef=e,this._container=i}ngAfterContentInit(){this._container._contentMarginChanges.subscribe(()=>{this._changeDetectorRef.markForCheck()})}static#e=this.\u0275fac=function(i){return new(i||t)(p(Ke),p(Ze(()=>SV)),p(K),p(wp),p(W))};static#t=this.\u0275cmp=ue({type:t,selectors:[["mat-drawer-content"]],hostAttrs:[1,"mat-drawer-content"],hostVars:4,hostBindings:function(i,r){2&i&&Pn("margin-left",r._container._contentMargins.left,"px")("margin-right",r._container._contentMargins.right,"px")},standalone:!0,features:[ie([{provide:xp,useExisting:t}]),J,ve],ngContentSelectors:EV,decls:1,vars:0,template:function(i,r){1&i&&($e(),Y(0))},encapsulation:2,changeDetection:0})}return t})(),TV=(()=>{class t{get position(){return this._position}set position(e){(e="end"===e?"end":"start")!==this._position&&(this._isAttached&&this._updatePositionInParent(e),this._position=e,this.onPositionChanged.emit())}get mode(){return this._mode}set mode(e){this._mode=e,this._updateFocusTrapState(),this._modeChanged.next()}get disableClose(){return this._disableClose}set disableClose(e){this._disableClose=ki(e)}get autoFocus(){return this._autoFocus??("side"===this.mode?"dialog":"first-tabbable")}set autoFocus(e){("true"===e||"false"===e||null==e)&&(e=ki(e)),this._autoFocus=e}get opened(){return this._opened}set opened(e){this.toggle(ki(e))}constructor(e,i,r,o,s,a,c,l){this._elementRef=e,this._focusTrapFactory=i,this._focusMonitor=r,this._platform=o,this._ngZone=s,this._interactivityChecker=a,this._doc=c,this._container=l,this._focusTrap=null,this._elementFocusedBeforeDrawerWasOpened=null,this._enableAnimations=!1,this._position="start",this._mode="over",this._disableClose=!1,this._opened=!1,this._animationStarted=new Z,this._animationEnd=new Z,this._animationState="void",this.openedChange=new G(!0),this._openedStream=this.openedChange.pipe(Ge(d=>d),ne(()=>{})),this.openedStart=this._animationStarted.pipe(Ge(d=>d.fromState!==d.toState&&0===d.toState.indexOf("open")),vp(void 0)),this._closedStream=this.openedChange.pipe(Ge(d=>!d),ne(()=>{})),this.closedStart=this._animationStarted.pipe(Ge(d=>d.fromState!==d.toState&&"void"===d.toState),vp(void 0)),this._destroyed=new Z,this.onPositionChanged=new G,this._modeChanged=new Z,this.openedChange.subscribe(d=>{d?(this._doc&&(this._elementFocusedBeforeDrawerWasOpened=this._doc.activeElement),this._takeFocus()):this._isFocusWithinDrawer()&&this._restoreFocus(this._openedVia||"program")}),this._ngZone.runOutsideAngular(()=>{nr(this._elementRef.nativeElement,"keydown").pipe(Ge(d=>27===d.keyCode&&!this.disableClose&&!Kn(d)),pe(this._destroyed)).subscribe(d=>this._ngZone.run(()=>{this.close(),d.stopPropagation(),d.preventDefault()}))}),this._animationEnd.pipe(ep((d,u)=>d.fromState===u.fromState&&d.toState===u.toState)).subscribe(d=>{const{fromState:u,toState:h}=d;(0===h.indexOf("open")&&"void"===u||"void"===h&&0===u.indexOf("open"))&&this.openedChange.emit(this._opened)})}_forceFocus(e,i){this._interactivityChecker.isFocusable(e)||(e.tabIndex=-1,this._ngZone.runOutsideAngular(()=>{const r=()=>{e.removeEventListener("blur",r),e.removeEventListener("mousedown",r),e.removeAttribute("tabindex")};e.addEventListener("blur",r),e.addEventListener("mousedown",r)})),e.focus(i)}_focusByCssSelector(e,i){let r=this._elementRef.nativeElement.querySelector(e);r&&this._forceFocus(r,i)}_takeFocus(){if(!this._focusTrap)return;const e=this._elementRef.nativeElement;switch(this.autoFocus){case!1:case"dialog":return;case!0:case"first-tabbable":this._focusTrap.focusInitialElementWhenReady().then(i=>{!i&&"function"==typeof this._elementRef.nativeElement.focus&&e.focus()});break;case"first-heading":this._focusByCssSelector('h1, h2, h3, h4, h5, h6, [role="heading"]');break;default:this._focusByCssSelector(this.autoFocus)}}_restoreFocus(e){"dialog"!==this.autoFocus&&(this._elementFocusedBeforeDrawerWasOpened?this._focusMonitor.focusVia(this._elementFocusedBeforeDrawerWasOpened,e):this._elementRef.nativeElement.blur(),this._elementFocusedBeforeDrawerWasOpened=null)}_isFocusWithinDrawer(){const e=this._doc.activeElement;return!!e&&this._elementRef.nativeElement.contains(e)}ngAfterViewInit(){this._isAttached=!0,"end"===this._position&&this._updatePositionInParent("end"),this._platform.isBrowser&&(this._focusTrap=this._focusTrapFactory.create(this._elementRef.nativeElement),this._updateFocusTrapState())}ngAfterContentChecked(){this._platform.isBrowser&&(this._enableAnimations=!0)}ngOnDestroy(){this._focusTrap?.destroy(),this._anchor?.remove(),this._anchor=null,this._animationStarted.complete(),this._animationEnd.complete(),this._modeChanged.complete(),this._destroyed.next(),this._destroyed.complete()}open(e){return this.toggle(!0,e)}close(){return this.toggle(!1)}_closeViaBackdropClick(){return this._setOpen(!1,!0,"mouse")}toggle(e=!this.opened,i){e&&i&&(this._openedVia=i);const r=this._setOpen(e,!e&&this._isFocusWithinDrawer(),this._openedVia||"program");return e||(this._openedVia=null),r}_setOpen(e,i,r){return this._opened=e,e?this._animationState=this._enableAnimations?"open":"open-instant":(this._animationState="void",i&&this._restoreFocus(r)),this._updateFocusTrapState(),new Promise(o=>{this.openedChange.pipe(gt(1)).subscribe(s=>o(s?"open":"close"))})}_getWidth(){return this._elementRef.nativeElement&&this._elementRef.nativeElement.offsetWidth||0}_updateFocusTrapState(){this._focusTrap&&(this._focusTrap.enabled=!!this._container?.hasBackdrop)}_updatePositionInParent(e){if(!this._platform.isBrowser)return;const i=this._elementRef.nativeElement,r=i.parentNode;"end"===e?(this._anchor||(this._anchor=this._doc.createComment("mat-drawer-anchor"),r.insertBefore(this._anchor,i)),r.appendChild(i)):this._anchor&&this._anchor.parentNode.insertBefore(i,this._anchor)}static#e=this.\u0275fac=function(i){return new(i||t)(p(K),p(BK),p(Mr),p(ut),p(W),p(AO),p(_e,8),p(kV,8))};static#t=this.\u0275cmp=ue({type:t,selectors:[["mat-drawer"]],viewQuery:function(i,r){if(1&i&&Le(Uce,5),2&i){let o;U(o=$())&&(r._content=o.first)}},hostAttrs:["tabIndex","-1",1,"mat-drawer"],hostVars:12,hostBindings:function(i,r){1&i&&Yf("@transform.start",function(s){return r._animationStarted.next(s)})("@transform.done",function(s){return r._animationEnd.next(s)}),2&i&&($f("@transform",r._animationState),me("align",null),de("mat-drawer-end","end"===r.position)("mat-drawer-over","over"===r.mode)("mat-drawer-push","push"===r.mode)("mat-drawer-side","side"===r.mode)("mat-drawer-opened",r.opened))},inputs:{position:"position",mode:"mode",disableClose:"disableClose",autoFocus:"autoFocus",opened:"opened"},outputs:{openedChange:"openedChange",_openedStream:"opened",openedStart:"openedStart",_closedStream:"closed",closedStart:"closedStart",onPositionChanged:"positionChanged"},exportAs:["matDrawer"],standalone:!0,features:[ve],ngContentSelectors:EV,decls:3,vars:0,consts:[["content",""],["cdkScrollable","",1,"mat-drawer-inner-container"]],template:function(i,r){1&i&&($e(),y(0,"div",1,0),Y(2),w())},dependencies:[xp],encapsulation:2,data:{animation:[Qce.transformDrawer]},changeDetection:0})}return t})(),SV=(()=>{class t{get start(){return this._start}get end(){return this._end}get autosize(){return this._autosize}set autosize(e){this._autosize=ki(e)}get hasBackdrop(){return this._drawerHasBackdrop(this._start)||this._drawerHasBackdrop(this._end)}set hasBackdrop(e){this._backdropOverride=null==e?null:ki(e)}get scrollable(){return this._userContent||this._content}constructor(e,i,r,o,s,a=!1,c){this._dir=e,this._element=i,this._ngZone=r,this._changeDetectorRef=o,this._animationMode=c,this._drawers=new $r,this.backdropClick=new G,this._destroyed=new Z,this._doCheckSubject=new Z,this._contentMargins={left:null,right:null},this._contentMarginChanges=new Z,e&&e.change.pipe(pe(this._destroyed)).subscribe(()=>{this._validateDrawers(),this.updateContentMargins()}),s.change().pipe(pe(this._destroyed)).subscribe(()=>this.updateContentMargins()),this._autosize=a}ngAfterContentInit(){this._allDrawers.changes.pipe(gn(this._allDrawers),pe(this._destroyed)).subscribe(e=>{this._drawers.reset(e.filter(i=>!i._container||i._container===this)),this._drawers.notifyOnChanges()}),this._drawers.changes.pipe(gn(null)).subscribe(()=>{this._validateDrawers(),this._drawers.forEach(e=>{this._watchDrawerToggle(e),this._watchDrawerPosition(e),this._watchDrawerMode(e)}),(!this._drawers.length||this._isDrawerOpen(this._start)||this._isDrawerOpen(this._end))&&this.updateContentMargins(),this._changeDetectorRef.markForCheck()}),this._ngZone.runOutsideAngular(()=>{this._doCheckSubject.pipe(Jm(10),pe(this._destroyed)).subscribe(()=>this.updateContentMargins())})}ngOnDestroy(){this._contentMarginChanges.complete(),this._doCheckSubject.complete(),this._drawers.destroy(),this._destroyed.next(),this._destroyed.complete()}open(){this._drawers.forEach(e=>e.open())}close(){this._drawers.forEach(e=>e.close())}updateContentMargins(){let e=0,i=0;if(this._left&&this._left.opened)if("side"==this._left.mode)e+=this._left._getWidth();else if("push"==this._left.mode){const r=this._left._getWidth();e+=r,i-=r}if(this._right&&this._right.opened)if("side"==this._right.mode)i+=this._right._getWidth();else if("push"==this._right.mode){const r=this._right._getWidth();i+=r,e-=r}e=e||null,i=i||null,(e!==this._contentMargins.left||i!==this._contentMargins.right)&&(this._contentMargins={left:e,right:i},this._ngZone.run(()=>this._contentMarginChanges.next(this._contentMargins)))}ngDoCheck(){this._autosize&&this._isPushed()&&this._ngZone.runOutsideAngular(()=>this._doCheckSubject.next())}_watchDrawerToggle(e){e._animationStarted.pipe(Ge(i=>i.fromState!==i.toState),pe(this._drawers.changes)).subscribe(i=>{"open-instant"!==i.toState&&"NoopAnimations"!==this._animationMode&&this._element.nativeElement.classList.add("mat-drawer-transition"),this.updateContentMargins(),this._changeDetectorRef.markForCheck()}),"side"!==e.mode&&e.openedChange.pipe(pe(this._drawers.changes)).subscribe(()=>this._setContainerClass(e.opened))}_watchDrawerPosition(e){e&&e.onPositionChanged.pipe(pe(this._drawers.changes)).subscribe(()=>{this._ngZone.onMicrotaskEmpty.pipe(gt(1)).subscribe(()=>{this._validateDrawers()})})}_watchDrawerMode(e){e&&e._modeChanged.pipe(pe(Ht(this._drawers.changes,this._destroyed))).subscribe(()=>{this.updateContentMargins(),this._changeDetectorRef.markForCheck()})}_setContainerClass(e){const i=this._element.nativeElement.classList,r="mat-drawer-container-has-open";e?i.add(r):i.remove(r)}_validateDrawers(){this._start=this._end=null,this._drawers.forEach(e=>{"end"==e.position?this._end=e:this._start=e}),this._right=this._left=null,this._dir&&"rtl"===this._dir.value?(this._left=this._end,this._right=this._start):(this._left=this._start,this._right=this._end)}_isPushed(){return this._isDrawerOpen(this._start)&&"over"!=this._start.mode||this._isDrawerOpen(this._end)&&"over"!=this._end.mode}_onBackdropClicked(){this.backdropClick.emit(),this._closeModalDrawersViaBackdrop()}_closeModalDrawersViaBackdrop(){[this._start,this._end].filter(e=>e&&!e.disableClose&&this._drawerHasBackdrop(e)).forEach(e=>e._closeViaBackdropClick())}_isShowingBackdrop(){return this._isDrawerOpen(this._start)&&this._drawerHasBackdrop(this._start)||this._isDrawerOpen(this._end)&&this._drawerHasBackdrop(this._end)}_isDrawerOpen(e){return null!=e&&e.opened}_drawerHasBackdrop(e){return null==this._backdropOverride?!!e&&"side"!==e.mode:this._backdropOverride}static#e=this.\u0275fac=function(i){return new(i||t)(p(Xn,8),p(K),p(W),p(Ke),p(Ho),p(Yce),p(Bt,8))};static#t=this.\u0275cmp=ue({type:t,selectors:[["mat-drawer-container"]],contentQueries:function(i,r,o){if(1&i&&(Oe(o,Pg,5),Oe(o,TV,5)),2&i){let s;U(s=$())&&(r._content=s.first),U(s=$())&&(r._allDrawers=s)}},viewQuery:function(i,r){if(1&i&&Le(Pg,5),2&i){let o;U(o=$())&&(r._userContent=o.first)}},hostAttrs:[1,"mat-drawer-container"],hostVars:2,hostBindings:function(i,r){2&i&&de("mat-drawer-container-explicit-backdrop",r._backdropOverride)},inputs:{autosize:"autosize",hasBackdrop:"hasBackdrop"},outputs:{backdropClick:"backdropClick"},exportAs:["matDrawerContainer"],standalone:!0,features:[ie([{provide:kV,useExisting:t}]),ve],ngContentSelectors:qce,decls:4,vars:2,consts:[[1,"mat-drawer-backdrop",3,"mat-drawer-shown"],[1,"mat-drawer-backdrop",3,"click"]],template:function(i,r){1&i&&($e($ce),H(0,Gce,1,2,"div",0),Y(1),Y(2,1),H(3,Wce,2,0,"mat-drawer-content")),2&i&&(X(0,r.hasBackdrop?0:-1),C(3),X(3,r._content?-1:3))},dependencies:[Pg],styles:['.mat-drawer-container{position:relative;z-index:1;color:var(--mat-sidenav-content-text-color);background-color:var(--mat-sidenav-content-background-color);box-sizing:border-box;-webkit-overflow-scrolling:touch;display:block;overflow:hidden}.mat-drawer-container[fullscreen]{top:0;left:0;right:0;bottom:0;position:absolute}.mat-drawer-container[fullscreen].mat-drawer-container-has-open{overflow:hidden}.mat-drawer-container.mat-drawer-container-explicit-backdrop .mat-drawer-side{z-index:3}.mat-drawer-container.ng-animate-disabled .mat-drawer-backdrop,.mat-drawer-container.ng-animate-disabled .mat-drawer-content,.ng-animate-disabled .mat-drawer-container .mat-drawer-backdrop,.ng-animate-disabled .mat-drawer-container .mat-drawer-content{transition:none}.mat-drawer-backdrop{top:0;left:0;right:0;bottom:0;position:absolute;display:block;z-index:3;visibility:hidden}.mat-drawer-backdrop.mat-drawer-shown{visibility:visible;background-color:var(--mat-sidenav-scrim-color)}.mat-drawer-transition .mat-drawer-backdrop{transition-duration:400ms;transition-timing-function:cubic-bezier(0.25, 0.8, 0.25, 1);transition-property:background-color,visibility}.cdk-high-contrast-active .mat-drawer-backdrop{opacity:.5}.mat-drawer-content{position:relative;z-index:1;display:block;height:100%;overflow:auto}.mat-drawer-transition .mat-drawer-content{transition-duration:400ms;transition-timing-function:cubic-bezier(0.25, 0.8, 0.25, 1);transition-property:transform,margin-left,margin-right}.mat-drawer{position:relative;z-index:4;color:var(--mat-sidenav-container-text-color);box-shadow:var(--mat-sidenav-container-elevation-shadow);background-color:var(--mat-sidenav-container-background-color);border-top-right-radius:var(--mat-sidenav-container-shape);border-bottom-right-radius:var(--mat-sidenav-container-shape);width:var(--mat-sidenav-container-width);display:block;position:absolute;top:0;bottom:0;z-index:3;outline:0;box-sizing:border-box;overflow-y:auto;transform:translate3d(-100%, 0, 0)}.cdk-high-contrast-active .mat-drawer,.cdk-high-contrast-active [dir=rtl] .mat-drawer.mat-drawer-end{border-right:solid 1px currentColor}.cdk-high-contrast-active [dir=rtl] .mat-drawer,.cdk-high-contrast-active .mat-drawer.mat-drawer-end{border-left:solid 1px currentColor;border-right:none}.mat-drawer.mat-drawer-side{z-index:2}.mat-drawer.mat-drawer-end{right:0;transform:translate3d(100%, 0, 0);border-top-left-radius:var(--mat-sidenav-container-shape);border-bottom-left-radius:var(--mat-sidenav-container-shape);border-top-right-radius:0;border-bottom-right-radius:0}[dir=rtl] .mat-drawer{border-top-left-radius:var(--mat-sidenav-container-shape);border-bottom-left-radius:var(--mat-sidenav-container-shape);border-top-right-radius:0;border-bottom-right-radius:0;transform:translate3d(100%, 0, 0)}[dir=rtl] .mat-drawer.mat-drawer-end{border-top-right-radius:var(--mat-sidenav-container-shape);border-bottom-right-radius:var(--mat-sidenav-container-shape);border-top-left-radius:0;border-bottom-left-radius:0;left:0;right:auto;transform:translate3d(-100%, 0, 0)}.mat-drawer[style*="visibility: hidden"]{display:none}.mat-drawer-side{box-shadow:none;border-right-color:var(--mat-sidenav-container-divider-color);border-right-width:1px;border-right-style:solid}.mat-drawer-side.mat-drawer-end{border-left-color:var(--mat-sidenav-container-divider-color);border-left-width:1px;border-left-style:solid;border-right:none}[dir=rtl] .mat-drawer-side{border-left-color:var(--mat-sidenav-container-divider-color);border-left-width:1px;border-left-style:solid;border-right:none}[dir=rtl] .mat-drawer-side.mat-drawer-end{border-right-color:var(--mat-sidenav-container-divider-color);border-right-width:1px;border-right-style:solid;border-left:none}.mat-drawer-inner-container{width:100%;height:100%;overflow:auto;-webkit-overflow-scrolling:touch}.mat-sidenav-fixed{position:fixed}'],encapsulation:2,changeDetection:0})}return t})(),Xce=(()=>{class t{static#e=this.\u0275fac=function(i){return new(i||t)};static#t=this.\u0275mod=ge({type:t});static#n=this.\u0275inj=he({imports:[Te,zo,zo,Te]})}return t})();const Zce=[[["caption"]],[["colgroup"],["col"]],"*"],Jce=["caption","colgroup, col","*"];function ele(t,n){1&t&&Y(0,2)}function tle(t,n){1&t&&(y(0,"thead",0),Bn(1,1),w(),y(2,"tbody",0),Bn(3,2)(4,3),w(),y(5,"tfoot",0),Bn(6,4),w())}function nle(t,n){1&t&&Bn(0,1)(1,2)(2,3)(3,4)}const Fr=new M("CDK_TABLE");let ol=(()=>{class t{constructor(e){this.template=e}static#e=this.\u0275fac=function(i){return new(i||t)(p(yt))};static#t=this.\u0275dir=R({type:t,selectors:[["","cdkCellDef",""]],standalone:!0})}return t})(),sl=(()=>{class t{constructor(e){this.template=e}static#e=this.\u0275fac=function(i){return new(i||t)(p(yt))};static#t=this.\u0275dir=R({type:t,selectors:[["","cdkHeaderCellDef",""]],standalone:!0})}return t})(),Lg=(()=>{class t{constructor(e){this.template=e}static#e=this.\u0275fac=function(i){return new(i||t)(p(yt))};static#t=this.\u0275dir=R({type:t,selectors:[["","cdkFooterCellDef",""]],standalone:!0})}return t})(),uo=(()=>{class t{get name(){return this._name}set name(e){this._setNameInput(e)}get sticky(){return this._sticky}set sticky(e){e!==this._sticky&&(this._sticky=e,this._hasStickyChanged=!0)}get stickyEnd(){return this._stickyEnd}set stickyEnd(e){e!==this._stickyEnd&&(this._stickyEnd=e,this._hasStickyChanged=!0)}constructor(e){this._table=e,this._hasStickyChanged=!1,this._sticky=!1,this._stickyEnd=!1}hasStickyChanged(){const e=this._hasStickyChanged;return this.resetStickyChanged(),e}resetStickyChanged(){this._hasStickyChanged=!1}_updateColumnCssClassName(){this._columnCssClassName=[`cdk-column-${this.cssClassFriendlyName}`]}_setNameInput(e){e&&(this._name=e,this.cssClassFriendlyName=e.replace(/[^a-z0-9_-]/gi,"-"),this._updateColumnCssClassName())}static#e=this.\u0275fac=function(i){return new(i||t)(p(Fr,8))};static#t=this.\u0275dir=R({type:t,selectors:[["","cdkColumnDef",""]],contentQueries:function(i,r,o){if(1&i&&(Oe(o,ol,5),Oe(o,sl,5),Oe(o,Lg,5)),2&i){let s;U(s=$())&&(r.cell=s.first),U(s=$())&&(r.headerCell=s.first),U(s=$())&&(r.footerCell=s.first)}},inputs:{name:[D.None,"cdkColumnDef","name"],sticky:[D.HasDecoratorInputTransform,"sticky","sticky",j],stickyEnd:[D.HasDecoratorInputTransform,"stickyEnd","stickyEnd",j]},standalone:!0,features:[ie([{provide:"MAT_SORT_HEADER_COLUMN_DEF",useExisting:t}]),Fe]})}return t})();class RC{constructor(n,e){e.nativeElement.classList.add(...n._columnCssClassName)}}let OC=(()=>{class t extends RC{constructor(e,i){super(e,i)}static#e=this.\u0275fac=function(i){return new(i||t)(p(uo),p(K))};static#t=this.\u0275dir=R({type:t,selectors:[["cdk-header-cell"],["th","cdk-header-cell",""]],hostAttrs:["role","columnheader",1,"cdk-header-cell"],standalone:!0,features:[J]})}return t})(),NC=(()=>{class t extends RC{constructor(e,i){super(e,i);const r=e._table?._getCellRole();r&&i.nativeElement.setAttribute("role",r)}static#e=this.\u0275fac=function(i){return new(i||t)(p(uo),p(K))};static#t=this.\u0275dir=R({type:t,selectors:[["cdk-cell"],["td","cdk-cell",""]],hostAttrs:[1,"cdk-cell"],standalone:!0,features:[J]})}return t})();class IV{constructor(){this.tasks=[],this.endTasks=[]}}const FC=new M("_COALESCED_STYLE_SCHEDULER");let AV=(()=>{class t{constructor(e){this._ngZone=e,this._currentSchedule=null,this._destroyed=new Z}schedule(e){this._createScheduleIfNeeded(),this._currentSchedule.tasks.push(e)}scheduleEnd(e){this._createScheduleIfNeeded(),this._currentSchedule.endTasks.push(e)}ngOnDestroy(){this._destroyed.next(),this._destroyed.complete()}_createScheduleIfNeeded(){this._currentSchedule||(this._currentSchedule=new IV,this._getScheduleObservable().pipe(pe(this._destroyed)).subscribe(()=>{for(;this._currentSchedule.tasks.length||this._currentSchedule.endTasks.length;){const e=this._currentSchedule;this._currentSchedule=new IV;for(const i of e.tasks)i();for(const i of e.endTasks)i()}this._currentSchedule=null}))}_getScheduleObservable(){return this._ngZone.isStable?jt(Promise.resolve(void 0)):this._ngZone.onStable.pipe(gt(1))}static#e=this.\u0275fac=function(i){return new(i||t)(S(W))};static#t=this.\u0275prov=P({token:t,factory:t.\u0275fac})}return t})(),PC=(()=>{class t{constructor(e,i){this.template=e,this._differs=i}ngOnChanges(e){if(!this._columnsDiffer){const i=e.columns&&e.columns.currentValue||[];this._columnsDiffer=this._differs.find(i).create(),this._columnsDiffer.diff(i)}}getColumnsDiff(){return this._columnsDiffer.diff(this.columns)}extractCellTemplate(e){return this instanceof Ku?e.headerCell.template:this instanceof Xu?e.footerCell.template:e.cell.template}static#e=this.\u0275fac=function(i){return new(i||t)(p(yt),p(Io))};static#t=this.\u0275dir=R({type:t,features:[Ft]})}return t})(),Ku=(()=>{class t extends PC{get sticky(){return this._sticky}set sticky(e){e!==this._sticky&&(this._sticky=e,this._hasStickyChanged=!0)}constructor(e,i,r){super(e,i),this._table=r,this._hasStickyChanged=!1,this._sticky=!1}ngOnChanges(e){super.ngOnChanges(e)}hasStickyChanged(){const e=this._hasStickyChanged;return this.resetStickyChanged(),e}resetStickyChanged(){this._hasStickyChanged=!1}static#e=this.\u0275fac=function(i){return new(i||t)(p(yt),p(Io),p(Fr,8))};static#t=this.\u0275dir=R({type:t,selectors:[["","cdkHeaderRowDef",""]],inputs:{columns:[D.None,"cdkHeaderRowDef","columns"],sticky:[D.HasDecoratorInputTransform,"cdkHeaderRowDefSticky","sticky",j]},standalone:!0,features:[Fe,J,Ft]})}return t})(),Xu=(()=>{class t extends PC{get sticky(){return this._sticky}set sticky(e){e!==this._sticky&&(this._sticky=e,this._hasStickyChanged=!0)}constructor(e,i,r){super(e,i),this._table=r,this._hasStickyChanged=!1,this._sticky=!1}ngOnChanges(e){super.ngOnChanges(e)}hasStickyChanged(){const e=this._hasStickyChanged;return this.resetStickyChanged(),e}resetStickyChanged(){this._hasStickyChanged=!1}static#e=this.\u0275fac=function(i){return new(i||t)(p(yt),p(Io),p(Fr,8))};static#t=this.\u0275dir=R({type:t,selectors:[["","cdkFooterRowDef",""]],inputs:{columns:[D.None,"cdkFooterRowDef","columns"],sticky:[D.HasDecoratorInputTransform,"cdkFooterRowDefSticky","sticky",j]},standalone:!0,features:[Fe,J,Ft]})}return t})(),Vg=(()=>{class t extends PC{constructor(e,i,r){super(e,i),this._table=r}static#e=this.\u0275fac=function(i){return new(i||t)(p(yt),p(Io),p(Fr,8))};static#t=this.\u0275dir=R({type:t,selectors:[["","cdkRowDef",""]],inputs:{columns:[D.None,"cdkRowDefColumns","columns"],when:[D.None,"cdkRowDefWhen","when"]},standalone:!0,features:[J]})}return t})(),ho=(()=>{class t{static#e=this.mostRecentCellOutlet=null;constructor(e){this._viewContainer=e,t.mostRecentCellOutlet=this}ngOnDestroy(){t.mostRecentCellOutlet===this&&(t.mostRecentCellOutlet=null)}static#t=this.\u0275fac=function(i){return new(i||t)(p(Tt))};static#n=this.\u0275dir=R({type:t,selectors:[["","cdkCellOutlet",""]],standalone:!0})}return t})(),LC=(()=>{class t{static#e=this.\u0275fac=function(i){return new(i||t)};static#t=this.\u0275cmp=ue({type:t,selectors:[["cdk-header-row"],["tr","cdk-header-row",""]],hostAttrs:["role","row",1,"cdk-header-row"],standalone:!0,features:[ve],decls:1,vars:0,consts:[["cdkCellOutlet",""]],template:function(i,r){1&i&&Bn(0,0)},dependencies:[ho],encapsulation:2})}return t})(),BC=(()=>{class t{static#e=this.\u0275fac=function(i){return new(i||t)};static#t=this.\u0275cmp=ue({type:t,selectors:[["cdk-row"],["tr","cdk-row",""]],hostAttrs:["role","row",1,"cdk-row"],standalone:!0,features:[ve],decls:1,vars:0,consts:[["cdkCellOutlet",""]],template:function(i,r){1&i&&Bn(0,0)},dependencies:[ho],encapsulation:2})}return t})(),Bg=(()=>{class t{constructor(e){this.templateRef=e,this._contentClassName="cdk-no-data-row"}static#e=this.\u0275fac=function(i){return new(i||t)(p(yt))};static#t=this.\u0275dir=R({type:t,selectors:[["ng-template","cdkNoDataRow",""]],standalone:!0})}return t})();const RV=["top","bottom","left","right"];class sle{constructor(n,e,i,r,o=!0,s=!0,a){this._isNativeHtmlTable=n,this._stickCellCss=e,this.direction=i,this._coalescedStyleScheduler=r,this._isBrowser=o,this._needsPositionStickyOnElement=s,this._positionListener=a,this._cachedCellWidths=[],this._borderCellCss={top:`${e}-border-elem-top`,bottom:`${e}-border-elem-bottom`,left:`${e}-border-elem-left`,right:`${e}-border-elem-right`}}clearStickyPositioning(n,e){const i=[];for(const r of n)if(r.nodeType===r.ELEMENT_NODE){i.push(r);for(let o=0;o{for(const r of i)this._removeStickyStyle(r,e)})}updateStickyColumns(n,e,i,r=!0){n.length&&this._isBrowser&&(e.some(o=>o)||i.some(o=>o))?this._coalescedStyleScheduler.schedule(()=>{const o=n[0],s=o.children.length,a=this._getCellWidths(o,r),c=this._getStickyStartColumnPositions(a,e),l=this._getStickyEndColumnPositions(a,i),d=e.lastIndexOf(!0),u=i.indexOf(!0),h="rtl"===this.direction,f=h?"right":"left",m=h?"left":"right";for(const g of n)for(let _=0;_e[_]?g:null)}),this._positionListener.stickyEndColumnsUpdated({sizes:-1===u?[]:a.slice(u).map((g,_)=>i[_+u]?g:null).reverse()}))}):this._positionListener&&(this._positionListener.stickyColumnsUpdated({sizes:[]}),this._positionListener.stickyEndColumnsUpdated({sizes:[]}))}stickRows(n,e,i){this._isBrowser&&this._coalescedStyleScheduler.schedule(()=>{const r="bottom"===i?n.slice().reverse():n,o="bottom"===i?e.slice().reverse():e,s=[],a=[],c=[];for(let d=0,u=0;d{const i=n.querySelector("tfoot");i&&(e.some(r=>!r)?this._removeStickyStyle(i,["bottom"]):this._addStickyStyle(i,"bottom",0,!1))})}_removeStickyStyle(n,e){for(const r of e)n.style[r]="",n.classList.remove(this._borderCellCss[r]);RV.some(r=>-1===e.indexOf(r)&&n.style[r])?n.style.zIndex=this._getCalculatedZIndex(n):(n.style.zIndex="",this._needsPositionStickyOnElement&&(n.style.position=""),n.classList.remove(this._stickCellCss))}_addStickyStyle(n,e,i,r){n.classList.add(this._stickCellCss),r&&n.classList.add(this._borderCellCss[e]),n.style[e]=`${i}px`,n.style.zIndex=this._getCalculatedZIndex(n),this._needsPositionStickyOnElement&&(n.style.cssText+="position: -webkit-sticky; position: sticky; ")}_getCalculatedZIndex(n){const e={top:100,bottom:10,left:1,right:1};let i=0;for(const r of RV)n.style[r]&&(i+=e[r]);return i?`${i}`:""}_getCellWidths(n,e=!0){if(!e&&this._cachedCellWidths.length)return this._cachedCellWidths;const i=[],r=n.children;for(let o=0;o0;o--)e[o]&&(i[o]=r,r+=n[o]);return i}}const jC=new M("CDK_SPL");let HC=(()=>{class t{constructor(e,i){this.viewContainer=e,this.elementRef=i;const r=T(Fr);r._rowOutlet=this,r._outletAssigned()}static#e=this.\u0275fac=function(i){return new(i||t)(p(Tt),p(K))};static#t=this.\u0275dir=R({type:t,selectors:[["","rowOutlet",""]],standalone:!0})}return t})(),zC=(()=>{class t{constructor(e,i){this.viewContainer=e,this.elementRef=i;const r=T(Fr);r._headerRowOutlet=this,r._outletAssigned()}static#e=this.\u0275fac=function(i){return new(i||t)(p(Tt),p(K))};static#t=this.\u0275dir=R({type:t,selectors:[["","headerRowOutlet",""]],standalone:!0})}return t})(),UC=(()=>{class t{constructor(e,i){this.viewContainer=e,this.elementRef=i;const r=T(Fr);r._footerRowOutlet=this,r._outletAssigned()}static#e=this.\u0275fac=function(i){return new(i||t)(p(Tt),p(K))};static#t=this.\u0275dir=R({type:t,selectors:[["","footerRowOutlet",""]],standalone:!0})}return t})(),$C=(()=>{class t{constructor(e,i){this.viewContainer=e,this.elementRef=i;const r=T(Fr);r._noDataRowOutlet=this,r._outletAssigned()}static#e=this.\u0275fac=function(i){return new(i||t)(p(Tt),p(K))};static#t=this.\u0275dir=R({type:t,selectors:[["","noDataRowOutlet",""]],standalone:!0})}return t})(),jg=(()=>{class t{_getCellRole(){if(void 0===this._cellRoleInternal){const e=this._elementRef.nativeElement.getAttribute("role"),i="grid"===e||"treegrid"===e?"gridcell":"cell";this._cellRoleInternal=this._isNativeHtmlTable&&"cell"===i?null:i}return this._cellRoleInternal}get trackBy(){return this._trackByFn}set trackBy(e){this._trackByFn=e}get dataSource(){return this._dataSource}set dataSource(e){this._dataSource!==e&&this._switchDataSource(e)}get multiTemplateDataRows(){return this._multiTemplateDataRows}set multiTemplateDataRows(e){this._multiTemplateDataRows=e,this._rowOutlet&&this._rowOutlet.viewContainer.length&&(this._forceRenderDataRows(),this.updateStickyColumnStyles())}get fixedLayout(){return this._fixedLayout}set fixedLayout(e){this._fixedLayout=e,this._forceRecalculateCellWidths=!0,this._stickyColumnStylesNeedReset=!0}constructor(e,i,r,o,s,a,c,l,d,u,h,f){this._differs=e,this._changeDetectorRef=i,this._elementRef=r,this._dir=s,this._platform=c,this._viewRepeater=l,this._coalescedStyleScheduler=d,this._viewportRuler=u,this._stickyPositioningListener=h,this._ngZone=f,this._onDestroy=new Z,this._columnDefsByName=new Map,this._customColumnDefs=new Set,this._customRowDefs=new Set,this._customHeaderRowDefs=new Set,this._customFooterRowDefs=new Set,this._headerRowDefChanged=!0,this._footerRowDefChanged=!0,this._stickyColumnStylesNeedReset=!0,this._forceRecalculateCellWidths=!0,this._cachedRenderRowsMap=new Map,this.stickyCssClass="cdk-table-sticky",this.needsPositionStickyOnElement=!0,this._isShowingNoDataRow=!1,this._hasAllOutlets=!1,this._hasInitialized=!1,this._cellRoleInternal=void 0,this._multiTemplateDataRows=!1,this._fixedLayout=!1,this.contentChanged=new G,this.viewChange=new ct({start:0,end:Number.MAX_VALUE}),o||r.nativeElement.setAttribute("role","table"),this._document=a,this._isServer=!c.isBrowser,this._isNativeHtmlTable="TABLE"===r.nativeElement.nodeName}ngOnInit(){this._setupStickyStyler(),this._dataDiffer=this._differs.find([]).create((e,i)=>this.trackBy?this.trackBy(i.dataIndex,i.data):i),this._viewportRuler.change().pipe(pe(this._onDestroy)).subscribe(()=>{this._forceRecalculateCellWidths=!0})}ngAfterContentInit(){this._hasInitialized=!0}ngAfterContentChecked(){this._canRender()&&this._render()}ngOnDestroy(){[this._rowOutlet?.viewContainer,this._headerRowOutlet?.viewContainer,this._footerRowOutlet?.viewContainer,this._cachedRenderRowsMap,this._customColumnDefs,this._customRowDefs,this._customHeaderRowDefs,this._customFooterRowDefs,this._columnDefsByName].forEach(e=>{e?.clear()}),this._headerRowDefs=[],this._footerRowDefs=[],this._defaultRowDef=null,this._onDestroy.next(),this._onDestroy.complete(),_x(this.dataSource)&&this.dataSource.disconnect(this)}renderRows(){this._renderRows=this._getAllRenderRows();const e=this._dataDiffer.diff(this._renderRows);if(!e)return this._updateNoDataRow(),void this.contentChanged.next();const i=this._rowOutlet.viewContainer;this._viewRepeater.applyChanges(e,i,(r,o,s)=>this._getEmbeddedViewArgs(r.item,s),r=>r.item.data,r=>{r.operation===ao.INSERTED&&r.context&&this._renderCellTemplateForItem(r.record.item.rowDef,r.context)}),this._updateRowIndexContext(),e.forEachIdentityChange(r=>{i.get(r.currentIndex).context.$implicit=r.item.data}),this._updateNoDataRow(),this._ngZone&&W.isInAngularZone()?this._ngZone.onStable.pipe(gt(1),pe(this._onDestroy)).subscribe(()=>{this.updateStickyColumnStyles()}):this.updateStickyColumnStyles(),this.contentChanged.next()}addColumnDef(e){this._customColumnDefs.add(e)}removeColumnDef(e){this._customColumnDefs.delete(e)}addRowDef(e){this._customRowDefs.add(e)}removeRowDef(e){this._customRowDefs.delete(e)}addHeaderRowDef(e){this._customHeaderRowDefs.add(e),this._headerRowDefChanged=!0}removeHeaderRowDef(e){this._customHeaderRowDefs.delete(e),this._headerRowDefChanged=!0}addFooterRowDef(e){this._customFooterRowDefs.add(e),this._footerRowDefChanged=!0}removeFooterRowDef(e){this._customFooterRowDefs.delete(e),this._footerRowDefChanged=!0}setNoDataRow(e){this._customNoDataRow=e}updateStickyHeaderRowStyles(){const e=this._getRenderedRows(this._headerRowOutlet);if(this._isNativeHtmlTable){const r=OV(this._headerRowOutlet,"thead");r&&(r.style.display=e.length?"":"none")}const i=this._headerRowDefs.map(r=>r.sticky);this._stickyStyler.clearStickyPositioning(e,["top"]),this._stickyStyler.stickRows(e,i,"top"),this._headerRowDefs.forEach(r=>r.resetStickyChanged())}updateStickyFooterRowStyles(){const e=this._getRenderedRows(this._footerRowOutlet);if(this._isNativeHtmlTable){const r=OV(this._footerRowOutlet,"tfoot");r&&(r.style.display=e.length?"":"none")}const i=this._footerRowDefs.map(r=>r.sticky);this._stickyStyler.clearStickyPositioning(e,["bottom"]),this._stickyStyler.stickRows(e,i,"bottom"),this._stickyStyler.updateStickyFooterContainer(this._elementRef.nativeElement,i),this._footerRowDefs.forEach(r=>r.resetStickyChanged())}updateStickyColumnStyles(){const e=this._getRenderedRows(this._headerRowOutlet),i=this._getRenderedRows(this._rowOutlet),r=this._getRenderedRows(this._footerRowOutlet);(this._isNativeHtmlTable&&!this._fixedLayout||this._stickyColumnStylesNeedReset)&&(this._stickyStyler.clearStickyPositioning([...e,...i,...r],["left","right"]),this._stickyColumnStylesNeedReset=!1),e.forEach((o,s)=>{this._addStickyColumnStyles([o],this._headerRowDefs[s])}),this._rowDefs.forEach(o=>{const s=[];for(let a=0;a{this._addStickyColumnStyles([o],this._footerRowDefs[s])}),Array.from(this._columnDefsByName.values()).forEach(o=>o.resetStickyChanged())}_outletAssigned(){!this._hasAllOutlets&&this._rowOutlet&&this._headerRowOutlet&&this._footerRowOutlet&&this._noDataRowOutlet&&(this._hasAllOutlets=!0,this._canRender()&&this._render())}_canRender(){return this._hasAllOutlets&&this._hasInitialized}_render(){this._cacheRowDefs(),this._cacheColumnDefs();const i=this._renderUpdatedColumns()||this._headerRowDefChanged||this._footerRowDefChanged;this._stickyColumnStylesNeedReset=this._stickyColumnStylesNeedReset||i,this._forceRecalculateCellWidths=i,this._headerRowDefChanged&&(this._forceRenderHeaderRows(),this._headerRowDefChanged=!1),this._footerRowDefChanged&&(this._forceRenderFooterRows(),this._footerRowDefChanged=!1),this.dataSource&&this._rowDefs.length>0&&!this._renderChangeSubscription?this._observeRenderChanges():this._stickyColumnStylesNeedReset&&this.updateStickyColumnStyles(),this._checkStickyStates()}_getAllRenderRows(){const e=[],i=this._cachedRenderRowsMap;this._cachedRenderRowsMap=new Map;for(let r=0;r{const a=r&&r.has(s)?r.get(s):[];if(a.length){const c=a.shift();return c.dataIndex=i,c}return{data:e,rowDef:s,dataIndex:i}})}_cacheColumnDefs(){this._columnDefsByName.clear(),Hg(this._getOwnDefs(this._contentColumnDefs),this._customColumnDefs).forEach(i=>{this._columnDefsByName.has(i.name),this._columnDefsByName.set(i.name,i)})}_cacheRowDefs(){this._headerRowDefs=Hg(this._getOwnDefs(this._contentHeaderRowDefs),this._customHeaderRowDefs),this._footerRowDefs=Hg(this._getOwnDefs(this._contentFooterRowDefs),this._customFooterRowDefs),this._rowDefs=Hg(this._getOwnDefs(this._contentRowDefs),this._customRowDefs);const e=this._rowDefs.filter(i=>!i.when);this._defaultRowDef=e[0]}_renderUpdatedColumns(){const e=(s,a)=>s||!!a.getColumnsDiff(),i=this._rowDefs.reduce(e,!1);i&&this._forceRenderDataRows();const r=this._headerRowDefs.reduce(e,!1);r&&this._forceRenderHeaderRows();const o=this._footerRowDefs.reduce(e,!1);return o&&this._forceRenderFooterRows(),i||r||o}_switchDataSource(e){this._data=[],_x(this.dataSource)&&this.dataSource.disconnect(this),this._renderChangeSubscription&&(this._renderChangeSubscription.unsubscribe(),this._renderChangeSubscription=null),e||(this._dataDiffer&&this._dataDiffer.diff([]),this._rowOutlet&&this._rowOutlet.viewContainer.clear()),this._dataSource=e}_observeRenderChanges(){if(!this.dataSource)return;let e;_x(this.dataSource)?e=this.dataSource.connect(this):Bw(this.dataSource)?e=this.dataSource:Array.isArray(this.dataSource)&&(e=se(this.dataSource)),this._renderChangeSubscription=e.pipe(pe(this._onDestroy)).subscribe(i=>{this._data=i||[],this.renderRows()})}_forceRenderHeaderRows(){this._headerRowOutlet.viewContainer.length>0&&this._headerRowOutlet.viewContainer.clear(),this._headerRowDefs.forEach((e,i)=>this._renderRow(this._headerRowOutlet,e,i)),this.updateStickyHeaderRowStyles()}_forceRenderFooterRows(){this._footerRowOutlet.viewContainer.length>0&&this._footerRowOutlet.viewContainer.clear(),this._footerRowDefs.forEach((e,i)=>this._renderRow(this._footerRowOutlet,e,i)),this.updateStickyFooterRowStyles()}_addStickyColumnStyles(e,i){const r=Array.from(i.columns||[]).map(a=>this._columnDefsByName.get(a)),o=r.map(a=>a.sticky),s=r.map(a=>a.stickyEnd);this._stickyStyler.updateStickyColumns(e,o,s,!this._fixedLayout||this._forceRecalculateCellWidths)}_getRenderedRows(e){const i=[];for(let r=0;r!o.when||o.when(i,e));else{let o=this._rowDefs.find(s=>s.when&&s.when(i,e))||this._defaultRowDef;o&&r.push(o)}return r}_getEmbeddedViewArgs(e,i){return{templateRef:e.rowDef.template,context:{$implicit:e.data},index:i}}_renderRow(e,i,r,o={}){const s=e.viewContainer.createEmbeddedView(i.template,o,r);return this._renderCellTemplateForItem(i,o),s}_renderCellTemplateForItem(e,i){for(let r of this._getCellTemplates(e))ho.mostRecentCellOutlet&&ho.mostRecentCellOutlet._viewContainer.createEmbeddedView(r,i);this._changeDetectorRef.markForCheck()}_updateRowIndexContext(){const e=this._rowOutlet.viewContainer;for(let i=0,r=e.length;i{const r=this._columnDefsByName.get(i);return e.extractCellTemplate(r)}):[]}_forceRenderDataRows(){this._dataDiffer.diff([]),this._rowOutlet.viewContainer.clear(),this.renderRows()}_checkStickyStates(){const e=(i,r)=>i||r.hasStickyChanged();this._headerRowDefs.reduce(e,!1)&&this.updateStickyHeaderRowStyles(),this._footerRowDefs.reduce(e,!1)&&this.updateStickyFooterRowStyles(),Array.from(this._columnDefsByName.values()).reduce(e,!1)&&(this._stickyColumnStylesNeedReset=!0,this.updateStickyColumnStyles())}_setupStickyStyler(){this._stickyStyler=new sle(this._isNativeHtmlTable,this.stickyCssClass,this._dir?this._dir.value:"ltr",this._coalescedStyleScheduler,this._platform.isBrowser,this.needsPositionStickyOnElement,this._stickyPositioningListener),(this._dir?this._dir.change:se()).pipe(pe(this._onDestroy)).subscribe(i=>{this._stickyStyler.direction=i,this.updateStickyColumnStyles()})}_getOwnDefs(e){return e.filter(i=>!i._table||i._table===this)}_updateNoDataRow(){const e=this._customNoDataRow||this._noDataRow;if(!e)return;const i=0===this._rowOutlet.viewContainer.length;if(i===this._isShowingNoDataRow)return;const r=this._noDataRowOutlet.viewContainer;if(i){const o=r.createEmbeddedView(e.templateRef),s=o.rootNodes[0];1===o.rootNodes.length&&s?.nodeType===this._document.ELEMENT_NODE&&(s.setAttribute("role","row"),s.classList.add(e._contentClassName))}else r.clear();this._isShowingNoDataRow=i,this._changeDetectorRef.markForCheck()}static#e=this.\u0275fac=function(i){return new(i||t)(p(Io),p(Ke),p(K),bi("role"),p(Xn,8),p(_e),p(ut),p(Au),p(FC),p(Ho),p(jC,12),p(W,8))};static#t=this.\u0275cmp=ue({type:t,selectors:[["cdk-table"],["table","cdk-table",""]],contentQueries:function(i,r,o){if(1&i&&(Oe(o,Bg,5),Oe(o,uo,5),Oe(o,Vg,5),Oe(o,Ku,5),Oe(o,Xu,5)),2&i){let s;U(s=$())&&(r._noDataRow=s.first),U(s=$())&&(r._contentColumnDefs=s),U(s=$())&&(r._contentRowDefs=s),U(s=$())&&(r._contentHeaderRowDefs=s),U(s=$())&&(r._contentFooterRowDefs=s)}},hostAttrs:[1,"cdk-table"],hostVars:2,hostBindings:function(i,r){2&i&&de("cdk-table-fixed-layout",r.fixedLayout)},inputs:{trackBy:"trackBy",dataSource:"dataSource",multiTemplateDataRows:[D.HasDecoratorInputTransform,"multiTemplateDataRows","multiTemplateDataRows",j],fixedLayout:[D.HasDecoratorInputTransform,"fixedLayout","fixedLayout",j]},outputs:{contentChanged:"contentChanged"},exportAs:["cdkTable"],standalone:!0,features:[ie([{provide:Fr,useExisting:t},{provide:Au,useClass:KP},{provide:FC,useClass:AV},{provide:jC,useValue:null}]),Fe,ve],ngContentSelectors:Jce,decls:5,vars:2,consts:[["role","rowgroup"],["headerRowOutlet",""],["rowOutlet",""],["noDataRowOutlet",""],["footerRowOutlet",""]],template:function(i,r){1&i&&($e(Zce),Y(0),Y(1,1),H(2,ele,1,0)(3,tle,7,0)(4,nle,4,0)),2&i&&(C(2),X(2,r._isServer?2:-1),C(),X(3,r._isNativeHtmlTable?3:4))},dependencies:[zC,HC,$C,UC],styles:[".cdk-table-fixed-layout{table-layout:fixed}"],encapsulation:2})}return t})();function Hg(t,n){return t.concat(Array.from(n))}function OV(t,n){const e=n.toUpperCase();let i=t.viewContainer.element.nativeElement;for(;i;){const r=1===i.nodeType?i.nodeName:null;if(r===e)return i;if("TABLE"===r)break;i=i.parentNode}return null}let cle=(()=>{class t{static#e=this.\u0275fac=function(i){return new(i||t)};static#t=this.\u0275mod=ge({type:t});static#n=this.\u0275inj=he({imports:[aw]})}return t})();const lle=[[["caption"]],[["colgroup"],["col"]],"*"],dle=["caption","colgroup, col","*"];function ule(t,n){1&t&&Y(0,2)}function hle(t,n){1&t&&(y(0,"thead",0),Bn(1,1),w(),y(2,"tbody",2),Bn(3,3)(4,4),w(),y(5,"tfoot",0),Bn(6,5),w())}function fle(t,n){1&t&&Bn(0,1)(1,3)(2,4)(3,5)}let FV=(()=>{class t extends jg{constructor(){super(...arguments),this.stickyCssClass="mat-mdc-table-sticky",this.needsPositionStickyOnElement=!1}static#e=this.\u0275fac=(()=>{let e;return function(r){return(e||(e=Be(t)))(r||t)}})();static#t=this.\u0275cmp=ue({type:t,selectors:[["mat-table"],["table","mat-table",""]],hostAttrs:[1,"mat-mdc-table","mdc-data-table__table"],hostVars:2,hostBindings:function(i,r){2&i&&de("mdc-table-fixed-layout",r.fixedLayout)},exportAs:["matTable"],standalone:!0,features:[ie([{provide:jg,useExisting:t},{provide:Fr,useExisting:t},{provide:FC,useClass:AV},{provide:Au,useClass:KP},{provide:jC,useValue:null}]),J,ve],ngContentSelectors:dle,decls:5,vars:2,consts:[["role","rowgroup"],["headerRowOutlet",""],["role","rowgroup",1,"mdc-data-table__content"],["rowOutlet",""],["noDataRowOutlet",""],["footerRowOutlet",""]],template:function(i,r){1&i&&($e(lle),Y(0),Y(1,1),H(2,ule,1,0)(3,hle,7,0)(4,fle,4,0)),2&i&&(C(2),X(2,r._isServer?2:-1),C(),X(3,r._isNativeHtmlTable?3:4))},dependencies:[zC,HC,$C,UC],styles:[".mat-mdc-table-sticky{position:sticky !important}.mdc-data-table{-webkit-overflow-scrolling:touch;display:inline-flex;flex-direction:column;box-sizing:border-box;position:relative}.mdc-data-table__table-container{-webkit-overflow-scrolling:touch;overflow-x:auto;width:100%}.mdc-data-table__table{min-width:100%;border:0;white-space:nowrap;border-spacing:0;table-layout:fixed}.mdc-data-table__cell{box-sizing:border-box;overflow:hidden;text-align:left;text-overflow:ellipsis}[dir=rtl] .mdc-data-table__cell,.mdc-data-table__cell[dir=rtl]{text-align:right}.mdc-data-table__cell--numeric{text-align:right}[dir=rtl] .mdc-data-table__cell--numeric,.mdc-data-table__cell--numeric[dir=rtl]{text-align:left}.mdc-data-table__header-cell{box-sizing:border-box;text-overflow:ellipsis;overflow:hidden;outline:none;text-align:left}[dir=rtl] .mdc-data-table__header-cell,.mdc-data-table__header-cell[dir=rtl]{text-align:right}.mdc-data-table__header-cell--numeric{text-align:right}[dir=rtl] .mdc-data-table__header-cell--numeric,.mdc-data-table__header-cell--numeric[dir=rtl]{text-align:left}.mdc-data-table__header-cell-wrapper{align-items:center;display:inline-flex;vertical-align:middle}.mdc-data-table__cell,.mdc-data-table__header-cell{padding:0 16px 0 16px}.mdc-data-table__header-cell--checkbox,.mdc-data-table__cell--checkbox{padding-left:4px;padding-right:0}[dir=rtl] .mdc-data-table__header-cell--checkbox,[dir=rtl] .mdc-data-table__cell--checkbox,.mdc-data-table__header-cell--checkbox[dir=rtl],.mdc-data-table__cell--checkbox[dir=rtl]{padding-left:0;padding-right:4px}mat-table{display:block}mat-header-row{min-height:56px}mat-row,mat-footer-row{min-height:48px}mat-row,mat-header-row,mat-footer-row{display:flex;border-width:0;border-bottom-width:1px;border-style:solid;align-items:center;box-sizing:border-box}mat-cell:first-of-type,mat-header-cell:first-of-type,mat-footer-cell:first-of-type{padding-left:24px}[dir=rtl] mat-cell:first-of-type:not(:only-of-type),[dir=rtl] mat-header-cell:first-of-type:not(:only-of-type),[dir=rtl] mat-footer-cell:first-of-type:not(:only-of-type){padding-left:0;padding-right:24px}mat-cell:last-of-type,mat-header-cell:last-of-type,mat-footer-cell:last-of-type{padding-right:24px}[dir=rtl] mat-cell:last-of-type:not(:only-of-type),[dir=rtl] mat-header-cell:last-of-type:not(:only-of-type),[dir=rtl] mat-footer-cell:last-of-type:not(:only-of-type){padding-right:0;padding-left:24px}mat-cell,mat-header-cell,mat-footer-cell{flex:1;display:flex;align-items:center;overflow:hidden;word-wrap:break-word;min-height:inherit}.mat-mdc-table{table-layout:auto;white-space:normal;background-color:var(--mat-table-background-color)}.mat-mdc-header-row{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;height:var(--mat-table-header-container-height, 56px);color:var(--mat-table-header-headline-color, rgba(0, 0, 0, 0.87));font-family:var(--mat-table-header-headline-font, Roboto, sans-serif);line-height:var(--mat-table-header-headline-line-height);font-size:var(--mat-table-header-headline-size, 14px);font-weight:var(--mat-table-header-headline-weight, 500)}.mat-mdc-row{height:var(--mat-table-row-item-container-height, 52px);color:var(--mat-table-row-item-label-text-color, rgba(0, 0, 0, 0.87))}.mat-mdc-row,.mdc-data-table__content{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mat-table-row-item-label-text-font, Roboto, sans-serif);line-height:var(--mat-table-row-item-label-text-line-height);font-size:var(--mat-table-row-item-label-text-size, 14px);font-weight:var(--mat-table-row-item-label-text-weight)}.mat-mdc-footer-row{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;height:var(--mat-table-footer-container-height, 52px);color:var(--mat-table-row-item-label-text-color, rgba(0, 0, 0, 0.87));font-family:var(--mat-table-footer-supporting-text-font, Roboto, sans-serif);line-height:var(--mat-table-footer-supporting-text-line-height);font-size:var(--mat-table-footer-supporting-text-size, 14px);font-weight:var(--mat-table-footer-supporting-text-weight);letter-spacing:var(--mat-table-footer-supporting-text-tracking)}.mat-mdc-header-cell{border-bottom-color:var(--mat-table-row-item-outline-color, rgba(0, 0, 0, 0.12));border-bottom-width:var(--mat-table-row-item-outline-width, 1px);border-bottom-style:solid;letter-spacing:var(--mat-table-header-headline-tracking);font-weight:inherit;line-height:inherit}.mat-mdc-cell{border-bottom-color:var(--mat-table-row-item-outline-color, rgba(0, 0, 0, 0.12));border-bottom-width:var(--mat-table-row-item-outline-width, 1px);border-bottom-style:solid;letter-spacing:var(--mat-table-row-item-label-text-tracking);line-height:inherit}.mdc-data-table__row:last-child .mat-mdc-cell{border-bottom:none}.mat-mdc-footer-cell{letter-spacing:var(--mat-table-row-item-label-text-tracking)}mat-row.mat-mdc-row,mat-header-row.mat-mdc-header-row,mat-footer-row.mat-mdc-footer-row{border-bottom:none}.mat-mdc-table tbody,.mat-mdc-table tfoot,.mat-mdc-table thead,.mat-mdc-cell,.mat-mdc-footer-cell,.mat-mdc-header-row,.mat-mdc-row,.mat-mdc-footer-row,.mat-mdc-table .mat-mdc-header-cell{background:inherit}.mat-mdc-table mat-header-row.mat-mdc-header-row,.mat-mdc-table mat-row.mat-mdc-row,.mat-mdc-table mat-footer-row.mat-mdc-footer-cell{height:unset}mat-header-cell.mat-mdc-header-cell,mat-cell.mat-mdc-cell,mat-footer-cell.mat-mdc-footer-cell{align-self:stretch}"],encapsulation:2})}return t})(),qC=(()=>{class t extends ol{static#e=this.\u0275fac=(()=>{let e;return function(r){return(e||(e=Be(t)))(r||t)}})();static#t=this.\u0275dir=R({type:t,selectors:[["","matCellDef",""]],standalone:!0,features:[ie([{provide:ol,useExisting:t}]),J]})}return t})(),GC=(()=>{class t extends sl{static#e=this.\u0275fac=(()=>{let e;return function(r){return(e||(e=Be(t)))(r||t)}})();static#t=this.\u0275dir=R({type:t,selectors:[["","matHeaderCellDef",""]],standalone:!0,features:[ie([{provide:sl,useExisting:t}]),J]})}return t})(),WC=(()=>{class t extends uo{get name(){return this._name}set name(e){this._setNameInput(e)}_updateColumnCssClassName(){super._updateColumnCssClassName(),this._columnCssClassName.push(`mat-column-${this.cssClassFriendlyName}`)}static#e=this.\u0275fac=(()=>{let e;return function(r){return(e||(e=Be(t)))(r||t)}})();static#t=this.\u0275dir=R({type:t,selectors:[["","matColumnDef",""]],inputs:{name:[D.None,"matColumnDef","name"]},standalone:!0,features:[ie([{provide:uo,useExisting:t},{provide:"MAT_SORT_HEADER_COLUMN_DEF",useExisting:t}]),J]})}return t})(),QC=(()=>{class t extends OC{static#e=this.\u0275fac=(()=>{let e;return function(r){return(e||(e=Be(t)))(r||t)}})();static#t=this.\u0275dir=R({type:t,selectors:[["mat-header-cell"],["th","mat-header-cell",""]],hostAttrs:["role","columnheader",1,"mat-mdc-header-cell","mdc-data-table__header-cell"],standalone:!0,features:[J]})}return t})(),YC=(()=>{class t extends NC{static#e=this.\u0275fac=(()=>{let e;return function(r){return(e||(e=Be(t)))(r||t)}})();static#t=this.\u0275dir=R({type:t,selectors:[["mat-cell"],["td","mat-cell",""]],hostAttrs:[1,"mat-mdc-cell","mdc-data-table__cell"],standalone:!0,features:[J]})}return t})(),PV=(()=>{class t extends Ku{static#e=this.\u0275fac=(()=>{let e;return function(r){return(e||(e=Be(t)))(r||t)}})();static#t=this.\u0275dir=R({type:t,selectors:[["","matHeaderRowDef",""]],inputs:{columns:[D.None,"matHeaderRowDef","columns"],sticky:[D.HasDecoratorInputTransform,"matHeaderRowDefSticky","sticky",j]},standalone:!0,features:[ie([{provide:Ku,useExisting:t}]),Fe,J]})}return t})(),LV=(()=>{class t extends Vg{static#e=this.\u0275fac=(()=>{let e;return function(r){return(e||(e=Be(t)))(r||t)}})();static#t=this.\u0275dir=R({type:t,selectors:[["","matRowDef",""]],inputs:{columns:[D.None,"matRowDefColumns","columns"],when:[D.None,"matRowDefWhen","when"]},standalone:!0,features:[ie([{provide:Vg,useExisting:t}]),J]})}return t})(),VV=(()=>{class t extends LC{static#e=this.\u0275fac=(()=>{let e;return function(r){return(e||(e=Be(t)))(r||t)}})();static#t=this.\u0275cmp=ue({type:t,selectors:[["mat-header-row"],["tr","mat-header-row",""]],hostAttrs:["role","row",1,"mat-mdc-header-row","mdc-data-table__header-row"],exportAs:["matHeaderRow"],standalone:!0,features:[ie([{provide:LC,useExisting:t}]),J,ve],decls:1,vars:0,consts:[["cdkCellOutlet",""]],template:function(i,r){1&i&&Bn(0,0)},dependencies:[ho],encapsulation:2})}return t})(),BV=(()=>{class t extends BC{static#e=this.\u0275fac=(()=>{let e;return function(r){return(e||(e=Be(t)))(r||t)}})();static#t=this.\u0275cmp=ue({type:t,selectors:[["mat-row"],["tr","mat-row",""]],hostAttrs:["role","row",1,"mat-mdc-row","mdc-data-table__row"],exportAs:["matRow"],standalone:!0,features:[ie([{provide:BC,useExisting:t}]),J,ve],decls:1,vars:0,consts:[["cdkCellOutlet",""]],template:function(i,r){1&i&&Bn(0,0)},dependencies:[ho],encapsulation:2})}return t})(),wle=(()=>{class t{static#e=this.\u0275fac=function(i){return new(i||t)};static#t=this.\u0275mod=ge({type:t});static#n=this.\u0275inj=he({imports:[Te,cle,Te]})}return t})();const KC=["*"];function Cle(t,n){1&t&&Y(0)}const Dle=["tabListContainer"],Ele=["tabList"],kle=["tabListInner"],Tle=["nextPaginator"],Sle=["previousPaginator"],Mle=t=>({animationDuration:t}),Ile=(t,n)=>({value:t,params:n});function Ale(t,n){}const Rle=["tabBodyWrapper"],Ole=["tabHeader"];function Nle(t,n){}function Fle(t,n){1&t&&H(0,Nle,0,0,"ng-template",12),2&t&&z("cdkPortalOutlet",L().$implicit.templateLabel)}function Ple(t,n){1&t&&A(0),2&t&&wt(L().$implicit.textLabel)}function Lle(t,n){if(1&t){const e=et();y(0,"div",7,2),q("click",function(){const r=ee(e),o=r.$implicit,s=r.$index,a=L(),c=ai(1);return te(a._handleClick(o,c,s))})("cdkFocusChange",function(r){const o=ee(e).$index;return te(L()._tabFocusChanged(r,o))}),re(2,"span",8)(3,"div",9),y(4,"span",10)(5,"span",11),H(6,Fle,1,1,null,12)(7,Ple,1,1),w()()()}if(2&t){const e=n.$implicit,i=n.$index,r=ai(1),o=L();bn(e.labelClass),de("mdc-tab--active",o.selectedIndex===i),z("id",o._getTabLabelId(i))("disabled",e.disabled)("fitInkBarToContent",o.fitInkBarToContent),me("tabIndex",o._getTabIndex(i))("aria-posinset",i+1)("aria-setsize",o._tabs.length)("aria-controls",o._getTabContentId(i))("aria-selected",o.selectedIndex===i)("aria-label",e.ariaLabel||null)("aria-labelledby",!e.ariaLabel&&e.ariaLabelledby?e.ariaLabelledby:null),C(3),z("matRippleTrigger",r)("matRippleDisabled",e.disabled||o.disableRipple),C(3),X(6,e.templateLabel?6:7)}}function Vle(t,n){1&t&&Y(0)}function Ble(t,n){if(1&t){const e=et();y(0,"mat-tab-body",13),q("_onCentered",function(){return ee(e),te(L()._removeTabBodyWrapperHeight())})("_onCentering",function(r){return ee(e),te(L()._setTabBodyWrapperHeight(r))}),w()}if(2&t){const e=n.$implicit,i=n.$index,r=L();bn(e.bodyClass),de("mat-mdc-tab-body-active",r.selectedIndex===i),z("id",r._getTabContentId(i))("content",e.content)("position",e.position)("origin",e.origin)("animationDuration",r.animationDuration)("preserveContent",r.preserveContent),me("tabindex",null!=r.contentTabIndex&&r.selectedIndex===i?r.contentTabIndex:null)("aria-labelledby",r._getTabLabelId(i))("aria-hidden",r.selectedIndex!==i)}}const jle=new M("MatTabContent");let XC=(()=>{class t{constructor(e){this.template=e}static#e=this.\u0275fac=function(i){return new(i||t)(p(yt))};static#t=this.\u0275dir=R({type:t,selectors:[["","matTabContent",""]],standalone:!0,features:[ie([{provide:jle,useExisting:t}])]})}return t})();const Hle=new M("MatTabLabel"),jV=new M("MAT_TAB");let ZC=(()=>{class t extends aZ{constructor(e,i,r){super(e,i),this._closestTab=r}static#e=this.\u0275fac=function(i){return new(i||t)(p(yt),p(Tt),p(jV,8))};static#t=this.\u0275dir=R({type:t,selectors:[["","mat-tab-label",""],["","matTabLabel",""]],standalone:!0,features:[ie([{provide:Hle,useExisting:t}]),J]})}return t})();const HV=new M("MAT_TAB_GROUP");let zg=(()=>{class t{get templateLabel(){return this._templateLabel}set templateLabel(e){this._setTemplateLabelInput(e)}get content(){return this._contentPortal}constructor(e,i){this._viewContainerRef=e,this._closestTabGroup=i,this.disabled=!1,this._explicitContent=void 0,this.textLabel="",this._contentPortal=null,this._stateChanges=new Z,this.position=null,this.origin=null,this.isActive=!1}ngOnChanges(e){(e.hasOwnProperty("textLabel")||e.hasOwnProperty("disabled"))&&this._stateChanges.next()}ngOnDestroy(){this._stateChanges.complete()}ngOnInit(){this._contentPortal=new jo(this._explicitContent||this._implicitContent,this._viewContainerRef)}_setTemplateLabelInput(e){e&&e._closestTab===this&&(this._templateLabel=e)}static#e=this.\u0275fac=function(i){return new(i||t)(p(Tt),p(HV,8))};static#t=this.\u0275cmp=ue({type:t,selectors:[["mat-tab"]],contentQueries:function(i,r,o){if(1&i&&(Oe(o,ZC,5),Oe(o,XC,7,yt)),2&i){let s;U(s=$())&&(r.templateLabel=s.first),U(s=$())&&(r._explicitContent=s.first)}},viewQuery:function(i,r){if(1&i&&Le(yt,7),2&i){let o;U(o=$())&&(r._implicitContent=o.first)}},hostAttrs:["hidden",""],inputs:{disabled:[D.HasDecoratorInputTransform,"disabled","disabled",j],textLabel:[D.None,"label","textLabel"],ariaLabel:[D.None,"aria-label","ariaLabel"],ariaLabelledby:[D.None,"aria-labelledby","ariaLabelledby"],labelClass:"labelClass",bodyClass:"bodyClass"},exportAs:["matTab"],standalone:!0,features:[ie([{provide:jV,useExisting:t}]),Fe,Ft,ve],ngContentSelectors:KC,decls:1,vars:0,template:function(i,r){1&i&&($e(),H(0,Cle,1,0,"ng-template"))},encapsulation:2})}return t})();const JC="mdc-tab-indicator--active",zV="mdc-tab-indicator--no-transition";class zle{constructor(n){this._items=n}hide(){this._items.forEach(n=>n.deactivateInkBar())}alignToElement(n){const e=this._items.find(r=>r.elementRef.nativeElement===n),i=this._currentItem;if(e!==i&&(i?.deactivateInkBar(),e)){const r=i?.elementRef.nativeElement.getBoundingClientRect?.();e.activateInkBar(r),this._currentItem=e}}}let Ule=(()=>{class t{constructor(){this._elementRef=T(K),this._fitToContent=!1}get fitInkBarToContent(){return this._fitToContent}set fitInkBarToContent(e){this._fitToContent!==e&&(this._fitToContent=e,this._inkBarElement&&this._appendInkBarElement())}activateInkBar(e){const i=this._elementRef.nativeElement;if(!e||!i.getBoundingClientRect||!this._inkBarContentElement)return void i.classList.add(JC);const r=i.getBoundingClientRect(),o=e.width/r.width,s=e.left-r.left;i.classList.add(zV),this._inkBarContentElement.style.setProperty("transform",`translateX(${s}px) scaleX(${o})`),i.getBoundingClientRect(),i.classList.remove(zV),i.classList.add(JC),this._inkBarContentElement.style.setProperty("transform","")}deactivateInkBar(){this._elementRef.nativeElement.classList.remove(JC)}ngOnInit(){this._createInkBarElement()}ngOnDestroy(){this._inkBarElement?.remove(),this._inkBarElement=this._inkBarContentElement=null}_createInkBarElement(){const e=this._elementRef.nativeElement.ownerDocument||document,i=this._inkBarElement=e.createElement("span"),r=this._inkBarContentElement=e.createElement("span");i.className="mdc-tab-indicator",r.className="mdc-tab-indicator__content mdc-tab-indicator__content--underline",i.appendChild(this._inkBarContentElement),this._appendInkBarElement()}_appendInkBarElement(){(this._fitToContent?this._elementRef.nativeElement.querySelector(".mdc-tab__content"):this._elementRef.nativeElement).appendChild(this._inkBarElement)}static#e=this.\u0275fac=function(i){return new(i||t)};static#t=this.\u0275dir=R({type:t,inputs:{fitInkBarToContent:[D.HasDecoratorInputTransform,"fitInkBarToContent","fitInkBarToContent",j]},features:[Fe]})}return t})(),UV=(()=>{class t extends Ule{constructor(e){super(),this.elementRef=e,this.disabled=!1}focus(){this.elementRef.nativeElement.focus()}getOffsetLeft(){return this.elementRef.nativeElement.offsetLeft}getOffsetWidth(){return this.elementRef.nativeElement.offsetWidth}static#e=this.\u0275fac=function(i){return new(i||t)(p(K))};static#t=this.\u0275dir=R({type:t,selectors:[["","matTabLabelWrapper",""]],hostVars:3,hostBindings:function(i,r){2&i&&(me("aria-disabled",!!r.disabled),de("mat-mdc-tab-disabled",r.disabled))},inputs:{disabled:[D.HasDecoratorInputTransform,"disabled","disabled",j]},standalone:!0,features:[Fe,J]})}return t})();const $V=Lo({passive:!0});let Wle=(()=>{class t{get selectedIndex(){return this._selectedIndex}set selectedIndex(e){const i=isNaN(e)?0:e;this._selectedIndex!=i&&(this._selectedIndexChanged=!0,this._selectedIndex=i,this._keyManager&&this._keyManager.updateActiveItem(i))}constructor(e,i,r,o,s,a,c){this._elementRef=e,this._changeDetectorRef=i,this._viewportRuler=r,this._dir=o,this._ngZone=s,this._platform=a,this._animationMode=c,this._scrollDistance=0,this._selectedIndexChanged=!1,this._destroyed=new Z,this._showPaginationControls=!1,this._disableScrollAfter=!0,this._disableScrollBefore=!0,this._stopScrolling=new Z,this.disablePagination=!1,this._selectedIndex=0,this.selectFocusedIndex=new G,this.indexFocused=new G,s.runOutsideAngular(()=>{nr(e.nativeElement,"mouseleave").pipe(pe(this._destroyed)).subscribe(()=>{this._stopInterval()})})}ngAfterViewInit(){nr(this._previousPaginator.nativeElement,"touchstart",$V).pipe(pe(this._destroyed)).subscribe(()=>{this._handlePaginatorPress("before")}),nr(this._nextPaginator.nativeElement,"touchstart",$V).pipe(pe(this._destroyed)).subscribe(()=>{this._handlePaginatorPress("after")})}ngAfterContentInit(){const e=this._dir?this._dir.change:se("ltr"),i=this._viewportRuler.change(150),r=()=>{this.updatePagination(),this._alignInkBarToSelectedTab()};this._keyManager=new H0(this._items).withHorizontalOrientation(this._getLayoutDirection()).withHomeAndEnd().withWrap().skipPredicate(()=>!1),this._keyManager.updateActiveItem(this._selectedIndex),this._ngZone.onStable.pipe(gt(1)).subscribe(r),Ht(e,i,this._items.changes,this._itemsResized()).pipe(pe(this._destroyed)).subscribe(()=>{this._ngZone.run(()=>{Promise.resolve().then(()=>{this._scrollDistance=Math.max(0,Math.min(this._getMaxScrollDistance(),this._scrollDistance)),r()})}),this._keyManager.withHorizontalOrientation(this._getLayoutDirection())}),this._keyManager.change.subscribe(o=>{this.indexFocused.emit(o),this._setTabFocus(o)})}_itemsResized(){return"function"!=typeof ResizeObserver?Zt:this._items.changes.pipe(gn(this._items),nn(e=>new Ye(i=>this._ngZone.runOutsideAngular(()=>{const r=new ResizeObserver(o=>i.next(o));return e.forEach(o=>r.observe(o.elementRef.nativeElement)),()=>{r.disconnect()}}))),P0(1),Ge(e=>e.some(i=>i.contentRect.width>0&&i.contentRect.height>0)))}ngAfterContentChecked(){this._tabLabelCount!=this._items.length&&(this.updatePagination(),this._tabLabelCount=this._items.length,this._changeDetectorRef.markForCheck()),this._selectedIndexChanged&&(this._scrollToLabel(this._selectedIndex),this._checkScrollingControls(),this._alignInkBarToSelectedTab(),this._selectedIndexChanged=!1,this._changeDetectorRef.markForCheck()),this._scrollDistanceChanged&&(this._updateTabScrollPosition(),this._scrollDistanceChanged=!1,this._changeDetectorRef.markForCheck())}ngOnDestroy(){this._keyManager?.destroy(),this._destroyed.next(),this._destroyed.complete(),this._stopScrolling.complete()}_handleKeydown(e){if(!Kn(e))switch(e.keyCode){case 13:case 32:if(this.focusIndex!==this.selectedIndex){const i=this._items.get(this.focusIndex);i&&!i.disabled&&(this.selectFocusedIndex.emit(this.focusIndex),this._itemSelected(e))}break;default:this._keyManager.onKeydown(e)}}_onContentChanges(){const e=this._elementRef.nativeElement.textContent;e!==this._currentTextContent&&(this._currentTextContent=e||"",this._ngZone.run(()=>{this.updatePagination(),this._alignInkBarToSelectedTab(),this._changeDetectorRef.markForCheck()}))}updatePagination(){this._checkPaginationEnabled(),this._checkScrollingControls(),this._updateTabScrollPosition()}get focusIndex(){return this._keyManager?this._keyManager.activeItemIndex:0}set focusIndex(e){!this._isValidIndex(e)||this.focusIndex===e||!this._keyManager||this._keyManager.setActiveItem(e)}_isValidIndex(e){return!this._items||!!this._items.toArray()[e]}_setTabFocus(e){if(this._showPaginationControls&&this._scrollToLabel(e),this._items&&this._items.length){this._items.toArray()[e].focus();const i=this._tabListContainer.nativeElement;i.scrollLeft="ltr"==this._getLayoutDirection()?0:i.scrollWidth-i.offsetWidth}}_getLayoutDirection(){return this._dir&&"rtl"===this._dir.value?"rtl":"ltr"}_updateTabScrollPosition(){if(this.disablePagination)return;const e=this.scrollDistance,i="ltr"===this._getLayoutDirection()?-e:e;this._tabList.nativeElement.style.transform=`translateX(${Math.round(i)}px)`,(this._platform.TRIDENT||this._platform.EDGE)&&(this._tabListContainer.nativeElement.scrollLeft=0)}get scrollDistance(){return this._scrollDistance}set scrollDistance(e){this._scrollTo(e)}_scrollHeader(e){return this._scrollTo(this._scrollDistance+("before"==e?-1:1)*this._tabListContainer.nativeElement.offsetWidth/3)}_handlePaginatorClick(e){this._stopInterval(),this._scrollHeader(e)}_scrollToLabel(e){if(this.disablePagination)return;const i=this._items?this._items.toArray()[e]:null;if(!i)return;const r=this._tabListContainer.nativeElement.offsetWidth,{offsetLeft:o,offsetWidth:s}=i.elementRef.nativeElement;let a,c;"ltr"==this._getLayoutDirection()?(a=o,c=a+s):(c=this._tabListInner.nativeElement.offsetWidth-o,a=c-s);const l=this.scrollDistance,d=this.scrollDistance+r;ad&&(this.scrollDistance+=Math.min(c-d,a-l))}_checkPaginationEnabled(){if(this.disablePagination)this._showPaginationControls=!1;else{const e=this._tabListInner.nativeElement.scrollWidth>this._elementRef.nativeElement.offsetWidth;e||(this.scrollDistance=0),e!==this._showPaginationControls&&this._changeDetectorRef.markForCheck(),this._showPaginationControls=e}}_checkScrollingControls(){this.disablePagination?this._disableScrollAfter=this._disableScrollBefore=!0:(this._disableScrollBefore=0==this.scrollDistance,this._disableScrollAfter=this.scrollDistance==this._getMaxScrollDistance(),this._changeDetectorRef.markForCheck())}_getMaxScrollDistance(){return this._tabListInner.nativeElement.scrollWidth-this._tabListContainer.nativeElement.offsetWidth||0}_alignInkBarToSelectedTab(){const e=this._items&&this._items.length?this._items.toArray()[this.selectedIndex]:null,i=e?e.elementRef.nativeElement:null;i?this._inkBar.alignToElement(i):this._inkBar.hide()}_stopInterval(){this._stopScrolling.next()}_handlePaginatorPress(e,i){i&&null!=i.button&&0!==i.button||(this._stopInterval(),nw(650,100).pipe(pe(Ht(this._stopScrolling,this._destroyed))).subscribe(()=>{const{maxScrollDistance:r,distance:o}=this._scrollHeader(e);(0===o||o>=r)&&this._stopInterval()}))}_scrollTo(e){if(this.disablePagination)return{maxScrollDistance:0,distance:0};const i=this._getMaxScrollDistance();return this._scrollDistance=Math.max(0,Math.min(i,e)),this._scrollDistanceChanged=!0,this._checkScrollingControls(),{maxScrollDistance:i,distance:this._scrollDistance}}static#e=this.\u0275fac=function(i){return new(i||t)(p(K),p(Ke),p(Ho),p(Xn,8),p(W),p(ut),p(Bt,8))};static#t=this.\u0275dir=R({type:t,inputs:{disablePagination:[D.HasDecoratorInputTransform,"disablePagination","disablePagination",j],selectedIndex:[D.HasDecoratorInputTransform,"selectedIndex","selectedIndex",Jt]},outputs:{selectFocusedIndex:"selectFocusedIndex",indexFocused:"indexFocused"},features:[Fe]})}return t})(),Qle=(()=>{class t extends Wle{constructor(e,i,r,o,s,a,c){super(e,i,r,o,s,a,c),this.disableRipple=!1}ngAfterContentInit(){this._inkBar=new zle(this._items),super.ngAfterContentInit()}_itemSelected(e){e.preventDefault()}static#e=this.\u0275fac=function(i){return new(i||t)(p(K),p(Ke),p(Ho),p(Xn,8),p(W),p(ut),p(Bt,8))};static#t=this.\u0275cmp=ue({type:t,selectors:[["mat-tab-header"]],contentQueries:function(i,r,o){if(1&i&&Oe(o,UV,4),2&i){let s;U(s=$())&&(r._items=s)}},viewQuery:function(i,r){if(1&i&&(Le(Dle,7),Le(Ele,7),Le(kle,7),Le(Tle,5),Le(Sle,5)),2&i){let o;U(o=$())&&(r._tabListContainer=o.first),U(o=$())&&(r._tabList=o.first),U(o=$())&&(r._tabListInner=o.first),U(o=$())&&(r._nextPaginator=o.first),U(o=$())&&(r._previousPaginator=o.first)}},hostAttrs:[1,"mat-mdc-tab-header"],hostVars:4,hostBindings:function(i,r){2&i&&de("mat-mdc-tab-header-pagination-controls-enabled",r._showPaginationControls)("mat-mdc-tab-header-rtl","rtl"==r._getLayoutDirection())},inputs:{disableRipple:[D.HasDecoratorInputTransform,"disableRipple","disableRipple",j]},standalone:!0,features:[Fe,J,ve],ngContentSelectors:KC,decls:13,vars:10,consts:[["previousPaginator",""],["tabListContainer",""],["tabList",""],["tabListInner",""],["nextPaginator",""],["aria-hidden","true","type","button","mat-ripple","","tabindex","-1",1,"mat-mdc-tab-header-pagination","mat-mdc-tab-header-pagination-before",3,"click","mousedown","touchend","matRippleDisabled","disabled"],[1,"mat-mdc-tab-header-pagination-chevron"],[1,"mat-mdc-tab-label-container",3,"keydown"],["role","tablist",1,"mat-mdc-tab-list",3,"cdkObserveContent"],[1,"mat-mdc-tab-labels"],["aria-hidden","true","type","button","mat-ripple","","tabindex","-1",1,"mat-mdc-tab-header-pagination","mat-mdc-tab-header-pagination-after",3,"mousedown","click","touchend","matRippleDisabled","disabled"]],template:function(i,r){if(1&i){const o=et();$e(),y(0,"button",5,0),q("click",function(){return ee(o),te(r._handlePaginatorClick("before"))})("mousedown",function(a){return ee(o),te(r._handlePaginatorPress("before",a))})("touchend",function(){return ee(o),te(r._stopInterval())}),re(2,"div",6),w(),y(3,"div",7,1),q("keydown",function(a){return ee(o),te(r._handleKeydown(a))}),y(5,"div",8,2),q("cdkObserveContent",function(){return ee(o),te(r._onContentChanges())}),y(7,"div",9,3),Y(9),w()()(),y(10,"button",10,4),q("mousedown",function(a){return ee(o),te(r._handlePaginatorPress("after",a))})("click",function(){return ee(o),te(r._handlePaginatorClick("after"))})("touchend",function(){return ee(o),te(r._stopInterval())}),re(12,"div",6),w()}2&i&&(de("mat-mdc-tab-header-pagination-disabled",r._disableScrollBefore),z("matRippleDisabled",r._disableScrollBefore||r.disableRipple)("disabled",r._disableScrollBefore||null),C(3),de("_mat-animation-noopable","NoopAnimations"===r._animationMode),C(7),de("mat-mdc-tab-header-pagination-disabled",r._disableScrollAfter),z("matRippleDisabled",r._disableScrollAfter||r.disableRipple)("disabled",r._disableScrollAfter||null))},dependencies:[Bo,mK],styles:[".mat-mdc-tab-header{display:flex;overflow:hidden;position:relative;flex-shrink:0}.mdc-tab-indicator .mdc-tab-indicator__content{transition-duration:var(--mat-tab-animation-duration, 250ms)}.mat-mdc-tab-header-pagination{-webkit-user-select:none;user-select:none;position:relative;display:none;justify-content:center;align-items:center;min-width:32px;cursor:pointer;z-index:2;-webkit-tap-highlight-color:rgba(0,0,0,0);touch-action:none;box-sizing:content-box;background:none;border:none;outline:0;padding:0}.mat-mdc-tab-header-pagination::-moz-focus-inner{border:0}.mat-mdc-tab-header-pagination .mat-ripple-element{opacity:.12;background-color:var(--mat-tab-header-inactive-ripple-color)}.mat-mdc-tab-header-pagination-controls-enabled .mat-mdc-tab-header-pagination{display:flex}.mat-mdc-tab-header-pagination-before,.mat-mdc-tab-header-rtl .mat-mdc-tab-header-pagination-after{padding-left:4px}.mat-mdc-tab-header-pagination-before .mat-mdc-tab-header-pagination-chevron,.mat-mdc-tab-header-rtl .mat-mdc-tab-header-pagination-after .mat-mdc-tab-header-pagination-chevron{transform:rotate(-135deg)}.mat-mdc-tab-header-rtl .mat-mdc-tab-header-pagination-before,.mat-mdc-tab-header-pagination-after{padding-right:4px}.mat-mdc-tab-header-rtl .mat-mdc-tab-header-pagination-before .mat-mdc-tab-header-pagination-chevron,.mat-mdc-tab-header-pagination-after .mat-mdc-tab-header-pagination-chevron{transform:rotate(45deg)}.mat-mdc-tab-header-pagination-chevron{border-style:solid;border-width:2px 2px 0 0;height:8px;width:8px;border-color:var(--mat-tab-header-pagination-icon-color)}.mat-mdc-tab-header-pagination-disabled{box-shadow:none;cursor:default;pointer-events:none}.mat-mdc-tab-header-pagination-disabled .mat-mdc-tab-header-pagination-chevron{opacity:.4}.mat-mdc-tab-list{flex-grow:1;position:relative;transition:transform 500ms cubic-bezier(0.35, 0, 0.25, 1)}._mat-animation-noopable .mat-mdc-tab-list{transition:none}._mat-animation-noopable span.mdc-tab-indicator__content,._mat-animation-noopable span.mdc-tab__text-label{transition:none}.mat-mdc-tab-label-container{display:flex;flex-grow:1;overflow:hidden;z-index:1;border-bottom-style:solid;border-bottom-width:var(--mat-tab-header-divider-height);border-bottom-color:var(--mat-tab-header-divider-color)}.mat-mdc-tab-group-inverted-header .mat-mdc-tab-label-container{border-bottom:none;border-top-style:solid;border-top-width:var(--mat-tab-header-divider-height);border-top-color:var(--mat-tab-header-divider-color)}.mat-mdc-tab-labels{display:flex;flex:1 0 auto}[mat-align-tabs=center]>.mat-mdc-tab-header .mat-mdc-tab-labels{justify-content:center}[mat-align-tabs=end]>.mat-mdc-tab-header .mat-mdc-tab-labels{justify-content:flex-end}.mat-mdc-tab::before{margin:5px}.cdk-high-contrast-active .mat-mdc-tab[aria-disabled=true]{color:GrayText}"],encapsulation:2})}return t})();const Yle=new M("MAT_TABS_CONFIG"),Kle={translateTab:Ci("translateTab",[rn("center, void, left-origin-center, right-origin-center",Xe({transform:"none"})),rn("left",Xe({transform:"translate3d(-100%, 0, 0)",minHeight:"1px",visibility:"hidden"})),rn("right",Xe({transform:"translate3d(100%, 0, 0)",minHeight:"1px",visibility:"hidden"})),Xt("* => left, * => right, left => center, right => center",Kt("{{animationDuration}} cubic-bezier(0.35, 0, 0.25, 1)")),Xt("void => left-origin-center",[Xe({transform:"translate3d(-100%, 0, 0)",visibility:"hidden"}),Kt("{{animationDuration}} cubic-bezier(0.35, 0, 0.25, 1)")]),Xt("void => right-origin-center",[Xe({transform:"translate3d(100%, 0, 0)",visibility:"hidden"}),Kt("{{animationDuration}} cubic-bezier(0.35, 0, 0.25, 1)")])])};let Xle=(()=>{class t extends kc{constructor(e,i,r,o){super(e,i,o),this._host=r,this._centeringSub=Ae.EMPTY,this._leavingSub=Ae.EMPTY}ngOnInit(){super.ngOnInit(),this._centeringSub=this._host._beforeCentering.pipe(gn(this._host._isCenterPosition(this._host._position))).subscribe(e=>{e&&!this.hasAttached()&&this.attach(this._host._content)}),this._leavingSub=this._host._afterLeavingCenter.subscribe(()=>{this._host.preserveContent||this.detach()})}ngOnDestroy(){super.ngOnDestroy(),this._centeringSub.unsubscribe(),this._leavingSub.unsubscribe()}static#e=this.\u0275fac=function(i){return new(i||t)(p(vs),p(Tt),p(Ze(()=>qV)),p(_e))};static#t=this.\u0275dir=R({type:t,selectors:[["","matTabBodyHost",""]],standalone:!0,features:[J]})}return t})(),qV=(()=>{class t{set position(e){this._positionIndex=e,this._computePositionAnimationState()}constructor(e,i,r){this._elementRef=e,this._dir=i,this._dirChangeSubscription=Ae.EMPTY,this._translateTabComplete=new Z,this._onCentering=new G,this._beforeCentering=new G,this._afterLeavingCenter=new G,this._onCentered=new G(!0),this.animationDuration="500ms",this.preserveContent=!1,i&&(this._dirChangeSubscription=i.change.subscribe(o=>{this._computePositionAnimationState(o),r.markForCheck()})),this._translateTabComplete.pipe(ep((o,s)=>o.fromState===s.fromState&&o.toState===s.toState)).subscribe(o=>{this._isCenterPosition(o.toState)&&this._isCenterPosition(this._position)&&this._onCentered.emit(),this._isCenterPosition(o.fromState)&&!this._isCenterPosition(this._position)&&this._afterLeavingCenter.emit()})}ngOnInit(){"center"==this._position&&null!=this.origin&&(this._position=this._computePositionFromOrigin(this.origin))}ngOnDestroy(){this._dirChangeSubscription.unsubscribe(),this._translateTabComplete.complete()}_onTranslateTabStarted(e){const i=this._isCenterPosition(e.toState);this._beforeCentering.emit(i),i&&this._onCentering.emit(this._elementRef.nativeElement.clientHeight)}_getLayoutDirection(){return this._dir&&"rtl"===this._dir.value?"rtl":"ltr"}_isCenterPosition(e){return"center"==e||"left-origin-center"==e||"right-origin-center"==e}_computePositionAnimationState(e=this._getLayoutDirection()){this._position=this._positionIndex<0?"ltr"==e?"left":"right":this._positionIndex>0?"ltr"==e?"right":"left":"center"}_computePositionFromOrigin(e){const i=this._getLayoutDirection();return"ltr"==i&&e<=0||"rtl"==i&&e>0?"left-origin-center":"right-origin-center"}static#e=this.\u0275fac=function(i){return new(i||t)(p(K),p(Xn,8),p(Ke))};static#t=this.\u0275cmp=ue({type:t,selectors:[["mat-tab-body"]],viewQuery:function(i,r){if(1&i&&Le(kc,5),2&i){let o;U(o=$())&&(r._portalHost=o.first)}},hostAttrs:[1,"mat-mdc-tab-body"],inputs:{_content:[D.None,"content","_content"],origin:"origin",animationDuration:"animationDuration",preserveContent:"preserveContent",position:"position"},outputs:{_onCentering:"_onCentering",_beforeCentering:"_beforeCentering",_afterLeavingCenter:"_afterLeavingCenter",_onCentered:"_onCentered"},standalone:!0,features:[ve],decls:3,vars:6,consts:[["content",""],["cdkScrollable","",1,"mat-mdc-tab-body-content"],["matTabBodyHost",""]],template:function(i,r){if(1&i){const o=et();y(0,"div",1,0),q("@translateTab.start",function(a){return ee(o),te(r._onTranslateTabStarted(a))})("@translateTab.done",function(a){return ee(o),te(r._translateTabComplete.next(a))}),H(2,Ale,0,0,"ng-template",2),w()}2&i&&z("@translateTab",function TI(t,n,e,i,r){return MI(O(),Gn(),t,n,e,i,r)}(3,Ile,r._position,function kI(t,n,e,i){return SI(O(),Gn(),t,n,e,i)}(1,Mle,r.animationDuration)))},dependencies:[Xle,xp],styles:['.mat-mdc-tab-body{top:0;left:0;right:0;bottom:0;position:absolute;display:block;overflow:hidden;outline:0;flex-basis:100%}.mat-mdc-tab-body.mat-mdc-tab-body-active{position:relative;overflow-x:hidden;overflow-y:auto;z-index:1;flex-grow:1}.mat-mdc-tab-group.mat-mdc-tab-group-dynamic-height .mat-mdc-tab-body.mat-mdc-tab-body-active{overflow-y:hidden}.mat-mdc-tab-body-content{height:100%;overflow:auto}.mat-mdc-tab-group-dynamic-height .mat-mdc-tab-body-content{overflow:hidden}.mat-mdc-tab-body-content[style*="visibility: hidden"]{display:none}'],encapsulation:2,data:{animation:[Kle.translateTab]}})}return t})(),Zle=0,eD=(()=>{class t{get fitInkBarToContent(){return this._fitInkBarToContent}set fitInkBarToContent(e){this._fitInkBarToContent=e,this._changeDetectorRef.markForCheck()}get selectedIndex(){return this._selectedIndex}set selectedIndex(e){this._indexToSelect=isNaN(e)?null:e}get animationDuration(){return this._animationDuration}set animationDuration(e){const i=e+"";this._animationDuration=/^\d+$/.test(i)?e+"ms":i}get contentTabIndex(){return this._contentTabIndex}set contentTabIndex(e){this._contentTabIndex=isNaN(e)?null:e}get backgroundColor(){return this._backgroundColor}set backgroundColor(e){const i=this._elementRef.nativeElement.classList;i.remove("mat-tabs-with-background",`mat-background-${this.backgroundColor}`),e&&i.add("mat-tabs-with-background",`mat-background-${e}`),this._backgroundColor=e}constructor(e,i,r,o){this._elementRef=e,this._changeDetectorRef=i,this._animationMode=o,this._tabs=new $r,this._indexToSelect=0,this._lastFocusedTabIndex=null,this._tabBodyWrapperHeight=0,this._tabsSubscription=Ae.EMPTY,this._tabLabelSubscription=Ae.EMPTY,this._fitInkBarToContent=!1,this.stretchTabs=!0,this.dynamicHeight=!1,this._selectedIndex=null,this.headerPosition="above",this.disablePagination=!1,this.disableRipple=!1,this.preserveContent=!1,this.selectedIndexChange=new G,this.focusChange=new G,this.animationDone=new G,this.selectedTabChange=new G(!0),this._isServer=!T(ut).isBrowser,this._groupId=Zle++,this.animationDuration=r&&r.animationDuration?r.animationDuration:"500ms",this.disablePagination=!(!r||null==r.disablePagination)&&r.disablePagination,this.dynamicHeight=!(!r||null==r.dynamicHeight)&&r.dynamicHeight,null!=r?.contentTabIndex&&(this.contentTabIndex=r.contentTabIndex),this.preserveContent=!!r?.preserveContent,this.fitInkBarToContent=!(!r||null==r.fitInkBarToContent)&&r.fitInkBarToContent,this.stretchTabs=!r||null==r.stretchTabs||r.stretchTabs}ngAfterContentChecked(){const e=this._indexToSelect=this._clampTabIndex(this._indexToSelect);if(this._selectedIndex!=e){const i=null==this._selectedIndex;if(!i){this.selectedTabChange.emit(this._createChangeEvent(e));const r=this._tabBodyWrapper.nativeElement;r.style.minHeight=r.clientHeight+"px"}Promise.resolve().then(()=>{this._tabs.forEach((r,o)=>r.isActive=o===e),i||(this.selectedIndexChange.emit(e),this._tabBodyWrapper.nativeElement.style.minHeight="")})}this._tabs.forEach((i,r)=>{i.position=r-e,null!=this._selectedIndex&&0==i.position&&!i.origin&&(i.origin=e-this._selectedIndex)}),this._selectedIndex!==e&&(this._selectedIndex=e,this._lastFocusedTabIndex=null,this._changeDetectorRef.markForCheck())}ngAfterContentInit(){this._subscribeToAllTabChanges(),this._subscribeToTabLabels(),this._tabsSubscription=this._tabs.changes.subscribe(()=>{const e=this._clampTabIndex(this._indexToSelect);if(e===this._selectedIndex){const i=this._tabs.toArray();let r;for(let o=0;o{i[e].isActive=!0,this.selectedTabChange.emit(this._createChangeEvent(e))})}this._changeDetectorRef.markForCheck()})}_subscribeToAllTabChanges(){this._allTabs.changes.pipe(gn(this._allTabs)).subscribe(e=>{this._tabs.reset(e.filter(i=>i._closestTabGroup===this||!i._closestTabGroup)),this._tabs.notifyOnChanges()})}ngOnDestroy(){this._tabs.destroy(),this._tabsSubscription.unsubscribe(),this._tabLabelSubscription.unsubscribe()}realignInkBar(){this._tabHeader&&this._tabHeader._alignInkBarToSelectedTab()}updatePagination(){this._tabHeader&&this._tabHeader.updatePagination()}focusTab(e){const i=this._tabHeader;i&&(i.focusIndex=e)}_focusChanged(e){this._lastFocusedTabIndex=e,this.focusChange.emit(this._createChangeEvent(e))}_createChangeEvent(e){const i=new ede;return i.index=e,this._tabs&&this._tabs.length&&(i.tab=this._tabs.toArray()[e]),i}_subscribeToTabLabels(){this._tabLabelSubscription&&this._tabLabelSubscription.unsubscribe(),this._tabLabelSubscription=Ht(...this._tabs.map(e=>e._stateChanges)).subscribe(()=>this._changeDetectorRef.markForCheck())}_clampTabIndex(e){return Math.min(this._tabs.length-1,Math.max(e||0,0))}_getTabLabelId(e){return`mat-tab-label-${this._groupId}-${e}`}_getTabContentId(e){return`mat-tab-content-${this._groupId}-${e}`}_setTabBodyWrapperHeight(e){if(!this.dynamicHeight||!this._tabBodyWrapperHeight)return;const i=this._tabBodyWrapper.nativeElement;i.style.height=this._tabBodyWrapperHeight+"px",this._tabBodyWrapper.nativeElement.offsetHeight&&(i.style.height=e+"px")}_removeTabBodyWrapperHeight(){const e=this._tabBodyWrapper.nativeElement;this._tabBodyWrapperHeight=e.clientHeight,e.style.height="",this.animationDone.emit()}_handleClick(e,i,r){i.focusIndex=r,e.disabled||(this.selectedIndex=r)}_getTabIndex(e){return e===(this._lastFocusedTabIndex??this.selectedIndex)?0:-1}_tabFocusChanged(e,i){e&&"mouse"!==e&&"touch"!==e&&(this._tabHeader.focusIndex=i)}static#e=this.\u0275fac=function(i){return new(i||t)(p(K),p(Ke),p(Yle,8),p(Bt,8))};static#t=this.\u0275cmp=ue({type:t,selectors:[["mat-tab-group"]],contentQueries:function(i,r,o){if(1&i&&Oe(o,zg,5),2&i){let s;U(s=$())&&(r._allTabs=s)}},viewQuery:function(i,r){if(1&i&&(Le(Rle,5),Le(Ole,5)),2&i){let o;U(o=$())&&(r._tabBodyWrapper=o.first),U(o=$())&&(r._tabHeader=o.first)}},hostAttrs:[1,"mat-mdc-tab-group"],hostVars:10,hostBindings:function(i,r){2&i&&(bn("mat-"+(r.color||"primary")),Pn("--mat-tab-animation-duration",r.animationDuration),de("mat-mdc-tab-group-dynamic-height",r.dynamicHeight)("mat-mdc-tab-group-inverted-header","below"===r.headerPosition)("mat-mdc-tab-group-stretch-tabs",r.stretchTabs))},inputs:{color:"color",fitInkBarToContent:[D.HasDecoratorInputTransform,"fitInkBarToContent","fitInkBarToContent",j],stretchTabs:[D.HasDecoratorInputTransform,"mat-stretch-tabs","stretchTabs",j],dynamicHeight:[D.HasDecoratorInputTransform,"dynamicHeight","dynamicHeight",j],selectedIndex:[D.HasDecoratorInputTransform,"selectedIndex","selectedIndex",Jt],headerPosition:"headerPosition",animationDuration:"animationDuration",contentTabIndex:[D.HasDecoratorInputTransform,"contentTabIndex","contentTabIndex",Jt],disablePagination:[D.HasDecoratorInputTransform,"disablePagination","disablePagination",j],disableRipple:[D.HasDecoratorInputTransform,"disableRipple","disableRipple",j],preserveContent:[D.HasDecoratorInputTransform,"preserveContent","preserveContent",j],backgroundColor:"backgroundColor"},outputs:{selectedIndexChange:"selectedIndexChange",focusChange:"focusChange",animationDone:"animationDone",selectedTabChange:"selectedTabChange"},exportAs:["matTabGroup"],standalone:!0,features:[ie([{provide:HV,useExisting:t}]),Fe,ve],ngContentSelectors:KC,decls:9,vars:6,consts:[["tabHeader",""],["tabBodyWrapper",""],["tabNode",""],[3,"indexFocused","selectFocusedIndex","selectedIndex","disableRipple","disablePagination"],["role","tab","matTabLabelWrapper","","cdkMonitorElementFocus","",1,"mdc-tab","mat-mdc-tab","mat-mdc-focus-indicator",3,"id","mdc-tab--active","class","disabled","fitInkBarToContent"],[1,"mat-mdc-tab-body-wrapper"],["role","tabpanel",3,"id","mat-mdc-tab-body-active","class","content","position","origin","animationDuration","preserveContent"],["role","tab","matTabLabelWrapper","","cdkMonitorElementFocus","",1,"mdc-tab","mat-mdc-tab","mat-mdc-focus-indicator",3,"click","cdkFocusChange","id","disabled","fitInkBarToContent"],[1,"mdc-tab__ripple"],["mat-ripple","",1,"mat-mdc-tab-ripple",3,"matRippleTrigger","matRippleDisabled"],[1,"mdc-tab__content"],[1,"mdc-tab__text-label"],[3,"cdkPortalOutlet"],["role","tabpanel",3,"_onCentered","_onCentering","id","content","position","origin","animationDuration","preserveContent"]],template:function(i,r){if(1&i){const o=et();$e(),y(0,"mat-tab-header",3,0),q("indexFocused",function(a){return ee(o),te(r._focusChanged(a))})("selectFocusedIndex",function(a){return ee(o),te(r.selectedIndex=a)}),kn(2,Lle,8,17,"div",4,Qr),w(),H(4,Vle,1,0),y(5,"div",5,1),kn(7,Ble,1,13,"mat-tab-body",6,Qr),w()}2&i&&(z("selectedIndex",r.selectedIndex||0)("disableRipple",r.disableRipple)("disablePagination",r.disablePagination),C(2),Tn(r._tabs),C(2),X(4,r._isServer?4:-1),C(),de("_mat-animation-noopable","NoopAnimations"===r._animationMode),C(2),Tn(r._tabs))},dependencies:[Qle,UV,QK,Bo,kc,qV],styles:['.mdc-tab{min-width:90px;padding-right:24px;padding-left:24px;display:flex;flex:1 0 auto;justify-content:center;box-sizing:border-box;margin:0;padding-top:0;padding-bottom:0;border:none;outline:none;text-align:center;white-space:nowrap;cursor:pointer;-webkit-appearance:none;z-index:1}.mdc-tab::-moz-focus-inner{padding:0;border:0}.mdc-tab[hidden]{display:none}.mdc-tab--min-width{flex:0 1 auto}.mdc-tab__content{display:flex;align-items:center;justify-content:center;height:inherit;pointer-events:none}.mdc-tab__text-label{transition:150ms color linear;display:inline-block;line-height:1;z-index:2}.mdc-tab__icon{transition:150ms color linear;z-index:2}.mdc-tab--stacked .mdc-tab__content{flex-direction:column;align-items:center;justify-content:center}.mdc-tab--stacked .mdc-tab__text-label{padding-top:6px;padding-bottom:4px}.mdc-tab--active .mdc-tab__text-label,.mdc-tab--active .mdc-tab__icon{transition-delay:100ms}.mdc-tab:not(.mdc-tab--stacked) .mdc-tab__icon+.mdc-tab__text-label{padding-left:8px;padding-right:0}[dir=rtl] .mdc-tab:not(.mdc-tab--stacked) .mdc-tab__icon+.mdc-tab__text-label,.mdc-tab:not(.mdc-tab--stacked) .mdc-tab__icon+.mdc-tab__text-label[dir=rtl]{padding-left:0;padding-right:8px}.mdc-tab-indicator{display:flex;position:absolute;top:0;left:0;justify-content:center;width:100%;height:100%;pointer-events:none;z-index:1}.mdc-tab-indicator__content{transform-origin:left;opacity:0}.mdc-tab-indicator__content--underline{align-self:flex-end;box-sizing:border-box;width:100%;border-top-style:solid}.mdc-tab-indicator__content--icon{align-self:center;margin:0 auto}.mdc-tab-indicator--active .mdc-tab-indicator__content{opacity:1}.mdc-tab-indicator .mdc-tab-indicator__content{transition:250ms transform cubic-bezier(0.4, 0, 0.2, 1)}.mdc-tab-indicator--no-transition .mdc-tab-indicator__content{transition:none}.mdc-tab-indicator--fade .mdc-tab-indicator__content{transition:150ms opacity linear}.mdc-tab-indicator--active.mdc-tab-indicator--fade .mdc-tab-indicator__content{transition-delay:100ms}.mat-mdc-tab-ripple{position:absolute;top:0;left:0;bottom:0;right:0;pointer-events:none}.mat-mdc-tab{-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none;background:none;font-family:var(--mat-tab-header-label-text-font);font-size:var(--mat-tab-header-label-text-size);letter-spacing:var(--mat-tab-header-label-text-tracking);line-height:var(--mat-tab-header-label-text-line-height);font-weight:var(--mat-tab-header-label-text-weight)}.mat-mdc-tab .mdc-tab-indicator__content--underline{border-color:var(--mdc-tab-indicator-active-indicator-color)}.mat-mdc-tab .mdc-tab-indicator__content--underline{border-top-width:var(--mdc-tab-indicator-active-indicator-height)}.mat-mdc-tab .mdc-tab-indicator__content--underline{border-radius:var(--mdc-tab-indicator-active-indicator-shape)}.mat-mdc-tab:not(.mdc-tab--stacked){height:var(--mdc-secondary-navigation-tab-container-height)}.mat-mdc-tab:not(:disabled).mdc-tab--active .mdc-tab__icon{fill:currentColor}.mat-mdc-tab:not(:disabled):hover.mdc-tab--active .mdc-tab__icon{fill:currentColor}.mat-mdc-tab:not(:disabled):focus.mdc-tab--active .mdc-tab__icon{fill:currentColor}.mat-mdc-tab:not(:disabled):active.mdc-tab--active .mdc-tab__icon{fill:currentColor}.mat-mdc-tab:disabled.mdc-tab--active .mdc-tab__icon{fill:currentColor}.mat-mdc-tab:not(:disabled):not(.mdc-tab--active) .mdc-tab__icon{fill:currentColor}.mat-mdc-tab:not(:disabled):hover:not(.mdc-tab--active) .mdc-tab__icon{fill:currentColor}.mat-mdc-tab:not(:disabled):focus:not(.mdc-tab--active) .mdc-tab__icon{fill:currentColor}.mat-mdc-tab:not(:disabled):active:not(.mdc-tab--active) .mdc-tab__icon{fill:currentColor}.mat-mdc-tab:disabled:not(.mdc-tab--active) .mdc-tab__icon{fill:currentColor}.mat-mdc-tab.mdc-tab{flex-grow:0}.mat-mdc-tab:hover .mdc-tab__text-label{color:var(--mat-tab-header-inactive-hover-label-text-color)}.mat-mdc-tab:focus .mdc-tab__text-label{color:var(--mat-tab-header-inactive-focus-label-text-color)}.mat-mdc-tab.mdc-tab--active .mdc-tab__text-label{color:var(--mat-tab-header-active-label-text-color)}.mat-mdc-tab.mdc-tab--active .mdc-tab__ripple::before,.mat-mdc-tab.mdc-tab--active .mat-ripple-element{background-color:var(--mat-tab-header-active-ripple-color)}.mat-mdc-tab.mdc-tab--active:hover .mdc-tab__text-label{color:var(--mat-tab-header-active-hover-label-text-color)}.mat-mdc-tab.mdc-tab--active:hover .mdc-tab-indicator__content--underline{border-color:var(--mat-tab-header-active-hover-indicator-color)}.mat-mdc-tab.mdc-tab--active:focus .mdc-tab__text-label{color:var(--mat-tab-header-active-focus-label-text-color)}.mat-mdc-tab.mdc-tab--active:focus .mdc-tab-indicator__content--underline{border-color:var(--mat-tab-header-active-focus-indicator-color)}.mat-mdc-tab.mat-mdc-tab-disabled{opacity:.4;pointer-events:none}.mat-mdc-tab.mat-mdc-tab-disabled .mdc-tab__content{pointer-events:none}.mat-mdc-tab.mat-mdc-tab-disabled .mdc-tab__ripple::before,.mat-mdc-tab.mat-mdc-tab-disabled .mat-ripple-element{background-color:var(--mat-tab-header-disabled-ripple-color)}.mat-mdc-tab .mdc-tab__ripple::before{content:"";display:block;position:absolute;top:0;left:0;right:0;bottom:0;opacity:0;pointer-events:none;background-color:var(--mat-tab-header-inactive-ripple-color)}.mat-mdc-tab .mdc-tab__text-label{color:var(--mat-tab-header-inactive-label-text-color);display:inline-flex;align-items:center}.mat-mdc-tab .mdc-tab__content{position:relative;pointer-events:auto}.mat-mdc-tab:hover .mdc-tab__ripple::before{opacity:.04}.mat-mdc-tab.cdk-program-focused .mdc-tab__ripple::before,.mat-mdc-tab.cdk-keyboard-focused .mdc-tab__ripple::before{opacity:.12}.mat-mdc-tab .mat-ripple-element{opacity:.12;background-color:var(--mat-tab-header-inactive-ripple-color)}.mat-mdc-tab-group.mat-mdc-tab-group-stretch-tabs>.mat-mdc-tab-header .mat-mdc-tab{flex-grow:1}.mat-mdc-tab-group{display:flex;flex-direction:column;max-width:100%}.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header-pagination{background-color:var(--mat-tab-header-with-background-background-color)}.mat-mdc-tab-group.mat-tabs-with-background.mat-primary>.mat-mdc-tab-header .mat-mdc-tab .mdc-tab__text-label{color:var(--mat-tab-header-with-background-foreground-color)}.mat-mdc-tab-group.mat-tabs-with-background.mat-primary>.mat-mdc-tab-header .mdc-tab-indicator__content--underline{border-color:var(--mat-tab-header-with-background-foreground-color)}.mat-mdc-tab-group.mat-tabs-with-background:not(.mat-primary)>.mat-mdc-tab-header .mat-mdc-tab:not(.mdc-tab--active) .mdc-tab__text-label{color:var(--mat-tab-header-with-background-foreground-color)}.mat-mdc-tab-group.mat-tabs-with-background:not(.mat-primary)>.mat-mdc-tab-header .mat-mdc-tab:not(.mdc-tab--active) .mdc-tab-indicator__content--underline{border-color:var(--mat-tab-header-with-background-foreground-color)}.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header .mat-mdc-tab-header-pagination-chevron,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header .mat-mdc-focus-indicator::before,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header-pagination .mat-mdc-tab-header-pagination-chevron,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header-pagination .mat-mdc-focus-indicator::before{border-color:var(--mat-tab-header-with-background-foreground-color)}.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header .mat-ripple-element,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header .mdc-tab__ripple::before,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header-pagination .mat-ripple-element,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header-pagination .mdc-tab__ripple::before{background-color:var(--mat-tab-header-with-background-foreground-color)}.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header .mat-mdc-tab-header-pagination-chevron,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header-pagination .mat-mdc-tab-header-pagination-chevron{color:var(--mat-tab-header-with-background-foreground-color)}.mat-mdc-tab-group.mat-mdc-tab-group-inverted-header{flex-direction:column-reverse}.mat-mdc-tab-group.mat-mdc-tab-group-inverted-header .mdc-tab-indicator__content--underline{align-self:flex-start}.mat-mdc-tab-body-wrapper{position:relative;overflow:hidden;display:flex;transition:height 500ms cubic-bezier(0.35, 0, 0.25, 1)}.mat-mdc-tab-body-wrapper._mat-animation-noopable{transition:none !important;animation:none !important}'],encapsulation:2})}return t})();class ede{}let tde=(()=>{class t{static#e=this.\u0275fac=function(i){return new(i||t)};static#t=this.\u0275mod=ge({type:t});static#n=this.\u0275inj=he({imports:[Te,Te]})}return t})();const nde=["tooltip"],WV=new M("mat-tooltip-scroll-strategy",{providedIn:"root",factory:()=>{const t=T(Hn);return()=>t.scrollStrategies.reposition({scrollThrottle:20})}}),rde={provide:WV,deps:[Hn],useFactory:function ide(t){return()=>t.scrollStrategies.reposition({scrollThrottle:20})}},sde=new M("mat-tooltip-default-options",{providedIn:"root",factory:function ode(){return{showDelay:0,hideDelay:0,touchendHideDelay:1500}}}),QV="tooltip-panel",YV=Lo({passive:!0});let tD=(()=>{class t{get position(){return this._position}set position(e){e!==this._position&&(this._position=e,this._overlayRef&&(this._updatePosition(this._overlayRef),this._tooltipInstance?.show(0),this._overlayRef.updatePosition()))}get positionAtOrigin(){return this._positionAtOrigin}set positionAtOrigin(e){this._positionAtOrigin=ki(e),this._detach(),this._overlayRef=null}get disabled(){return this._disabled}set disabled(e){this._disabled=ki(e),this._disabled?this.hide(0):this._setupPointerEnterEventsIfNeeded()}get showDelay(){return this._showDelay}set showDelay(e){this._showDelay=L0(e)}get hideDelay(){return this._hideDelay}set hideDelay(e){this._hideDelay=L0(e),this._tooltipInstance&&(this._tooltipInstance._mouseLeaveHideDelay=this._hideDelay)}get message(){return this._message}set message(e){this._ariaDescriber.removeDescription(this._elementRef.nativeElement,this._message,"tooltip"),this._message=null!=e?String(e).trim():"",!this._message&&this._isTooltipVisible()?this.hide(0):(this._setupPointerEnterEventsIfNeeded(),this._updateTooltipMessage(),this._ngZone.runOutsideAngular(()=>{Promise.resolve().then(()=>{this._ariaDescriber.describe(this._elementRef.nativeElement,this.message,"tooltip")})}))}get tooltipClass(){return this._tooltipClass}set tooltipClass(e){this._tooltipClass=e,this._tooltipInstance&&this._setTooltipClass(this._tooltipClass)}constructor(e,i,r,o,s,a,c,l,d,u,h,f){this._overlay=e,this._elementRef=i,this._scrollDispatcher=r,this._viewContainerRef=o,this._ngZone=s,this._platform=a,this._ariaDescriber=c,this._focusMonitor=l,this._dir=u,this._defaultOptions=h,this._position="below",this._positionAtOrigin=!1,this._disabled=!1,this._viewInitialized=!1,this._pointerExitEventsInitialized=!1,this._tooltipComponent=ude,this._viewportMargin=8,this._cssClassPrefix="mat-mdc",this.touchGestures="auto",this._message="",this._passiveListeners=[],this._destroyed=new Z,this._scrollStrategy=d,this._document=f,h&&(this._showDelay=h.showDelay,this._hideDelay=h.hideDelay,h.position&&(this.position=h.position),h.positionAtOrigin&&(this.positionAtOrigin=h.positionAtOrigin),h.touchGestures&&(this.touchGestures=h.touchGestures)),u.change.pipe(pe(this._destroyed)).subscribe(()=>{this._overlayRef&&this._updatePosition(this._overlayRef)}),this._viewportMargin=8}ngAfterViewInit(){this._viewInitialized=!0,this._setupPointerEnterEventsIfNeeded(),this._focusMonitor.monitor(this._elementRef).pipe(pe(this._destroyed)).subscribe(e=>{e?"keyboard"===e&&this._ngZone.run(()=>this.show()):this._ngZone.run(()=>this.hide(0))})}ngOnDestroy(){const e=this._elementRef.nativeElement;clearTimeout(this._touchstartTimeout),this._overlayRef&&(this._overlayRef.dispose(),this._tooltipInstance=null),this._passiveListeners.forEach(([i,r])=>{e.removeEventListener(i,r,YV)}),this._passiveListeners.length=0,this._destroyed.next(),this._destroyed.complete(),this._ariaDescriber.removeDescription(e,this.message,"tooltip"),this._focusMonitor.stopMonitoring(e)}show(e=this.showDelay,i){if(this.disabled||!this.message||this._isTooltipVisible())return void this._tooltipInstance?._cancelPendingAnimations();const r=this._createOverlay(i);this._detach(),this._portal=this._portal||new yp(this._tooltipComponent,this._viewContainerRef);const o=this._tooltipInstance=r.attach(this._portal).instance;o._triggerElement=this._elementRef.nativeElement,o._mouseLeaveHideDelay=this._hideDelay,o.afterHidden().pipe(pe(this._destroyed)).subscribe(()=>this._detach()),this._setTooltipClass(this._tooltipClass),this._updateTooltipMessage(),o.show(e)}hide(e=this.hideDelay){const i=this._tooltipInstance;i&&(i.isVisible()?i.hide(e):(i._cancelPendingAnimations(),this._detach()))}toggle(e){this._isTooltipVisible()?this.hide():this.show(void 0,e)}_isTooltipVisible(){return!!this._tooltipInstance&&this._tooltipInstance.isVisible()}_createOverlay(e){if(this._overlayRef){const o=this._overlayRef.getConfig().positionStrategy;if((!this.positionAtOrigin||!e)&&o._origin instanceof K)return this._overlayRef;this._detach()}const i=this._scrollDispatcher.getAncestorScrollContainers(this._elementRef),r=this._overlay.position().flexibleConnectedTo(this.positionAtOrigin&&e||this._elementRef).withTransformOriginOn(`.${this._cssClassPrefix}-tooltip`).withFlexibleDimensions(!1).withViewportMargin(this._viewportMargin).withScrollableContainers(i);return r.positionChanges.pipe(pe(this._destroyed)).subscribe(o=>{this._updateCurrentPositionClass(o.connectionPair),this._tooltipInstance&&o.scrollableViewProperties.isOverlayClipped&&this._tooltipInstance.isVisible()&&this._ngZone.run(()=>this.hide(0))}),this._overlayRef=this._overlay.create({direction:this._dir,positionStrategy:r,panelClass:`${this._cssClassPrefix}-${QV}`,scrollStrategy:this._scrollStrategy()}),this._updatePosition(this._overlayRef),this._overlayRef.detachments().pipe(pe(this._destroyed)).subscribe(()=>this._detach()),this._overlayRef.outsidePointerEvents().pipe(pe(this._destroyed)).subscribe(()=>this._tooltipInstance?._handleBodyInteraction()),this._overlayRef.keydownEvents().pipe(pe(this._destroyed)).subscribe(o=>{this._isTooltipVisible()&&27===o.keyCode&&!Kn(o)&&(o.preventDefault(),o.stopPropagation(),this._ngZone.run(()=>this.hide(0)))}),this._defaultOptions?.disableTooltipInteractivity&&this._overlayRef.addPanelClass(`${this._cssClassPrefix}-tooltip-panel-non-interactive`),this._overlayRef}_detach(){this._overlayRef&&this._overlayRef.hasAttached()&&this._overlayRef.detach(),this._tooltipInstance=null}_updatePosition(e){const i=e.getConfig().positionStrategy,r=this._getOrigin(),o=this._getOverlayPosition();i.withPositions([this._addOffset({...r.main,...o.main}),this._addOffset({...r.fallback,...o.fallback})])}_addOffset(e){const r=!this._dir||"ltr"==this._dir.value;return"top"===e.originY?e.offsetY=-8:"bottom"===e.originY?e.offsetY=8:"start"===e.originX?e.offsetX=r?-8:8:"end"===e.originX&&(e.offsetX=r?8:-8),e}_getOrigin(){const e=!this._dir||"ltr"==this._dir.value,i=this.position;let r;"above"==i||"below"==i?r={originX:"center",originY:"above"==i?"top":"bottom"}:"before"==i||"left"==i&&e||"right"==i&&!e?r={originX:"start",originY:"center"}:("after"==i||"right"==i&&e||"left"==i&&!e)&&(r={originX:"end",originY:"center"});const{x:o,y:s}=this._invertPosition(r.originX,r.originY);return{main:r,fallback:{originX:o,originY:s}}}_getOverlayPosition(){const e=!this._dir||"ltr"==this._dir.value,i=this.position;let r;"above"==i?r={overlayX:"center",overlayY:"bottom"}:"below"==i?r={overlayX:"center",overlayY:"top"}:"before"==i||"left"==i&&e||"right"==i&&!e?r={overlayX:"end",overlayY:"center"}:("after"==i||"right"==i&&e||"left"==i&&!e)&&(r={overlayX:"start",overlayY:"center"});const{x:o,y:s}=this._invertPosition(r.overlayX,r.overlayY);return{main:r,fallback:{overlayX:o,overlayY:s}}}_updateTooltipMessage(){this._tooltipInstance&&(this._tooltipInstance.message=this.message,this._tooltipInstance._markForCheck(),this._ngZone.onMicrotaskEmpty.pipe(gt(1),pe(this._destroyed)).subscribe(()=>{this._tooltipInstance&&this._overlayRef.updatePosition()}))}_setTooltipClass(e){this._tooltipInstance&&(this._tooltipInstance.tooltipClass=e,this._tooltipInstance._markForCheck())}_invertPosition(e,i){return"above"===this.position||"below"===this.position?"top"===i?i="bottom":"bottom"===i&&(i="top"):"end"===e?e="start":"start"===e&&(e="end"),{x:e,y:i}}_updateCurrentPositionClass(e){const{overlayY:i,originX:r,originY:o}=e;let s;if(s="center"===i?this._dir&&"rtl"===this._dir.value?"end"===r?"left":"right":"start"===r?"left":"right":"bottom"===i&&"top"===o?"above":"below",s!==this._currentPosition){const a=this._overlayRef;if(a){const c=`${this._cssClassPrefix}-${QV}-`;a.removePanelClass(c+this._currentPosition),a.addPanelClass(c+s)}this._currentPosition=s}}_setupPointerEnterEventsIfNeeded(){this._disabled||!this.message||!this._viewInitialized||this._passiveListeners.length||(this._platformSupportsMouseEvents()?this._passiveListeners.push(["mouseenter",e=>{let i;this._setupPointerExitEventsIfNeeded(),void 0!==e.x&&void 0!==e.y&&(i=e),this.show(void 0,i)}]):"off"!==this.touchGestures&&(this._disableNativeGesturesIfNecessary(),this._passiveListeners.push(["touchstart",e=>{const i=e.targetTouches?.[0],r=i?{x:i.clientX,y:i.clientY}:void 0;this._setupPointerExitEventsIfNeeded(),clearTimeout(this._touchstartTimeout),this._touchstartTimeout=setTimeout(()=>this.show(void 0,r),this._defaultOptions.touchLongPressShowDelay??500)}])),this._addListeners(this._passiveListeners))}_setupPointerExitEventsIfNeeded(){if(this._pointerExitEventsInitialized)return;this._pointerExitEventsInitialized=!0;const e=[];if(this._platformSupportsMouseEvents())e.push(["mouseleave",i=>{const r=i.relatedTarget;(!r||!this._overlayRef?.overlayElement.contains(r))&&this.hide()}],["wheel",i=>this._wheelListener(i)]);else if("off"!==this.touchGestures){this._disableNativeGesturesIfNecessary();const i=()=>{clearTimeout(this._touchstartTimeout),this.hide(this._defaultOptions.touchendHideDelay)};e.push(["touchend",i],["touchcancel",i])}this._addListeners(e),this._passiveListeners.push(...e)}_addListeners(e){e.forEach(([i,r])=>{this._elementRef.nativeElement.addEventListener(i,r,YV)})}_platformSupportsMouseEvents(){return!this._platform.IOS&&!this._platform.ANDROID}_wheelListener(e){if(this._isTooltipVisible()){const i=this._document.elementFromPoint(e.clientX,e.clientY),r=this._elementRef.nativeElement;i!==r&&!r.contains(i)&&this.hide()}}_disableNativeGesturesIfNecessary(){const e=this.touchGestures;if("off"!==e){const i=this._elementRef.nativeElement,r=i.style;("on"===e||"INPUT"!==i.nodeName&&"TEXTAREA"!==i.nodeName)&&(r.userSelect=r.msUserSelect=r.webkitUserSelect=r.MozUserSelect="none"),("on"===e||!i.draggable)&&(r.webkitUserDrag="none"),r.touchAction="none",r.webkitTapHighlightColor="transparent"}}static#e=this.\u0275fac=function(i){return new(i||t)(p(Hn),p(K),p(wp),p(Tt),p(W),p(ut),p(SK),p(Mr),p(WV),p(Xn),p(sde,8),p(_e))};static#t=this.\u0275dir=R({type:t,selectors:[["","matTooltip",""]],hostAttrs:[1,"mat-mdc-tooltip-trigger"],hostVars:2,hostBindings:function(i,r){2&i&&de("mat-mdc-tooltip-disabled",r.disabled)},inputs:{position:[D.None,"matTooltipPosition","position"],positionAtOrigin:[D.None,"matTooltipPositionAtOrigin","positionAtOrigin"],disabled:[D.None,"matTooltipDisabled","disabled"],showDelay:[D.None,"matTooltipShowDelay","showDelay"],hideDelay:[D.None,"matTooltipHideDelay","hideDelay"],touchGestures:[D.None,"matTooltipTouchGestures","touchGestures"],message:[D.None,"matTooltip","message"],tooltipClass:[D.None,"matTooltipClass","tooltipClass"]},exportAs:["matTooltip"],standalone:!0})}return t})(),ude=(()=>{class t{constructor(e,i,r){this._changeDetectorRef=e,this._elementRef=i,this._isMultiline=!1,this._closeOnInteraction=!1,this._isVisible=!1,this._onHide=new Z,this._showAnimation="mat-mdc-tooltip-show",this._hideAnimation="mat-mdc-tooltip-hide",this._animationsDisabled="NoopAnimations"===r}show(e){null!=this._hideTimeoutId&&clearTimeout(this._hideTimeoutId),this._showTimeoutId=setTimeout(()=>{this._toggleVisibility(!0),this._showTimeoutId=void 0},e)}hide(e){null!=this._showTimeoutId&&clearTimeout(this._showTimeoutId),this._hideTimeoutId=setTimeout(()=>{this._toggleVisibility(!1),this._hideTimeoutId=void 0},e)}afterHidden(){return this._onHide}isVisible(){return this._isVisible}ngOnDestroy(){this._cancelPendingAnimations(),this._onHide.complete(),this._triggerElement=null}_handleBodyInteraction(){this._closeOnInteraction&&this.hide(0)}_markForCheck(){this._changeDetectorRef.markForCheck()}_handleMouseLeave({relatedTarget:e}){(!e||!this._triggerElement.contains(e))&&(this.isVisible()?this.hide(this._mouseLeaveHideDelay):this._finalizeAnimation(!1))}_onShow(){this._isMultiline=this._isTooltipMultiline(),this._markForCheck()}_isTooltipMultiline(){const e=this._elementRef.nativeElement.getBoundingClientRect();return e.height>24&&e.width>=200}_handleAnimationEnd({animationName:e}){(e===this._showAnimation||e===this._hideAnimation)&&this._finalizeAnimation(e===this._showAnimation)}_cancelPendingAnimations(){null!=this._showTimeoutId&&clearTimeout(this._showTimeoutId),null!=this._hideTimeoutId&&clearTimeout(this._hideTimeoutId),this._showTimeoutId=this._hideTimeoutId=void 0}_finalizeAnimation(e){e?this._closeOnInteraction=!0:this.isVisible()||this._onHide.next()}_toggleVisibility(e){const i=this._tooltip.nativeElement,r=this._showAnimation,o=this._hideAnimation;if(i.classList.remove(e?o:r),i.classList.add(e?r:o),this._isVisible=e,e&&!this._animationsDisabled&&"function"==typeof getComputedStyle){const s=getComputedStyle(i);("0s"===s.getPropertyValue("animation-duration")||"none"===s.getPropertyValue("animation-name"))&&(this._animationsDisabled=!0)}e&&this._onShow(),this._animationsDisabled&&(i.classList.add("_mat-animation-noopable"),this._finalizeAnimation(e))}static#e=this.\u0275fac=function(i){return new(i||t)(p(Ke),p(K),p(Bt,8))};static#t=this.\u0275cmp=ue({type:t,selectors:[["mat-tooltip-component"]],viewQuery:function(i,r){if(1&i&&Le(nde,7),2&i){let o;U(o=$())&&(r._tooltip=o.first)}},hostAttrs:["aria-hidden","true"],hostVars:2,hostBindings:function(i,r){1&i&&q("mouseleave",function(s){return r._handleMouseLeave(s)}),2&i&&Pn("zoom",r.isVisible()?1:null)},standalone:!0,features:[ve],decls:4,vars:4,consts:[["tooltip",""],[1,"mdc-tooltip","mdc-tooltip--shown","mat-mdc-tooltip",3,"animationend","ngClass"],[1,"mdc-tooltip__surface","mdc-tooltip__surface-animation"]],template:function(i,r){if(1&i){const o=et();y(0,"div",1,0),q("animationend",function(a){return ee(o),te(r._handleAnimationEnd(a))}),y(2,"div",2),A(3),w()()}2&i&&(de("mdc-tooltip--multiline",r._isMultiline),z("ngClass",r.tooltipClass),C(3),wt(r.message))},dependencies:[Ay],styles:['.mdc-tooltip__surface{word-break:break-all;word-break:var(--mdc-tooltip-word-break, normal);overflow-wrap:anywhere}.mdc-tooltip--showing-transition .mdc-tooltip__surface-animation{transition:opacity 150ms 0ms cubic-bezier(0, 0, 0.2, 1),transform 150ms 0ms cubic-bezier(0, 0, 0.2, 1)}.mdc-tooltip--hide-transition .mdc-tooltip__surface-animation{transition:opacity 75ms 0ms cubic-bezier(0.4, 0, 1, 1)}.mdc-tooltip{position:fixed;display:none;z-index:9}.mdc-tooltip-wrapper--rich{position:relative}.mdc-tooltip--shown,.mdc-tooltip--showing,.mdc-tooltip--hide{display:inline-flex}.mdc-tooltip--shown.mdc-tooltip--rich,.mdc-tooltip--showing.mdc-tooltip--rich,.mdc-tooltip--hide.mdc-tooltip--rich{display:inline-block;left:-320px;position:absolute}.mdc-tooltip__surface{line-height:16px;padding:4px 8px;min-width:40px;max-width:200px;min-height:24px;max-height:40vh;box-sizing:border-box;overflow:hidden;text-align:center}.mdc-tooltip__surface::before{position:absolute;box-sizing:border-box;width:100%;height:100%;top:0;left:0;border:1px solid rgba(0,0,0,0);border-radius:inherit;content:"";pointer-events:none}@media screen and (forced-colors: active){.mdc-tooltip__surface::before{border-color:CanvasText}}.mdc-tooltip--rich .mdc-tooltip__surface{align-items:flex-start;display:flex;flex-direction:column;min-height:24px;min-width:40px;max-width:320px;position:relative}.mdc-tooltip--multiline .mdc-tooltip__surface{text-align:left}[dir=rtl] .mdc-tooltip--multiline .mdc-tooltip__surface,.mdc-tooltip--multiline .mdc-tooltip__surface[dir=rtl]{text-align:right}.mdc-tooltip__surface .mdc-tooltip__title{margin:0 8px}.mdc-tooltip__surface .mdc-tooltip__content{max-width:calc(200px - 2*8px);margin:8px;text-align:left}[dir=rtl] .mdc-tooltip__surface .mdc-tooltip__content,.mdc-tooltip__surface .mdc-tooltip__content[dir=rtl]{text-align:right}.mdc-tooltip--rich .mdc-tooltip__surface .mdc-tooltip__content{max-width:calc(320px - 2*8px);align-self:stretch}.mdc-tooltip__surface .mdc-tooltip__content-link{text-decoration:none}.mdc-tooltip--rich-actions,.mdc-tooltip__content,.mdc-tooltip__title{z-index:1}.mdc-tooltip__surface-animation{opacity:0;transform:scale(0.8);will-change:transform,opacity}.mdc-tooltip--shown .mdc-tooltip__surface-animation{transform:scale(1);opacity:1}.mdc-tooltip--hide .mdc-tooltip__surface-animation{transform:scale(1)}.mdc-tooltip__caret-surface-top,.mdc-tooltip__caret-surface-bottom{position:absolute;height:24px;width:24px;transform:rotate(35deg) skewY(20deg) scaleX(0.9396926208)}.mdc-tooltip__caret-surface-top .mdc-elevation-overlay,.mdc-tooltip__caret-surface-bottom .mdc-elevation-overlay{width:100%;height:100%;top:0;left:0}.mdc-tooltip__caret-surface-bottom{box-shadow:0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12);outline:1px solid rgba(0,0,0,0);z-index:-1}@media screen and (forced-colors: active){.mdc-tooltip__caret-surface-bottom{outline-color:CanvasText}}.mat-mdc-tooltip .mdc-tooltip__surface{background-color:var(--mdc-plain-tooltip-container-color)}.mat-mdc-tooltip .mdc-tooltip__surface{border-radius:var(--mdc-plain-tooltip-container-shape)}.mat-mdc-tooltip .mdc-tooltip__caret-surface-top,.mat-mdc-tooltip .mdc-tooltip__caret-surface-bottom{border-radius:var(--mdc-plain-tooltip-container-shape)}.mat-mdc-tooltip .mdc-tooltip__surface{color:var(--mdc-plain-tooltip-supporting-text-color)}.mat-mdc-tooltip .mdc-tooltip__surface{font-family:var(--mdc-plain-tooltip-supporting-text-font);line-height:var(--mdc-plain-tooltip-supporting-text-line-height);font-size:var(--mdc-plain-tooltip-supporting-text-size);font-weight:var(--mdc-plain-tooltip-supporting-text-weight);letter-spacing:var(--mdc-plain-tooltip-supporting-text-tracking)}.mat-mdc-tooltip{position:relative;transform:scale(0)}.mat-mdc-tooltip::before{content:"";top:0;right:0;bottom:0;left:0;z-index:-1;position:absolute}.mat-mdc-tooltip-panel-below .mat-mdc-tooltip::before{top:-8px}.mat-mdc-tooltip-panel-above .mat-mdc-tooltip::before{bottom:-8px}.mat-mdc-tooltip-panel-right .mat-mdc-tooltip::before{left:-8px}.mat-mdc-tooltip-panel-left .mat-mdc-tooltip::before{right:-8px}.mat-mdc-tooltip._mat-animation-noopable{animation:none;transform:scale(1)}.mat-mdc-tooltip-panel.mat-mdc-tooltip-panel-non-interactive{pointer-events:none}@keyframes mat-mdc-tooltip-show{0%{opacity:0;transform:scale(0.8)}100%{opacity:1;transform:scale(1)}}@keyframes mat-mdc-tooltip-hide{0%{opacity:1;transform:scale(1)}100%{opacity:0;transform:scale(0.8)}}.mat-mdc-tooltip-show{animation:mat-mdc-tooltip-show 150ms cubic-bezier(0, 0, 0.2, 1) forwards}.mat-mdc-tooltip-hide{animation:mat-mdc-tooltip-hide 75ms cubic-bezier(0.4, 0, 1, 1) forwards}'],encapsulation:2,changeDetection:0})}return t})(),hde=(()=>{class t{static#e=this.\u0275fac=function(i){return new(i||t)};static#t=this.\u0275mod=ge({type:t});static#n=this.\u0275inj=he({providers:[rde],imports:[YK,Ni,cu,Te,Te,zo]})}return t})();function fde(t,n){if(1&t&&(y(0,"mat-option",3),A(1),w()),2&t){const e=n.$implicit;z("value",e),C(),Ue(" ",e," ")}}let mde=(()=>{class t{constructor(){this.pageIndex=0,this.pageSize=10,this.pageSizes=[10,20,50,100],this.pageLength=0,this.totalLength=null,this.totalIsEstimate=!1,this.hasNextPage=null,this.page=new G}get firstItemIndex(){return this.pageIndex*this.pageSize+1}get lastItemIndex(){return this.pageIndex*this.pageSize+this.pageLength}get hasTotalLength(){return"number"==typeof this.totalLength}get hasPreviousPage(){return this.pageIndex>0}emitChange(){this.page.emit({pageIndex:this.pageIndex,pageSize:this.pageSize})}static#e=this.\u0275fac=function(i){return new(i||t)};static#t=this.\u0275cmp=ue({type:t,selectors:[["app-paginator"]],inputs:{pageIndex:[D.HasDecoratorInputTransform,"pageIndex","pageIndex",Jt],pageSize:[D.HasDecoratorInputTransform,"pageSize","pageSize",Jt],pageSizes:"pageSizes",pageLength:[D.HasDecoratorInputTransform,"pageLength","pageLength",Jt],totalLength:"totalLength",totalIsEstimate:"totalIsEstimate",hasNextPage:"hasNextPage"},outputs:{page:"page"},features:[Fe],decls:22,vars:13,consts:[[1,"paginator"],[1,"field-items-per-page"],[3,"valueChange","value"],[3,"value"],[1,"paginator-description"],[1,"paginator-navigation"],["mat-icon-button","","matTooltip","First page",3,"click","disabled"],["mat-icon-button","","matTooltip","Previous page",3,"click","disabled"],["mat-icon-button","","matTooltip","Next page",3,"click","disabled"]],template:function(i,r){1&i&&(y(0,"div",0)(1,"mat-form-field",1)(2,"mat-label"),A(3,"Items per page"),w(),y(4,"mat-select",2),q("valueChange",function(s){return r.pageSize=s,r.pageIndex=0,r.emitChange()}),kn(5,fde,2,2,"mat-option",3,Qr),w()(),y(7,"p",4),A(8),Mt(9,"number"),Mt(10,"number"),Mt(11,"number"),w(),y(12,"div",5)(13,"button",6),q("click",function(){return r.pageIndex=0,r.emitChange()}),y(14,"mat-icon"),A(15,"first_page"),w()(),y(16,"button",7),q("click",function(){return r.pageIndex=r.pageIndex-1,r.emitChange()}),y(17,"mat-icon"),A(18,"navigate_before"),w()(),y(19,"button",8),q("click",function(){return r.pageIndex=r.pageIndex+1,r.emitChange()}),y(20,"mat-icon"),A(21,"navigate_next"),w()()()()),2&i&&(C(4),z("value",r.pageSize),C(),Tn(r.pageSizes),C(3),Wv(" ",Pt(9,7,r.firstItemIndex)," - ",Pt(10,9,r.lastItemIndex),"",r.hasTotalLength?" of "+(r.totalIsEstimate?"~":"")+Pt(11,11,r.totalLength):""," "),C(5),z("disabled",!r.hasPreviousPage),C(3),z("disabled",!r.hasPreviousPage),C(3),z("disabled",!r.hasNextPage))},dependencies:[Bp,Pp,Ec,CV,J0,ou,tD,xm],styles:[".paginator[_ngcontent-%COMP%] > *[_ngcontent-%COMP%]{display:inline-block;vertical-align:middle}.paginator[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{margin:0 20px}.paginator[_ngcontent-%COMP%] .field-items-per-page[_ngcontent-%COMP%]{width:140px}.paginator[_ngcontent-%COMP%] .mat-mdc-form-field-subscript-wrapper{display:none}"]})}return t})();class pde{constructor(n,e){this._document=e;const i=this._textarea=this._document.createElement("textarea"),r=i.style;r.position="fixed",r.top=r.opacity="0",r.left="-999em",i.setAttribute("aria-hidden","true"),i.value=n,i.readOnly=!0,(this._document.fullscreenElement||this._document.body).appendChild(i)}copy(){const n=this._textarea;let e=!1;try{if(n){const i=this._document.activeElement;n.select(),n.setSelectionRange(0,n.value.length),e=this._document.execCommand("copy"),i&&i.focus()}}catch{}return e}destroy(){const n=this._textarea;n&&(n.remove(),this._textarea=void 0)}}let gde=(()=>{class t{constructor(e){this._document=e}copy(e){const i=this.beginCopy(e),r=i.copy();return i.destroy(),r}beginCopy(e){return new pde(e,this._document)}static#e=this.\u0275fac=function(i){return new(i||t)(S(_e))};static#t=this.\u0275prov=P({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();const _de=new M("CDK_COPY_TO_CLIPBOARD_CONFIG");let bde=(()=>{class t{constructor(e,i,r){this._clipboard=e,this._ngZone=i,this.text="",this.attempts=1,this.copied=new G,this._pending=new Set,r&&null!=r.attempts&&(this.attempts=r.attempts)}copy(e=this.attempts){if(e>1){let i=e;const r=this._clipboard.beginCopy(this.text);this._pending.add(r);const o=()=>{const s=r.copy();s||! --i||this._destroyed?(this._currentTimeout=null,this._pending.delete(r),r.destroy(),this.copied.emit(s)):this._currentTimeout=this._ngZone.runOutsideAngular(()=>setTimeout(o,1))};o()}else this.copied.emit(this._clipboard.copy(this.text))}ngOnDestroy(){this._currentTimeout&&clearTimeout(this._currentTimeout),this._pending.forEach(e=>e.destroy()),this._pending.clear(),this._destroyed=!0}static#e=this.\u0275fac=function(i){return new(i||t)(p(gde),p(W),p(_de,8))};static#t=this.\u0275dir=R({type:t,selectors:[["","cdkCopyToClipboard",""]],hostBindings:function(i,r){1&i&&q("click",function(){return r.copy()})},inputs:{text:[D.None,"cdkCopyToClipboard","text"],attempts:[D.None,"cdkCopyToClipboardAttempts","attempts"]},outputs:{copied:"cdkCopyToClipboardCopied"},standalone:!0})}return t})(),vde=(()=>{class t{static#e=this.\u0275fac=function(i){return new(i||t)};static#t=this.\u0275mod=ge({type:t});static#n=this.\u0275inj=he({})}return t})();var yde=ta(806);let KV=(()=>{class t{static transformOne(e,i){return yde(e,i)}transform(e,i){return Array.isArray(e)?e.map(r=>t.transformOne(r,i)):t.transformOne(e,i)}}return t.\u0275fac=function(e){return new(e||t)},t.\u0275pipe=Mn({name:"filesize",type:t,pure:!0}),t})(),XV=(()=>{class t{}return t.\u0275fac=function(e){return new(e||t)},t.\u0275mod=ge({type:t}),t.\u0275inj=he({}),t})();const wde=(t,n)=>n.key,xde=(t,n)=>n.id,Cde=(t,n)=>n.metadataSource.key,Dde=(t,n)=>n.path;function Ede(t,n){1&t&&re(0,"img",2),2&t&&z("ngSrc","https://image.tmdb.org/t/p/w300/"+n)}function kde(t,n){if(1&t&&(y(0,"span"),A(1),w()),2&t){const e=n.$implicit,i=n.$index;C(),wt((i>0?", ":"")+e.name)}}function Tde(t,n){if(1&t&&(y(0,"p")(1,"strong"),A(2,"Title:"),w(),A(3),w()),2&t){const e=L();C(3),Ue(" ",e.torrentContent.content.title,"")}}function Sde(t,n){if(1&t&&A(0),2&t){const e=n.$implicit,i=n.$index,r=L(2);Ue(" ",(i>0?", ":"")+e.name+(e.id===(null==r.torrentContent.content||null==r.torrentContent.content.originalLanguage?null:r.torrentContent.content.originalLanguage.id)?" (original)":"")," ")}}function Mde(t,n){if(1&t&&(y(0,"p")(1,"strong"),A(2,"Language:"),w(),A(3,"\xa0 "),kn(4,Sde,1,1,null,null,xde),w()),2&t){const e=L();C(4),Tn(e.torrentContent.languages)}}function Ide(t,n){if(1&t&&(y(0,"p")(1,"strong"),A(2,"Original release date:"),w(),A(3),w()),2&t){let e;const i=L();C(3),Ue(" ",null!==(e=null==i.torrentContent.content?null:i.torrentContent.content.releaseDate)&&void 0!==e?e:null==i.torrentContent.content?null:i.torrentContent.content.releaseYear," ")}}function Ade(t,n){if(1&t&&(y(0,"p")(1,"strong"),A(2,"Episodes:"),w(),A(3),w()),2&t){const e=L();C(3),Ue(" ",e.torrentContent.episodes.label,"")}}function Rde(t,n){if(1&t&&(y(0,"p"),A(1),w()),2&t){const e=L();C(),Ue(" ",e.torrentContent.content.overview," ")}}function Ode(t,n){1&t&&(Ln(0),y(1,"p")(2,"strong"),A(3,"Genres:"),w(),A(4),w(),Vn()),2&t&&(C(4),Ue(" ",n.join(", "),""))}function Nde(t,n){if(1&t&&(Ln(0),A(1),Vn()),2&t){const e=L(2);C(),Ue("(",null==e.torrentContent.content?null:e.torrentContent.content.voteCount," votes)")}}function Fde(t,n){if(1&t&&(y(0,"p")(1,"strong"),A(2,"Rating:"),w(),A(3),H(4,Nde,2,1,"ng-container"),w()),2&t){const e=L();C(3),Ue(" ",null==e.torrentContent.content?null:e.torrentContent.content.voteAverage," / 10 "),C(),X(4,null!=(null==e.torrentContent.content?null:e.torrentContent.content.voteCount)?4:-1)}}function Pde(t,n){if(1&t&&(A(0),y(1,"a",9),A(2),w()),2&t){const e=n.$implicit;Ue(" ",n.$index>0?", ":"",""),C(),z("href",e.url,cf),C(),wt(e.metadataSource.name)}}function Lde(t,n){1&t&&(y(0,"p")(1,"strong"),A(2,"External links:"),w(),A(3,"\xa0 "),kn(4,Pde,3,3,"a",9,Cde),w()),2&t&&(C(4),Tn(n))}function Vde(t,n){1&t&&(y(0,"span",10),A(1),Mt(2,"number"),w()),2&t&&(C(),Ue("(",Pt(2,1,n),")"))}function Bde(t,n){if(1&t&&(y(0,"mat-icon"),A(1,"file_present"),w(),A(2," Files "),H(3,Vde,3,3,"span",10)),2&t){let e;const i=L();C(3),X(3,(e=i.filesCount())?3:-1,e)}}function jde(t,n){1&t&&(y(0,"p"),A(1,"No file information available."),w())}function Hde(t,n){if(1&t&&(y(0,"span")(1,"strong"),A(2,"File type: "),w(),A(3),re(4,"br"),w()),2&t){const e=n;C(3),Ue(" ",e.charAt(0).toUpperCase()+e.slice(1),"")}}function zde(t,n){if(1&t&&(y(0,"p")(1,"strong"),A(2,"Single file:"),w(),A(3),re(4,"br"),H(5,Hde,5,1,"span"),y(6,"strong"),A(7,"File size:"),w(),A(8),Mt(9,"filesize"),w()),2&t){let e;const i=L(2);C(3),Ue(" ",i.torrentContent.torrent.name,""),C(2),X(5,(e=i.torrentContent.torrent.fileType)?5:-1,e),C(3),Ue(" ",Pt(9,3,i.torrentContent.torrent.size)," ")}}function Ude(t,n){if(1&t&&(y(0,"p"),A(1),Mt(2,"number"),w()),2&t){const e=L(2);C(),Ue("",Pt(2,1,null==e.torrentContent.torrent.files?null:e.torrentContent.torrent.files.length)," files.")}}function $de(t,n){if(1&t&&(y(0,"p"),A(1),Mt(2,"number"),Mt(3,"number"),w()),2&t){const e=L(2);C(),So(" Showing ",Pt(2,2,null==e.torrentContent.torrent.files?null:e.torrentContent.torrent.files.length)," of ",null==e.torrentContent.torrent.filesCount?"?":Pt(3,4,e.torrentContent.torrent.filesCount)," files. ")}}function qde(t,n){if(1&t&&(y(0,"tr")(1,"td",12),A(2),w(),y(3,"td"),A(4),w(),y(5,"td",13),A(6),Mt(7,"filesize"),w()()),2&t){const e=n.$implicit;C(2),Ue(" ",e.path," "),C(2),Ue(" ",e.fileType?e.fileType.charAt(0).toUpperCase()+e.fileType.slice(1):"Unknown"," "),C(2),Ue(" ",Pt(7,3,e.size)," ")}}function Gde(t,n){if(1&t&&(y(0,"table")(1,"thead")(2,"tr")(3,"th"),A(4,"Path"),w(),y(5,"th"),A(6,"Type"),w(),y(7,"th"),A(8,"Size"),w()()(),y(9,"tbody"),kn(10,qde,8,5,"tr",null,Dde),w()()),2&t){const e=L(2);C(10),Tn(e.torrentContent.torrent.files)}}function Wde(t,n){if(1&t&&(y(0,"mat-card",11),H(1,jde,2,0,"p")(2,zde,10,5,"p")(3,Ude,3,3,"p")(4,$de,4,6,"p")(5,Gde,12,0,"table"),w()),2&t){const e=L();C(),X(1,"no_info"===e.torrentContent.torrent.filesStatus?1:-1),C(),X(2,"single"===e.torrentContent.torrent.filesStatus?2:-1),C(),X(3,"multi"===e.torrentContent.torrent.filesStatus?3:-1),C(),X(4,"over_threshold"===e.torrentContent.torrent.filesStatus?4:-1),C(),X(5,null!=e.torrentContent.torrent.files&&e.torrentContent.torrent.files.length?5:-1)}}function Qde(t,n){1&t&&(y(0,"mat-icon"),A(1,"sell"),w(),A(2," Edit tags "))}function Yde(t,n){if(1&t){const e=et();y(0,"mat-chip-row",20),q("edited",function(r){const o=ee(e).$implicit;return te(L(2).renameTag(o,r.value))})("removed",function(){const r=ee(e).$implicit;return te(L(2).deleteTag(r))}),A(1),y(2,"button",21)(3,"mat-icon"),A(4,"cancel"),w()()()}if(2&t){const e=n.$implicit;z("editable",!0)("aria-description","press enter to edit"),C(),Ue(" ",e," "),C(),me("aria-label","remove "+e)}}function Kde(t,n){if(1&t&&(y(0,"mat-option",19),A(1),w()),2&t){const e=n.$implicit;z("value",e),C(),wt(e)}}function Xde(t,n){if(1&t){const e=et();y(0,"mat-card")(1,"mat-form-field",14)(2,"mat-chip-grid",15,0),kn(4,Yde,5,4,"mat-chip-row",16,Qr),w(),y(6,"input",17),q("matChipInputTokenEnd",function(r){ee(e);const o=L();return te(r.value&&o.addTag(r.value))}),w(),y(7,"mat-autocomplete",18,1),q("optionSelected",function(r){return ee(e),te(L().addTag(r.option.viewValue))}),kn(9,Kde,2,2,"mat-option",19,Qr),w()()()}if(2&t){const e=ai(3),i=ai(8),r=L();C(4),Tn(r.torrentContent.torrent.tagNames),C(2),z("formControl",r.newTagCtrl)("matAutocomplete",i)("matChipInputFor",e)("matChipInputSeparatorKeyCodes",r.separatorKeysCodes)("value",r.newTagCtrl.value),C(3),Tn(r.suggestedTags)}}function Zde(t,n){1&t&&(y(0,"mat-icon"),A(1,"delete_forever"),w(),A(2," Delete "))}function Jde(t,n){if(1&t){const e=et();y(0,"mat-card")(1,"mat-card-content",22)(2,"p")(3,"strong"),A(4,"Are you sure you want to delete this torrent?"),w(),re(5,"br"),A(6,"This action cannot be undone. "),w()(),y(7,"mat-card-actions",23)(8,"button",24),q("click",function(){return ee(e),te(L().delete())}),y(9,"mat-icon"),A(10,"delete_forever"),w(),A(11,"Delete "),w()()()}}function eue(t,n){1&t&&(y(0,"mat-icon",25),A(1,"close"),w())}function tue(t,n){1&t&&(y(0,"mat-tab"),H(1,eue,2,0,"ng-template",7),w())}let nue=(()=>{class t{constructor(e,i){this.graphQLService=e,this.errorsService=i,this.updated=new G,this.newTagCtrl=new Ic(""),this.editedTags=Array(),this.suggestedTags=Array(),this.selectedTabIndex=0,this.separatorKeysCodes=[13,188],this.newTagCtrl.valueChanges.subscribe(r=>(r&&(r=JP(r),this.newTagCtrl.setValue(r,{emitEvent:!1})),e.torrentSuggestTags({query:{prefix:r,exclusions:this.torrentContent.torrent.tagNames}}).pipe(pt(o=>{this.suggestedTags.splice(0,this.suggestedTags.length,...o.suggestions.map(s=>s.name))})).subscribe()))}selectTab(e){this.selectedTabIndex=e}addTag(e){this.editTags(i=>[...i,e]),this.saveTags()}renameTag(e,i){this.editTags(r=>r.map(o=>o===e?i:o)),this.saveTags()}deleteTag(e){this.editTags(i=>i.filter(r=>r!==e)),this.saveTags()}editTags(e){this.editedTags=e(this.editedTags),this.newTagCtrl.reset()}saveTags(){this.graphQLService.torrentSetTags({infoHashes:[this.torrentContent.infoHash],tagNames:this.editedTags}).pipe(di(e=>(this.errorsService.addError(`Error saving tags: ${e.message}`),Zt))).pipe(pt(()=>{this.editedTags=[],this.updated.emit(null)})).subscribe()}delete(){this.graphQLService.torrentDelete({infoHashes:[this.torrentContent.infoHash]}).pipe(di(e=>(this.errorsService.addError(`Error deleting torrent: ${e.message}`),Zt))).pipe(pt(()=>{this.updated.emit(null)})).subscribe()}getAttribute(e,i){return this.torrentContent.content?.attributes?.find(r=>r.key===e&&(void 0===i||r.source===i))?.value}getCollections(e){const i=this.torrentContent.content?.collections?.filter(r=>r.type===e).map(r=>r.name);return i?.length?i.sort():void 0}filesCount(){return"single"===this.torrentContent.torrent.filesStatus?1:this.torrentContent.torrent.filesCount??void 0}static#e=this.\u0275fac=function(i){return new(i||t)(p(Og),p(DC))};static#t=this.\u0275cmp=ue({type:t,selectors:[["app-torrent-content"]],inputs:{torrentContent:"torrentContent"},outputs:{updated:"updated"},decls:35,vars:16,consts:[["chipGrid",""],["auto","matAutocomplete"],["alt","Poster","width","300","height","450",1,"poster",3,"ngSrc"],["matTooltip","Copy to clipboard",1,"info-hash",3,"cdkCopyToClipboard"],[2,"clear","both"],["animationDuration","0",3,"focusChange","selectedIndex","mat-stretch-tabs"],[3,"aria-labelledby"],["mat-tab-label",""],["matTabContent",""],["target","_blank",3,"href"],[1,"files-count"],[1,"torrent-files"],[1,"table-torrent-files-td-file"],[1,"table-torrent-files-td-size"],[1,"form-edit-tags"],["aria-label","Enter tags"],[3,"editable","aria-description"],["placeholder","New tag...",3,"matChipInputTokenEnd","formControl","matAutocomplete","matChipInputFor","matChipInputSeparatorKeyCodes","value"],[3,"optionSelected"],[3,"value"],[3,"edited","removed","editable","aria-description"],["matChipRemove",""],[2,"margin-top","10px"],[1,"button-row"],["mat-stroked-button","","color","warn",3,"click"],[2,"margin-right","0"]],template:function(i,r){if(1&i&&(H(0,Ede,1,1,"img",2),y(1,"h2"),A(2),w(),y(3,"p")(4,"strong"),A(5,"Info hash:"),w(),y(6,"span",3),A(7),w()(),y(8,"p")(9,"strong"),A(10,"Source:"),w(),A(11,"\xa0 "),kn(12,kde,2,1,"span",null,wde),w(),H(14,Tde,4,1,"p")(15,Mde,6,0,"p")(16,Ide,4,1,"p")(17,Ade,4,1,"p")(18,Rde,2,1,"p")(19,Ode,5,1,"ng-container")(20,Fde,5,2,"p")(21,Lde,6,0,"p"),re(22,"mat-divider",4),y(23,"mat-tab-group",5),q("focusChange",function(s){return r.selectTab(4==s.index?0:s.index)}),re(24,"mat-tab",6),y(25,"mat-tab"),H(26,Bde,4,1,"ng-template",7)(27,Wde,6,5,"ng-template",8),w(),y(28,"mat-tab"),H(29,Qde,3,0,"ng-template",7)(30,Xde,11,5,"ng-template",8),w(),y(31,"mat-tab"),H(32,Zde,3,0,"ng-template",7)(33,Jde,12,0,"ng-template",8),w(),H(34,tue,2,0,"mat-tab"),w()),2&i){let o,s,a;X(0,(o=r.getAttribute("poster_path","tmdb"))?0:-1,o),C(2),wt(r.torrentContent.torrent.name),C(4),z("cdkCopyToClipboard",r.torrentContent.infoHash),C(),wt(r.torrentContent.infoHash),C(5),Tn(r.torrentContent.torrent.sources),C(2),X(14,r.torrentContent.content?14:-1),C(),X(15,null!=r.torrentContent.languages&&r.torrentContent.languages.length?15:-1),C(),X(16,null!=r.torrentContent.content&&r.torrentContent.content.releaseYear?16:-1),C(),X(17,r.torrentContent.episodes?17:-1),C(),X(18,null!=r.torrentContent.content&&r.torrentContent.content.overview?18:-1),C(),X(19,(s=r.getCollections("genre"))?19:-1,s),C(),X(20,null!=(null==r.torrentContent.content?null:r.torrentContent.content.voteAverage)?20:-1),C(),X(21,(a=null==r.torrentContent.content?null:r.torrentContent.content.externalLinks)?21:-1,a),C(2),z("selectedIndex",r.selectedTabIndex)("mat-stretch-tabs",!1),C(),z("aria-labelledby","hidden"),C(10),X(34,r.selectedTabIndex>0?34:-1)}},dependencies:[EC,kC,pp,Fg,SC,TC,$p,Vw,Lw,_u,IC,Bp,ou,Ec,zg,XC,eD,ZC,tD,nQ,du,pw,Fp,bde,xm,KV],styles:["h2[_ngcontent-%COMP%]{margin-top:10px;max-width:900px;word-wrap:break-word}.poster[_ngcontent-%COMP%]{float:right;margin:10px;border:1px solid currentColor}.info-hash[_ngcontent-%COMP%]{padding-left:5px;cursor:crosshair;text-decoration:underline;text-decoration-style:dotted}.torrent-files[_ngcontent-%COMP%]{padding-top:10px;max-height:800px;overflow:scroll}.torrent-files[_ngcontent-%COMP%] table[_ngcontent-%COMP%]{margin-bottom:10px;width:800px}.torrent-files[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{padding-right:20px;border-bottom:1px solid rgba(0,0,0,.12)}.torrent-files[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:hover td[_ngcontent-%COMP%]{background-color:#f5f5f5}.form-edit-tags[_ngcontent-%COMP%] .mat-mdc-form-field-subscript-wrapper{display:none}.files-count[_ngcontent-%COMP%]{margin-left:4px}"]})}return t})(),iue=(()=>{class t{transform(e){"string"==typeof e&&(e=new Date(e));const i=Math.round((Date.now()-e.getTime())/1e3),r=i<0?"from now":"ago",o=Math.abs(i),s=[o/60/60/24/365,o/60/60/24/30,o/60/60/24/7,o/60/60/24,o/60/60,o/60,o],a=["year","month","week","day","hour","minute","second"];for(let c=0;c1&&(d+="s"),l>=1)return l+" "+d+" "+r}return"0 seconds "+r}static#e=this.\u0275fac=function(i){return new(i||t)};static#t=this.\u0275pipe=Mn({name:"humanTime",type:t,pure:!0,standalone:!0})}return t})();const ZV=(t,n)=>n.key,rue=(t,n)=>n.name,oue=(t,n)=>n.id,sue=()=>["expandedDetail"];function aue(t,n){if(1&t&&(y(0,"small"),A(1),Mt(2,"number"),w()),2&t){const e=n;C(),So("",e.isEstimate?"~":"","",Pt(2,2,e.count),"")}}function cue(t,n){if(1&t&&(y(0,"small"),A(1),Mt(2,"number"),w()),2&t){const e=n;C(),So("",e.isEstimate?"~":"","",Pt(2,2,e.count),"")}}function lue(t,n){if(1&t&&(y(0,"mat-radio-button",44)(1,"mat-icon"),A(2),w(),A(3),H(4,cue,3,4,"small"),Mt(5,"async"),w()),2&t){let e;const i=L().$implicit,r=L();z("value",i.key),C(2),wt(i.value.icon),C(),Ue(" ",i.value.plural," "),C(),X(4,(e=Pt(5,4,r.search.contentTypeCount(i.key)))?4:-1,e)}}function due(t,n){if(1&t&&H(0,lue,6,6,"mat-radio-button",44),2&t){const e=n.$implicit;X(0,L().search.availableContentTypes.has(e.key)?0:-1)}}function uue(t,n){if(1&t){const e=et();y(0,"mat-checkbox",49),q("change",function(r){const o=ee(e).$implicit,s=L(2).$implicit,a=L();return r.checked||s.isEmpty()?s.select(o.value):s.deselect(o.value),te(a.loadResult())}),A(1),y(2,"small"),A(3),Mt(4,"number"),w()()}if(2&t){const e=n.$implicit,i=L(2).$implicit;Pn("display","block"),z("checked",i.isEmpty()||i.isSelected(e.value))("color","accent"),C(),Ue(" ",e.label," "),C(2),So("",e.isEstimate?"~":"","",Pt(4,7,e.count),"")}}function hue(t,n){1&t&&(y(0,"span",48),A(1,"No aggregation results"),w())}function fue(t,n){if(1&t){const e=et();y(0,"mat-expansion-panel",46),q("opened",function(){ee(e);const r=L().$implicit,o=L();return r.activate(),te(o.loadResult())})("closed",function(){ee(e);const r=L().$implicit,o=L();return r.deactivateAndReset(),te(o.loadResult())}),y(1,"mat-expansion-panel-header")(2,"mat-panel-title")(3,"mat-icon"),A(4),w(),A(5),w()(),y(6,"section"),H(7,uue,5,9,"mat-checkbox",47)(8,hue,2,0,"span",48),Mt(9,"async"),w()()}if(2&t){const e=L().$implicit,i=L();z("expanded",e.isActive()),C(4),wt(e.icon),C(),Ue(" ",e.name,""),C(),bn(e.isEmpty()?"empty":"active"),C(),z("ngForOf",e.aggregations),C(),X(8,Pt(9,7,i.search.loading$)||e.aggregations.length?-1:8)}}function mue(t,n){if(1&t&&(Ln(0),H(1,fue,10,9,"mat-expansion-panel",45),Vn()),2&t){const e=n.$implicit,i=L();C(),X(1,e.isRelevant(i.contentType.value)?1:-1)}}function pue(t,n){if(1&t){const e=et();y(0,"button",50),q("click",function(){ee(e);const r=L();return r.queryString.reset(),te(r.search.setQueryString(""))}),y(1,"mat-icon"),A(2,"close"),w()()}}function gue(t,n){if(1&t&&(y(0,"mat-option",44),A(1),w()),2&t){const e=L().$implicit;z("value",e.key),C(),Ue(" ",null==e.value?null:e.value.label," ")}}function _ue(t,n){if(1&t&&H(0,gue,2,2,"mat-option",44),2&t){const e=n.$implicit,i=L();X(0,"Relevance"!=e.key||i.queryString.value?0:-1)}}function bue(t,n){1&t&&(y(0,"mat-icon"),A(1,"sell"),w(),A(2," Edit tags "))}function vue(t,n){if(1&t){const e=et();y(0,"mat-chip-row",60),q("edited",function(r){const o=ee(e).$implicit;return te(L(2).renameTag(o,r.value))})("removed",function(){const r=ee(e).$implicit;return te(L(2).deleteTag(r))}),A(1),y(2,"button",61)(3,"mat-icon"),A(4,"cancel"),w()()()}if(2&t){const e=n.$implicit;z("editable",!0)("aria-description","press enter to edit"),C(),Ue(" ",e," "),C(),me("aria-label","remove "+e)}}function yue(t,n){if(1&t&&(y(0,"mat-option",44),A(1),w()),2&t){const e=n.$implicit;z("value",e),C(),wt(e)}}function wue(t,n){if(1&t){const e=et();y(0,"mat-card")(1,"mat-form-field",51)(2,"mat-chip-grid",52,1),kn(4,vue,5,4,"mat-chip-row",53,Qr),w(),y(6,"input",54),q("matChipInputTokenEnd",function(r){ee(e);const o=L();return te(r.value&&o.addTag(r.value))}),w(),y(7,"mat-autocomplete",55,2),q("optionSelected",function(r){return ee(e),te(L().addTag(r.option.viewValue))}),kn(9,yue,2,2,"mat-option",44,Qr),w()(),y(11,"mat-card-actions",56)(12,"button",57),q("click",function(){return ee(e),te(L().setTags())}),A(13," Set tags "),w(),y(14,"button",58),q("click",function(){return ee(e),te(L().putTags())}),A(15," Put tags "),w(),y(16,"button",59),q("click",function(){return ee(e),te(L().deleteTags())}),A(17," Delete tags "),w()()()}if(2&t){const e=ai(3),i=ai(8),r=L();C(4),Tn(r.editedTags),C(2),z("formControl",r.newTagCtrl)("matAutocomplete",i)("matChipInputFor",e)("matChipInputSeparatorKeyCodes",r.separatorKeysCodes)("value",r.newTagCtrl.value),C(3),Tn(r.suggestedTags),C(3),z("disabled",!r.selectedItems.hasValue()),C(2),z("disabled",!r.selectedItems.hasValue()||!r.editedTags.length&&!r.newTagCtrl.value),C(2),z("disabled",!r.selectedItems.hasValue()||!r.editedTags.length&&!r.newTagCtrl.value)}}function xue(t,n){1&t&&(y(0,"mat-icon"),A(1,"delete_forever"),w(),A(2," Delete "))}function Cue(t,n){if(1&t){const e=et();y(0,"mat-card")(1,"mat-card-content")(2,"p")(3,"strong"),A(4,"Are you sure you want to delete the selected torrents?"),w(),re(5,"br"),A(6,"This action cannot be undone. "),w()(),y(7,"mat-card-actions",56)(8,"button",62),q("click",function(){ee(e);const r=L();return te(r.deleteTorrents(r.selectedInfoHashes()))}),y(9,"mat-icon"),A(10,"delete_forever"),w(),A(11,"Delete "),w()()()}if(2&t){const e=L();C(8),z("disabled",!e.selectedItems.hasValue())}}function Due(t,n){1&t&&(y(0,"mat-icon",63),A(1,"close"),w())}function Eue(t,n){1&t&&(y(0,"mat-tab"),H(1,Due,2,0,"ng-template",22),w())}function kue(t,n){1&t&&re(0,"mat-progress-bar",25)}function Tue(t,n){if(1&t){const e=et();y(0,"th",64)(1,"mat-checkbox",65),q("change",function(){return ee(e),te(L().toggleAllRows())}),w()()}if(2&t){const e=L();C(),z("checked",e.selectedItems.hasValue()&&e.isAllSelected())("indeterminate",e.selectedItems.hasValue()&&!e.isAllSelected())("aria-label",e.checkboxLabel())}}function Sue(t,n){if(1&t){const e=et();y(0,"td",66)(1,"mat-checkbox",67),q("click",function(r){return ee(e),te(r.stopPropagation())})("change",function(r){const o=ee(e).$implicit,s=L();return te(r?s.selectedItems.toggle(o):null)}),w()()}if(2&t){const e=n.$implicit,i=L();C(),z("checked",i.selectedItems.isSelected(e))("aria-label",i.checkboxLabel(e))}}function Mue(t,n){1&t&&(y(0,"th",64),A(1,"Summary"),w())}function Iue(t,n){if(1&t&&(y(0,"mat-chip",70),A(1),w()),2&t){const e=n.$implicit;C(),Ue(" ",e," ")}}function Aue(t,n){if(1&t&&(Ln(0),A(1),Vn()),2&t){const e=n.$implicit,i=n.$index;C(),So(" ",i>0?", ":"","",e.name," ")}}function Rue(t,n){1&t&&(y(0,"mat-chip"),kn(1,Aue,2,2,"ng-container",null,oue),w()),2&t&&(C(),Tn(n))}function Oue(t,n){1&t&&(y(0,"mat-chip"),A(1),w()),2&t&&(C(),wt(n))}function Nue(t,n){1&t&&(y(0,"mat-chip"),A(1),w()),2&t&&(C(),wt(n))}function Fue(t,n){1&t&&(y(0,"mat-chip"),A(1),w()),2&t&&(C(),wt(n))}function Pue(t,n){1&t&&(y(0,"mat-chip"),A(1),w()),2&t&&(C(),wt(n))}function Lue(t,n){1&t&&(y(0,"mat-chip"),A(1),w()),2&t&&(C(),wt(n))}function Vue(t,n){if(1&t){const e=et();y(0,"td",68),q("click",function(r){const o=ee(e).$implicit;return L().toggleTorrentContentId(o.id),te(r.stopPropagation())}),y(1,"mat-icon"),A(2),w(),y(3,"span",69),A(4),w(),y(5,"mat-chip-set"),kn(6,Iue,2,1,"mat-chip",70,Qr),H(8,Rue,3,0,"mat-chip")(9,Oue,2,1,"mat-chip")(10,Nue,2,1,"mat-chip")(11,Fue,2,1,"mat-chip")(12,Pue,2,1,"mat-chip")(13,Lue,2,1,"mat-chip"),w()()}if(2&t){let e,i,r,o,s,a,c,l;const d=n.$implicit,u=L();C(),me("title",null!==(e=null==(e=u.search.contentTypeInfo(d.contentType))?null:e.singular)&&void 0!==e?e:"Unknown"),C(),wt(null!==(i=null==(i=u.search.contentTypeInfo(d.contentType))?null:i.icon)&&void 0!==i?i:"question_mark"),C(2),wt(u.item(d).title),C(2),Tn(u.item(d).torrent.tagNames),C(2),X(8,(r=u.item(d).languages)?8:-1,r),C(),X(9,(o=null==(o=u.item(d).video3d)?null:o.slice(1))?9:-1,o),C(),X(10,(s=null==(s=u.item(d).videoResolution)?null:s.slice(1))?10:-1,s),C(),X(11,(a=u.item(d).videoSource)?11:-1,a),C(),X(12,(c=u.item(d).videoCodec)?12:-1,c),C(),X(13,(l=u.item(d).videoModifier)?13:-1,l)}}function Bue(t,n){1&t&&(y(0,"th",64),A(1,"Size"),w())}function jue(t,n){if(1&t&&(y(0,"td",66),A(1),Mt(2,"filesize"),w()),2&t){const e=n.$implicit,i=L();C(),Ue(" ",Pt(2,1,i.item(e).torrent.size)," ")}}function Hue(t,n){1&t&&(y(0,"th",64),A(1,"Published"),w())}function zue(t,n){if(1&t&&(y(0,"td",71)(1,"abbr",72),A(2),Mt(3,"humanTime"),w()()),2&t){const e=n.$implicit,i=L();C(),Kf("matTooltip",i.item(e).publishedAt),C(),Ue(" ",Pt(3,2,i.item(e).publishedAt)," ")}}function Uue(t,n){1&t&&(y(0,"th",64)(1,"abbr",73),A(2,"S / L"),w()())}function $ue(t,n){if(1&t&&(y(0,"td",66),A(1),w()),2&t){let e;const i=n.$implicit,r=L();C(),So(" ",null!==(e=r.item(i).seeders)&&void 0!==e?e:"?"," / ",null!==(e=r.item(i).leechers)&&void 0!==e?e:"?"," ")}}function que(t,n){1&t&&(y(0,"th",74),A(1," Magnet "),w())}function Gue(t,n){if(1&t&&(y(0,"td",66)(1,"a",75),re(2,"mat-icon",76),w()()),2&t){const e=n.$implicit,i=L();C(),Kf("href",i.item(e).torrent.magnetUri,cf)}}function Wue(t,n){if(1&t){const e=et();y(0,"td",66)(1,"div",77)(2,"app-torrent-content",78),q("updated",function(){return ee(e),te(L().search.loadResult(!1))}),w()()()}if(2&t){const e=n.$implicit,i=L();me("colspan",i.displayedColumns.length),C(),z("@detailExpand",i.expandedTorrentContentId===e.id?"expanded":"collapsed"),C(),z("torrentContent",e)}}function Que(t,n){1&t&&re(0,"tr",79)}function Yue(t,n){if(1&t&&re(0,"tr",80),2&t){const e=n.$implicit,i=L();bn("summary-row "+(e.id===i.expandedTorrentContentId?"expanded":"collapsed"))}}function Kue(t,n){1&t&&re(0,"tr",81)}function Xue(t,n){if(1&t){const e=et();y(0,"app-paginator",82),Mt(1,"async"),Mt(2,"async"),Mt(3,"async"),Mt(4,"async"),q("page",function(r){return ee(e),te(L().search.handlePageEvent(r))}),w()}if(2&t){const e=n,i=L();z("pageIndex",Pt(1,6,i.search.pageIndex$))("pageSize",Pt(2,8,i.search.pageSize$))("pageLength",Pt(3,10,i.search.pageLength$))("totalLength",e.count)("totalIsEstimate",e.isEstimate)("hasNextPage",Pt(4,12,i.search.hasNextPage$))}}let Zue=(()=>{class t{constructor(e,i){this.graphQLService=e,this.errorsService=i,this.search=new Die(this.graphQLService,this.errorsService),this.displayedColumns=["select","summary","size","publishedAt","peers","magnet"],this.queryString=new Ic(""),this.items=Array(),this.contentType=new Ic(void 0),this.separatorKeysCodes=[13,188],this.selectedItems=new ZP(!0,[]),this.selectedTabIndex=0,this.newTagCtrl=new Ic(""),this.editedTags=Array(),this.suggestedTags=Array(),this.search.items$.subscribe(r=>{this.items=r,this.selectedItems.setSelection(...r.filter(({id:o})=>this.selectedItems.selected.some(({id:s})=>s===o)))})}ngAfterContentInit(){this.loadResult()}ngAfterViewInit(){this.contentType.valueChanges.subscribe(e=>{this.search.selectContentType(e)}),this.newTagCtrl.valueChanges.subscribe(e=>{e&&this.newTagCtrl.setValue(JP(e),{emitEvent:!1}),this.updateSuggestedTags()}),this.updateSuggestedTags()}loadResult(e=!0){this.search.loadResult(e)}item(e){return e}originalOrder(){return 0}isAllSelected(){return this.items.every(e=>this.selectedItems.isSelected(e))}toggleAllRows(){this.isAllSelected()?this.selectedItems.clear():this.selectedItems.select(...this.items)}checkboxLabel(e){return e?`${this.selectedItems.isSelected(e)?"deselect":"select"} ${e.torrent.name}`:(this.isAllSelected()?"deselect":"select")+" all"}selectTab(e){this.selectedTabIndex=e}addTag(e){this.editedTags.includes(e)||this.editedTags.push(e),this.newTagCtrl.reset(),this.updateSuggestedTags()}deleteTag(e){this.editedTags=this.editedTags.filter(i=>i!==e),this.updateSuggestedTags()}renameTag(e,i){this.editedTags=this.editedTags.map(r=>r===e?i:r),this.updateSuggestedTags()}putTags(){const e=this.selectedItems.selected.map(i=>i.infoHash);if(e.length)return this.newTagCtrl.value&&this.addTag(this.newTagCtrl.value),this.graphQLService.torrentPutTags({infoHashes:e,tagNames:this.editedTags}).pipe(di(i=>(this.errorsService.addError(`Error putting tags: ${i.message}`),Zt))).pipe(pt(()=>{this.search.loadResult(!1)})).subscribe()}setTags(){const e=this.selectedItems.selected.map(i=>i.infoHash);if(e.length)return this.newTagCtrl.value&&this.addTag(this.newTagCtrl.value),this.graphQLService.torrentSetTags({infoHashes:e,tagNames:this.editedTags}).pipe(di(i=>(this.errorsService.addError(`Error setting tags: ${i.message}`),Zt))).pipe(pt(()=>{this.search.loadResult(!1)})).subscribe()}deleteTags(){const e=this.selectedItems.selected.map(i=>i.infoHash);if(e.length)return this.newTagCtrl.value&&this.addTag(this.newTagCtrl.value),this.graphQLService.torrentDeleteTags({infoHashes:e,tagNames:this.editedTags}).pipe(di(i=>(this.errorsService.addError(`Error deleting tags: ${i.message}`),Zt))).pipe(pt(()=>{this.search.loadResult(!1)})).subscribe()}updateSuggestedTags(){return this.graphQLService.torrentSuggestTags({query:{prefix:this.newTagCtrl.value,exclusions:this.editedTags}}).pipe(pt(e=>{this.suggestedTags.splice(0,this.suggestedTags.length,...e.suggestions.map(i=>i.name))})).subscribe()}selectedInfoHashes(){return this.selectedItems.selected.map(e=>e.infoHash)}deleteTorrents(e){this.graphQLService.torrentDelete({infoHashes:e}).pipe(di(i=>(this.errorsService.addError(`Error deleting torrents: ${i.message}`),Zt))).pipe(pt(()=>{this.search.loadResult(!1)})).subscribe()}toggleTorrentContentId(e){this.expandedTorrentContentId=this.expandedTorrentContentId===e?void 0:e}static#e=this.\u0275fac=function(i){return new(i||t)(p(Og),p(DC))};static#t=this.\u0275cmp=ue({type:t,selectors:[["app-search"]],decls:86,vars:39,consts:[["drawer",""],["chipGrid",""],["auto","matAutocomplete"],[1,"example-container"],["opened","",3,"mode"],[1,"panel-content-type",3,"expanded"],[3,"formControl"],["fontSet","material-icons"],[1,"results"],[1,"search-form"],["fontSet","material-icons",3,"click"],[1,"field-search-query"],["matInput","","placeholder","Search",3,"blur","keyup.enter","formControl"],["matSuffix","","mat-icon-button","","aria-label","Clear"],[1,"field-search-order-by"],[3,"valueChange","value"],[1,"button-toggle-direction"],["mat-icon-button","","matTooltip","Toggle direction",3,"click"],[1,"button-refresh"],["mat-mini-fab","","matTooltip","Refresh results","color","primary",3,"click"],["animationDuration","0",1,"tab-group-bulk-actions",3,"focusChange","selectedIndex","mat-stretch-tabs"],[1,"bulk-tab-placeholder",3,"aria-labelledby"],["mat-tab-label",""],["matTabContent",""],[1,"progress-bar-container",2,"height","10px"],["mode","indeterminate"],["mat-table","",1,"table-results",3,"dataSource","multiTemplateDataRows"],["matColumnDef","select"],["mat-header-cell","",4,"matHeaderCellDef"],["mat-cell","",4,"matCellDef"],["matColumnDef","summary"],["mat-cell","",3,"click",4,"matCellDef"],["matColumnDef","size"],["matColumnDef","publishedAt"],["class","td-published-at","mat-cell","",4,"matCellDef"],["matColumnDef","peers"],["matColumnDef","magnet"],["mat-header-cell","","style","text-align: center",4,"matHeaderCellDef"],["matColumnDef","expandedDetail"],["mat-header-row","",4,"matHeaderRowDef"],["mat-row","",3,"class",4,"matRowDef","matRowDefColumns"],["mat-row","","class","expanded-detail-row",4,"matRowDef","matRowDefColumns"],[1,"spacer"],[3,"pageIndex","pageSize","pageLength","totalLength","totalIsEstimate","hasNextPage"],[3,"value"],[3,"expanded"],[3,"opened","closed","expanded"],[3,"checked","color","display","change",4,"ngFor","ngForOf"],[1,"empty"],[3,"change","checked","color"],["matSuffix","","mat-icon-button","","aria-label","Clear",3,"click"],[1,"form-edit-tags"],["aria-label","Enter tags"],[3,"editable","aria-description"],["placeholder","Tag...",3,"matChipInputTokenEnd","formControl","matAutocomplete","matChipInputFor","matChipInputSeparatorKeyCodes","value"],[3,"optionSelected"],[1,"button-row"],["mat-stroked-button","","color","primary","matTooltip","Replace tags of the selected torrents",3,"click","disabled"],["mat-stroked-button","","color","primary","matTooltip","Add tags to the selected torrents",3,"click","disabled"],["mat-stroked-button","","color","primary","matTooltip","Remove tags from the selected torrents",3,"click","disabled"],[3,"edited","removed","editable","aria-description"],["matChipRemove",""],["mat-stroked-button","","color","warn",3,"click","disabled"],[2,"margin-right","0"],["mat-header-cell",""],[3,"change","checked","indeterminate","aria-label"],["mat-cell",""],[3,"click","change","checked","aria-label"],["mat-cell","",3,"click"],[1,"title"],[1,"chip-primary"],["mat-cell","",1,"td-published-at"],["matTooltipClass","tooltip-published-at",3,"matTooltip"],["matTooltip","Seeders / Leechers"],["mat-header-cell","",2,"text-align","center"],[3,"href"],["svgIcon","magnet"],[1,"item-detail"],[3,"updated","torrentContent"],["mat-header-row",""],["mat-row",""],["mat-row","",1,"expanded-detail-row"],[3,"page","pageIndex","pageSize","pageLength","totalLength","totalIsEstimate","hasNextPage"]],template:function(i,r){if(1&i){const o=et();y(0,"mat-drawer-container",3)(1,"mat-drawer",4,0)(3,"mat-expansion-panel",5)(4,"mat-expansion-panel-header")(5,"mat-panel-title")(6,"mat-icon"),A(7,"interests"),w(),A(8," Content Type "),w()(),y(9,"section")(10,"mat-radio-group",6)(11,"mat-radio-button")(12,"mat-icon",7),A(13,"emergency"),w(),A(14,"All "),H(15,aue,3,4,"small"),Mt(16,"async"),w(),kn(17,due,1,1,null,null,ZV),Mt(19,"keyvalue"),w()()(),kn(20,mue,2,1,"ng-container",null,rue),w(),y(22,"mat-drawer-content")(23,"div",8)(24,"div",9)(25,"mat-icon",10),q("click",function(){return ee(o),te(ai(2).toggle())}),A(26),w(),y(27,"mat-form-field",11)(28,"input",12),q("blur",function(){let a;return ee(o),te(r.search.setQueryString(null!==(a=r.queryString.value)&&void 0!==a?a:""))})("keyup.enter",function(){let a;return ee(o),te(r.search.setQueryString(null!==(a=r.queryString.value)&&void 0!==a?a:""))}),w(),H(29,pue,3,0,"button",13),w(),y(30,"mat-form-field",14)(31,"mat-label"),A(32,"Order By"),w(),y(33,"mat-select",15),q("valueChange",function(a){return ee(o),te(r.search.selectOrderBy(a))}),kn(34,_ue,1,1,null,null,ZV),Mt(36,"keyvalue"),w()(),y(37,"div",16)(38,"button",17),q("click",function(){return ee(o),te(r.search.toggleOrderByDirection())}),y(39,"mat-icon"),A(40),w()()(),y(41,"div",18)(42,"button",19),q("click",function(){return ee(o),te(r.loadResult(!1))}),y(43,"mat-icon"),A(44,"sync"),w()()()(),re(45,"mat-divider"),y(46,"mat-tab-group",20),q("focusChange",function(a){return ee(o),te(r.selectTab(3==a.index?0:a.index))}),re(47,"mat-tab",21),y(48,"mat-tab"),H(49,bue,3,0,"ng-template",22)(50,wue,18,8,"ng-template",23),w(),y(51,"mat-tab"),H(52,xue,3,0,"ng-template",22)(53,Cue,12,1,"ng-template",23),w(),H(54,Eue,2,0,"mat-tab"),w(),re(55,"mat-divider"),y(56,"div",24),H(57,kue,1,0,"mat-progress-bar",25),Mt(58,"async"),w(),y(59,"table",26),Ln(60,27),H(61,Tue,2,3,"th",28)(62,Sue,2,2,"td",29),Vn(),Ln(63,30),H(64,Mue,2,0,"th",28)(65,Vue,14,9,"td",31),Vn(),Ln(66,32),H(67,Bue,2,0,"th",28)(68,jue,3,3,"td",29),Vn(),Ln(69,33),H(70,Hue,2,0,"th",28)(71,zue,4,4,"td",34),Vn(),Ln(72,35),H(73,Uue,3,0,"th",28)(74,$ue,2,2,"td",29),Vn(),Ln(75,36),H(76,que,2,0,"th",37)(77,Gue,3,1,"td",29),Vn(),Ln(78,38),H(79,Wue,3,3,"td",29),Vn(),H(80,Que,1,0,"tr",39)(81,Yue,1,2,"tr",40)(82,Kue,1,0,"tr",41),w(),re(83,"span",42),H(84,Xue,5,14,"app-paginator",43),Mt(85,"async"),w()()()}if(2&i){let o,s;const a=ai(2);C(),z("mode","side"),C(2),z("expanded",!0),C(7),z("formControl",r.contentType),C(5),X(15,(o=Pt(16,26,r.search.overallTotalCount$))?15:-1,o),C(2),Tn(Zv(19,28,r.search.contentTypes,r.originalOrder)),C(3),Tn(r.search.facets),C(2),Pn("z-index",100)("overflow","visible"),C(3),bn("toggle-drawer "+(a.opened?"opened":"closed")),C(),wt(a.opened?"arrow_circle_left":"arrow_circle_right"),C(2),z("formControl",r.queryString),C(),X(29,r.queryString.value?29:-1),C(4),z("value",r.search.orderBySubject.getValue().field),C(),Tn(Zv(36,31,r.search.orderByOptions,r.originalOrder)),C(6),wt(r.search.orderBySubject.getValue().descending?"arrow_downward":"arrow_upward"),C(6),z("selectedIndex",r.selectedTabIndex)("mat-stretch-tabs",!1),C(),z("aria-labelledby","hidden"),C(7),X(54,r.selectedTabIndex>0?54:-1),C(3),X(57,Pt(58,34,r.search.loading$)?57:-1),C(2),z("dataSource",r.search)("multiTemplateDataRows",!0),C(21),z("matHeaderRowDef",r.displayedColumns),C(),z("matRowDefColumns",r.displayedColumns),C(),z("matRowDefColumns",function EI(t,n,e){const i=Gn()+t,r=O();return r[i]===Re?xr(r,i,e?n.call(e):n()):function md(t,n){return t[n]}(r,i)}(38,sue)),C(2),X(84,(s=Pt(85,36,r.search.totalCount$))?84:-1,s)}},dependencies:[d1,EC,Ec,kC,pp,J0,zX,Fg,SC,TC,MC,Us,$p,Vw,Lw,_u,Up,IC,fV,sce,ace,Bp,Pp,Tee,ou,mce,vce,yV,AC,CV,TV,SV,Pg,FV,GC,PV,WC,qC,LV,QC,YC,VV,BV,XC,ZC,zg,eD,tD,mde,du,pw,Fp,nue,p1,xm,g1,KV,iue],styles:[".mat-drawer-container[_ngcontent-%COMP%]{min-height:100%}.mat-drawer.mat-drawer-side[_ngcontent-%COMP%]{width:300px}.mat-drawer.mat-drawer-side[_ngcontent-%COMP%] h4[_ngcontent-%COMP%]{margin-bottom:0}.mat-drawer.mat-drawer-side[_ngcontent-%COMP%] .panel-content-type[_ngcontent-%COMP%] mat-radio-button[_ngcontent-%COMP%]{width:100%;display:block}.mat-drawer.mat-drawer-side[_ngcontent-%COMP%] .panel-content-type[_ngcontent-%COMP%] mat-radio-button[_ngcontent-%COMP%] .mdc-radio{display:none}.mat-drawer.mat-drawer-side[_ngcontent-%COMP%] .panel-content-type[_ngcontent-%COMP%] mat-radio-button[_ngcontent-%COMP%] .mdc-form-field, .mat-drawer.mat-drawer-side[_ngcontent-%COMP%] .panel-content-type[_ngcontent-%COMP%] mat-radio-button[_ngcontent-%COMP%] label{cursor:pointer;display:block;height:40px}.mat-drawer.mat-drawer-side[_ngcontent-%COMP%] .panel-content-type[_ngcontent-%COMP%] mat-radio-button[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{margin-right:10px;position:relative;top:5px}.mat-drawer.mat-drawer-side[_ngcontent-%COMP%] .panel-content-type[_ngcontent-%COMP%] .mat-mdc-radio-checked label{color:#e91e63}.mat-drawer.mat-drawer-side[_ngcontent-%COMP%] section[_ngcontent-%COMP%]{margin-bottom:10px}.mat-drawer.mat-drawer-side[_ngcontent-%COMP%] section[_ngcontent-%COMP%] mat-checkbox[_ngcontent-%COMP%]{position:relative;left:-10px}.mat-drawer.mat-drawer-side[_ngcontent-%COMP%] section.empty[_ngcontent-%COMP%] .mdc-checkbox__background{background-color:#d3d3d3;border-color:#d3d3d3} mat-checkbox label small, mat-radio-button label small{margin-left:8px}.mat-expansion-panel-header[_ngcontent-%COMP%]{white-space:nowrap}.mat-expansion-panel-header[_ngcontent-%COMP%] .mat-icon[_ngcontent-%COMP%]{overflow:visible;margin-right:20px}.search-form[_ngcontent-%COMP%] .toggle-drawer[_ngcontent-%COMP%]{cursor:pointer;width:30px;height:30px;font-size:30px;left:-10px;margin-right:10px;position:relative;top:-25px;display:inline-block}.search-form[_ngcontent-%COMP%] mat-form-field[_ngcontent-%COMP%]{display:inline-block;margin-right:20px}.search-form[_ngcontent-%COMP%] mat-form-field.field-search-query[_ngcontent-%COMP%]{width:300px}.search-form[_ngcontent-%COMP%] mat-form-field.field-auto-refresh[_ngcontent-%COMP%]{width:130px}.search-form[_ngcontent-%COMP%] .field-search-order-by[_ngcontent-%COMP%]{width:160px}.search-form[_ngcontent-%COMP%] .button-toggle-direction[_ngcontent-%COMP%], .search-form[_ngcontent-%COMP%] .button-refresh[_ngcontent-%COMP%]{display:inline-block;width:50px;vertical-align:top;padding-top:5px;margin-right:10px}.search-form[_ngcontent-%COMP%] .button-toggle-direction[_ngcontent-%COMP%]{margin-left:-10px;margin-right:20px}.search-form[_ngcontent-%COMP%] .button-refresh[_ngcontent-%COMP%]{float:right}.mat-column-select[_ngcontent-%COMP%]{padding-right:10px;width:30px}.mat-column-summary[_ngcontent-%COMP%]{padding-left:0}.mat-column-summary[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{padding-left:0;padding-right:0}th.mat-column-summary[_ngcontent-%COMP%]{padding-left:10px}td.mat-column-summary[_ngcontent-%COMP%]{vertical-align:middle;cursor:pointer}td.mat-column-summary[_ngcontent-%COMP%] .title[_ngcontent-%COMP%]{display:inline-block;line-height:30px;word-wrap:break-word;max-width:900px}td.mat-column-summary[_ngcontent-%COMP%] .mat-icon[_ngcontent-%COMP%]{display:inline-block;position:relative;top:5px;margin-right:10px}td.mat-column-summary[_ngcontent-%COMP%] mat-chip-set[_ngcontent-%COMP%]{display:inline-block;margin-left:30px;position:relative;top:-2px;margin-bottom:4px}td.mat-column-summary[_ngcontent-%COMP%] mat-chip-set[_ngcontent-%COMP%] mat-chip[_ngcontent-%COMP%]{margin:0 10px 0 0}tr.expanded-detail-row[_ngcontent-%COMP%]{height:0}tr.mat-mdc-row.expanded[_ngcontent-%COMP%] td.mat-column-summary[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{color:#e91e63}tr.mat-mdc-row.expanded[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{border-bottom:0}tr.mat-mdc-row.expanded[_ngcontent-%COMP%] + .expanded-detail-row[_ngcontent-%COMP%] > td[_ngcontent-%COMP%]{padding-bottom:10px}.mat-mdc-row.summary-row[_ngcontent-%COMP%]:hover .mat-mdc-cell[_ngcontent-%COMP%]{background-color:#f5f5f5}.mat-mdc-row.summary-row[_ngcontent-%COMP%]:hover + tr.expanded-detail-row[_ngcontent-%COMP%]{background-color:#f5f5f5}.mat-column-magnet[_ngcontent-%COMP%]{text-align:center}.mat-column-magnet[_ngcontent-%COMP%] .mat-icon[_ngcontent-%COMP%]{position:relative;top:5px}.item-detail[_ngcontent-%COMP%]{width:100%;overflow:hidden} .mdc-tab__text-label mat-icon{margin-right:10px} div[aria-labelledby=hidden]{display:none}.results[_ngcontent-%COMP%]{padding-top:20px}.form-edit-tags[_ngcontent-%COMP%]{width:100%}.mat-mdc-standard-chip[_ngcontent-%COMP%]:not(.mdc-evolution-chip--disabled).chip-primary{background-color:#c5cae9}.mat-mdc-standard-chip[_ngcontent-%COMP%]:not(.mdc-evolution-chip--disabled).chip-primary .mat-mdc-standard-chip[_ngcontent-%COMP%]:not(.mdc-evolution-chip--disabled).mdc-evolution-chip__text-label{color:#fff}.button-row[_ngcontent-%COMP%] .mat-mdc-button-base[_ngcontent-%COMP%]{margin-left:8px}.form-edit-tags[_ngcontent-%COMP%] .mat-mdc-form-field-subscript-wrapper{display:none}app-paginator[_ngcontent-%COMP%]{float:right;margin-top:10px;margin-bottom:20px}.td-published-at[_ngcontent-%COMP%] abbr[_ngcontent-%COMP%]{cursor:default;text-decoration:underline;text-decoration-style:dotted} .tooltip-published-at div{white-space:nowrap;max-width:250px}.cdk-column-peers[_ngcontent-%COMP%]{white-space:nowrap}"],data:{animation:[Ci("detailExpand",[rn("collapsed",Xe({height:"0px",minHeight:"0"})),rn("expanded",Xe({height:"*"})),Xt("expanded <=> collapsed",Kt("225ms cubic-bezier(0.4, 0.0, 0.2, 1)"))])]},changeDetection:0})}return t})(),Jue=(()=>{class t{constructor(e){this.graphQLService=e,this.version=""}ngOnInit(){this.graphQLService.systemQuery().subscribe({next:this.parseVersionFromRsp.bind(this),error:()=>{this.version=""}})}parseVersionFromRsp(e){this.version=e?.version||""}static#e=this.\u0275fac=function(i){return new(i||t)(p(Og))};static#t=this.\u0275cmp=ue({type:t,selectors:[["app-version"]],decls:3,vars:1,consts:[[2,"margin-left","10px","font-size","13px"]],template:function(i,r){1&i&&(y(0,"div")(1,"span",0),A(2),w()()),2&i&&(C(2),wt(r.version))}})}return t})(),ehe=(()=>{class t{constructor(){this.title="bitmagnet"}static#e=this.\u0275fac=function(i){return new(i||t)};static#t=this.\u0275cmp=ue({type:t,selectors:[["app-root"]],decls:26,vars:3,consts:[["menu","matMenu"],["color","primary"],["svgIcon","magnet",2,"position","relative","top","1px"],[2,"margin-left","10px"],[1,"spacer"],["mat-stroked-button","","href","https://opencollective.com/bitmagnet","target","_blank",1,"button-sponsor"],["mat-icon-button","","aria-label","Menu",3,"matMenuTriggerFor"],["mat-menu-item","","href","https://bitmagnet.io","target","_blank"],["mat-menu-item","","href","https://discord.gg/6mFNszX8qM","target","_blank"],["mat-menu-item","","href","https://github.com/bitmagnet-io/bitmagnet","target","_blank"],["mat-menu-item","","href","https://opencollective.com/bitmagnet","target","_blank"]],template:function(i,r){if(1&i&&(y(0,"p")(1,"mat-toolbar",1),re(2,"mat-icon",2),y(3,"span",3),A(4,"bitmagnet"),w(),re(5,"app-version")(6,"span",4),y(7,"a",5)(8,"mat-icon"),A(9,"favorite"),w(),A(10,"Sponsor"),w(),y(11,"button",6)(12,"mat-icon"),A(13,"menu"),w()(),y(14,"mat-menu",null,0)(16,"a",7),A(17,"bitmagnet.io"),w(),y(18,"a",8),A(19,"bitmagnet on Discord"),w(),y(20,"a",9),A(21,"bitmagnet on GitHub"),w(),y(22,"a",10),A(23,"bitmagnet on OpenCollective"),w()()()(),re(24,"app-search")(25,"router-outlet")),2&i){const o=ai(15);Pn("margin-bottom",0),C(11),z("matMenuTriggerFor",o)}},dependencies:[rx,jX,J0,ou,lu,Cp,KZ,GX,Zue,Jue],styles:[".spacer[_ngcontent-%COMP%]{display:inline-flex;flex:1 1 auto}svg[_ngcontent-%COMP%] .fill[_ngcontent-%COMP%]{fill:#3f51b5} .mat-mdc-snack-bar-container.snack-bar-error>div{background-color:#f44336;color:#fff} .mat-mdc-snack-bar-container.snack-bar-error>div .mdc-button__label{color:#fff} .button-sponsor.mat-mdc-outlined-button:not(:disabled){margin-right:10px;border-color:#fff} .button-sponsor.mat-mdc-outlined-button:not(:disabled):hover{background-color:#e91e63}"]})}return t})();var the=function(){function t(n){var e=n.batchDebounce,i=n.batchInterval,r=n.batchMax,o=n.batchHandler,s=n.batchKey;this.batchesByKey=new Map,this.scheduledBatchTimerByKey=new Map,this.batchDebounce=e,this.batchInterval=i,this.batchMax=r||0,this.batchHandler=o,this.batchKey=s||function(){return""}}return t.prototype.enqueueRequest=function(n){var e=this,i=k(k({},n),{next:[],error:[],complete:[],subscribers:new Set}),r=this.batchKey(n.operation);return i.observable||(i.observable=new ht(function(o){var s=e.batchesByKey.get(r);s||e.batchesByKey.set(r,s=new Set);var a=0===s.size,c=0===i.subscribers.size;return i.subscribers.add(o),c&&s.add(i),o.next&&i.next.push(o.next.bind(o)),o.error&&i.error.push(o.error.bind(o)),o.complete&&i.complete.push(o.complete.bind(o)),(a||e.batchDebounce)&&e.scheduleQueueConsumption(r),s.size===e.batchMax&&e.consumeQueue(r),function(){var l;i.subscribers.delete(o)&&i.subscribers.size<1&&s.delete(i)&&s.size<1&&(e.consumeQueue(r),null===(l=s.subscription)||void 0===l||l.unsubscribe())}})),i.observable},t.prototype.consumeQueue=function(n){void 0===n&&(n="");var e=this.batchesByKey.get(n);if(this.batchesByKey.delete(n),e&&e.size){var i=[],r=[],o=[],s=[],a=[],c=[];e.forEach(function(u){i.push(u.operation),r.push(u.forward),o.push(u.observable),s.push(u.next),a.push(u.error),c.push(u.complete)});var l=this.batchHandler(i,r)||ht.of(),d=function(u){a.forEach(function(h){h&&h.forEach(function(f){return f(u)})})};return e.subscription=l.subscribe({next:function(u){if(Array.isArray(u)||(u=[u]),s.length!==u.length){var h=new Error("server returned results with length ".concat(u.length,", expected length of ").concat(s.length));return h.result=u,d(h)}u.forEach(function(f,m){s[m]&&s[m].forEach(function(g){return g(f)})})},error:d,complete:function(){c.forEach(function(u){u&&u.forEach(function(h){return h()})})}}),o}},t.prototype.scheduleQueueConsumption=function(n){var e=this;clearTimeout(this.scheduledBatchTimerByKey.get(n)),this.scheduledBatchTimerByKey.set(n,setTimeout(function(){e.consumeQueue(n),e.scheduledBatchTimerByKey.delete(n)},this.batchInterval))},t}();!function(t){function n(e){var i=t.call(this)||this,r=e||{},s=r.batchInterval,c=r.batchMax,d=r.batchHandler,h=r.batchKey;return i.batcher=new the({batchDebounce:r.batchDebounce,batchInterval:void 0===s?10:s,batchMax:void 0===c?0:c,batchHandler:void 0===d?function(){return null}:d,batchKey:void 0===h?function(){return""}:h}),e.batchHandler.length<=1&&(i.request=function(m){return i.batcher.enqueueRequest({operation:m})}),i}Fi(n,t),n.prototype.request=function(e,i){return this.batcher.enqueueRequest({operation:e,forward:i})}}(Ko);const iD={batchInterval:10,batchMax:10,uri:"graphql",method:"POST",withCredentials:!1,includeQuery:!0,includeExtensions:!1,useMultipart:!1};function fo(t,n,e){return function Ug(...t){return t.find(n=>typeof n<"u")}(t[e],n[e],iD[e])}class ihe extends Ko{httpClient;options;requester;print=Wx;constructor(n,e){super(),this.httpClient=n,this.options=e,this.options.operationPrinter&&(this.print=this.options.operationPrinter),this.requester=i=>new ht(r=>{const o=i.getContext();let s=fo(o,this.options,"method");const a=fo(o,this.options,"includeQuery"),c=fo(o,this.options,"includeExtensions"),l=fo(o,this.options,"uri"),d=fo(o,this.options,"withCredentials"),u=fo(o,this.options,"useMultipart"),h=!0===this.options.useGETForQueries,f=i.query.definitions.some(b=>"OperationDefinition"===b.kind&&"query"===b.operation);h&&f&&(s="GET");const m={method:s,url:"function"==typeof l?l(i):l,body:{operationName:i.operationName,variables:i.variables},options:{withCredentials:d,useMultipart:u,headers:this.options.headers}};c&&(m.body.extensions=i.extensions),a&&(m.body.query=this.print(i.query));const g=function tB(t){let n=t.headers&&t.headers instanceof ci?t.headers:new ci(t.headers);if(t.clientAwareness){const{name:e,version:i}=t.clientAwareness;e&&!n.has("apollographql-client-name")&&(n=n.set("apollographql-client-name",e)),i&&!n.has("apollographql-client-version")&&(n=n.set("apollographql-client-version",i))}return n}(o);m.options.headers=((t,n)=>t&&n?n.keys().reduce((i,r)=>i.set(r,n.getAll(r)),t):n||t)(m.options.headers,g);const _=((t,n,e)=>{const i=-1!==["POST","PUT","PATCH"].indexOf(t.method.toUpperCase()),o=t.body.length;let a,s=t.options&&t.options.useMultipart;if(s){if(o)return new Ye(l=>l.error(new Error("File upload is not available when combined with Batching")));if(!i)return new Ye(l=>l.error(new Error("File upload is not available when GET is used")));if(!e)return new Ye(l=>l.error(new Error('To use File upload you need to pass "extractFiles" function from "extract-files" library to HttpLink\'s options')));a=e(t.body),s=!!a.files.size}let c={};if(o){if(!i)return new Ye(l=>l.error(new Error("Batching is not available for GET requests")));c={body:t.body}}else c=i?{body:s?a.clone:t.body}:{params:Object.keys(t.body).reduce((u,h)=>{const f=t.body[h];return u[h]=-1!==["variables","extensions"].indexOf(h.toLowerCase())?JSON.stringify(f):f,u},{})};if(s&&i){const l=new FormData;l.append("operations",JSON.stringify(c.body));const d={},u=a.files;let h=0;u.forEach(f=>{d[++h]=f}),l.append("map",JSON.stringify(d)),h=0,u.forEach((f,m)=>{l.append(++h+"",m,m.name)}),c.body=l}return n.request(t.method,t.url,{observe:"response",responseType:"json",reportProgress:!1,...c,...t.options})})(m,this.httpClient,this.options.extractFiles).subscribe({next:b=>{i.setContext({response:b}),r.next(b.body)},error:b=>r.error(b),complete:()=>r.complete()});return()=>{_.closed||_.unsubscribe()}})}request(n){return this.requester(n)}}let rhe=(()=>{class t{httpClient;constructor(e){this.httpClient=e}create(e){return new ihe(this.httpClient,e)}static \u0275fac=function(i){return new(i||t)(S(Am))};static \u0275prov=P({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();var nB=function(){function t(){this.assumeImmutableResults=!1,this.getFragmentDoc=qu(Vie,{max:co["cache.fragmentQueryDocuments"]||1e3,cache:pg})}return t.prototype.batch=function(n){var r,e=this;return this.performTransaction(function(){return r=n.update(e)},"string"==typeof n.optimistic?n.optimistic:!1===n.optimistic?null:void 0),r},t.prototype.recordOptimisticTransaction=function(n,e){this.performTransaction(n,e)},t.prototype.transformDocument=function(n){return n},t.prototype.transformForLink=function(n){return n},t.prototype.identify=function(n){},t.prototype.gc=function(){return[]},t.prototype.modify=function(n){return!1},t.prototype.readQuery=function(n,e){return void 0===e&&(e=!!n.optimistic),this.read(k(k({},n),{rootId:n.id||"ROOT_QUERY",optimistic:e}))},t.prototype.watchFragment=function(n){var l,e=this,i=n.fragment,r=n.fragmentName,o=n.from,s=n.optimistic,a=void 0===s||s,c={returnPartialData:!0,id:"string"==typeof o?o:this.identify(o),query:this.getFragmentDoc(i,r),optimistic:a};return new ht(function(d){return e.watch(k(k({},c),{immediate:!0,query:e.getFragmentDoc(i,r),callback:function(u){if(!Ot(u,l)){var h={data:u.result,complete:!!u.complete};u.missing&&(h.missing=xg(u.missing.map(function(f){return f.missing}))),l=u,d.next(h)}}}))})},t.prototype.readFragment=function(n,e){return void 0===e&&(e=!!n.optimistic),this.read(k(k({},n),{query:this.getFragmentDoc(n.fragment,n.fragmentName),rootId:n.id,optimistic:e}))},t.prototype.writeQuery=function(n){var e=n.id,i=n.data,r=Jr(n,["id","data"]);return this.write(Object.assign(r,{dataId:e||"ROOT_QUERY",result:i}))},t.prototype.writeFragment=function(n){var e=n.id,i=n.data,r=n.fragment,o=n.fragmentName,s=Jr(n,["id","data","fragment","fragmentName"]);return this.write(Object.assign(s,{query:this.getFragmentDoc(r,o),dataId:e,result:i}))},t.prototype.updateQuery=function(n,e){return this.batch({update:function(i){var r=i.readQuery(n),o=e(r);return null==o?r:(i.writeQuery(k(k({},n),{data:o})),o)}})},t.prototype.updateFragment=function(n,e){return this.batch({update:function(i){var r=i.readFragment(n),o=e(r);return null==o?r:(i.writeFragment(k(k({},n),{data:o})),o)}})},t}();!1!==globalThis.__DEV__&&(nB.prototype.getMemoryInternals=Yie);var iB=function(t){function n(e,i,r,o){var s,a=t.call(this,e)||this;if(a.message=e,a.path=i,a.query=r,a.variables=o,Array.isArray(a.path)){a.missing=a.message;for(var c=a.path.length-1;c>=0;--c)a.missing=((s={})[a.path[c]]=a.missing,s)}else a.missing=a.path;return a.__proto__=n.prototype,a}return Fi(n,t),n}(Error);function rD(t){return!1!==globalThis.__DEV__&&function ohe(t){var n=new Set([t]);return n.forEach(function(e){zt(e)&&function she(t){if(!1!==globalThis.__DEV__&&!Object.isFrozen(t))try{Object.freeze(t)}catch(n){if(n instanceof TypeError)return null;throw n}return t}(e)===e&&Object.getOwnPropertyNames(e).forEach(function(i){zt(e[i])&&n.add(e[i])})}),t}(t),t}var xn=Object.prototype.hasOwnProperty;function Zu(t){return null==t}function rB(t,n){var e=t.__typename,i=t.id,r=t._id;if("string"==typeof e&&(n&&(n.keyObject=Zu(i)?Zu(r)?void 0:{_id:r}:{id:i}),Zu(i)&&!Zu(r)&&(i=r),!Zu(i)))return"".concat(e,":").concat("number"==typeof i||"string"==typeof i?i:JSON.stringify(i))}var oB={dataIdFromObject:rB,addTypename:!0,resultCaching:!0,canonizeResults:!1};function sB(t){var n=t.canonizeResults;return void 0===n?oB.canonizeResults:n}var aB=/^[_a-z][_0-9a-z]*/i;function es(t){var n=t.match(aB);return n?n[0]:t}function oD(t,n,e){return!!zt(n)&&(Ut(n)?n.every(function(i){return oD(t,i,e)}):t.selections.every(function(i){if(Yo(i)&&ju(i,e)){var r=Qo(i);return xn.call(n,r)&&(!i.selectionSet||oD(i.selectionSet,n[r],e))}return!0}))}function al(t){return zt(t)&&!at(t)&&!Ut(t)}function cB(t,n){var e=fg(_g(t));return{fragmentMap:e,lookupFragment:function(i){var r=e[i];return!r&&n&&(r=n.lookup(i)),r||null}}}var $g=Object.create(null),sD=function(){return $g},lB=Object.create(null),Ju=function(){function t(n,e){var i=this;this.policies=n,this.group=e,this.data=Object.create(null),this.rootIds=Object.create(null),this.refs=Object.create(null),this.getFieldValue=function(r,o){return rD(at(r)?i.get(r.__ref,o):r&&r[o])},this.canRead=function(r){return at(r)?i.has(r.__ref):"object"==typeof r},this.toReference=function(r,o){if("string"==typeof r)return Qc(r);if(at(r))return r;var s=i.policies.identify(r)[0];if(s){var a=Qc(s);return o&&i.merge(s,r),a}}}return t.prototype.toObject=function(){return k({},this.data)},t.prototype.has=function(n){return void 0!==this.lookup(n,!0)},t.prototype.get=function(n,e){if(this.group.depend(n,e),xn.call(this.data,n)){var i=this.data[n];if(i&&xn.call(i,e))return i[e]}return"__typename"===e&&xn.call(this.policies.rootTypenamesById,n)?this.policies.rootTypenamesById[n]:this instanceof ts?this.parent.get(n,e):void 0},t.prototype.lookup=function(n,e){return e&&this.group.depend(n,"__exists"),xn.call(this.data,n)?this.data[n]:this instanceof ts?this.parent.lookup(n,e):this.policies.rootTypenamesById[n]?Object.create(null):void 0},t.prototype.merge=function(n,e){var r,i=this;at(n)&&(n=n.__ref),at(e)&&(e=e.__ref);var o="string"==typeof n?this.lookup(r=n):n,s="string"==typeof e?this.lookup(r=e):e;if(s){ke("string"==typeof r,1);var a=new Xo(uhe).merge(o,s);if(this.data[r]=a,a!==o&&(delete this.refs[r],this.group.caching)){var c=Object.create(null);o||(c.__exists=1),Object.keys(s).forEach(function(l){if(!o||o[l]!==a[l]){c[l]=1;var d=es(l);d!==l&&!i.policies.hasKeyArgs(a.__typename,d)&&(c[d]=1),void 0===a[l]&&!(i instanceof ts)&&delete a[l]}}),c.__typename&&!(o&&o.__typename)&&this.policies.rootTypenamesById[r]===a.__typename&&delete c.__typename,Object.keys(c).forEach(function(l){return i.group.dirty(r,l)})}}},t.prototype.modify=function(n,e){var i=this,r=this.lookup(n);if(r){var o=Object.create(null),s=!1,a=!0,c={DELETE:$g,INVALIDATE:lB,isReference:at,toReference:this.toReference,canRead:this.canRead,readField:function(l,d){return i.policies.readField("string"==typeof l?{fieldName:l,from:d||Qc(n)}:l,{store:i})}};if(Object.keys(r).forEach(function(l){var d=es(l),u=r[l];if(void 0!==u){var h="function"==typeof e?e:e[l]||e[d];if(h){var f=h===sD?$g:h(rD(u),k(k({},c),{fieldName:d,storeFieldName:l,storage:i.getStorage(n,l)}));if(f===lB)i.group.dirty(n,l);else if(f===$g&&(f=void 0),f!==u&&(o[l]=f,s=!0,u=f,!1!==globalThis.__DEV__)){var m=function(N){if(void 0===i.lookup(N.__ref))return!1!==globalThis.__DEV__&&ke.warn(2,N),!0};if(at(f))m(f);else if(Array.isArray(f))for(var g=!1,_=void 0,b=0,v=f;b0){var e=--this.rootIds[n];return e||delete this.rootIds[n],e}return 0},t.prototype.getRootIdSet=function(n){return void 0===n&&(n=new Set),Object.keys(this.rootIds).forEach(n.add,n),this instanceof ts?this.parent.getRootIdSet(n):Object.keys(this.policies.rootTypenamesById).forEach(n.add,n),n},t.prototype.gc=function(){var n=this,e=this.getRootIdSet(),i=this.toObject();e.forEach(function(s){xn.call(i,s)&&(Object.keys(n.findChildRefIds(s)).forEach(e.add,e),delete i[s])});var r=Object.keys(i);if(r.length){for(var o=this;o instanceof ts;)o=o.parent;r.forEach(function(s){return o.delete(s)})}return r},t.prototype.findChildRefIds=function(n){if(!xn.call(this.refs,n)){var e=this.refs[n]=Object.create(null),i=this.data[n];if(!i)return e;var r=new Set([i]);r.forEach(function(o){at(o)&&(e[o.__ref]=!0),zt(o)&&Object.keys(o).forEach(function(s){var a=o[s];zt(a)&&r.add(a)})})}return this.refs[n]},t.prototype.makeCacheKey=function(){return this.group.keyMaker.lookupArray(arguments)},t}(),dB=function(){function t(n,e){void 0===e&&(e=null),this.caching=n,this.parent=e,this.d=null,this.resetCaching()}return t.prototype.resetCaching=function(){this.d=this.caching?p2():null,this.keyMaker=new Zo(Kc)},t.prototype.depend=function(n,e){if(this.d){this.d(aD(n,e));var i=es(e);i!==e&&this.d(aD(n,i)),this.parent&&this.parent.depend(n,e)}},t.prototype.dirty=function(n,e){this.d&&this.d.dirty(aD(n,e),"__exists"===e?"forget":"setDirty")},t}();function aD(t,n){return n+"#"+t}function uB(t,n){eh(t)&&t.group.depend(n,"__exists")}!function(t){var n=function(e){function i(r){var s=r.resultCaching,c=r.seed,l=e.call(this,r.policies,new dB(void 0===s||s))||this;return l.stump=new dhe(l),l.storageTrie=new Zo(Kc),c&&l.replace(c),l}return Fi(i,e),i.prototype.addLayer=function(r,o){return this.stump.addLayer(r,o)},i.prototype.removeLayer=function(){return this},i.prototype.getStorage=function(){return this.storageTrie.lookupArray(arguments)},i}(t);t.Root=n}(Ju||(Ju={}));var ts=function(t){function n(e,i,r,o){var s=t.call(this,i.policies,o)||this;return s.id=e,s.parent=i,s.replay=r,s.group=o,r(s),s}return Fi(n,t),n.prototype.addLayer=function(e,i){return new n(e,this,i,this.group)},n.prototype.removeLayer=function(e){var i=this,r=this.parent.removeLayer(e);return e===this.id?(this.group.caching&&Object.keys(this.data).forEach(function(o){var s=i.data[o],a=r.lookup(o);a?s?s!==a&&Object.keys(s).forEach(function(c){Ot(s[c],a[c])||i.group.dirty(o,c)}):(i.group.dirty(o,"__exists"),Object.keys(a).forEach(function(c){i.group.dirty(o,c)})):i.delete(o)}),r):r===this.parent?this:r.addLayer(this.id,this.replay)},n.prototype.toObject=function(){return k(k({},this.parent.toObject()),this.data)},n.prototype.findChildRefIds=function(e){var i=this.parent.findChildRefIds(e);return xn.call(this.data,e)?k(k({},i),t.prototype.findChildRefIds.call(this,e)):i},n.prototype.getStorage=function(){for(var e=this.parent;e.parent;)e=e.parent;return e.getStorage.apply(e,arguments)},n}(Ju),dhe=function(t){function n(e){return t.call(this,"EntityStore.Stump",e,function(){},new dB(e.group.caching,e.group))||this}return Fi(n,t),n.prototype.removeLayer=function(){return this},n.prototype.merge=function(e,i){return this.parent.merge(e,i)},n}(ts);function uhe(t,n,e){var i=t[e],r=n[e];return Ot(i,r)?i:r}function eh(t){return!!(t instanceof Ju&&t.group.caching)}var hB=function(){function t(){this.known=new(TL?WeakSet:Set),this.pool=new Zo(Kc),this.passes=new WeakMap,this.keysByJSON=new Map,this.empty=this.admit({})}return t.prototype.isKnown=function(n){return zt(n)&&this.known.has(n)},t.prototype.pass=function(n){if(zt(n)){var e=function hhe(t){return zt(t)?Ut(t)?t.slice(0):k({__proto__:Object.getPrototypeOf(t)},t):t}(n);return this.passes.set(e,n),e}return n},t.prototype.admit=function(n){var e=this;if(zt(n)){var i=this.passes.get(n);if(i)return i;switch(Object.getPrototypeOf(n)){case Array.prototype:if(this.known.has(n))return n;var o=n.map(this.admit,this);return(s=this.pool.lookupArray(o)).array||(this.known.add(s.array=o),!1!==globalThis.__DEV__&&Object.freeze(o)),s.array;case null:case Object.prototype:if(this.known.has(n))return n;var a=Object.getPrototypeOf(n),c=[a],l=this.sortedKeys(n);c.push(l.json);var s,d=c.length;if(l.sorted.forEach(function(f){c.push(e.admit(n[f]))}),!(s=this.pool.lookupArray(c)).object){var u=s.object=Object.create(a);this.known.add(u),l.sorted.forEach(function(f,m){u[f]=c[d+m]}),!1!==globalThis.__DEV__&&Object.freeze(u)}return s.object}}return n},t.prototype.sortedKeys=function(n){var e=Object.keys(n),i=this.pool.lookupArray(e);if(!i.keys){e.sort();var r=JSON.stringify(e);(i.keys=this.keysByJSON.get(r))||this.keysByJSON.set(r,i.keys={sorted:e,json:r})}return i.keys},t}();function fB(t){return[t.selectionSet,t.objectOrReference,t.context,t.context.canonizeResults]}var fhe=function(){function t(n){var e=this;this.knownResults=new(Kc?WeakMap:Map),this.config=tl(n,{addTypename:!1!==n.addTypename,canonizeResults:sB(n)}),this.canon=n.canon||new hB,this.executeSelectionSet=qu(function(i){var r,o=i.context.canonizeResults,s=fB(i);s[3]=!o;var a=(r=e.executeSelectionSet).peek.apply(r,s);return a?o?k(k({},a),{result:e.canon.admit(a.result)}):a:(uB(i.context.store,i.enclosingRef.__ref),e.execSelectionSetImpl(i))},{max:this.config.resultCacheMaxSize||co["inMemoryCache.executeSelectionSet"]||5e4,keyArgs:fB,makeCacheKey:function(i,r,o,s){if(eh(o.store))return o.store.makeCacheKey(i,at(r)?r.__ref:r,o.varString,s)}}),this.executeSubSelectedArray=qu(function(i){return uB(i.context.store,i.enclosingRef.__ref),e.execSubSelectedArrayImpl(i)},{max:this.config.resultCacheMaxSize||co["inMemoryCache.executeSubSelectedArray"]||1e4,makeCacheKey:function(i){var r=i.field,o=i.array,s=i.context;if(eh(s.store))return s.store.makeCacheKey(r,o,s.varString)}})}return t.prototype.resetCanon=function(){this.canon=new hB},t.prototype.diffQueryAgainstStore=function(n){var e=n.store,i=n.query,r=n.rootId,o=void 0===r?"ROOT_QUERY":r,s=n.variables,a=n.returnPartialData,c=void 0===a||a,l=n.canonizeResults,d=void 0===l?this.config.canonizeResults:l,u=this.config.cache.policies;s=k(k({},jx(wL(i))),s);var m,h=Qc(o),f=this.executeSelectionSet({selectionSet:Lu(i).selectionSet,objectOrReference:h,enclosingRef:h,context:k({store:e,query:i,policies:u,variables:s,varString:Wo(s),canonizeResults:d},cB(i,this.config.fragments))});if(f.missing&&(m=[new iB(mhe(f.missing),f.missing,i,s)],!c))throw m[0];return{result:f.result,complete:!m,missing:m}},t.prototype.isFresh=function(n,e,i,r){if(eh(r.store)&&this.knownResults.get(n)===i){var o=this.executeSelectionSet.peek(i,e,r,this.canon.isKnown(n));if(o&&n===o.result)return!0}return!1},t.prototype.execSelectionSetImpl=function(n){var e=this,i=n.selectionSet,r=n.objectOrReference,o=n.enclosingRef,s=n.context;if(at(r)&&!s.policies.rootTypenamesById[r.__ref]&&!s.store.has(r.__ref))return{result:this.canon.empty,missing:"Dangling reference to missing ".concat(r.__ref," object")};var h,a=s.variables,c=s.policies,d=s.store.getFieldValue(r,"__typename"),u=[],f=new Xo;function m(x,I){var N;return x.missing&&(h=f.merge(h,((N={})[I]=x.missing,N))),x.result}this.config.addTypename&&"string"==typeof d&&!c.rootIdsByTypename[d]&&u.push({__typename:d});var g=new Set(i.selections);g.forEach(function(x){var I,N;if(ju(x,a))if(Yo(x)){var V=c.readField({fieldName:x.name.value,field:x,variables:s.variables,from:r},s),Q=Qo(x);void 0===V?Xx.added(x)||(h=f.merge(h,((I={})[Q]="Can't find field '".concat(x.name.value,"' on ").concat(at(r)?r.__ref+" object":"object "+JSON.stringify(r,null,2)),I))):Ut(V)?V.length>0&&(V=m(e.executeSubSelectedArray({field:x,array:V,enclosingRef:o,context:s}),Q)):x.selectionSet?null!=V&&(V=m(e.executeSelectionSet({selectionSet:x.selectionSet,objectOrReference:V,enclosingRef:at(V)?V:o,context:s}),Q)):s.canonizeResults&&(V=e.canon.pass(V)),void 0!==V&&u.push(((N={})[Q]=V,N))}else{var le=mg(x,s.lookupFragment);if(!le&&x.kind===ae.FRAGMENT_SPREAD)throw Jn(9,x.name.value);le&&c.fragmentMatches(le,d)&&le.selectionSet.selections.forEach(g.add,g)}});var b={result:xg(u),missing:h},v=s.canonizeResults?this.canon.admit(b):rD(b);return v.result&&this.knownResults.set(v.result,i),v},t.prototype.execSubSelectedArrayImpl=function(n){var a,e=this,i=n.field,r=n.array,o=n.enclosingRef,s=n.context,c=new Xo;function l(d,u){var h;return d.missing&&(a=c.merge(a,((h={})[u]=d.missing,h))),d.result}return i.selectionSet&&(r=r.filter(s.store.canRead)),r=r.map(function(d,u){return null===d?null:Ut(d)?l(e.executeSubSelectedArray({field:i,array:d,enclosingRef:o,context:s}),u):i.selectionSet?l(e.executeSelectionSet({selectionSet:i.selectionSet,objectOrReference:d,enclosingRef:at(d)?d:o,context:s}),u):(!1!==globalThis.__DEV__&&function phe(t,n,e){if(!n.selectionSet){var i=new Set([e]);i.forEach(function(r){zt(r)&&(ke(!at(r),10,function che(t,n){return at(n)?t.get(n.__ref,"__typename"):n&&n.__typename}(t,r),n.name.value),Object.values(r).forEach(i.add,i))})}}(s.store,i,d),d)}),{result:s.canonizeResults?this.canon.admit(r):r,missing:a}},t}();function mhe(t){try{JSON.stringify(t,function(n,e){if("string"==typeof e)throw e;return e})}catch(n){return n}}var mB=Object.create(null);function cD(t){var n=JSON.stringify(t);return mB[n]||(mB[n]=Object.create(null))}function pB(t){var n=cD(t);return n.keyFieldsFn||(n.keyFieldsFn=function(e,i){var r=function(s,a){return i.readField(a,s)},o=i.keyObject=lD(t,function(s){var a=cl(i.storeObject,s,r);return void 0===a&&e!==i.storeObject&&xn.call(e,s[0])&&(a=cl(e,s,bB)),ke(void 0!==a,4,s.join("."),e),a});return"".concat(i.typename,":").concat(JSON.stringify(o))})}function gB(t){var n=cD(t);return n.keyArgsFn||(n.keyArgsFn=function(e,i){var r=i.field,o=i.variables,s=i.fieldName,a=lD(t,function(l){var d=l[0],u=d.charAt(0);if("@"!==u)if("$"!==u){if(e)return cl(e,l)}else{var g=d.slice(1);if(o&&xn.call(o,g)){var _=l.slice(0);return _[0]=g,cl(o,_)}}else if(r&&Nr(r.directives)){var h=d.slice(1),f=r.directives.find(function(b){return b.name.value===h}),m=f&&gg(f,o);return m&&cl(m,l.slice(1))}}),c=JSON.stringify(a);return(e||"{}"!==c)&&(s+=":"+c),s})}function lD(t,n){var e=new Xo;return _B(t).reduce(function(i,r){var o,s=n(r);if(void 0!==s){for(var a=r.length-1;a>=0;--a)(o={})[r[a]]=s,s=o;i=e.merge(i,s)}return i},Object.create(null))}function _B(t){var n=cD(t);if(!n.paths){var e=n.paths=[],i=[];t.forEach(function(r,o){Ut(r)?(_B(r).forEach(function(s){return e.push(i.concat(s))}),i.length=0):(i.push(r),Ut(t[o+1])||(e.push(i.slice(0)),i.length=0))})}return n.paths}function bB(t,n){return t[n]}function cl(t,n,e){return e=e||bB,vB(n.reduce(function i(r,o){return Ut(r)?r.map(function(s){return i(s,o)}):r&&e(r,o)},t))}function vB(t){return zt(t)?Ut(t)?t.map(vB):lD(Object.keys(t).sort(),function(n){return cl(t,n)}):t}function dD(t){return void 0!==t.args?t.args:t.field?gg(t.field,t.variables):null}var ghe=function(){},yB=function(t,n){return n.fieldName},wB=function(t,n,e){return(0,e.mergeObjects)(t,n)},xB=function(t,n){return n},_he=function(){function t(n){this.config=n,this.typePolicies=Object.create(null),this.toBeAdded=Object.create(null),this.supertypeMap=new Map,this.fuzzySubtypes=new Map,this.rootIdsByTypename=Object.create(null),this.rootTypenamesById=Object.create(null),this.usingPossibleTypes=!1,this.config=k({dataIdFromObject:rB},n),this.cache=this.config.cache,this.setRootTypename("Query"),this.setRootTypename("Mutation"),this.setRootTypename("Subscription"),n.possibleTypes&&this.addPossibleTypes(n.possibleTypes),n.typePolicies&&this.addTypePolicies(n.typePolicies)}return t.prototype.identify=function(n,e){var i,r=this,o=e&&(e.typename||(null===(i=e.storeObject)||void 0===i?void 0:i.__typename))||n.__typename;if(o===this.rootTypenamesById.ROOT_QUERY)return["ROOT_QUERY"];for(var c,s=e&&e.storeObject||n,a=k(k({},e),{typename:o,storeObject:s,readField:e&&e.readField||function(){var h=uD(arguments,s);return r.readField(h,{store:r.cache.data,variables:h.variables})}}),l=o&&this.getTypePolicy(o),d=l&&l.keyFn||this.config.dataIdFromObject;d;){var u=d(k(k({},n),s),a);if(!Ut(u)){c=u;break}d=pB(u)}return c=c?String(c):void 0,a.keyObject?[c,a.keyObject]:[c]},t.prototype.addTypePolicies=function(n){var e=this;Object.keys(n).forEach(function(i){var r=n[i],o=r.queryType,s=r.mutationType,a=r.subscriptionType,c=Jr(r,["queryType","mutationType","subscriptionType"]);o&&e.setRootTypename("Query",i),s&&e.setRootTypename("Mutation",i),a&&e.setRootTypename("Subscription",i),xn.call(e.toBeAdded,i)?e.toBeAdded[i].push(c):e.toBeAdded[i]=[c]})},t.prototype.updateTypePolicy=function(n,e){var i=this,r=this.getTypePolicy(n),o=e.keyFields,s=e.fields;function a(c,l){c.merge="function"==typeof l?l:!0===l?wB:!1===l?xB:c.merge}a(r,e.merge),r.keyFn=!1===o?ghe:Ut(o)?pB(o):"function"==typeof o?o:r.keyFn,s&&Object.keys(s).forEach(function(c){var l=i.getFieldPolicy(n,c,!0),d=s[c];if("function"==typeof d)l.read=d;else{var u=d.keyArgs,h=d.read,f=d.merge;l.keyFn=!1===u?yB:Ut(u)?gB(u):"function"==typeof u?u:l.keyFn,"function"==typeof h&&(l.read=h),a(l,f)}l.read&&l.merge&&(l.keyFn=l.keyFn||yB)})},t.prototype.setRootTypename=function(n,e){void 0===e&&(e=n);var i="ROOT_"+n.toUpperCase(),r=this.rootTypenamesById[i];e!==r&&(ke(!r||r===n,5,n),r&&delete this.rootIdsByTypename[r],this.rootIdsByTypename[e]=i,this.rootTypenamesById[i]=e)},t.prototype.addPossibleTypes=function(n){var e=this;this.usingPossibleTypes=!0,Object.keys(n).forEach(function(i){e.getSupertypeSet(i,!0),n[i].forEach(function(r){e.getSupertypeSet(r,!0).add(i);var o=r.match(aB);(!o||o[0]!==r)&&e.fuzzySubtypes.set(r,new RegExp(r))})})},t.prototype.getTypePolicy=function(n){var e=this;if(!xn.call(this.typePolicies,n)){var i=this.typePolicies[n]=Object.create(null);i.fields=Object.create(null);var r=this.supertypeMap.get(n);!r&&this.fuzzySubtypes.size&&(r=this.getSupertypeSet(n,!0),this.fuzzySubtypes.forEach(function(s,a){if(s.test(n)){var c=e.supertypeMap.get(a);c&&c.forEach(function(l){return r.add(l)})}})),r&&r.size&&r.forEach(function(s){var a=e.getTypePolicy(s),c=a.fields,l=Jr(a,["fields"]);Object.assign(i,l),Object.assign(i.fields,c)})}var o=this.toBeAdded[n];return o&&o.length&&o.splice(0).forEach(function(s){e.updateTypePolicy(n,s)}),this.typePolicies[n]},t.prototype.getFieldPolicy=function(n,e,i){if(n){var r=this.getTypePolicy(n).fields;return r[e]||i&&(r[e]=Object.create(null))}},t.prototype.getSupertypeSet=function(n,e){var i=this.supertypeMap.get(n);return!i&&e&&this.supertypeMap.set(n,i=new Set),i},t.prototype.fragmentMatches=function(n,e,i,r){var o=this;if(!n.typeCondition)return!0;if(!e)return!1;var s=n.typeCondition.name.value;if(e===s)return!0;if(this.usingPossibleTypes&&this.supertypeMap.has(s))for(var a=this.getSupertypeSet(e,!0),c=[a],l=function(m){var g=o.getSupertypeSet(m,!1);g&&g.size&&c.indexOf(g)<0&&c.push(g)},d=!(!i||!this.fuzzySubtypes.size),u=!1,h=0;h1?t[1]:n}:(s=k({},i),xn.call(s,"from")||(s.from=n)),!1!==globalThis.__DEV__&&void 0===s.from&&!1!==globalThis.__DEV__&&ke.warn(7,sL(Array.from(t))),void 0===s.variables&&(s.variables=e),s}function DB(t){return function(e,i){if(Ut(e)||Ut(i))throw Jn(8);if(zt(e)&&zt(i)){var r=t.getFieldValue(e,"__typename"),o=t.getFieldValue(i,"__typename");if(r&&o&&r!==o)return i;if(at(e)&&al(i))return t.merge(e.__ref,i),e;if(al(e)&&at(i))return t.merge(e,i.__ref),i;if(al(e)&&al(i))return k(k({},e),i)}return i}}function hD(t,n,e){var i="".concat(n).concat(e),r=t.flavors.get(i);return r||t.flavors.set(i,r=t.clientOnly===n&&t.deferred===e?t:k(k({},t),{clientOnly:n,deferred:e})),r}var bhe=function(){function t(n,e,i){this.cache=n,this.reader=e,this.fragments=i}return t.prototype.writeToStore=function(n,e){var i=this,r=e.query,o=e.result,s=e.dataId,a=e.variables,c=e.overwrite,l=Pu(r),d=function lhe(){return new Xo}();a=k(k({},jx(l)),a);var u=k(k({store:n,written:Object.create(null),merge:function(f,m){return d.merge(f,m)},variables:a,varString:Wo(a)},cB(r,this.fragments)),{overwrite:!!c,incomingById:new Map,clientOnly:!1,deferred:!1,flavors:new Map}),h=this.processSelectionSet({result:o||Object.create(null),dataId:s,selectionSet:l.selectionSet,mergeTree:{map:new Map},context:u});if(!at(h))throw Jn(11,o);return u.incomingById.forEach(function(f,m){var g=f.storeObject,_=f.mergeTree,b=f.fieldNodeSet,v=Qc(m);if(_&&_.map.size){var x=i.applyMerges(_,v,g,u);if(at(x))return;g=x}if(!1!==globalThis.__DEV__&&!u.overwrite){var I=Object.create(null);b.forEach(function(Q){Q.selectionSet&&(I[Q.name.value]=!0)}),Object.keys(g).forEach(function(Q){(function(Q){return!0===I[es(Q)]})(Q)&&!function(Q){var le=_&&_.map.get(Q);return!!(le&&le.info&&le.info.merge)}(Q)&&function vhe(t,n,e,i){var r=function(u){var h=i.getFieldValue(u,e);return"object"==typeof h&&h},o=r(t);if(o){var s=r(n);if(s&&!at(o)&&!Ot(o,s)&&!Object.keys(o).every(function(u){return void 0!==i.getFieldValue(s,u)})){var a=i.getFieldValue(t,"__typename")||i.getFieldValue(n,"__typename"),c=es(e),l="".concat(a,".").concat(c);if(!SB.has(l)){SB.add(l);var d=[];!Ut(o)&&!Ut(s)&&[o,s].forEach(function(u){var h=i.getFieldValue(u,"__typename");"string"==typeof h&&!d.includes(h)&&d.push(h)}),!1!==globalThis.__DEV__&&ke.warn(14,c,a,d.length?"either ensure all objects of type "+d.join(" and ")+" have an ID or a custom merge function, or ":"",l,o,s)}}}}(v,g,Q,u.store)})}n.merge(m,g)}),n.retain(h.__ref),h},t.prototype.processSelectionSet=function(n){var e=this,i=n.dataId,r=n.result,o=n.selectionSet,s=n.context,a=n.mergeTree,c=this.cache.policies,l=Object.create(null),d=i&&c.rootTypenamesById[i]||Vx(r,o,s.fragmentMap)||i&&s.store.get(i,"__typename");"string"==typeof d&&(l.__typename=d);var u=function(){var x=uD(arguments,l,s.variables);if(at(x.from)){var I=s.incomingById.get(x.from.__ref);if(I){var N=c.readField(k(k({},x),{from:I.storeObject}),s);if(void 0!==N)return N}}return c.readField(x,s)},h=new Set;this.flattenFields(o,r,s,d).forEach(function(x,I){var N,V=Qo(I),Q=r[V];if(h.add(I),void 0!==Q){var le=c.getStoreFieldName({typename:d,fieldName:I.name.value,field:I,variables:x.variables}),je=kB(a,le),ot=e.processFieldValue(Q,I,I.selectionSet?hD(x,!1,!1):x,je),mo=void 0;I.selectionSet&&(at(ot)||al(ot))&&(mo=u("__typename",ot));var hi=c.getMergeFunction(d,I.name.value,mo);hi?je.info={field:I,typename:d,merge:hi}:TB(a,le),l=x.merge(l,((N={})[le]=ot,N))}else!1!==globalThis.__DEV__&&!x.clientOnly&&!x.deferred&&!Xx.added(I)&&!c.getReadFunction(d,I.name.value)&&!1!==globalThis.__DEV__&&ke.error(12,Qo(I),r)});try{var f=c.identify(r,{typename:d,selectionSet:o,fragmentMap:s.fragmentMap,storeObject:l,readField:u}),g=f[1];i=i||f[0],g&&(l=s.merge(l,g))}catch(x){if(!i)throw x}if("string"==typeof i){var _=Qc(i),b=s.written[i]||(s.written[i]=[]);if(b.indexOf(o)>=0||(b.push(o),this.reader&&this.reader.isFresh(r,_,o,s)))return _;var v=s.incomingById.get(i);return v?(v.storeObject=s.merge(v.storeObject,l),v.mergeTree=fD(v.mergeTree,a),h.forEach(function(x){return v.fieldNodeSet.add(x)})):s.incomingById.set(i,{storeObject:l,mergeTree:qg(a)?void 0:a,fieldNodeSet:h}),_}return l},t.prototype.processFieldValue=function(n,e,i,r){var o=this;return e.selectionSet&&null!==n?Ut(n)?n.map(function(s,a){var c=o.processFieldValue(s,e,i,kB(r,a));return TB(r,a),c}):this.processSelectionSet({result:n,selectionSet:e.selectionSet,context:i,mergeTree:r}):!1!==globalThis.__DEV__?y2(n):n},t.prototype.flattenFields=function(n,e,i,r){void 0===r&&(r=Vx(e,n,i.fragmentMap));var o=new Map,s=this.cache.policies,a=new Zo(!1);return function c(l,d){var u=a.lookup(l,d.clientOnly,d.deferred);u.visited||(u.visited=!0,l.selections.forEach(function(h){if(ju(h,i.variables)){var f=d.clientOnly,m=d.deferred;if(!(f&&m)&&Nr(h.directives)&&h.directives.forEach(function(b){var v=b.name.value;if("client"===v&&(f=!0),"defer"===v){var x=gg(b,i.variables);(!x||!1!==x.if)&&(m=!0)}}),Yo(h)){var g=o.get(h);g&&(f=f&&g.clientOnly,m=m&&g.deferred),o.set(h,hD(i,f,m))}else{var _=mg(h,i.lookupFragment);if(!_&&h.kind===ae.FRAGMENT_SPREAD)throw Jn(13,h.name.value);_&&s.fragmentMatches(_,r,e,i.variables)&&c(_.selectionSet,hD(i,f,m))}}}))}(n,i),o},t.prototype.applyMerges=function(n,e,i,r,o){var s,a=this;if(n.map.size&&!at(i)){var c=Ut(i)||!at(e)&&!al(e)?void 0:e,l=i;c&&!o&&(o=[at(c)?c.__ref:c]);var d,u=function(h,f){return Ut(h)?"number"==typeof f?h[f]:void 0:r.store.getFieldValue(h,String(f))};n.map.forEach(function(h,f){var m=u(c,f),g=u(l,f);if(void 0!==g){o&&o.push(f);var _=a.applyMerges(h,m,g,r,o);_!==g&&(d=d||new Map).set(f,_),o&&ke(o.pop()===f)}}),d&&(i=Ut(l)?l.slice(0):k({},l),d.forEach(function(h,f){i[f]=h}))}return n.info?this.cache.policies.runMergeFunction(e,i,n.info,r,o&&(s=r.store).getStorage.apply(s,o)):i},t}(),EB=[];function kB(t,n){var e=t.map;return e.has(n)||e.set(n,EB.pop()||{map:new Map}),e.get(n)}function fD(t,n){if(t===n||!n||qg(n))return t;if(!t||qg(t))return n;var e=t.info&&n.info?k(k({},t.info),n.info):t.info||n.info,i=t.map.size&&n.map.size,o={info:e,map:i?new Map:t.map.size?t.map:n.map};if(i){var s=new Set(n.map.keys());t.map.forEach(function(a,c){o.map.set(c,fD(a,n.map.get(c))),s.delete(c)}),s.forEach(function(a){o.map.set(a,fD(n.map.get(a),t.map.get(a)))})}return o}function qg(t){return!t||!(t.info||t.map.size)}function TB(t,n){var e=t.map,i=e.get(n);i&&qg(i)&&(EB.push(i),e.delete(n))}var SB=new Set,MB=function(t){function n(e){void 0===e&&(e={});var i=t.call(this)||this;return i.watches=new Set,i.addTypenameTransform=new _2(Xx),i.assumeImmutableResults=!0,i.makeVar=lse,i.txCount=0,i.config=function ahe(t){return tl(oB,t)}(e),i.addTypename=!!i.config.addTypename,i.policies=new _he({cache:i,dataIdFromObject:i.config.dataIdFromObject,possibleTypes:i.config.possibleTypes,typePolicies:i.config.typePolicies}),i.init(),i}return Fi(n,t),n.prototype.init=function(){var e=this.data=new Ju.Root({policies:this.policies,resultCaching:this.config.resultCaching});this.optimisticData=e.stump,this.resetResultCache()},n.prototype.resetResultCache=function(e){var i=this,r=this.storeReader,o=this.config.fragments;this.storeWriter=new bhe(this,this.storeReader=new fhe({cache:this,addTypename:this.addTypename,resultCacheMaxSize:this.config.resultCacheMaxSize,canonizeResults:sB(this.config),canon:e?void 0:r&&r.canon,fragments:o}),o),this.maybeBroadcastWatch=qu(function(s,a){return i.broadcastWatch(s,a)},{max:this.config.resultCacheMaxSize||co["inMemoryCache.maybeBroadcastWatch"]||5e3,makeCacheKey:function(s){var a=s.optimistic?i.optimisticData:i.data;if(eh(a))return a.makeCacheKey(s.query,s.callback,Wo({optimistic:s.optimistic,id:s.id,variables:s.variables}))}}),new Set([this.data.group,this.optimisticData.group]).forEach(function(s){return s.resetCaching()})},n.prototype.restore=function(e){return this.init(),e&&this.data.replace(e),this},n.prototype.extract=function(e){return void 0===e&&(e=!1),(e?this.optimisticData:this.data).extract()},n.prototype.read=function(e){var i=e.returnPartialData,r=void 0!==i&&i;try{return this.storeReader.diffQueryAgainstStore(k(k({},e),{store:e.optimistic?this.optimisticData:this.data,config:this.config,returnPartialData:r})).result||null}catch(o){if(o instanceof iB)return null;throw o}},n.prototype.write=function(e){try{return++this.txCount,this.storeWriter.writeToStore(this.data,e)}finally{! --this.txCount&&!1!==e.broadcast&&this.broadcastWatches()}},n.prototype.modify=function(e){if(xn.call(e,"id")&&!e.id)return!1;var i=e.optimistic?this.optimisticData:this.data;try{return++this.txCount,i.modify(e.id||"ROOT_QUERY",e.fields)}finally{! --this.txCount&&!1!==e.broadcast&&this.broadcastWatches()}},n.prototype.diff=function(e){return this.storeReader.diffQueryAgainstStore(k(k({},e),{store:e.optimistic?this.optimisticData:this.data,rootId:e.id||"ROOT_QUERY",config:this.config}))},n.prototype.watch=function(e){var i=this;return this.watches.size||function cse(t){Wu(t).vars.forEach(function(n){return n.attachCache(t)})}(this),this.watches.add(e),e.immediate&&this.maybeBroadcastWatch(e),function(){i.watches.delete(e)&&!i.watches.size&&S2(i),i.maybeBroadcastWatch.forget(e)}},n.prototype.gc=function(e){var i;Wo.reset(),Dg.reset(),this.addTypenameTransform.resetCache(),null===(i=this.config.fragments)||void 0===i||i.resetCaches();var r=this.optimisticData.gc();return e&&!this.txCount&&(e.resetResultCache?this.resetResultCache(e.resetResultIdentities):e.resetResultIdentities&&this.storeReader.resetCanon()),r},n.prototype.retain=function(e,i){return(i?this.optimisticData:this.data).retain(e)},n.prototype.release=function(e,i){return(i?this.optimisticData:this.data).release(e)},n.prototype.identify=function(e){if(at(e))return e.__ref;try{return this.policies.identify(e)[0]}catch(i){!1!==globalThis.__DEV__&&ke.warn(i)}},n.prototype.evict=function(e){if(!e.id){if(xn.call(e,"id"))return!1;e=k(k({},e),{id:"ROOT_QUERY"})}try{return++this.txCount,this.optimisticData.evict(e,this.data)}finally{! --this.txCount&&!1!==e.broadcast&&this.broadcastWatches()}},n.prototype.reset=function(e){var i=this;return this.init(),Wo.reset(),e&&e.discardWatches?(this.watches.forEach(function(r){return i.maybeBroadcastWatch.forget(r)}),this.watches.clear(),S2(this)):this.broadcastWatches(),Promise.resolve()},n.prototype.removeOptimistic=function(e){var i=this.optimisticData.removeLayer(e);i!==this.optimisticData&&(this.optimisticData=i,this.broadcastWatches())},n.prototype.batch=function(e){var l,i=this,r=e.update,o=e.optimistic,s=void 0===o||o,a=e.removeOptimistic,c=e.onWatchUpdated,d=function(h){var m=i.data,g=i.optimisticData;++i.txCount,h&&(i.data=i.optimisticData=h);try{return l=r(i)}finally{--i.txCount,i.data=m,i.optimisticData=g}},u=new Set;return c&&!this.txCount&&this.broadcastWatches(k(k({},e),{onWatchUpdated:function(h){return u.add(h),!1}})),"string"==typeof s?this.optimisticData=this.optimisticData.addLayer(s,d):!1===s?d(this.data):d(),"string"==typeof a&&(this.optimisticData=this.optimisticData.removeLayer(a)),c&&u.size?(this.broadcastWatches(k(k({},e),{onWatchUpdated:function(h,f){var m=c.call(this,h,f);return!1!==m&&u.delete(h),m}})),u.size&&u.forEach(function(h){return i.maybeBroadcastWatch.dirty(h)})):this.broadcastWatches(e),l},n.prototype.performTransaction=function(e,i){return this.batch({update:e,optimistic:i||null!==i})},n.prototype.transformDocument=function(e){return this.addTypenameToDocument(this.addFragmentsToDocument(e))},n.prototype.broadcastWatches=function(e){var i=this;this.txCount||this.watches.forEach(function(r){return i.maybeBroadcastWatch(r,e)})},n.prototype.addFragmentsToDocument=function(e){var i=this.config.fragments;return i?i.transform(e):e},n.prototype.addTypenameToDocument=function(e){return this.addTypename?this.addTypenameTransform.transformDocument(e):e},n.prototype.broadcastWatch=function(e,i){var r=e.lastDiff,o=this.diff(e);i&&(e.optimistic&&"string"==typeof i.optimistic&&(o.fromOptimisticTransaction=!0),i.onWatchUpdated&&!1===i.onWatchUpdated.call(this,e,o,r))||(!r||!Ot(r.result,o.result))&&e.callback(e.lastDiff=o,r)},n}(nB);!1!==globalThis.__DEV__&&(MB.prototype.getMemoryInternals=Qie);const yhe=window.location.protocol+"//"+window.location.hostname+":"+window.location.port+"/graphql";function whe(t){return{link:t.create({uri:yhe}),cache:new MB({typePolicies:{Query:{fields:{search:{merge:(n,e)=>({...n,...e})}}}}})}}let xhe=(()=>{class t{static#e=this.\u0275fac=function(i){return new(i||t)};static#t=this.\u0275mod=ge({type:t});static#n=this.\u0275inj=he({providers:[{provide:W2,useFactory:whe,deps:[rhe]},Og],imports:[Wse]})}return t})(),Che=(()=>{class t{static#e=this.\u0275fac=function(i){return new(i||t)};static#t=this.\u0275mod=ge({type:t});static#n=this.\u0275inj=he({imports:[Ni,gu,tu,DV,gp,K0,hde]})}return t})(),Dhe=(()=>{class t{static#e=this.\u0275fac=function(i){return new(i||t)};static#t=this.\u0275mod=ge({type:t});static#n=this.\u0275inj=he({imports:[Ni,EC,pp,Fg,$p,_u,IC,Bp,ou,Ec,zg,eD,XV,IF]})}return t})(),Ehe=(()=>{class t{static#e=this.\u0275fac=function(i){return new(i||t)};static#t=this.\u0275mod=ge({type:t});static#n=this.\u0275inj=he({imports:[uO,vde,Ni,kae,gp,Pae,Gae,WF,Wae,cce,gu,K0,pce,yce,Tce,DV,Xce,pae,wle,tde,XV,Che,IF,Dhe]})}return t})(),khe=(()=>{class t{static#e=this.\u0275fac=function(i){return new(i||t)};static#t=this.\u0275mod=ge({type:t});static#n=this.\u0275inj=he({imports:[Ni]})}return t})(),The=(()=>{class t{constructor(e,i){e.setDefaultFontSetClass("material-icons-outlined","material-symbols-outlined"),e.addSvgIcon("magnet",i.bypassSecurityTrustResourceUrl("assets/magnet.svg"))}static#e=this.\u0275fac=function(i){return new(i||t)(S(ru),S(km))};static#t=this.\u0275mod=ge({type:t,bootstrap:[ehe]});static#n=this.\u0275inj=he({providers:[DC],imports:[Cie,uO,$1,xhe,WF,$7,gp,KX,K0,XZ,WX,Ehe,khe]})}return t})();RQ().bootstrapModule(The).catch(t=>console.error(t))},806:function(dl){dl.exports=function(){"use strict";function ns(Pr){return(ns="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(ft){return typeof ft}:function(ft){return ft&&"function"==typeof Symbol&&ft.constructor===Symbol&&ft!==Symbol.prototype?"symbol":typeof ft})(Pr)}var Mi="iec",ia="jedec",ra={symbol:{iec:{bits:["bit","Kibit","Mibit","Gibit","Tibit","Pibit","Eibit","Zibit","Yibit"],bytes:["B","KiB","MiB","GiB","TiB","PiB","EiB","ZiB","YiB"]},jedec:{bits:["bit","Kbit","Mbit","Gbit","Tbit","Pbit","Ebit","Zbit","Ybit"],bytes:["B","KB","MB","GB","TB","PB","EB","ZB","YB"]}},fullform:{iec:["","kibi","mebi","gibi","tebi","pebi","exbi","zebi","yobi"],jedec:["","kilo","mega","giga","tera","peta","exa","zetta","yotta"]}};function oa(Pr){var ft=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},ml=ft.bits,Lr=void 0!==ml&&ml,pl=ft.pad,ih=void 0!==pl&&pl,os=ft.base,$n=void 0===os?-1:os,Vr=ft.round,sa=void 0===Vr?2:Vr,Yg=ft.locale,rh=void 0===Yg?"":Yg,Kg=ft.localeOptions,Xg=void 0===Kg?{}:Kg,oh=ft.separator,sh=void 0===oh?"":oh,gl=ft.spacer,ah=void 0===gl?" ":gl,ch=ft.symbols,_l=void 0===ch?{}:ch,Zg=ft.standard,zi=void 0===Zg?"":Zg,Jg=ft.output,bl=void 0===Jg?"string":Jg,e_=ft.fullform,t_=void 0!==e_&&e_,lh=ft.fullforms,dh=void 0===lh?[]:lh,aa=ft.exponent,uh=void 0===aa?-1:aa,n_=ft.roundingMethod,Qe=void 0===n_?"round":n_,ca=ft.precision,po=void 0===ca?0:ca,vt=uh,Ae=Number(Pr),tt=[],ss=0,la="";-1===$n&&0===zi.length?($n=10,zi=ia):-1===$n&&zi.length>0?$n=(zi=zi===Mi?Mi:ia)===Mi?2:10:zi=10==($n=2===$n?2:10)||zi===ia?ia:Mi;var Ii=10===$n?1e3:1024,da=!0===t_,vl=Ae<0,as=Math[Qe];if(isNaN(Pr))throw new TypeError("Invalid number");if("function"!==ns(as))throw new TypeError("Invalid rounding method");if(vl&&(Ae=-Ae),(-1===vt||isNaN(vt))&&(vt=Math.floor(Math.log(Ae)/Math.log(Ii)))<0&&(vt=0),vt>8&&(po>0&&(po+=8-vt),vt=8),"exponent"===bl)return vt;if(0===Ae)tt[0]=0,la=tt[1]=ra.symbol[zi][Lr?"bits":"bytes"][vt];else{ss=Ae/(2===$n?Math.pow(2,10*vt):Math.pow(1e3,vt)),Lr&&(ss*=8)>=Ii&&vt<8&&(ss/=Ii,vt++);var hh=Math.pow(10,vt>0?sa:0);tt[0]=as(ss*hh)/hh,tt[0]===Ii&&vt<8&&-1===uh&&(tt[0]=1,vt++),la=tt[1]=10===$n&&1===vt?Lr?"kbit":"kB":ra.symbol[zi][Lr?"bits":"bytes"][vt]}if(vl&&(tt[0]=-tt[0]),po>0&&(tt[0]=tt[0].toPrecision(po)),tt[1]=_l[tt[1]]||tt[1],!0===rh?tt[0]=tt[0].toLocaleString():rh.length>0?tt[0]=tt[0].toLocaleString(rh,Xg):sh.length>0&&(tt[0]=tt[0].toString().replace(".",sh)),ih&&!1===Number.isInteger(tt[0])&&sa>0){var fh=sh||".",mh=tt[0].toString().split(fh),ua=mh[1]||"",lr=ua.length,ha=sa-lr;tt[0]="".concat(mh[0]).concat(fh).concat(ua.padEnd(lr+ha,"0"))}return da&&(tt[1]=dh[vt]?dh[vt]:ra.fullform[zi][vt]+(Lr?"bit":"byte")+(1===tt[0]?"":"s")),"array"===bl?tt:"object"===bl?{value:tt[0],symbol:tt[1],exponent:vt,unit:la}:tt.join(ah)}return oa.partial=function(Pr){return function(ft){return oa(ft,Pr)}},oa}()}},dl=>{dl(dl.s=132)}]); \ No newline at end of file diff --git a/webui/dist/bitmagnet/material-symbols-outlined-latin-100-normal.a2f779913f7f7cf8.woff b/webui/dist/bitmagnet/material-symbols-outlined-latin-100-normal.a2f779913f7f7cf8.woff deleted file mode 100644 index c78d172..0000000 Binary files a/webui/dist/bitmagnet/material-symbols-outlined-latin-100-normal.a2f779913f7f7cf8.woff and /dev/null differ diff --git a/webui/dist/bitmagnet/material-symbols-outlined-latin-100-normal.c1e0e4ed0261ac90.woff2 b/webui/dist/bitmagnet/material-symbols-outlined-latin-100-normal.c1e0e4ed0261ac90.woff2 deleted file mode 100644 index 43c4ad4..0000000 Binary files a/webui/dist/bitmagnet/material-symbols-outlined-latin-100-normal.c1e0e4ed0261ac90.woff2 and /dev/null differ diff --git a/webui/dist/bitmagnet/material-symbols-outlined-latin-200-normal.2ea6122ec51c4d19.woff2 b/webui/dist/bitmagnet/material-symbols-outlined-latin-200-normal.2ea6122ec51c4d19.woff2 deleted file mode 100644 index 3ab9c27..0000000 Binary files a/webui/dist/bitmagnet/material-symbols-outlined-latin-200-normal.2ea6122ec51c4d19.woff2 and /dev/null differ diff --git a/webui/dist/bitmagnet/material-symbols-outlined-latin-200-normal.7d9b339321ba92ec.woff b/webui/dist/bitmagnet/material-symbols-outlined-latin-200-normal.7d9b339321ba92ec.woff deleted file mode 100644 index cb38dca..0000000 Binary files a/webui/dist/bitmagnet/material-symbols-outlined-latin-200-normal.7d9b339321ba92ec.woff and /dev/null differ diff --git a/webui/dist/bitmagnet/material-symbols-outlined-latin-300-normal.034c7c1a7e90fea6.woff b/webui/dist/bitmagnet/material-symbols-outlined-latin-300-normal.034c7c1a7e90fea6.woff deleted file mode 100644 index 7427d9c..0000000 Binary files a/webui/dist/bitmagnet/material-symbols-outlined-latin-300-normal.034c7c1a7e90fea6.woff and /dev/null differ diff --git a/webui/dist/bitmagnet/material-symbols-outlined-latin-300-normal.15984fda16656a88.woff2 b/webui/dist/bitmagnet/material-symbols-outlined-latin-300-normal.15984fda16656a88.woff2 deleted file mode 100644 index d7c99c9..0000000 Binary files a/webui/dist/bitmagnet/material-symbols-outlined-latin-300-normal.15984fda16656a88.woff2 and /dev/null differ diff --git a/webui/dist/bitmagnet/material-symbols-outlined-latin-400-normal.617c5b21b67bf5ef.woff2 b/webui/dist/bitmagnet/material-symbols-outlined-latin-400-normal.617c5b21b67bf5ef.woff2 deleted file mode 100644 index 8ffbe21..0000000 Binary files a/webui/dist/bitmagnet/material-symbols-outlined-latin-400-normal.617c5b21b67bf5ef.woff2 and /dev/null differ diff --git a/webui/dist/bitmagnet/material-symbols-outlined-latin-400-normal.7752310294901aa4.woff b/webui/dist/bitmagnet/material-symbols-outlined-latin-400-normal.7752310294901aa4.woff deleted file mode 100644 index 1097d06..0000000 Binary files a/webui/dist/bitmagnet/material-symbols-outlined-latin-400-normal.7752310294901aa4.woff and /dev/null differ diff --git a/webui/dist/bitmagnet/polyfills.92b509deac753c46.js b/webui/dist/bitmagnet/polyfills.92b509deac753c46.js deleted file mode 100644 index 16d0ebe..0000000 --- a/webui/dist/bitmagnet/polyfills.92b509deac753c46.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkbitmagnet=self.webpackChunkbitmagnet||[]).push([[461],{935:()=>{!function(t){const n=t.performance;function i(L){n&&n.mark&&n.mark(L)}function o(L,T){n&&n.measure&&n.measure(L,T)}i("Zone");const c=t.__Zone_symbol_prefix||"__zone_symbol__";function a(L){return c+L}const y=!0===t[a("forceDuplicateZoneCheck")];if(t.Zone){if(y||"function"!=typeof t.Zone.__symbol__)throw new Error("Zone already loaded.");return t.Zone}let d=(()=>{class L{static#e=this.__symbol__=a;static assertZonePatched(){if(t.Promise!==se.ZoneAwarePromise)throw new Error("Zone.js has detected that ZoneAwarePromise `(window|global).Promise` has been overwritten.\nMost likely cause is that a Promise polyfill has been loaded after Zone.js (Polyfilling Promise api is not necessary when zone.js is loaded. If you must load one, do so before loading zone.js.)")}static get root(){let e=L.current;for(;e.parent;)e=e.parent;return e}static get current(){return U.zone}static get currentTask(){return oe}static __load_patch(e,r,k=!1){if(se.hasOwnProperty(e)){if(!k&&y)throw Error("Already loaded patch: "+e)}else if(!t["__Zone_disable_"+e]){const C="Zone:"+e;i(C),se[e]=r(t,L,z),o(C,C)}}get parent(){return this._parent}get name(){return this._name}constructor(e,r){this._parent=e,this._name=r?r.name||"unnamed":"",this._properties=r&&r.properties||{},this._zoneDelegate=new v(this,this._parent&&this._parent._zoneDelegate,r)}get(e){const r=this.getZoneWith(e);if(r)return r._properties[e]}getZoneWith(e){let r=this;for(;r;){if(r._properties.hasOwnProperty(e))return r;r=r._parent}return null}fork(e){if(!e)throw new Error("ZoneSpec required!");return this._zoneDelegate.fork(this,e)}wrap(e,r){if("function"!=typeof e)throw new Error("Expecting function got: "+e);const k=this._zoneDelegate.intercept(this,e,r),C=this;return function(){return C.runGuarded(k,this,arguments,r)}}run(e,r,k,C){U={parent:U,zone:this};try{return this._zoneDelegate.invoke(this,e,r,k,C)}finally{U=U.parent}}runGuarded(e,r=null,k,C){U={parent:U,zone:this};try{try{return this._zoneDelegate.invoke(this,e,r,k,C)}catch($){if(this._zoneDelegate.handleError(this,$))throw $}}finally{U=U.parent}}runTask(e,r,k){if(e.zone!=this)throw new Error("A task can only be run in the zone of creation! (Creation: "+(e.zone||J).name+"; Execution: "+this.name+")");if(e.state===x&&(e.type===Q||e.type===P))return;const C=e.state!=E;C&&e._transitionTo(E,j),e.runCount++;const $=oe;oe=e,U={parent:U,zone:this};try{e.type==P&&e.data&&!e.data.isPeriodic&&(e.cancelFn=void 0);try{return this._zoneDelegate.invokeTask(this,e,r,k)}catch(u){if(this._zoneDelegate.handleError(this,u))throw u}}finally{e.state!==x&&e.state!==h&&(e.type==Q||e.data&&e.data.isPeriodic?C&&e._transitionTo(j,E):(e.runCount=0,this._updateTaskCount(e,-1),C&&e._transitionTo(x,E,x))),U=U.parent,oe=$}}scheduleTask(e){if(e.zone&&e.zone!==this){let k=this;for(;k;){if(k===e.zone)throw Error(`can not reschedule task to ${this.name} which is descendants of the original zone ${e.zone.name}`);k=k.parent}}e._transitionTo(X,x);const r=[];e._zoneDelegates=r,e._zone=this;try{e=this._zoneDelegate.scheduleTask(this,e)}catch(k){throw e._transitionTo(h,X,x),this._zoneDelegate.handleError(this,k),k}return e._zoneDelegates===r&&this._updateTaskCount(e,1),e.state==X&&e._transitionTo(j,X),e}scheduleMicroTask(e,r,k,C){return this.scheduleTask(new m(I,e,r,k,C,void 0))}scheduleMacroTask(e,r,k,C,$){return this.scheduleTask(new m(P,e,r,k,C,$))}scheduleEventTask(e,r,k,C,$){return this.scheduleTask(new m(Q,e,r,k,C,$))}cancelTask(e){if(e.zone!=this)throw new Error("A task can only be cancelled in the zone of creation! (Creation: "+(e.zone||J).name+"; Execution: "+this.name+")");if(e.state===j||e.state===E){e._transitionTo(G,j,E);try{this._zoneDelegate.cancelTask(this,e)}catch(r){throw e._transitionTo(h,G),this._zoneDelegate.handleError(this,r),r}return this._updateTaskCount(e,-1),e._transitionTo(x,G),e.runCount=0,e}}_updateTaskCount(e,r){const k=e._zoneDelegates;-1==r&&(e._zoneDelegates=null);for(let C=0;CL.hasTask(e,r),onScheduleTask:(L,T,e,r)=>L.scheduleTask(e,r),onInvokeTask:(L,T,e,r,k,C)=>L.invokeTask(e,r,k,C),onCancelTask:(L,T,e,r)=>L.cancelTask(e,r)};class v{constructor(T,e,r){this._taskCounts={microTask:0,macroTask:0,eventTask:0},this.zone=T,this._parentDelegate=e,this._forkZS=r&&(r&&r.onFork?r:e._forkZS),this._forkDlgt=r&&(r.onFork?e:e._forkDlgt),this._forkCurrZone=r&&(r.onFork?this.zone:e._forkCurrZone),this._interceptZS=r&&(r.onIntercept?r:e._interceptZS),this._interceptDlgt=r&&(r.onIntercept?e:e._interceptDlgt),this._interceptCurrZone=r&&(r.onIntercept?this.zone:e._interceptCurrZone),this._invokeZS=r&&(r.onInvoke?r:e._invokeZS),this._invokeDlgt=r&&(r.onInvoke?e:e._invokeDlgt),this._invokeCurrZone=r&&(r.onInvoke?this.zone:e._invokeCurrZone),this._handleErrorZS=r&&(r.onHandleError?r:e._handleErrorZS),this._handleErrorDlgt=r&&(r.onHandleError?e:e._handleErrorDlgt),this._handleErrorCurrZone=r&&(r.onHandleError?this.zone:e._handleErrorCurrZone),this._scheduleTaskZS=r&&(r.onScheduleTask?r:e._scheduleTaskZS),this._scheduleTaskDlgt=r&&(r.onScheduleTask?e:e._scheduleTaskDlgt),this._scheduleTaskCurrZone=r&&(r.onScheduleTask?this.zone:e._scheduleTaskCurrZone),this._invokeTaskZS=r&&(r.onInvokeTask?r:e._invokeTaskZS),this._invokeTaskDlgt=r&&(r.onInvokeTask?e:e._invokeTaskDlgt),this._invokeTaskCurrZone=r&&(r.onInvokeTask?this.zone:e._invokeTaskCurrZone),this._cancelTaskZS=r&&(r.onCancelTask?r:e._cancelTaskZS),this._cancelTaskDlgt=r&&(r.onCancelTask?e:e._cancelTaskDlgt),this._cancelTaskCurrZone=r&&(r.onCancelTask?this.zone:e._cancelTaskCurrZone),this._hasTaskZS=null,this._hasTaskDlgt=null,this._hasTaskDlgtOwner=null,this._hasTaskCurrZone=null;const k=r&&r.onHasTask;(k||e&&e._hasTaskZS)&&(this._hasTaskZS=k?r:b,this._hasTaskDlgt=e,this._hasTaskDlgtOwner=this,this._hasTaskCurrZone=T,r.onScheduleTask||(this._scheduleTaskZS=b,this._scheduleTaskDlgt=e,this._scheduleTaskCurrZone=this.zone),r.onInvokeTask||(this._invokeTaskZS=b,this._invokeTaskDlgt=e,this._invokeTaskCurrZone=this.zone),r.onCancelTask||(this._cancelTaskZS=b,this._cancelTaskDlgt=e,this._cancelTaskCurrZone=this.zone))}fork(T,e){return this._forkZS?this._forkZS.onFork(this._forkDlgt,this.zone,T,e):new d(T,e)}intercept(T,e,r){return this._interceptZS?this._interceptZS.onIntercept(this._interceptDlgt,this._interceptCurrZone,T,e,r):e}invoke(T,e,r,k,C){return this._invokeZS?this._invokeZS.onInvoke(this._invokeDlgt,this._invokeCurrZone,T,e,r,k,C):e.apply(r,k)}handleError(T,e){return!this._handleErrorZS||this._handleErrorZS.onHandleError(this._handleErrorDlgt,this._handleErrorCurrZone,T,e)}scheduleTask(T,e){let r=e;if(this._scheduleTaskZS)this._hasTaskZS&&r._zoneDelegates.push(this._hasTaskDlgtOwner),r=this._scheduleTaskZS.onScheduleTask(this._scheduleTaskDlgt,this._scheduleTaskCurrZone,T,e),r||(r=e);else if(e.scheduleFn)e.scheduleFn(e);else{if(e.type!=I)throw new Error("Task is missing scheduleFn.");R(e)}return r}invokeTask(T,e,r,k){return this._invokeTaskZS?this._invokeTaskZS.onInvokeTask(this._invokeTaskDlgt,this._invokeTaskCurrZone,T,e,r,k):e.callback.apply(r,k)}cancelTask(T,e){let r;if(this._cancelTaskZS)r=this._cancelTaskZS.onCancelTask(this._cancelTaskDlgt,this._cancelTaskCurrZone,T,e);else{if(!e.cancelFn)throw Error("Task is not cancelable");r=e.cancelFn(e)}return r}hasTask(T,e){try{this._hasTaskZS&&this._hasTaskZS.onHasTask(this._hasTaskDlgt,this._hasTaskCurrZone,T,e)}catch(r){this.handleError(T,r)}}_updateTaskCount(T,e){const r=this._taskCounts,k=r[T],C=r[T]=k+e;if(C<0)throw new Error("More tasks executed then were scheduled.");0!=k&&0!=C||this.hasTask(this.zone,{microTask:r.microTask>0,macroTask:r.macroTask>0,eventTask:r.eventTask>0,change:T})}}class m{constructor(T,e,r,k,C,$){if(this._zone=null,this.runCount=0,this._zoneDelegates=null,this._state="notScheduled",this.type=T,this.source=e,this.data=k,this.scheduleFn=C,this.cancelFn=$,!r)throw new Error("callback is not defined");this.callback=r;const u=this;this.invoke=T===Q&&k&&k.useG?m.invokeTask:function(){return m.invokeTask.call(t,u,this,arguments)}}static invokeTask(T,e,r){T||(T=this),te++;try{return T.runCount++,T.zone.runTask(T,e,r)}finally{1==te&&_(),te--}}get zone(){return this._zone}get state(){return this._state}cancelScheduleRequest(){this._transitionTo(x,X)}_transitionTo(T,e,r){if(this._state!==e&&this._state!==r)throw new Error(`${this.type} '${this.source}': can not transition to '${T}', expecting state '${e}'${r?" or '"+r+"'":""}, was '${this._state}'.`);this._state=T,T==x&&(this._zoneDelegates=null)}toString(){return this.data&&typeof this.data.handleId<"u"?this.data.handleId.toString():Object.prototype.toString.call(this)}toJSON(){return{type:this.type,state:this.state,source:this.source,zone:this.zone.name,runCount:this.runCount}}}const M=a("setTimeout"),O=a("Promise"),N=a("then");let K,B=[],H=!1;function q(L){if(K||t[O]&&(K=t[O].resolve(0)),K){let T=K[N];T||(T=K.then),T.call(K,L)}else t[M](L,0)}function R(L){0===te&&0===B.length&&q(_),L&&B.push(L)}function _(){if(!H){for(H=!0;B.length;){const L=B;B=[];for(let T=0;TU,onUnhandledError:W,microtaskDrainDone:W,scheduleMicroTask:R,showUncaughtError:()=>!d[a("ignoreConsoleErrorUncaughtError")],patchEventTarget:()=>[],patchOnProperties:W,patchMethod:()=>W,bindArguments:()=>[],patchThen:()=>W,patchMacroTask:()=>W,patchEventPrototype:()=>W,isIEOrEdge:()=>!1,getGlobalObjects:()=>{},ObjectDefineProperty:()=>W,ObjectGetOwnPropertyDescriptor:()=>{},ObjectCreate:()=>{},ArraySlice:()=>[],patchClass:()=>W,wrapWithCurrentZone:()=>W,filterProperties:()=>[],attachOriginToPatched:()=>W,_redefineProperty:()=>W,patchCallbacks:()=>W,nativeScheduleMicroTask:q};let U={parent:null,zone:new d(null,null)},oe=null,te=0;function W(){}o("Zone","Zone"),t.Zone=d}(globalThis);const fe=Object.getOwnPropertyDescriptor,me=Object.defineProperty,be=Object.getPrototypeOf,De=Object.create,ct=Array.prototype.slice,Ze="addEventListener",Oe="removeEventListener",Ne=Zone.__symbol__(Ze),Ie=Zone.__symbol__(Oe),ce="true",ae="false",pe=Zone.__symbol__("");function Me(t,n){return Zone.current.wrap(t,n)}function Le(t,n,i,o,c){return Zone.current.scheduleMacroTask(t,n,i,o,c)}const A=Zone.__symbol__,Pe=typeof window<"u",_e=Pe?window:void 0,Y=Pe&&_e||globalThis,at="removeAttribute";function je(t,n){for(let i=t.length-1;i>=0;i--)"function"==typeof t[i]&&(t[i]=Me(t[i],n+"_"+i));return t}function Fe(t){return!t||!1!==t.writable&&!("function"==typeof t.get&&typeof t.set>"u")}const Be=typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope,we=!("nw"in Y)&&typeof Y.process<"u"&&"[object process]"==={}.toString.call(Y.process),Ae=!we&&!Be&&!(!Pe||!_e.HTMLElement),Ue=typeof Y.process<"u"&&"[object process]"==={}.toString.call(Y.process)&&!Be&&!(!Pe||!_e.HTMLElement),Re={},We=function(t){if(!(t=t||Y.event))return;let n=Re[t.type];n||(n=Re[t.type]=A("ON_PROPERTY"+t.type));const i=this||t.target||Y,o=i[n];let c;return Ae&&i===_e&&"error"===t.type?(c=o&&o.call(this,t.message,t.filename,t.lineno,t.colno,t.error),!0===c&&t.preventDefault()):(c=o&&o.apply(this,arguments),null!=c&&!c&&t.preventDefault()),c};function qe(t,n,i){let o=fe(t,n);if(!o&&i&&fe(i,n)&&(o={enumerable:!0,configurable:!0}),!o||!o.configurable)return;const c=A("on"+n+"patched");if(t.hasOwnProperty(c)&&t[c])return;delete o.writable,delete o.value;const a=o.get,y=o.set,d=n.slice(2);let b=Re[d];b||(b=Re[d]=A("ON_PROPERTY"+d)),o.set=function(v){let m=this;!m&&t===Y&&(m=Y),m&&("function"==typeof m[b]&&m.removeEventListener(d,We),y&&y.call(m,null),m[b]=v,"function"==typeof v&&m.addEventListener(d,We,!1))},o.get=function(){let v=this;if(!v&&t===Y&&(v=Y),!v)return null;const m=v[b];if(m)return m;if(a){let M=a.call(this);if(M)return o.set.call(this,M),"function"==typeof v[at]&&v.removeAttribute(n),M}return null},me(t,n,o),t[c]=!0}function Xe(t,n,i){if(n)for(let o=0;ofunction(y,d){const b=i(y,d);return b.cbIdx>=0&&"function"==typeof d[b.cbIdx]?Le(b.name,d[b.cbIdx],b,c):a.apply(y,d)})}function ue(t,n){t[A("OriginalDelegate")]=n}let ze=!1,He=!1;function ht(){if(ze)return He;ze=!0;try{const t=_e.navigator.userAgent;(-1!==t.indexOf("MSIE ")||-1!==t.indexOf("Trident/")||-1!==t.indexOf("Edge/"))&&(He=!0)}catch{}return He}Zone.__load_patch("ZoneAwarePromise",(t,n,i)=>{const o=Object.getOwnPropertyDescriptor,c=Object.defineProperty,y=i.symbol,d=[],b=!1!==t[y("DISABLE_WRAPPING_UNCAUGHT_PROMISE_REJECTION")],v=y("Promise"),m=y("then"),M="__creationTrace__";i.onUnhandledError=u=>{if(i.showUncaughtError()){const l=u&&u.rejection;l?console.error("Unhandled Promise rejection:",l instanceof Error?l.message:l,"; Zone:",u.zone.name,"; Task:",u.task&&u.task.source,"; Value:",l,l instanceof Error?l.stack:void 0):console.error(u)}},i.microtaskDrainDone=()=>{for(;d.length;){const u=d.shift();try{u.zone.runGuarded(()=>{throw u.throwOriginal?u.rejection:u})}catch(l){N(l)}}};const O=y("unhandledPromiseRejectionHandler");function N(u){i.onUnhandledError(u);try{const l=n[O];"function"==typeof l&&l.call(this,u)}catch{}}function B(u){return u&&u.then}function H(u){return u}function K(u){return e.reject(u)}const q=y("state"),R=y("value"),_=y("finally"),J=y("parentPromiseValue"),x=y("parentPromiseState"),X="Promise.then",j=null,E=!0,G=!1,h=0;function I(u,l){return s=>{try{z(u,l,s)}catch(f){z(u,!1,f)}}}const P=function(){let u=!1;return function(s){return function(){u||(u=!0,s.apply(null,arguments))}}},Q="Promise resolved with itself",se=y("currentTaskTrace");function z(u,l,s){const f=P();if(u===s)throw new TypeError(Q);if(u[q]===j){let g=null;try{("object"==typeof s||"function"==typeof s)&&(g=s&&s.then)}catch(w){return f(()=>{z(u,!1,w)})(),u}if(l!==G&&s instanceof e&&s.hasOwnProperty(q)&&s.hasOwnProperty(R)&&s[q]!==j)oe(s),z(u,s[q],s[R]);else if(l!==G&&"function"==typeof g)try{g.call(s,f(I(u,l)),f(I(u,!1)))}catch(w){f(()=>{z(u,!1,w)})()}else{u[q]=l;const w=u[R];if(u[R]=s,u[_]===_&&l===E&&(u[q]=u[x],u[R]=u[J]),l===G&&s instanceof Error){const p=n.currentTask&&n.currentTask.data&&n.currentTask.data[M];p&&c(s,se,{configurable:!0,enumerable:!1,writable:!0,value:p})}for(let p=0;p{try{const S=u[R],D=!!s&&_===s[_];D&&(s[J]=S,s[x]=w);const Z=l.run(p,void 0,D&&p!==K&&p!==H?[]:[S]);z(s,!0,Z)}catch(S){z(s,!1,S)}},s)}const L=function(){},T=t.AggregateError;class e{static toString(){return"function ZoneAwarePromise() { [native code] }"}static resolve(l){return l instanceof e?l:z(new this(null),E,l)}static reject(l){return z(new this(null),G,l)}static withResolvers(){const l={};return l.promise=new e((s,f)=>{l.resolve=s,l.reject=f}),l}static any(l){if(!l||"function"!=typeof l[Symbol.iterator])return Promise.reject(new T([],"All promises were rejected"));const s=[];let f=0;try{for(let p of l)f++,s.push(e.resolve(p))}catch{return Promise.reject(new T([],"All promises were rejected"))}if(0===f)return Promise.reject(new T([],"All promises were rejected"));let g=!1;const w=[];return new e((p,S)=>{for(let D=0;D{g||(g=!0,p(Z))},Z=>{w.push(Z),f--,0===f&&(g=!0,S(new T(w,"All promises were rejected")))})})}static race(l){let s,f,g=new this((S,D)=>{s=S,f=D});function w(S){s(S)}function p(S){f(S)}for(let S of l)B(S)||(S=this.resolve(S)),S.then(w,p);return g}static all(l){return e.allWithCallback(l)}static allSettled(l){return(this&&this.prototype instanceof e?this:e).allWithCallback(l,{thenCallback:f=>({status:"fulfilled",value:f}),errorCallback:f=>({status:"rejected",reason:f})})}static allWithCallback(l,s){let f,g,w=new this((Z,V)=>{f=Z,g=V}),p=2,S=0;const D=[];for(let Z of l){B(Z)||(Z=this.resolve(Z));const V=S;try{Z.then(F=>{D[V]=s?s.thenCallback(F):F,p--,0===p&&f(D)},F=>{s?(D[V]=s.errorCallback(F),p--,0===p&&f(D)):g(F)})}catch(F){g(F)}p++,S++}return p-=2,0===p&&f(D),w}constructor(l){const s=this;if(!(s instanceof e))throw new Error("Must be an instanceof Promise.");s[q]=j,s[R]=[];try{const f=P();l&&l(f(I(s,E)),f(I(s,G)))}catch(f){z(s,!1,f)}}get[Symbol.toStringTag](){return"Promise"}get[Symbol.species](){return e}then(l,s){let f=this.constructor?.[Symbol.species];(!f||"function"!=typeof f)&&(f=this.constructor||e);const g=new f(L),w=n.current;return this[q]==j?this[R].push(w,g,l,s):te(this,w,g,l,s),g}catch(l){return this.then(null,l)}finally(l){let s=this.constructor?.[Symbol.species];(!s||"function"!=typeof s)&&(s=e);const f=new s(L);f[_]=_;const g=n.current;return this[q]==j?this[R].push(g,f,l,l):te(this,g,f,l,l),f}}e.resolve=e.resolve,e.reject=e.reject,e.race=e.race,e.all=e.all;const r=t[v]=t.Promise;t.Promise=e;const k=y("thenPatched");function C(u){const l=u.prototype,s=o(l,"then");if(s&&(!1===s.writable||!s.configurable))return;const f=l.then;l[m]=f,u.prototype.then=function(g,w){return new e((S,D)=>{f.call(this,S,D)}).then(g,w)},u[k]=!0}return i.patchThen=C,r&&(C(r),le(t,"fetch",u=>function $(u){return function(l,s){let f=u.apply(l,s);if(f instanceof e)return f;let g=f.constructor;return g[k]||C(g),f}}(u))),Promise[n.__symbol__("uncaughtPromiseErrors")]=d,e}),Zone.__load_patch("toString",t=>{const n=Function.prototype.toString,i=A("OriginalDelegate"),o=A("Promise"),c=A("Error"),a=function(){if("function"==typeof this){const v=this[i];if(v)return"function"==typeof v?n.call(v):Object.prototype.toString.call(v);if(this===Promise){const m=t[o];if(m)return n.call(m)}if(this===Error){const m=t[c];if(m)return n.call(m)}}return n.call(this)};a[i]=n,Function.prototype.toString=a;const y=Object.prototype.toString;Object.prototype.toString=function(){return"function"==typeof Promise&&this instanceof Promise?"[object Promise]":y.call(this)}});let Ee=!1;if(typeof window<"u")try{const t=Object.defineProperty({},"passive",{get:function(){Ee=!0}});window.addEventListener("test",t,t),window.removeEventListener("test",t,t)}catch{Ee=!1}const dt={useG:!0},ne={},Ye={},$e=new RegExp("^"+pe+"(\\w+)(true|false)$"),Je=A("propagationStopped");function Ke(t,n){const i=(n?n(t):t)+ae,o=(n?n(t):t)+ce,c=pe+i,a=pe+o;ne[t]={},ne[t][ae]=c,ne[t][ce]=a}function _t(t,n,i,o){const c=o&&o.add||Ze,a=o&&o.rm||Oe,y=o&&o.listeners||"eventListeners",d=o&&o.rmAll||"removeAllListeners",b=A(c),v="."+c+":",m="prependListener",M="."+m+":",O=function(R,_,J){if(R.isRemoved)return;const x=R.callback;let X;"object"==typeof x&&x.handleEvent&&(R.callback=E=>x.handleEvent(E),R.originalDelegate=x);try{R.invoke(R,_,[J])}catch(E){X=E}const j=R.options;return j&&"object"==typeof j&&j.once&&_[a].call(_,J.type,R.originalDelegate?R.originalDelegate:R.callback,j),X};function N(R,_,J){if(!(_=_||t.event))return;const x=R||_.target||t,X=x[ne[_.type][J?ce:ae]];if(X){const j=[];if(1===X.length){const E=O(X[0],x,_);E&&j.push(E)}else{const E=X.slice();for(let G=0;G{throw G})}}}const B=function(R){return N(this,R,!1)},H=function(R){return N(this,R,!0)};function K(R,_){if(!R)return!1;let J=!0;_&&void 0!==_.useG&&(J=_.useG);const x=_&&_.vh;let X=!0;_&&void 0!==_.chkDup&&(X=_.chkDup);let j=!1;_&&void 0!==_.rt&&(j=_.rt);let E=R;for(;E&&!E.hasOwnProperty(c);)E=be(E);if(!E&&R[c]&&(E=R),!E||E[b])return!1;const G=_&&_.eventNameToString,h={},I=E[b]=E[c],P=E[A(a)]=E[a],Q=E[A(y)]=E[y],se=E[A(d)]=E[d];let z;_&&_.prepend&&(z=E[A(_.prepend)]=E[_.prepend]);const e=J?function(s){if(!h.isExisting)return I.call(h.target,h.eventName,h.capture?H:B,h.options)}:function(s){return I.call(h.target,h.eventName,s.invoke,h.options)},r=J?function(s){if(!s.isRemoved){const f=ne[s.eventName];let g;f&&(g=f[s.capture?ce:ae]);const w=g&&s.target[g];if(w)for(let p=0;p{ie.zone.cancelTask(ie)},{once:!0})),h.target=null,ve&&(ve.taskData=null),nt&&(ee.once=!0),!Ee&&"boolean"==typeof ie.options||(ie.options=ee),ie.target=D,ie.capture=Ge,ie.eventName=Z,F&&(ie.originalDelegate=V),S?ye.unshift(ie):ye.push(ie),p?D:void 0}};return E[c]=l(I,v,e,r,j),z&&(E[m]=l(z,M,function(s){return z.call(h.target,h.eventName,s.invoke,h.options)},r,j,!0)),E[a]=function(){const s=this||t;let f=arguments[0];_&&_.transferEventName&&(f=_.transferEventName(f));const g=arguments[2],w=!!g&&("boolean"==typeof g||g.capture),p=arguments[1];if(!p)return P.apply(this,arguments);if(x&&!x(P,p,s,arguments))return;const S=ne[f];let D;S&&(D=S[w?ce:ae]);const Z=D&&s[D];if(Z)for(let V=0;Vfunction(c,a){c[Je]=!0,o&&o.apply(c,a)})}function Tt(t,n,i,o,c){const a=Zone.__symbol__(o);if(n[a])return;const y=n[a]=n[o];n[o]=function(d,b,v){return b&&b.prototype&&c.forEach(function(m){const M=`${i}.${o}::`+m,O=b.prototype;try{if(O.hasOwnProperty(m)){const N=t.ObjectGetOwnPropertyDescriptor(O,m);N&&N.value?(N.value=t.wrapWithCurrentZone(N.value,M),t._redefineProperty(b.prototype,m,N)):O[m]&&(O[m]=t.wrapWithCurrentZone(O[m],M))}else O[m]&&(O[m]=t.wrapWithCurrentZone(O[m],M))}catch{}}),y.call(n,d,b,v)},t.attachOriginToPatched(n[o],y)}function et(t,n,i){if(!i||0===i.length)return n;const o=i.filter(a=>a.target===t);if(!o||0===o.length)return n;const c=o[0].ignoreProperties;return n.filter(a=>-1===c.indexOf(a))}function tt(t,n,i,o){t&&Xe(t,et(t,n,i),o)}function xe(t){return Object.getOwnPropertyNames(t).filter(n=>n.startsWith("on")&&n.length>2).map(n=>n.substring(2))}Zone.__load_patch("util",(t,n,i)=>{const o=xe(t);i.patchOnProperties=Xe,i.patchMethod=le,i.bindArguments=je,i.patchMacroTask=ut;const c=n.__symbol__("BLACK_LISTED_EVENTS"),a=n.__symbol__("UNPATCHED_EVENTS");t[a]&&(t[c]=t[a]),t[c]&&(n[c]=n[a]=t[c]),i.patchEventPrototype=Et,i.patchEventTarget=_t,i.isIEOrEdge=ht,i.ObjectDefineProperty=me,i.ObjectGetOwnPropertyDescriptor=fe,i.ObjectCreate=De,i.ArraySlice=ct,i.patchClass=ge,i.wrapWithCurrentZone=Me,i.filterProperties=et,i.attachOriginToPatched=ue,i._redefineProperty=Object.defineProperty,i.patchCallbacks=Tt,i.getGlobalObjects=()=>({globalSources:Ye,zoneSymbolEventNames:ne,eventNames:o,isBrowser:Ae,isMix:Ue,isNode:we,TRUE_STR:ce,FALSE_STR:ae,ZONE_SYMBOL_PREFIX:pe,ADD_EVENT_LISTENER_STR:Ze,REMOVE_EVENT_LISTENER_STR:Oe})});const Ce=A("zoneTask");function Te(t,n,i,o){let c=null,a=null;i+=o;const y={};function d(v){const m=v.data;return m.args[0]=function(){return v.invoke.apply(this,arguments)},m.handleId=c.apply(t,m.args),v}function b(v){return a.call(t,v.data.handleId)}c=le(t,n+=o,v=>function(m,M){if("function"==typeof M[0]){const O={isPeriodic:"Interval"===o,delay:"Timeout"===o||"Interval"===o?M[1]||0:void 0,args:M},N=M[0];M[0]=function(){try{return N.apply(this,arguments)}finally{O.isPeriodic||("number"==typeof O.handleId?delete y[O.handleId]:O.handleId&&(O.handleId[Ce]=null))}};const B=Le(n,M[0],O,d,b);if(!B)return B;const H=B.data.handleId;return"number"==typeof H?y[H]=B:H&&(H[Ce]=B),H&&H.ref&&H.unref&&"function"==typeof H.ref&&"function"==typeof H.unref&&(B.ref=H.ref.bind(H),B.unref=H.unref.bind(H)),"number"==typeof H||H?H:B}return v.apply(t,M)}),a=le(t,i,v=>function(m,M){const O=M[0];let N;"number"==typeof O?N=y[O]:(N=O&&O[Ce],N||(N=O)),N&&"string"==typeof N.type?"notScheduled"!==N.state&&(N.cancelFn&&N.data.isPeriodic||0===N.runCount)&&("number"==typeof O?delete y[O]:O&&(O[Ce]=null),N.zone.cancelTask(N)):v.apply(t,M)})}Zone.__load_patch("legacy",t=>{const n=t[Zone.__symbol__("legacyPatch")];n&&n()}),Zone.__load_patch("timers",t=>{const n="set",i="clear";Te(t,n,i,"Timeout"),Te(t,n,i,"Interval"),Te(t,n,i,"Immediate")}),Zone.__load_patch("requestAnimationFrame",t=>{Te(t,"request","cancel","AnimationFrame"),Te(t,"mozRequest","mozCancel","AnimationFrame"),Te(t,"webkitRequest","webkitCancel","AnimationFrame")}),Zone.__load_patch("blocking",(t,n)=>{const i=["alert","prompt","confirm"];for(let o=0;ofunction(b,v){return n.current.run(a,t,v,d)})}),Zone.__load_patch("EventTarget",(t,n,i)=>{(function kt(t,n){n.patchEventPrototype(t,n)})(t,i),function gt(t,n){if(Zone[n.symbol("patchEventTarget")])return;const{eventNames:i,zoneSymbolEventNames:o,TRUE_STR:c,FALSE_STR:a,ZONE_SYMBOL_PREFIX:y}=n.getGlobalObjects();for(let b=0;b{ge("MutationObserver"),ge("WebKitMutationObserver")}),Zone.__load_patch("IntersectionObserver",(t,n,i)=>{ge("IntersectionObserver")}),Zone.__load_patch("FileReader",(t,n,i)=>{ge("FileReader")}),Zone.__load_patch("on_property",(t,n,i)=>{!function yt(t,n){if(we&&!Ue||Zone[t.symbol("patchEvents")])return;const i=n.__Zone_ignore_on_properties;let o=[];if(Ae){const c=window;o=o.concat(["Document","SVGElement","Element","HTMLElement","HTMLBodyElement","HTMLMediaElement","HTMLFrameSetElement","HTMLFrameElement","HTMLIFrameElement","HTMLMarqueeElement","Worker"]);const a=function ft(){try{const t=_e.navigator.userAgent;if(-1!==t.indexOf("MSIE ")||-1!==t.indexOf("Trident/"))return!0}catch{}return!1}()?[{target:c,ignoreProperties:["error"]}]:[];tt(c,xe(c),i&&i.concat(a),be(c))}o=o.concat(["XMLHttpRequest","XMLHttpRequestEventTarget","IDBIndex","IDBRequest","IDBOpenDBRequest","IDBDatabase","IDBTransaction","IDBCursor","WebSocket"]);for(let c=0;c{!function pt(t,n){const{isBrowser:i,isMix:o}=n.getGlobalObjects();(i||o)&&t.customElements&&"customElements"in t&&n.patchCallbacks(n,t.customElements,"customElements","define",["connectedCallback","disconnectedCallback","adoptedCallback","attributeChangedCallback","formAssociatedCallback","formDisabledCallback","formResetCallback","formStateRestoreCallback"])}(t,i)}),Zone.__load_patch("XHR",(t,n)=>{!function b(v){const m=v.XMLHttpRequest;if(!m)return;const M=m.prototype;let N=M[Ne],B=M[Ie];if(!N){const h=v.XMLHttpRequestEventTarget;if(h){const I=h.prototype;N=I[Ne],B=I[Ie]}}const H="readystatechange",K="scheduled";function q(h){const I=h.data,P=I.target;P[a]=!1,P[d]=!1;const Q=P[c];N||(N=P[Ne],B=P[Ie]),Q&&B.call(P,H,Q);const se=P[c]=()=>{if(P.readyState===P.DONE)if(!I.aborted&&P[a]&&h.state===K){const U=P[n.__symbol__("loadfalse")];if(0!==P.status&&U&&U.length>0){const oe=h.invoke;h.invoke=function(){const te=P[n.__symbol__("loadfalse")];for(let W=0;Wfunction(h,I){return h[o]=0==I[2],h[y]=I[1],J.apply(h,I)}),X=A("fetchTaskAborting"),j=A("fetchTaskScheduling"),E=le(M,"send",()=>function(h,I){if(!0===n.current[j]||h[o])return E.apply(h,I);{const P={target:h,url:h[y],isPeriodic:!1,args:I,aborted:!1},Q=Le("XMLHttpRequest.send",R,P,q,_);h&&!0===h[d]&&!P.aborted&&Q.state===K&&Q.invoke()}}),G=le(M,"abort",()=>function(h,I){const P=function O(h){return h[i]}(h);if(P&&"string"==typeof P.type){if(null==P.cancelFn||P.data&&P.data.aborted)return;P.zone.cancelTask(P)}else if(!0===n.current[X])return G.apply(h,I)})}(t);const i=A("xhrTask"),o=A("xhrSync"),c=A("xhrListener"),a=A("xhrScheduled"),y=A("xhrURL"),d=A("xhrErrorBeforeScheduled")}),Zone.__load_patch("geolocation",t=>{t.navigator&&t.navigator.geolocation&&function lt(t,n){const i=t.constructor.name;for(let o=0;o{const b=function(){return d.apply(this,je(arguments,i+"."+c))};return ue(b,d),b})(a)}}}(t.navigator.geolocation,["getCurrentPosition","watchPosition"])}),Zone.__load_patch("PromiseRejectionEvent",(t,n)=>{function i(o){return function(c){Qe(t,o).forEach(y=>{const d=t.PromiseRejectionEvent;if(d){const b=new d(o,{promise:c.promise,reason:c.rejection});y.invoke(b)}})}}t.PromiseRejectionEvent&&(n[A("unhandledPromiseRejectionHandler")]=i("unhandledrejection"),n[A("rejectionHandledHandler")]=i("rejectionhandled"))}),Zone.__load_patch("queueMicrotask",(t,n,i)=>{!function mt(t,n){n.patchMethod(t,"queueMicrotask",i=>function(o,c){Zone.current.scheduleMicroTask("queueMicrotask",c[0])})}(t,i)})}},fe=>{fe(fe.s=935)}]); \ No newline at end of file diff --git a/webui/dist/bitmagnet/roboto-cyrillic-400-normal.19f9350264173d6c.woff b/webui/dist/bitmagnet/roboto-cyrillic-400-normal.19f9350264173d6c.woff deleted file mode 100644 index a846f89..0000000 Binary files a/webui/dist/bitmagnet/roboto-cyrillic-400-normal.19f9350264173d6c.woff and /dev/null differ diff --git a/webui/dist/bitmagnet/roboto-cyrillic-400-normal.2d9c9d60987f55b3.woff2 b/webui/dist/bitmagnet/roboto-cyrillic-400-normal.2d9c9d60987f55b3.woff2 deleted file mode 100644 index 47da362..0000000 Binary files a/webui/dist/bitmagnet/roboto-cyrillic-400-normal.2d9c9d60987f55b3.woff2 and /dev/null differ diff --git a/webui/dist/bitmagnet/roboto-cyrillic-ext-400-normal.02e18372b10a6d23.woff b/webui/dist/bitmagnet/roboto-cyrillic-ext-400-normal.02e18372b10a6d23.woff deleted file mode 100644 index 0f4a8aa..0000000 Binary files a/webui/dist/bitmagnet/roboto-cyrillic-ext-400-normal.02e18372b10a6d23.woff and /dev/null differ diff --git a/webui/dist/bitmagnet/roboto-cyrillic-ext-400-normal.d7827ae32eeaf2a2.woff2 b/webui/dist/bitmagnet/roboto-cyrillic-ext-400-normal.d7827ae32eeaf2a2.woff2 deleted file mode 100644 index 22ddee9..0000000 Binary files a/webui/dist/bitmagnet/roboto-cyrillic-ext-400-normal.d7827ae32eeaf2a2.woff2 and /dev/null differ diff --git a/webui/dist/bitmagnet/roboto-greek-400-normal.63e6dc182bc99716.woff2 b/webui/dist/bitmagnet/roboto-greek-400-normal.63e6dc182bc99716.woff2 deleted file mode 100644 index fc71d94..0000000 Binary files a/webui/dist/bitmagnet/roboto-greek-400-normal.63e6dc182bc99716.woff2 and /dev/null differ diff --git a/webui/dist/bitmagnet/roboto-greek-400-normal.e3b5876bcc86cf21.woff b/webui/dist/bitmagnet/roboto-greek-400-normal.e3b5876bcc86cf21.woff deleted file mode 100644 index e93ee93..0000000 Binary files a/webui/dist/bitmagnet/roboto-greek-400-normal.e3b5876bcc86cf21.woff and /dev/null differ diff --git a/webui/dist/bitmagnet/roboto-greek-ext-400-normal.2b547ded99644dd7.woff2 b/webui/dist/bitmagnet/roboto-greek-ext-400-normal.2b547ded99644dd7.woff2 deleted file mode 100644 index 72ce0e9..0000000 Binary files a/webui/dist/bitmagnet/roboto-greek-ext-400-normal.2b547ded99644dd7.woff2 and /dev/null differ diff --git a/webui/dist/bitmagnet/roboto-greek-ext-400-normal.d17f5f2b869f5380.woff b/webui/dist/bitmagnet/roboto-greek-ext-400-normal.d17f5f2b869f5380.woff deleted file mode 100644 index 9b60042..0000000 Binary files a/webui/dist/bitmagnet/roboto-greek-ext-400-normal.d17f5f2b869f5380.woff and /dev/null differ diff --git a/webui/dist/bitmagnet/roboto-latin-400-normal.d6d4cf7b684c1881.woff b/webui/dist/bitmagnet/roboto-latin-400-normal.d6d4cf7b684c1881.woff deleted file mode 100644 index 297c0ba..0000000 Binary files a/webui/dist/bitmagnet/roboto-latin-400-normal.d6d4cf7b684c1881.woff and /dev/null differ diff --git a/webui/dist/bitmagnet/roboto-latin-400-normal.f2894edcf7d09d36.woff2 b/webui/dist/bitmagnet/roboto-latin-400-normal.f2894edcf7d09d36.woff2 deleted file mode 100644 index 020729e..0000000 Binary files a/webui/dist/bitmagnet/roboto-latin-400-normal.f2894edcf7d09d36.woff2 and /dev/null differ diff --git a/webui/dist/bitmagnet/roboto-latin-ext-400-normal.21abc8c8d8fbf6be.woff2 b/webui/dist/bitmagnet/roboto-latin-ext-400-normal.21abc8c8d8fbf6be.woff2 deleted file mode 100644 index 8a8de61..0000000 Binary files a/webui/dist/bitmagnet/roboto-latin-ext-400-normal.21abc8c8d8fbf6be.woff2 and /dev/null differ diff --git a/webui/dist/bitmagnet/roboto-latin-ext-400-normal.9600b4a66d3fccf1.woff b/webui/dist/bitmagnet/roboto-latin-ext-400-normal.9600b4a66d3fccf1.woff deleted file mode 100644 index 594549d..0000000 Binary files a/webui/dist/bitmagnet/roboto-latin-ext-400-normal.9600b4a66d3fccf1.woff and /dev/null differ diff --git a/webui/dist/bitmagnet/roboto-vietnamese-400-normal.b339d926eddd41e8.woff b/webui/dist/bitmagnet/roboto-vietnamese-400-normal.b339d926eddd41e8.woff deleted file mode 100644 index e65d4a9..0000000 Binary files a/webui/dist/bitmagnet/roboto-vietnamese-400-normal.b339d926eddd41e8.woff and /dev/null differ diff --git a/webui/dist/bitmagnet/roboto-vietnamese-400-normal.c95fc061f1b36d6b.woff2 b/webui/dist/bitmagnet/roboto-vietnamese-400-normal.c95fc061f1b36d6b.woff2 deleted file mode 100644 index 6284d2e..0000000 Binary files a/webui/dist/bitmagnet/roboto-vietnamese-400-normal.c95fc061f1b36d6b.woff2 and /dev/null differ diff --git a/webui/dist/bitmagnet/runtime.57adca8504f0b71b.js b/webui/dist/bitmagnet/runtime.57adca8504f0b71b.js deleted file mode 100644 index 9ea5618..0000000 --- a/webui/dist/bitmagnet/runtime.57adca8504f0b71b.js +++ /dev/null @@ -1 +0,0 @@ -(()=>{"use strict";var e,v={},p={};function n(e){var f=p[e];if(void 0!==f)return f.exports;var r=p[e]={exports:{}};return v[e].call(r.exports,r,r.exports,n),r.exports}n.m=v,e=[],n.O=(f,r,o,l)=>{if(!r){var u=1/0;for(a=0;a=l)&&Object.keys(n.O).every(d=>n.O[d](r[t]))?r.splice(t--,1):(c=!1,l0&&e[a-1][2]>l;a--)e[a]=e[a-1];e[a]=[r,o,l]},n.o=(e,f)=>Object.prototype.hasOwnProperty.call(e,f),(()=>{var e={121:0};n.O.j=o=>0===e[o];var f=(o,l)=>{var t,s,[a,u,c]=l,i=0;if(a.some(b=>0!==e[b])){for(t in u)n.o(u,t)&&(n.m[t]=u[t]);if(c)var _=c(n)}for(o&&o(l);i ({ + ...config, + files: ["**/*.ts"], + })), + { + files: ["**/*.ts"], + + plugins: { + "@typescript-eslint": fixupPluginRules(typescriptEslintEslintPlugin), + import: fixupPluginRules(_import), + }, + + languageOptions: { + globals: { + ...globals.node, + ...globals.jest, + }, + + parser: tsParser, + ecmaVersion: 2020, + sourceType: "module", + + parserOptions: { + project: "./tsconfig.json", + }, + }, + + settings: { + "import/resolver": { + typescript: true, + node: true, + }, + }, + + rules: { + "@typescript-eslint/return-await": "error", + "import/order": "error", + "no-console": "error", + "prettier/prettier": "warn", + }, + }, +]; diff --git a/webui/package-lock.json b/webui/package-lock.json index 8d3badb..dcb8d4c 100644 --- a/webui/package-lock.json +++ b/webui/package-lock.json @@ -8,55 +8,87 @@ "name": "bitmagnet", "version": "0.0.0", "dependencies": { - "@angular/animations": "^17.3.6", - "@angular/cdk": "^17.3.6", - "@angular/common": "^17.3.6", - "@angular/compiler": "^17.3.6", - "@angular/core": "^17.3.6", - "@angular/forms": "^17.3.6", - "@angular/material": "^17.3.6", - "@angular/platform-browser": "^17.3.6", - "@angular/platform-browser-dynamic": "^17.3.6", - "@angular/router": "^17.3.6", - "@apollo/client": "^3.10.1", - "@fontsource/material-icons": "^5.0.18", - "@fontsource/material-icons-outlined": "^5.0.12", - "@fontsource/material-symbols-outlined": "^5.0.30", - "@fontsource/roboto": "^5.0.13", - "apollo-angular": "^7.0.0", - "filesize": "^9.0.11", - "graphql": "^16.8.1", - "ngx-filesize": "^3.0.3", - "rxjs": "^7.8.1", - "tslib": "^2.6.2", - "zone.js": "^0.14.4" + "@angular/animations": "^18.2.8", + "@angular/cdk": "^18.0.2", + "@angular/common": "^18.2.8", + "@angular/compiler": "^18.2.8", + "@angular/core": "^18.2.8", + "@angular/forms": "^18.2.8", + "@angular/material": "^18.2.8", + "@angular/platform-browser": "^18.2.8", + "@angular/platform-browser-dynamic": "^18.2.8", + "@angular/router": "^18.2.8", + "@apollo/client": "^3.11.8", + "@fontsource/material-icons": "^5.1.0", + "@fontsource/material-icons-outlined": "^5.1.0", + "@fontsource/material-symbols-outlined": "^5.1.1", + "@fontsource/roboto": "^5.1.0", + "@jsverse/transloco": "^7.5.0", + "apollo-angular": "^7.2.0", + "chart.js": "^4.4.4", + "date-fns": "^4.1.0", + "filesize": "^10.1.6", + "graphql": "^16.9.0", + "ng2-charts": "^6.0.1", + "rxjs": "~7.8.1", + "tslib": "^2.6.3", + "zone.js": "~0.14.10" }, "devDependencies": { - "@angular-devkit/build-angular": "^17.3.6", - "@angular/cli": "^17.3.6", - "@angular/compiler-cli": "^17.3.6", - "@graphql-codegen/add": "^5.0.2", - "@graphql-codegen/cli": "^5.0.2", - "@graphql-codegen/typescript": "^4.0.6", + "@angular-devkit/build-angular": "^18.2.8", + "@angular/cli": "^18.2.8", + "@angular/compiler-cli": "^18.2.8", + "@eslint/compat": "^1.2.0", + "@eslint/eslintrc": "^3.1.0", + "@eslint/js": "^9.12.0", + "@graphql-codegen/add": "^5.0.3", + "@graphql-codegen/cli": "^5.0.3", + "@graphql-codegen/typescript": "^4.1.0", "@graphql-codegen/typescript-apollo-angular": "^4.0.0", - "@graphql-codegen/typescript-operations": "^4.2.0", - "@types/jasmine": "^5.1.4", - "@typescript-eslint/eslint-plugin": "^7.8.0", - "@typescript-eslint/parser": "^7.8.0", + "@graphql-codegen/typescript-operations": "^4.3.0", + "@jsverse/transloco-keys-manager": "^5.1.0", + "@types/jasmine": "~5.1.4", + "@typescript-eslint/eslint-plugin": "^8.8.1", + "@typescript-eslint/parser": "^8.8.1", "eslint-config-prettier": "^9.1.0", - "eslint-import-resolver-typescript": "^3.6.1", - "eslint-plugin-import": "^2.29.1", - "eslint-plugin-prettier": "^5.1.3", - "eslint-plugin-sonarjs": "^0.25.1", - "jasmine-core": "^5.1.2", - "karma": "^6.4.3", - "karma-chrome-launcher": "^3.2.0", - "karma-coverage": "^2.2.1", - "karma-jasmine": "^5.1.0", - "karma-jasmine-html-reporter": "^2.1.0", - "prettier": "^3.2.5", - "puppeteer": "^22.7.1", - "typescript": "^5.4.5" + "eslint-import-resolver-typescript": "^3.6.3", + "eslint-plugin-import": "^2.31.0", + "eslint-plugin-prettier": "^5.2.1", + "globals": "^15.11.0", + "jasmine-core": "~5.3.0", + "karma": "~6.4.4", + "karma-chrome-launcher": "~3.2.0", + "karma-coverage": "~2.2.1", + "karma-jasmine": "~5.1.0", + "karma-jasmine-html-reporter": "~2.1.0", + "ngx-build-plus": "^18.0.0", + "prettier": "^3.3.3", + "puppeteer": "^23.5.3", + "typescript": "~5.5.4" + } + }, + "node_modules/@75lb/deep-merge": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@75lb/deep-merge/-/deep-merge-1.1.2.tgz", + "integrity": "sha512-08K9ou5VNbheZFxM5tDWoqjA3ImC50DiuuJ2tj1yEPRfkp8lLLg6XAaJ4On+a0yAXor/8ay5gHnAIshRM44Kpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash": "^4.17.21", + "typical": "^7.1.1" + }, + "engines": { + "node": ">=12.17" + } + }, + "node_modules/@75lb/deep-merge/node_modules/typical": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-7.2.0.tgz", + "integrity": "sha512-W1+HdVRUl8fS3MZ9ogD51GOb46xMmhAZzR0WPw5jcgIZQJVvkddYzAl4YTU6g5w33Y1iRQLdIi2/1jhi2RNL0g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.17" } }, "node_modules/@ampproject/remapping": { @@ -64,6 +96,7 @@ "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.24" @@ -73,112 +106,113 @@ } }, "node_modules/@angular-devkit/architect": { - "version": "0.1703.6", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1703.6.tgz", - "integrity": "sha512-Ck501FD/QuOjeKVFs7hU92w8+Ffetv0d5Sq09XY2/uygo5c/thMzp9nkevaIWBxUSeU5RqYZizDrhFVgYzbbOw==", + "version": "0.1802.8", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1802.8.tgz", + "integrity": "sha512-/rtFQEKgS7LlB9oHr4NCBSdKnvP5kr8L5Hbd3Vl8hZOYK9QWjxKPEXnryA2d5+PCE98bBzZswCNXqELZCPTgIQ==", "dev": true, + "license": "MIT", "dependencies": { - "@angular-devkit/core": "17.3.6", + "@angular-devkit/core": "18.2.8", "rxjs": "7.8.1" }, "engines": { - "node": "^18.13.0 || >=20.9.0", + "node": "^18.19.1 || ^20.11.1 || >=22.0.0", "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", "yarn": ">= 1.13.0" } }, "node_modules/@angular-devkit/build-angular": { - "version": "17.3.6", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-17.3.6.tgz", - "integrity": "sha512-K4CEZvhQZUUOpmXPVoI1YBM8BARbIlqE6FZRxakmnr+YOtVTYE5s+Dr1wgja8hZIohNz6L7j167G9Aut7oPU/w==", + "version": "18.2.8", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-18.2.8.tgz", + "integrity": "sha512-qK/iLk7A8vQp1CyiJV4DpwfLjPKoiOlTtFqoO5vD8Tyxmc+R06FQp6GJTsZ7JtrTLYSiH+QAWiY6NgF/Rj/hHg==", "dev": true, + "license": "MIT", "dependencies": { "@ampproject/remapping": "2.3.0", - "@angular-devkit/architect": "0.1703.6", - "@angular-devkit/build-webpack": "0.1703.6", - "@angular-devkit/core": "17.3.6", - "@babel/core": "7.24.0", - "@babel/generator": "7.23.6", - "@babel/helper-annotate-as-pure": "7.22.5", - "@babel/helper-split-export-declaration": "7.22.6", - "@babel/plugin-transform-async-generator-functions": "7.23.9", - "@babel/plugin-transform-async-to-generator": "7.23.3", - "@babel/plugin-transform-runtime": "7.24.0", - "@babel/preset-env": "7.24.0", - "@babel/runtime": "7.24.0", - "@discoveryjs/json-ext": "0.5.7", - "@ngtools/webpack": "17.3.6", + "@angular-devkit/architect": "0.1802.8", + "@angular-devkit/build-webpack": "0.1802.8", + "@angular-devkit/core": "18.2.8", + "@angular/build": "18.2.8", + "@babel/core": "7.25.2", + "@babel/generator": "7.25.0", + "@babel/helper-annotate-as-pure": "7.24.7", + "@babel/helper-split-export-declaration": "7.24.7", + "@babel/plugin-transform-async-generator-functions": "7.25.0", + "@babel/plugin-transform-async-to-generator": "7.24.7", + "@babel/plugin-transform-runtime": "7.24.7", + "@babel/preset-env": "7.25.3", + "@babel/runtime": "7.25.0", + "@discoveryjs/json-ext": "0.6.1", + "@ngtools/webpack": "18.2.8", "@vitejs/plugin-basic-ssl": "1.1.0", "ansi-colors": "4.1.3", - "autoprefixer": "10.4.18", + "autoprefixer": "10.4.20", "babel-loader": "9.1.3", - "babel-plugin-istanbul": "6.1.1", "browserslist": "^4.21.5", - "copy-webpack-plugin": "11.0.0", - "critters": "0.0.22", - "css-loader": "6.10.0", - "esbuild-wasm": "0.20.1", + "copy-webpack-plugin": "12.0.2", + "critters": "0.0.24", + "css-loader": "7.1.2", + "esbuild-wasm": "0.23.0", "fast-glob": "3.3.2", - "http-proxy-middleware": "2.0.6", - "https-proxy-agent": "7.0.4", - "inquirer": "9.2.15", - "jsonc-parser": "3.2.1", + "http-proxy-middleware": "3.0.0", + "https-proxy-agent": "7.0.5", + "istanbul-lib-instrument": "6.0.3", + "jsonc-parser": "3.3.1", "karma-source-map-support": "1.4.0", "less": "4.2.0", - "less-loader": "11.1.0", + "less-loader": "12.2.0", "license-webpack-plugin": "4.0.2", - "loader-utils": "3.2.1", - "magic-string": "0.30.8", - "mini-css-extract-plugin": "2.8.1", + "loader-utils": "3.3.1", + "magic-string": "0.30.11", + "mini-css-extract-plugin": "2.9.0", "mrmime": "2.0.0", - "open": "8.4.2", + "open": "10.1.0", "ora": "5.4.1", "parse5-html-rewriting-stream": "7.0.0", - "picomatch": "4.0.1", - "piscina": "4.4.0", - "postcss": "8.4.35", + "picomatch": "4.0.2", + "piscina": "4.6.1", + "postcss": "8.4.41", "postcss-loader": "8.1.1", "resolve-url-loader": "5.0.0", "rxjs": "7.8.1", - "sass": "1.71.1", - "sass-loader": "14.1.1", - "semver": "7.6.0", + "sass": "1.77.6", + "sass-loader": "16.0.0", + "semver": "7.6.3", "source-map-loader": "5.0.0", "source-map-support": "0.5.21", - "terser": "5.29.1", + "terser": "5.31.6", "tree-kill": "1.2.2", - "tslib": "2.6.2", - "undici": "6.11.1", - "vite": "5.1.7", - "watchpack": "2.4.0", - "webpack": "5.90.3", - "webpack-dev-middleware": "6.1.2", - "webpack-dev-server": "4.15.1", - "webpack-merge": "5.10.0", + "tslib": "2.6.3", + "vite": "5.4.6", + "watchpack": "2.4.1", + "webpack": "5.94.0", + "webpack-dev-middleware": "7.4.2", + "webpack-dev-server": "5.0.4", + "webpack-merge": "6.0.1", "webpack-subresource-integrity": "5.1.0" }, "engines": { - "node": "^18.13.0 || >=20.9.0", + "node": "^18.19.1 || ^20.11.1 || >=22.0.0", "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", "yarn": ">= 1.13.0" }, "optionalDependencies": { - "esbuild": "0.20.1" + "esbuild": "0.23.0" }, "peerDependencies": { - "@angular/compiler-cli": "^17.0.0", - "@angular/localize": "^17.0.0", - "@angular/platform-server": "^17.0.0", - "@angular/service-worker": "^17.0.0", + "@angular/compiler-cli": "^18.0.0", + "@angular/localize": "^18.0.0", + "@angular/platform-server": "^18.0.0", + "@angular/service-worker": "^18.0.0", "@web/test-runner": "^0.18.0", "browser-sync": "^3.0.2", "jest": "^29.5.0", "jest-environment-jsdom": "^29.5.0", "karma": "^6.3.0", - "ng-packagr": "^17.0.0", + "ng-packagr": "^18.0.0", "protractor": "^7.0.0", "tailwindcss": "^2.0.0 || ^3.0.0", - "typescript": ">=5.2 <5.5" + "typescript": ">=5.4 <5.6" }, "peerDependenciesMeta": { "@angular/localize": { @@ -216,40 +250,49 @@ } } }, - "node_modules/@angular-devkit/build-webpack": { - "version": "0.1703.6", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1703.6.tgz", - "integrity": "sha512-pJu0et2SiF0kfXenHSTtAART0omzbWpLgBfeUo4hBh4uwX5IaT+mRpYpr8gCXMq+qsjoQp3HobSU3lPDeBn+bg==", + "node_modules/@angular-devkit/build-angular/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", "dev": true, + "license": "0BSD" + }, + "node_modules/@angular-devkit/build-webpack": { + "version": "0.1802.8", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1802.8.tgz", + "integrity": "sha512-uPpopkXkO66SSdjtVr7xCyQCPs/x6KUC76xkDc4j0b8EEHifTbi/fNpbkcZ6wBmoAfjKLWXfKvtkh0TqKK5Hkw==", + "dev": true, + "license": "MIT", "dependencies": { - "@angular-devkit/architect": "0.1703.6", + "@angular-devkit/architect": "0.1802.8", "rxjs": "7.8.1" }, "engines": { - "node": "^18.13.0 || >=20.9.0", + "node": "^18.19.1 || ^20.11.1 || >=22.0.0", "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", "yarn": ">= 1.13.0" }, "peerDependencies": { "webpack": "^5.30.0", - "webpack-dev-server": "^4.0.0" + "webpack-dev-server": "^5.0.2" } }, "node_modules/@angular-devkit/core": { - "version": "17.3.6", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-17.3.6.tgz", - "integrity": "sha512-FVbkT9dEwHEvjnxr4mvMNSMg2bCFoGoP4X68xXU9dhLEUpC05opLvfbaR3Qh543eCJ5AstosBFVzB/krfIkOvA==", + "version": "18.2.8", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-18.2.8.tgz", + "integrity": "sha512-4o2T6wsmXGE/v53+F8L7kGoN2+qzt03C9rtjLVQpOljzpJVttQ8bhvfWxyYLWwcl04RWqRa+82fpIZtBkOlZJw==", "dev": true, + "license": "MIT", "dependencies": { - "ajv": "8.12.0", - "ajv-formats": "2.1.1", - "jsonc-parser": "3.2.1", - "picomatch": "4.0.1", + "ajv": "8.17.1", + "ajv-formats": "3.0.1", + "jsonc-parser": "3.3.1", + "picomatch": "4.0.2", "rxjs": "7.8.1", "source-map": "0.7.4" }, "engines": { - "node": "^18.13.0 || >=20.9.0", + "node": "^18.19.1 || ^20.11.1 || >=22.0.0", "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", "yarn": ">= 1.13.0" }, @@ -263,41 +306,113 @@ } }, "node_modules/@angular-devkit/schematics": { - "version": "17.3.6", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-17.3.6.tgz", - "integrity": "sha512-2G1YuPInd8znG7uUgKOS7z72Aku50lTzB/2csWkWPJLAFkh7vKC8QZ40x8S1nC9npVYPhI5CRLX/HVpBh9CyxA==", + "version": "18.2.8", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-18.2.8.tgz", + "integrity": "sha512-i/h2Oji5FhJMC7wDSnIl5XUe/qym+C1ZwScaATJwDyRLCUIynZkj5rLgdG/uK6l+H0PgvxigkF+akWpokkwW6w==", "dev": true, + "license": "MIT", "dependencies": { - "@angular-devkit/core": "17.3.6", - "jsonc-parser": "3.2.1", - "magic-string": "0.30.8", + "@angular-devkit/core": "18.2.8", + "jsonc-parser": "3.3.1", + "magic-string": "0.30.11", "ora": "5.4.1", "rxjs": "7.8.1" }, "engines": { - "node": "^18.13.0 || >=20.9.0", + "node": "^18.19.1 || ^20.11.1 || >=22.0.0", "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", "yarn": ">= 1.13.0" } }, "node_modules/@angular/animations": { - "version": "17.3.6", - "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-17.3.6.tgz", - "integrity": "sha512-ev99cnmc1S/SXYz9OwOyZQyHXHiUf+ZwQFpjYBRPoyKqZV4sOYMlyBbfjBO/GgCVrsGfMvBsCI6PtY3yquuabA==", + "version": "18.2.8", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-18.2.8.tgz", + "integrity": "sha512-dMSn2hg70siv3lhP+vqhMbgc923xw6XBUvnpCPEzhZqFHvPXfh/LubmsD5RtqHmjWebXtgVcgS+zg3Gq3jB2lg==", + "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, "engines": { - "node": "^18.13.0 || >=20.9.0" + "node": "^18.19.1 || ^20.11.1 || >=22.0.0" }, "peerDependencies": { - "@angular/core": "17.3.6" + "@angular/core": "18.2.8" + } + }, + "node_modules/@angular/build": { + "version": "18.2.8", + "resolved": "https://registry.npmjs.org/@angular/build/-/build-18.2.8.tgz", + "integrity": "sha512-ufuA4vHJSrL9SQW7bKV61DOoN1mm0t0ILTHaxSoCG3YF70cZJOX7+HNp3cK2uoldRMwbTOKSvCWBw54KKDRd5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "2.3.0", + "@angular-devkit/architect": "0.1802.8", + "@babel/core": "7.25.2", + "@babel/helper-annotate-as-pure": "7.24.7", + "@babel/helper-split-export-declaration": "7.24.7", + "@babel/plugin-syntax-import-attributes": "7.24.7", + "@inquirer/confirm": "3.1.22", + "@vitejs/plugin-basic-ssl": "1.1.0", + "browserslist": "^4.23.0", + "critters": "0.0.24", + "esbuild": "0.23.0", + "fast-glob": "3.3.2", + "https-proxy-agent": "7.0.5", + "listr2": "8.2.4", + "lmdb": "3.0.13", + "magic-string": "0.30.11", + "mrmime": "2.0.0", + "parse5-html-rewriting-stream": "7.0.0", + "picomatch": "4.0.2", + "piscina": "4.6.1", + "rollup": "4.22.4", + "sass": "1.77.6", + "semver": "7.6.3", + "vite": "5.4.6", + "watchpack": "2.4.1" + }, + "engines": { + "node": "^18.19.1 || ^20.11.1 || >=22.0.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "@angular/compiler-cli": "^18.0.0", + "@angular/localize": "^18.0.0", + "@angular/platform-server": "^18.0.0", + "@angular/service-worker": "^18.0.0", + "less": "^4.2.0", + "postcss": "^8.4.0", + "tailwindcss": "^2.0.0 || ^3.0.0", + "typescript": ">=5.4 <5.6" + }, + "peerDependenciesMeta": { + "@angular/localize": { + "optional": true + }, + "@angular/platform-server": { + "optional": true + }, + "@angular/service-worker": { + "optional": true + }, + "less": { + "optional": true + }, + "postcss": { + "optional": true + }, + "tailwindcss": { + "optional": true + } } }, "node_modules/@angular/cdk": { - "version": "17.3.6", - "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-17.3.6.tgz", - "integrity": "sha512-7eKrC61/6pmMAxllU/vYKadZRF7x7GxUYpA5G70fNaQsIUUiZvxx/SJN9AuZEoPGAtF6atKlJD8QVmFoDzv/Lw==", + "version": "18.2.8", + "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-18.2.8.tgz", + "integrity": "sha512-J8A2FkwTBzLleAEWz6EgW73dEoeq87GREBPjTv8+2JV09LX+V3hnbgNk6zWq5k4OXtQNg9WrWP9QyRbUyA597g==", + "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, @@ -305,33 +420,33 @@ "parse5": "^7.1.2" }, "peerDependencies": { - "@angular/common": "^17.0.0 || ^18.0.0", - "@angular/core": "^17.0.0 || ^18.0.0", + "@angular/common": "^18.0.0 || ^19.0.0", + "@angular/core": "^18.0.0 || ^19.0.0", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/cli": { - "version": "17.3.6", - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-17.3.6.tgz", - "integrity": "sha512-poKaRPeI+hFqX+AxIaEriaIggFVcC3XqlT9E1/uBC2rfHirE1n5F9Z7xqEDtMHduKwLbNXhQIPoKIKya8+Hnew==", + "version": "18.2.8", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-18.2.8.tgz", + "integrity": "sha512-GKXG7F7z5rxwZ8/bnW/Bp8/zsfE/BpHmIP/icLfUIOwv2kaY5OD2tfQssWXPEuqZzYq2AYz+wjVSbWjxGoja8A==", "dev": true, + "license": "MIT", "dependencies": { - "@angular-devkit/architect": "0.1703.6", - "@angular-devkit/core": "17.3.6", - "@angular-devkit/schematics": "17.3.6", - "@schematics/angular": "17.3.6", + "@angular-devkit/architect": "0.1802.8", + "@angular-devkit/core": "18.2.8", + "@angular-devkit/schematics": "18.2.8", + "@inquirer/prompts": "5.3.8", + "@listr2/prompt-adapter-inquirer": "2.0.15", + "@schematics/angular": "18.2.8", "@yarnpkg/lockfile": "1.1.0", - "ansi-colors": "4.1.3", - "ini": "4.1.2", - "inquirer": "9.2.15", - "jsonc-parser": "3.2.1", - "npm-package-arg": "11.0.1", - "npm-pick-manifest": "9.0.0", - "open": "8.4.2", - "ora": "5.4.1", - "pacote": "17.0.6", + "ini": "4.1.3", + "jsonc-parser": "3.3.1", + "listr2": "8.2.4", + "npm-package-arg": "11.0.3", + "npm-pick-manifest": "9.1.0", + "pacote": "18.0.6", "resolve": "1.22.8", - "semver": "7.6.0", + "semver": "7.6.3", "symbol-observable": "4.0.0", "yargs": "17.7.2" }, @@ -339,38 +454,40 @@ "ng": "bin/ng.js" }, "engines": { - "node": "^18.13.0 || >=20.9.0", + "node": "^18.19.1 || ^20.11.1 || >=22.0.0", "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", "yarn": ">= 1.13.0" } }, "node_modules/@angular/common": { - "version": "17.3.6", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-17.3.6.tgz", - "integrity": "sha512-ufviCFzQQKWcwc2j3Zi8bHbwkvqh4QU6GDH0u0usOee8xd8KrjgcYl3vD0r1/yxlDsd53Wg9kNRvz/fY+5qQoQ==", + "version": "18.2.8", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-18.2.8.tgz", + "integrity": "sha512-TYsKtE5nVaIScWSLGSO34Skc+s3hB/BujSddnfQHoNFvPT/WR0dfmdlpVCTeLj+f50htFoMhW11tW99PbK+whQ==", + "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, "engines": { - "node": "^18.13.0 || >=20.9.0" + "node": "^18.19.1 || ^20.11.1 || >=22.0.0" }, "peerDependencies": { - "@angular/core": "17.3.6", + "@angular/core": "18.2.8", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/compiler": { - "version": "17.3.6", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-17.3.6.tgz", - "integrity": "sha512-ybx9O76RGv4J97IThiSVvvWukuGcuXu50KsBDPUd874BFT3ml0OcRGhXoMh/isz7EQipiiGgsA51cJVTLES5Zw==", + "version": "18.2.8", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-18.2.8.tgz", + "integrity": "sha512-JRedHNfK1CCPVyeGQB5w3WBYqMA6X8Q240CkvjlGfn0pVXihf9DWk3nkSQJVgYxpvpHfxdgjaYZ5IpMzlkmkhw==", + "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, "engines": { - "node": "^18.13.0 || >=20.9.0" + "node": "^18.19.1 || ^20.11.1 || >=22.0.0" }, "peerDependencies": { - "@angular/core": "17.3.6" + "@angular/core": "18.2.8" }, "peerDependenciesMeta": { "@angular/core": { @@ -379,14 +496,15 @@ } }, "node_modules/@angular/compiler-cli": { - "version": "17.3.6", - "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-17.3.6.tgz", - "integrity": "sha512-LaoUkY6uzcNocIEHJBvexvuU0a333IRQaG3Sj5IXhM1t864wTsfycn6yWJcQ7PhklB8BtNqiMbUQuEFtkxT8pg==", + "version": "18.2.8", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-18.2.8.tgz", + "integrity": "sha512-OksDE4LWQUCcIvMjtZF7eiDCdIMrcMMpC1+Q0PIYi7KmnqXFGs4/Y0NdJvtn/LrQznzz5WaKM3ZDVNZTRX4wmw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/core": "7.23.9", + "@babel/core": "7.25.2", "@jridgewell/sourcemap-codec": "^1.4.14", - "chokidar": "^3.0.0", + "chokidar": "^4.0.0", "convert-source-map": "^1.5.1", "reflect-metadata": "^0.2.0", "semver": "^7.0.0", @@ -399,168 +517,110 @@ "ngcc": "bundles/ngcc/index.js" }, "engines": { - "node": "^18.13.0 || >=20.9.0" + "node": "^18.19.1 || ^20.11.1 || >=22.0.0" }, "peerDependencies": { - "@angular/compiler": "17.3.6", - "typescript": ">=5.2 <5.5" + "@angular/compiler": "18.2.8", + "typescript": ">=5.4 <5.6" } }, - "node_modules/@angular/compiler-cli/node_modules/@babel/core": { - "version": "7.23.9", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.9.tgz", - "integrity": "sha512-5q0175NOjddqpvvzU+kDiSOAk4PfdO6FvwCWoQ6RO7rTzEe8vlo+4HVfcnAREhD4npMs0e9uZypjTwzZPCf/cw==", + "node_modules/@angular/compiler-cli/node_modules/chokidar": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.1.tgz", + "integrity": "sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==", "dev": true, + "license": "MIT", "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.23.5", - "@babel/generator": "^7.23.6", - "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helpers": "^7.23.9", - "@babel/parser": "^7.23.9", - "@babel/template": "^7.23.9", - "@babel/traverse": "^7.23.9", - "@babel/types": "^7.23.9", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" + "readdirp": "^4.0.1" }, "engines": { - "node": ">=6.9.0" + "node": ">= 14.16.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@angular/compiler-cli/node_modules/@babel/core/node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true - }, - "node_modules/@angular/compiler-cli/node_modules/@babel/core/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "node_modules/@angular/compiler-cli/node_modules/readdirp": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.0.2.tgz", + "integrity": "sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==", "dev": true, - "bin": { - "semver": "bin/semver.js" + "license": "MIT", + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" } }, "node_modules/@angular/core": { - "version": "17.3.6", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-17.3.6.tgz", - "integrity": "sha512-8IoeZVNqyeHA+H2dR3VFfz76/TFN1BpXP0aABs2aIUNVQRYlKxALSm1UlavijX8IT0uvd/6GXwE3WgymTcg0wg==", + "version": "18.2.8", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-18.2.8.tgz", + "integrity": "sha512-NwIuX/Iby1jT6Iv1/s6S3wOFf8xfuQR3MPGvKhGgNtjXLbHG+TXceK9+QPZC0s9/Z8JR/hz+li34B79GrIKgUg==", + "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, "engines": { - "node": "^18.13.0 || >=20.9.0" + "node": "^18.19.1 || ^20.11.1 || >=22.0.0" }, "peerDependencies": { "rxjs": "^6.5.3 || ^7.4.0", - "zone.js": "~0.14.0" + "zone.js": "~0.14.10" } }, "node_modules/@angular/forms": { - "version": "17.3.6", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-17.3.6.tgz", - "integrity": "sha512-WXxWhwvgRfYLNP2dB4Qe83tavEh2LnS4H0uoiecWHXijW2R9z8304X1vEyS1EtQK7o/s8fCVDVDjeY+hxLnCLw==", + "version": "18.2.8", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-18.2.8.tgz", + "integrity": "sha512-JCLki7KC6D5vF6dE6yGlBmW33khIgpHs8N9SzuiJtkQqNDTIQA8cPsGV6qpLpxflxASynQOX5lDkWYdQyfm77Q==", + "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, "engines": { - "node": "^18.13.0 || >=20.9.0" + "node": "^18.19.1 || ^20.11.1 || >=22.0.0" }, "peerDependencies": { - "@angular/common": "17.3.6", - "@angular/core": "17.3.6", - "@angular/platform-browser": "17.3.6", + "@angular/common": "18.2.8", + "@angular/core": "18.2.8", + "@angular/platform-browser": "18.2.8", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/material": { - "version": "17.3.6", - "resolved": "https://registry.npmjs.org/@angular/material/-/material-17.3.6.tgz", - "integrity": "sha512-sttN0JNvd2QvCCFIsxb5noiy7tgQdWrwvmrkJ+3KguHh5X84jDliA/d8N7Xgy2IBLnS/q/Hl9DdRCOiItWG1bw==", + "version": "18.2.8", + "resolved": "https://registry.npmjs.org/@angular/material/-/material-18.2.8.tgz", + "integrity": "sha512-wQGMVsfQ9lQfih2VsWAvV4z3S3uBxrxc61owlE+K0T1BxH9u/jo3A/rnRitIdvR/L4NnYlfhCnmrW9K+Pl+WCg==", + "license": "MIT", "dependencies": { - "@material/animation": "15.0.0-canary.7f224ddd4.0", - "@material/auto-init": "15.0.0-canary.7f224ddd4.0", - "@material/banner": "15.0.0-canary.7f224ddd4.0", - "@material/base": "15.0.0-canary.7f224ddd4.0", - "@material/button": "15.0.0-canary.7f224ddd4.0", - "@material/card": "15.0.0-canary.7f224ddd4.0", - "@material/checkbox": "15.0.0-canary.7f224ddd4.0", - "@material/chips": "15.0.0-canary.7f224ddd4.0", - "@material/circular-progress": "15.0.0-canary.7f224ddd4.0", - "@material/data-table": "15.0.0-canary.7f224ddd4.0", - "@material/density": "15.0.0-canary.7f224ddd4.0", - "@material/dialog": "15.0.0-canary.7f224ddd4.0", - "@material/dom": "15.0.0-canary.7f224ddd4.0", - "@material/drawer": "15.0.0-canary.7f224ddd4.0", - "@material/elevation": "15.0.0-canary.7f224ddd4.0", - "@material/fab": "15.0.0-canary.7f224ddd4.0", - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/floating-label": "15.0.0-canary.7f224ddd4.0", - "@material/form-field": "15.0.0-canary.7f224ddd4.0", - "@material/icon-button": "15.0.0-canary.7f224ddd4.0", - "@material/image-list": "15.0.0-canary.7f224ddd4.0", - "@material/layout-grid": "15.0.0-canary.7f224ddd4.0", - "@material/line-ripple": "15.0.0-canary.7f224ddd4.0", - "@material/linear-progress": "15.0.0-canary.7f224ddd4.0", - "@material/list": "15.0.0-canary.7f224ddd4.0", - "@material/menu": "15.0.0-canary.7f224ddd4.0", - "@material/menu-surface": "15.0.0-canary.7f224ddd4.0", - "@material/notched-outline": "15.0.0-canary.7f224ddd4.0", - "@material/radio": "15.0.0-canary.7f224ddd4.0", - "@material/ripple": "15.0.0-canary.7f224ddd4.0", - "@material/rtl": "15.0.0-canary.7f224ddd4.0", - "@material/segmented-button": "15.0.0-canary.7f224ddd4.0", - "@material/select": "15.0.0-canary.7f224ddd4.0", - "@material/shape": "15.0.0-canary.7f224ddd4.0", - "@material/slider": "15.0.0-canary.7f224ddd4.0", - "@material/snackbar": "15.0.0-canary.7f224ddd4.0", - "@material/switch": "15.0.0-canary.7f224ddd4.0", - "@material/tab": "15.0.0-canary.7f224ddd4.0", - "@material/tab-bar": "15.0.0-canary.7f224ddd4.0", - "@material/tab-indicator": "15.0.0-canary.7f224ddd4.0", - "@material/tab-scroller": "15.0.0-canary.7f224ddd4.0", - "@material/textfield": "15.0.0-canary.7f224ddd4.0", - "@material/theme": "15.0.0-canary.7f224ddd4.0", - "@material/tooltip": "15.0.0-canary.7f224ddd4.0", - "@material/top-app-bar": "15.0.0-canary.7f224ddd4.0", - "@material/touch-target": "15.0.0-canary.7f224ddd4.0", - "@material/typography": "15.0.0-canary.7f224ddd4.0", "tslib": "^2.3.0" }, "peerDependencies": { - "@angular/animations": "^17.0.0 || ^18.0.0", - "@angular/cdk": "17.3.6", - "@angular/common": "^17.0.0 || ^18.0.0", - "@angular/core": "^17.0.0 || ^18.0.0", - "@angular/forms": "^17.0.0 || ^18.0.0", - "@angular/platform-browser": "^17.0.0 || ^18.0.0", + "@angular/animations": "^18.0.0 || ^19.0.0", + "@angular/cdk": "18.2.8", + "@angular/common": "^18.0.0 || ^19.0.0", + "@angular/core": "^18.0.0 || ^19.0.0", + "@angular/forms": "^18.0.0 || ^19.0.0", + "@angular/platform-browser": "^18.0.0 || ^19.0.0", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/platform-browser": { - "version": "17.3.6", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-17.3.6.tgz", - "integrity": "sha512-UikrgvMwtZIXp2pCP5AtkM7ibz2B5wBiGpnhhkYsqHKy9ndKVDA+3B5Z+/j9xeYYdsJAAtHl45zqILewyg+4iw==", + "version": "18.2.8", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-18.2.8.tgz", + "integrity": "sha512-EPai4ZPqSq3ilLJUC85kPi9wo5j5suQovwtgRyjM/75D9Qy4TV19g8hkVM5Co/zrltO8a2G6vDscCNI5BeGw2A==", + "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, "engines": { - "node": "^18.13.0 || >=20.9.0" + "node": "^18.19.1 || ^20.11.1 || >=22.0.0" }, "peerDependencies": { - "@angular/animations": "17.3.6", - "@angular/common": "17.3.6", - "@angular/core": "17.3.6" + "@angular/animations": "18.2.8", + "@angular/common": "18.2.8", + "@angular/core": "18.2.8" }, "peerDependenciesMeta": { "@angular/animations": { @@ -569,43 +629,46 @@ } }, "node_modules/@angular/platform-browser-dynamic": { - "version": "17.3.6", - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-17.3.6.tgz", - "integrity": "sha512-dI+mgEROmSll042+XqkSsvkMQe6Et6L9BBiYYe7VbIFaRR9Dz5Pw2SeBLb+Ou+gWaxXc2Wc+13n442WEYWZ7Ew==", + "version": "18.2.8", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-18.2.8.tgz", + "integrity": "sha512-poZoapDqyN/rxGKQ3C6esdPiPLMkSpP2v12hoEa12KHgfPk7T1e+a+NMyJjV8HeOY3WyvL7tGRhW0NPTajTkhw==", + "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, "engines": { - "node": "^18.13.0 || >=20.9.0" + "node": "^18.19.1 || ^20.11.1 || >=22.0.0" }, "peerDependencies": { - "@angular/common": "17.3.6", - "@angular/compiler": "17.3.6", - "@angular/core": "17.3.6", - "@angular/platform-browser": "17.3.6" + "@angular/common": "18.2.8", + "@angular/compiler": "18.2.8", + "@angular/core": "18.2.8", + "@angular/platform-browser": "18.2.8" } }, "node_modules/@angular/router": { - "version": "17.3.6", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-17.3.6.tgz", - "integrity": "sha512-Gws3zukTlPO5lIGP0bmWBkmbRIRKvpPq6vs3BqQlbKsrfBh45SPvIRbx+BSv6WYUchQzfW7DFDXnQtiTEGGQNg==", + "version": "18.2.8", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-18.2.8.tgz", + "integrity": "sha512-L+olYgxIiBq+tbfayVI0cv1yOuymsw33msnGC2l/vpc9sSVfqGzESFnB4yMVU3vHtE9v6v2Y6O+iV44/b79W/g==", + "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, "engines": { - "node": "^18.13.0 || >=20.9.0" + "node": "^18.19.1 || ^20.11.1 || >=22.0.0" }, "peerDependencies": { - "@angular/common": "17.3.6", - "@angular/core": "17.3.6", - "@angular/platform-browser": "17.3.6", + "@angular/common": "18.2.8", + "@angular/core": "18.2.8", + "@angular/platform-browser": "18.2.8", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@apollo/client": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/@apollo/client/-/client-3.10.1.tgz", - "integrity": "sha512-QNacQBZzJla5UQ/LLBXJWM7/1v1C5cfpMQPAFjW4hg4T54wHWbg4Dr+Dp6N+hy/ygu8tepdM+/y/5VFLZhovlQ==", + "version": "3.11.8", + "resolved": "https://registry.npmjs.org/@apollo/client/-/client-3.11.8.tgz", + "integrity": "sha512-CgG1wbtMjsV2pRGe/eYITmV5B8lXUCYljB2gB/6jWTFQcrvirUVvKg7qtFdjYkQSFbIffU1IDyxgeaN81eTjbA==", + "license": "MIT", "dependencies": { "@graphql-typed-document-node/core": "^3.1.1", "@wry/caches": "^1.0.0", @@ -625,8 +688,8 @@ "peerDependencies": { "graphql": "^15.0.0 || ^16.0.0", "graphql-ws": "^5.5.5", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || >=19.0.0-rc <19.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || >=19.0.0-rc <19.0.0", "subscriptions-transport-ws": "^0.9.0 || ^0.11.0" }, "peerDependenciesMeta": { @@ -649,6 +712,7 @@ "resolved": "https://registry.npmjs.org/@ardatan/relay-compiler/-/relay-compiler-12.0.0.tgz", "integrity": "sha512-9anThAaj1dQr6IGmzBMcfzOQKTa5artjuPmw8NYK/fiGEMjADbSguBY2FMDykt+QhilR3wc9VA/3yVju7JHg7Q==", "dev": true, + "license": "MIT", "dependencies": { "@babel/core": "^7.14.0", "@babel/generator": "^7.14.0", @@ -680,6 +744,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -695,6 +760,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -711,6 +777,7 @@ "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", "dev": true, + "license": "ISC", "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", @@ -722,6 +789,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -733,13 +801,71 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "license": "MIT" + }, + "node_modules/@ardatan/relay-compiler/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } }, "node_modules/@ardatan/relay-compiler/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@ardatan/relay-compiler/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@ardatan/relay-compiler/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@ardatan/relay-compiler/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, "engines": { "node": ">=8" } @@ -749,6 +875,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -760,13 +887,15 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/@ardatan/relay-compiler/node_modules/yargs": { "version": "15.4.1", "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", "dev": true, + "license": "MIT", "dependencies": { "cliui": "^6.0.0", "decamelize": "^1.2.0", @@ -789,6 +918,7 @@ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", "dev": true, + "license": "ISC", "dependencies": { "camelcase": "^5.0.0", "decamelize": "^1.2.0" @@ -802,6 +932,7 @@ "resolved": "https://registry.npmjs.org/@ardatan/sync-fetch/-/sync-fetch-0.0.1.tgz", "integrity": "sha512-xhlTqH0m31mnsG0tIP4ETgfSB6gXDaYYsUWTrlUV93fFQPI9dd8hE0Ot6MHLCtqgB32hwJAC3YZMWlXZw7AleA==", "dev": true, + "license": "MIT", "dependencies": { "node-fetch": "^2.6.1" }, @@ -810,12 +941,12 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.24.2", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.2.tgz", - "integrity": "sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==", - "dev": true, + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.25.7.tgz", + "integrity": "sha512-0xZJFNE5XMpENsgfHYTw8FbX4kv53mFLn2i3XPoq69LyhYSCBJtitaHx9QnsVTrsogI4Z3+HtEfZ2/GFPOtf5g==", + "license": "MIT", "dependencies": { - "@babel/highlight": "^7.24.2", + "@babel/highlight": "^7.25.7", "picocolors": "^1.0.0" }, "engines": { @@ -823,30 +954,32 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.24.4", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.4.tgz", - "integrity": "sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ==", + "version": "7.25.8", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.8.tgz", + "integrity": "sha512-ZsysZyXY4Tlx+Q53XdnOFmqwfB9QDTHYxaZYajWRoBLuLEAwI2UIbtxOjWh/cFaa9IKUlcB+DDuoskLuKu56JA==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.0.tgz", - "integrity": "sha512-fQfkg0Gjkza3nf0c7/w6Xf34BW4YvzNfACRLmmb7XRLa6XHdR+K9AlJlxneFfWYf6uhOzuzZVTjF/8KfndZANw==", + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.2.tgz", + "integrity": "sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==", "dev": true, + "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.23.5", - "@babel/generator": "^7.23.6", - "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helpers": "^7.24.0", - "@babel/parser": "^7.24.0", - "@babel/template": "^7.24.0", - "@babel/traverse": "^7.24.0", - "@babel/types": "^7.24.0", + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.25.0", + "@babel/helper-compilation-targets": "^7.25.2", + "@babel/helper-module-transforms": "^7.25.2", + "@babel/helpers": "^7.25.0", + "@babel/parser": "^7.25.0", + "@babel/template": "^7.25.0", + "@babel/traverse": "^7.25.2", + "@babel/types": "^7.25.2", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -865,26 +998,29 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@babel/core/node_modules/semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/@babel/generator": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", - "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.0.tgz", + "integrity": "sha512-3LEEcj3PVW8pW2R1SR1M89g/qrYk/m/mB/tLqn7dn4sbBUQyTqnlod+II2U4dqiGtUmkcnAmkMDralTFZttRiw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.23.6", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", + "@babel/types": "^7.25.0", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^2.5.1" }, "engines": { @@ -892,38 +1028,42 @@ } }, "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", - "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz", + "integrity": "sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz", - "integrity": "sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.25.7.tgz", + "integrity": "sha512-12xfNeKNH7jubQNm7PAkzlLwEmCs1tfuX3UjIw6vP6QXi+leKh6+LyC/+Ed4EIQermwd58wsyh070yjDHFlNGg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.22.15" + "@babel/traverse": "^7.25.7", + "@babel/types": "^7.25.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", - "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.7.tgz", + "integrity": "sha512-DniTEax0sv6isaw6qSQSfV4gVRNtw2rte8HHM45t9ZR0xILaufBRNkpMifCRiAPyvL4ACD6v0gfCwCmtOQaV4A==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.23.5", - "@babel/helper-validator-option": "^7.23.5", - "browserslist": "^4.22.2", + "@babel/compat-data": "^7.25.7", + "@babel/helper-validator-option": "^7.25.7", + "browserslist": "^4.24.0", "lru-cache": "^5.1.1", "semver": "^6.3.1" }, @@ -936,24 +1076,24 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.5.tgz", - "integrity": "sha512-uRc4Cv8UQWnE4NXlYTIIdM7wfFkOqlFztcC/gVXDKohKoVB3OyonfelUBaJzSwpBntZ2KYGF/9S7asCHsXwW6g==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.7.tgz", + "integrity": "sha512-bD4WQhbkx80mAyj/WCm4ZHcF4rDxkoLFO6ph8/5/mQ3z4vAzltQXAmbc7GvVJx5H+lk5Mi5EmbTeox5nMGCsbw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-member-expression-to-functions": "^7.24.5", - "@babel/helper-optimise-call-expression": "^7.22.5", - "@babel/helper-replace-supers": "^7.24.1", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.24.5", + "@babel/helper-annotate-as-pure": "^7.25.7", + "@babel/helper-member-expression-to-functions": "^7.25.7", + "@babel/helper-optimise-call-expression": "^7.25.7", + "@babel/helper-replace-supers": "^7.25.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.7", + "@babel/traverse": "^7.25.7", "semver": "^6.3.1" }, "engines": { @@ -963,13 +1103,14 @@ "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-create-class-features-plugin/node_modules/@babel/helper-split-export-declaration": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.5.tgz", - "integrity": "sha512-5CHncttXohrHk8GWOFCcCl4oRD9fKosWlIRgWm4ql9VYioKm52Mk2xsmoohvm7f3JoiLSM5ZgJuRaf5QZZYd3Q==", + "node_modules/@babel/helper-create-class-features-plugin/node_modules/@babel/helper-annotate-as-pure": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.7.tgz", + "integrity": "sha512-4xwU8StnqnlIhhioZf1tqnVWeQ9pvH/ujS8hRfw/WOza+/a+1qv69BWNy+oY231maTCWgKWhfBU7kDpsds6zAA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.24.5" + "@babel/types": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -980,18 +1121,20 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz", - "integrity": "sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.25.7.tgz", + "integrity": "sha512-byHhumTj/X47wJ6C6eLpK7wW/WBEcnUeb7D0FNc/jFQnQVw7DOso3Zz5u9x/zLrFVkHa89ZGDbkAa1D54NdrCQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "regexpu-core": "^5.3.1", + "@babel/helper-annotate-as-pure": "^7.25.7", + "regexpu-core": "^6.1.1", "semver": "^6.3.1" }, "engines": { @@ -1001,11 +1144,25 @@ "@babel/core": "^7.0.0" } }, + "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/@babel/helper-annotate-as-pure": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.7.tgz", + "integrity": "sha512-4xwU8StnqnlIhhioZf1tqnVWeQ9pvH/ujS8hRfw/WOza+/a+1qv69BWNy+oY231maTCWgKWhfBU7kDpsds6zAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.25.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } @@ -1015,6 +1172,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz", "integrity": "sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-compilation-targets": "^7.22.6", "@babel/helper-plugin-utils": "^7.22.5", @@ -1026,75 +1184,45 @@ "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", - "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", - "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", - "dev": true, - "dependencies": { - "@babel/template": "^7.22.15", - "@babel/types": "^7.23.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", - "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.5.tgz", - "integrity": "sha512-4owRteeihKWKamtqg4JmWSsEZU445xpFRXPEwp44HbgbxdWlUV1b4Agg4lkA806Lil5XM/e+FJyS0vj5T6vmcA==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.7.tgz", + "integrity": "sha512-O31Ssjd5K6lPbTX9AAYpSKrZmLeagt9uwschJd+Ixo6QiRyfpvgtVQp8qrDR9UNFjZ8+DO34ZkdrN+BnPXemeA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.24.5" + "@babel/traverse": "^7.25.7", + "@babel/types": "^7.25.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.24.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.3.tgz", - "integrity": "sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.7.tgz", + "integrity": "sha512-o0xCgpNmRohmnoWKQ0Ij8IdddjyBFE4T2kagL/x6M3+4zUgc+4qTOUBoNe4XxDskt1HPKO007ZPiMgLDq2s7Kw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.24.0" + "@babel/traverse": "^7.25.7", + "@babel/types": "^7.25.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.5.tgz", - "integrity": "sha512-9GxeY8c2d2mdQUP1Dye0ks3VDyIMS98kt/llQ2nUId8IsWqTF0l1LkSX0/uP7l7MCDrzXS009Hyhe2gzTiGW8A==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.25.7.tgz", + "integrity": "sha512-k/6f8dKG3yDz/qCwSM+RKovjMix563SLxQFo0UhRNo239SP6n9u5/eLtKD6EAjwta2JHJ49CsD8pms2HdNiMMQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-module-imports": "^7.24.3", - "@babel/helper-simple-access": "^7.24.5", - "@babel/helper-split-export-declaration": "^7.24.5", - "@babel/helper-validator-identifier": "^7.24.5" + "@babel/helper-module-imports": "^7.25.7", + "@babel/helper-simple-access": "^7.25.7", + "@babel/helper-validator-identifier": "^7.25.7", + "@babel/traverse": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -1103,48 +1231,39 @@ "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-module-transforms/node_modules/@babel/helper-split-export-declaration": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.5.tgz", - "integrity": "sha512-5CHncttXohrHk8GWOFCcCl4oRD9fKosWlIRgWm4ql9VYioKm52Mk2xsmoohvm7f3JoiLSM5ZgJuRaf5QZZYd3Q==", - "dev": true, - "dependencies": { - "@babel/types": "^7.24.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz", - "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.7.tgz", + "integrity": "sha512-VAwcwuYhv/AT+Vfr28c9y6SHzTan1ryqrydSTFGjU0uDJHw3uZ+PduI8plCLkRsDnqK2DMEDmwrOQRsK/Ykjng==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.25.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.5.tgz", - "integrity": "sha512-xjNLDopRzW2o6ba0gKbkZq5YWEBaK3PCyTOY1K2P/O07LGMhMqlMXPxwN4S5/RhWuCobT8z0jrlKGlYmeR1OhQ==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.7.tgz", + "integrity": "sha512-eaPZai0PiqCi09pPs3pAFfl/zYgGaE6IdXtYvmf0qlcDTd3WCtO7JWCcRd64e0EQrcYgiHibEZnOGsSY4QSgaw==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz", - "integrity": "sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.7.tgz", + "integrity": "sha512-kRGE89hLnPfcz6fTrlNU+uhgcwv0mBE4Gv3P9Ke9kLVJYpi4AMVVEElXvB5CabrPZW4nCM8P8UyyjrzCM0O2sw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-wrap-function": "^7.22.20" + "@babel/helper-annotate-as-pure": "^7.25.7", + "@babel/helper-wrap-function": "^7.25.7", + "@babel/traverse": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -1153,15 +1272,29 @@ "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-replace-supers": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.24.1.tgz", - "integrity": "sha512-QCR1UqC9BzG5vZl8BMicmZ28RuUBnHhAMddD8yHFHDRH9lLTZ9uUPehX8ctVPT8l0TKblJidqcgUUKGVrePleQ==", + "node_modules/@babel/helper-remap-async-to-generator/node_modules/@babel/helper-annotate-as-pure": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.7.tgz", + "integrity": "sha512-4xwU8StnqnlIhhioZf1tqnVWeQ9pvH/ujS8hRfw/WOza+/a+1qv69BWNy+oY231maTCWgKWhfBU7kDpsds6zAA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-member-expression-to-functions": "^7.23.0", - "@babel/helper-optimise-call-expression": "^7.22.5" + "@babel/types": "^7.25.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.25.7.tgz", + "integrity": "sha512-iy8JhqlUW9PtZkd4pHM96v6BdJ66Ba9yWSE4z0W4TvSZwLBPkyDsiIU3ENe4SmrzRBs76F7rQXTy1lYC49n6Lw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-member-expression-to-functions": "^7.25.7", + "@babel/helper-optimise-call-expression": "^7.25.7", + "@babel/traverse": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -1171,103 +1304,111 @@ } }, "node_modules/@babel/helper-simple-access": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.5.tgz", - "integrity": "sha512-uH3Hmf5q5n7n8mz7arjUlDOCbttY/DW4DYhE6FUsjKJ/oYC1kQQUvwEQWxRwUpX9qQKRXeqLwWxrqilMrf32sQ==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.25.7.tgz", + "integrity": "sha512-FPGAkJmyoChQeM+ruBGIDyrT2tKfZJO8NcxdC+CWNJi7N8/rZpSxK7yvBJ5O/nF1gfu5KzN7VKG3YVSLFfRSxQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.24.5" + "@babel/traverse": "^7.25.7", + "@babel/types": "^7.25.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz", - "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.7.tgz", + "integrity": "sha512-pPbNbchZBkPMD50K0p3JGcFMNLVUCuU/ABybm/PGNj4JiHrpmNyqqCphBk4i19xXtNV0JhldQJJtbSW5aUvbyA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.22.5" + "@babel/traverse": "^7.25.7", + "@babel/types": "^7.25.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-split-export-declaration": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", - "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz", + "integrity": "sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-string-parser": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz", - "integrity": "sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.7.tgz", + "integrity": "sha512-CbkjYdsJNHFk8uqpEkpCvRs3YRp9tY6FmFY7wLMSYuGYkrdUi7r2lc4/wqsvlHoMznX3WJ9IP8giGPq68T/Y6g==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.5.tgz", - "integrity": "sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA==", - "dev": true, + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.7.tgz", + "integrity": "sha512-AM6TzwYqGChO45oiuPqwL2t20/HdMC1rTPAesnBCgPCSF1x3oN9MVUwQV2iyz4xqWrctwK5RNC8LV22kaQCNYg==", + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", - "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.7.tgz", + "integrity": "sha512-ytbPLsm+GjArDYXJ8Ydr1c/KJuutjF2besPNbIZnZ6MKUxi/uTA22t2ymmA4WFjZFpjiAMO0xuuJPqK2nvDVfQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-wrap-function": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.24.5.tgz", - "integrity": "sha512-/xxzuNvgRl4/HLNKvnFwdhdgN3cpLxgLROeLDl83Yx0AJ1SGvq1ak0OszTOjDfiB8Vx03eJbeDWh9r+jCCWttw==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.25.7.tgz", + "integrity": "sha512-MA0roW3JF2bD1ptAaJnvcabsVlNQShUaThyJbCDD4bCp8NEgiFvpoqRI2YS22hHlc2thjO/fTg2ShLMC3jygAg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-function-name": "^7.23.0", - "@babel/template": "^7.24.0", - "@babel/types": "^7.24.5" + "@babel/template": "^7.25.7", + "@babel/traverse": "^7.25.7", + "@babel/types": "^7.25.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.5.tgz", - "integrity": "sha512-CiQmBMMpMQHwM5m01YnrM6imUG1ebgYJ+fAIW4FZe6m4qHTPaRHti+R8cggAwkdz4oXhtO4/K9JWlh+8hIfR2Q==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.25.7.tgz", + "integrity": "sha512-Sv6pASx7Esm38KQpF/U/OXLwPPrdGHNKoeblRxgZRLXnAtnkEe4ptJPDtAZM7fBLadbc1Q07kQpSiGQ0Jg6tRA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/template": "^7.24.0", - "@babel/traverse": "^7.24.5", - "@babel/types": "^7.24.5" + "@babel/template": "^7.25.7", + "@babel/types": "^7.25.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.5.tgz", - "integrity": "sha512-8lLmua6AVh/8SLJRRVD6V8p73Hir9w5mJrhE+IPpILG31KKlI9iz5zmBYKcWPS59qSfgP9RaSBQSHHE81WKuEw==", - "dev": true, + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.25.7.tgz", + "integrity": "sha512-iYyACpW3iW8Fw+ZybQK+drQre+ns/tKpXbNESfrhNnPLIklLbXr7MYJ6gPEd0iETGLOK+SxMjVvKb/ffmk+FEw==", + "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.24.5", + "@babel/helper-validator-identifier": "^7.25.7", "chalk": "^2.4.2", "js-tokens": "^4.0.0", "picocolors": "^1.0.0" @@ -1277,10 +1418,14 @@ } }, "node_modules/@babel/parser": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.5.tgz", - "integrity": "sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg==", + "version": "7.25.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.8.tgz", + "integrity": "sha512-HcttkxzdPucv3nNFmfOOMfFf64KgdJVqm1KaCm25dPGMLElo9nsLvXeJECQg8UzPuBGLyTSA0ZzqCtDSzKTEoQ==", "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.25.8" + }, "bin": { "parser": "bin/babel-parser.js" }, @@ -1288,13 +1433,47 @@ "node": ">=6.0.0" } }, - "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.24.1.tgz", - "integrity": "sha512-y4HqEnkelJIOQGd+3g1bTeKsA5c6qM7eOn7VggGVbBc0y8MLSKHacwcIE2PplNlQSj0PqS9rrXL/nkPVK+kUNg==", + "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.7.tgz", + "integrity": "sha512-UV9Lg53zyebzD1DwQoT9mzkEKa922LNUp5YkTJ6Uta0RbyXaQNUgcvSt7qIu1PpPzVb6rd10OVNTzkyBGeVmxQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.25.7", + "@babel/traverse": "^7.25.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.7.tgz", + "integrity": "sha512-GDDWeVLNxRIkQTnJn2pDOM1pkCgYdSqPeT1a9vh9yIqu2uzzgw1zcqEb+IJOhy+dTBMlNdThrDIksr2o09qrrQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.7.tgz", + "integrity": "sha512-wxyWg2RYaSUYgmd9MR0FyRGyeOMQE/Uzr1wzd/g5cf5bwi9A4v6HFdDm7y1MgDtod/fLOSTZY6jDgV0xU9d5bA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -1304,14 +1483,15 @@ } }, "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.1.tgz", - "integrity": "sha512-Hj791Ii4ci8HqnaKHAlLNs+zaLXb0EzSDhiAWp5VNlyvCNymYfacs64pxTxbH1znW/NcArSmwpmG9IKE/TUVVQ==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.25.7.tgz", + "integrity": "sha512-Xwg6tZpLxc4iQjorYsyGMyfJE7nP5MV8t/Ka58BgiA7Jw0fRqQNcANlLfdJ/yvBt9z9LD2We+BEkT7vLqZRWng==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/plugin-transform-optional-chaining": "^7.24.1" + "@babel/helper-plugin-utils": "^7.25.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.7", + "@babel/plugin-transform-optional-chaining": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -1321,13 +1501,14 @@ } }, "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.24.1.tgz", - "integrity": "sha512-m9m/fXsXLiHfwdgydIFnpk+7jlVbnvlK5B2EKiPdLUb6WX654ZaaEWJUjk8TftRbZpK0XibovlLWX4KIZhV6jw==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.7.tgz", + "integrity": "sha512-UVATLMidXrnH+GMUIuxq55nejlj02HP7F5ETyBONzP6G87fPBogG4CH6kxrSrdIuAjdwNO9VzyaYsrZPscWUrw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.25.7", + "@babel/traverse": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -1342,6 +1523,7 @@ "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead.", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-create-class-features-plugin": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" @@ -1359,6 +1541,7 @@ "integrity": "sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==", "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-object-rest-spread instead.", "dev": true, + "license": "MIT", "dependencies": { "@babel/compat-data": "^7.20.5", "@babel/helper-compilation-targets": "^7.20.7", @@ -1378,6 +1561,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" }, @@ -1390,6 +1574,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -1402,6 +1587,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.12.13" }, @@ -1414,6 +1600,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -1429,6 +1616,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -1441,6 +1629,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.3" }, @@ -1449,12 +1638,13 @@ } }, "node_modules/@babel/plugin-syntax-flow": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.24.1.tgz", - "integrity": "sha512-sxi2kLTI5DeW5vDtMUsk4mTPwvlUDbjOnoWayhynCwrw4QXRld4QEYwqzY8JmQXaJUtgUuCIurtSRH5sn4c7mA==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.25.7.tgz", + "integrity": "sha512-fyoj6/YdVtlv2ROig/J0fP7hh/wNO1MJGm1NR70Pg7jbkF+jOUL9joorqaCOQh06Y+LfgTagHzC8KqZ3MF782w==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -1464,12 +1654,13 @@ } }, "node_modules/@babel/plugin-syntax-import-assertions": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.1.tgz", - "integrity": "sha512-IuwnI5XnuF189t91XbxmXeCDz3qs6iDRO7GJ++wcfgeXNs/8FmIlKcpDSXNVyuLQxlwvskmI3Ct73wUODkJBlQ==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.25.7.tgz", + "integrity": "sha512-ZvZQRmME0zfJnDQnVBKYzHxXT7lYBB3Revz1GuS7oLXWMgqUPX4G+DDbT30ICClht9WKV34QVrZhSw6WdklwZQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -1479,12 +1670,13 @@ } }, "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.1.tgz", - "integrity": "sha512-zhQTMH0X2nVLnb04tz+s7AMuasX8U0FnpE+nHTOhSOINjWMnopoZTxtIKsd45n4GQ/HIZLyfIpoul8e2m0DnRA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.7.tgz", + "integrity": "sha512-hbX+lKKeUMGihnK8nvKqmXBInriT3GVjzXKFriV3YC6APGxMbP8RZNFwy91+hocLXq90Mta+HshoB31802bb8A==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1498,6 +1690,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -1510,6 +1703,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -1518,12 +1712,13 @@ } }, "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.1.tgz", - "integrity": "sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.7.tgz", + "integrity": "sha512-ruZOnKO+ajVL/MVx+PwNBPOkrnXTXoWMtte1MBpegfCArhqOe3Bj52avVj1huLLxNKYKXYaSxZ2F+woK1ekXfw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -1537,6 +1732,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -1549,6 +1745,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -1561,6 +1758,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -1573,6 +1771,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -1585,6 +1784,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -1597,6 +1797,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -1609,6 +1810,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -1624,6 +1826,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -1639,6 +1842,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" @@ -1651,12 +1855,13 @@ } }, "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.1.tgz", - "integrity": "sha512-ngT/3NkRhsaep9ck9uj2Xhv9+xB1zShY3tM3g6om4xxCELwCDN4g4Aq5dRn48+0hasAql7s2hdBOysCfNpr4fw==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.25.7.tgz", + "integrity": "sha512-EJN2mKxDwfOUCPxMO6MUI58RN3ganiRAG/MS/S3HfB6QFNjroAMelQo/gybyYq97WerCBAZoyrAoW8Tzdq2jWg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -1666,15 +1871,16 @@ } }, "node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.23.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.9.tgz", - "integrity": "sha512-8Q3veQEDGe14dTYuwagbRtwxQDnytyg1JFu4/HwEMETeofocrB0U0ejBJIXoeG/t2oXZ8kzCyI0ZZfbT80VFNQ==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.0.tgz", + "integrity": "sha512-uaIi2FdqzjpAMvVqvB51S42oC2JEVgh0LDsGfZVDysWE8LrJtQC2jvKmOqEYThKyB7bDEb7BP1GYWDm7tABA0Q==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-remap-async-to-generator": "^7.22.20", - "@babel/plugin-syntax-async-generators": "^7.8.4" + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-remap-async-to-generator": "^7.25.0", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/traverse": "^7.25.0" }, "engines": { "node": ">=6.9.0" @@ -1684,14 +1890,15 @@ } }, "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.23.3.tgz", - "integrity": "sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.7.tgz", + "integrity": "sha512-SQY01PcJfmQ+4Ash7NE+rpbLFbmqA2GPIgqzxfFTL4t1FKRq4zTms/7htKpoCUI9OcFYgzqfmCdH53s6/jn5fA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-remap-async-to-generator": "^7.22.20" + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-remap-async-to-generator": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -1701,12 +1908,13 @@ } }, "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.1.tgz", - "integrity": "sha512-TWWC18OShZutrv9C6mye1xwtam+uNi2bnTOCBUd5sZxyHOiWbU6ztSROofIMrK84uweEZC219POICK/sTYwfgg==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.25.7.tgz", + "integrity": "sha512-xHttvIM9fvqW+0a3tZlYcZYSBpSWzGBFIt/sYG3tcdSzBB8ZeVgz2gBP7Df+sM0N1850jrviYSSeUuc+135dmQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -1716,12 +1924,13 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.5.tgz", - "integrity": "sha512-sMfBc3OxghjC95BkYrYocHL3NaOplrcaunblzwXhGmlPwpmfsxr4vK+mBBt49r+S240vahmv+kUxkeKgs+haCw==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.7.tgz", + "integrity": "sha512-ZEPJSkVZaeTFG/m2PARwLZQ+OG0vFIhPlKHK/JdIMy8DbRJ/htz6LRrTFtdzxi9EHmcwbNPAKDnadpNSIW+Aow==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.5" + "@babel/helper-plugin-utils": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -1731,13 +1940,14 @@ } }, "node_modules/@babel/plugin-transform-class-properties": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.24.1.tgz", - "integrity": "sha512-OMLCXi0NqvJfORTaPQBwqLXHhb93wkBKZ4aNwMl6WtehO7ar+cmp+89iPEQPqxAnxsOKTaMcs3POz3rKayJ72g==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.7.tgz", + "integrity": "sha512-mhyfEW4gufjIqYFo9krXHJ3ElbFLIze5IDp+wQTxoPd+mwFb1NxatNAwmv8Q8Iuxv7Zc+q8EkiMQwc9IhyGf4g==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.24.1", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-create-class-features-plugin": "^7.25.7", + "@babel/helper-plugin-utils": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -1747,14 +1957,14 @@ } }, "node_modules/@babel/plugin-transform-class-static-block": { - "version": "7.24.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.4.tgz", - "integrity": "sha512-B8q7Pz870Hz/q9UgP8InNpY01CSLDSCyqX7zcRuv3FcPl87A2G17lASroHWaCtbdIcbYzOZ7kWmXFKbijMSmFg==", + "version": "7.25.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.25.8.tgz", + "integrity": "sha512-e82gl3TCorath6YLf9xUwFehVvjvfqFhdOo4+0iVIVju+6XOi5XHkqB3P2AXnSwoeTX0HBoXq5gJFtvotJzFnQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.24.4", - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/plugin-syntax-class-static-block": "^7.14.5" + "@babel/helper-create-class-features-plugin": "^7.25.7", + "@babel/helper-plugin-utils": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -1764,18 +1974,17 @@ } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.5.tgz", - "integrity": "sha512-gWkLP25DFj2dwe9Ck8uwMOpko4YsqyfZJrOmqqcegeDYEbp7rmn4U6UQZNj08UF6MaX39XenSpKRCvpDRBtZ7Q==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.7.tgz", + "integrity": "sha512-9j9rnl+YCQY0IGoeipXvnk3niWicIB6kCsWRGLwX241qSXpbA4MKxtp/EdvFxsc4zI5vqfLxzOd0twIJ7I99zg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-plugin-utils": "^7.24.5", - "@babel/helper-replace-supers": "^7.24.1", - "@babel/helper-split-export-declaration": "^7.24.5", + "@babel/helper-annotate-as-pure": "^7.25.7", + "@babel/helper-compilation-targets": "^7.25.7", + "@babel/helper-plugin-utils": "^7.25.7", + "@babel/helper-replace-supers": "^7.25.7", + "@babel/traverse": "^7.25.7", "globals": "^11.1.0" }, "engines": { @@ -1785,26 +1994,37 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-classes/node_modules/@babel/helper-split-export-declaration": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.5.tgz", - "integrity": "sha512-5CHncttXohrHk8GWOFCcCl4oRD9fKosWlIRgWm4ql9VYioKm52Mk2xsmoohvm7f3JoiLSM5ZgJuRaf5QZZYd3Q==", + "node_modules/@babel/plugin-transform-classes/node_modules/@babel/helper-annotate-as-pure": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.7.tgz", + "integrity": "sha512-4xwU8StnqnlIhhioZf1tqnVWeQ9pvH/ujS8hRfw/WOza+/a+1qv69BWNy+oY231maTCWgKWhfBU7kDpsds6zAA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.24.5" + "@babel/types": "^7.25.7" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.1.tgz", - "integrity": "sha512-5pJGVIUfJpOS+pAqBQd+QMaTD2vCL/HcePooON6pDpHgRp4gNRmzyHTPIkXntwKsq3ayUFVfJaIKPw2pOkOcTw==", + "node_modules/@babel/plugin-transform-classes/node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.25.7.tgz", + "integrity": "sha512-QIv+imtM+EtNxg/XBKL3hiWjgdLjMOmZ+XzQwSgmBfKbfxUjBzGgVPklUuE55eq5/uVoh8gg3dqlrwR/jw3ZeA==", + "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/template": "^7.24.0" + "@babel/helper-plugin-utils": "^7.25.7", + "@babel/template": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -1814,12 +2034,13 @@ } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.5.tgz", - "integrity": "sha512-SZuuLyfxvsm+Ah57I/i1HVjveBENYK9ue8MJ7qkc7ndoNjqquJiElzA7f5yaAXjyW2hKojosOTAQQRX50bPSVg==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.25.7.tgz", + "integrity": "sha512-xKcfLTlJYUczdaM1+epcdh1UGewJqr9zATgrNHcLBcV2QmfvPPEixo/sK/syql9cEmbr7ulu5HMFG5vbbt/sEA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.5" + "@babel/helper-plugin-utils": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -1829,13 +2050,14 @@ } }, "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.1.tgz", - "integrity": "sha512-p7uUxgSoZwZ2lPNMzUkqCts3xlp8n+o05ikjy7gbtFJSt9gdU88jAmtfmOxHM14noQXBxfgzf2yRWECiNVhTCw==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.25.7.tgz", + "integrity": "sha512-kXzXMMRzAtJdDEgQBLF4oaiT6ZCU3oWHgpARnTKDAqPkDJ+bs3NrZb310YYevR5QlRo3Kn7dzzIdHbZm1VzJdQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-create-regexp-features-plugin": "^7.25.7", + "@babel/helper-plugin-utils": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -1845,12 +2067,13 @@ } }, "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.1.tgz", - "integrity": "sha512-msyzuUnvsjsaSaocV6L7ErfNsa5nDWL1XKNnDePLgmz+WdU4w/J8+AxBMrWfi9m4IxfL5sZQKUPQKDQeeAT6lA==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.25.7.tgz", + "integrity": "sha512-by+v2CjoL3aMnWDOyCIg+yxU9KXSRa9tN6MbqggH5xvymmr9p4AMjYkNlQy4brMceBnUyHZ9G8RnpvT8wP7Cfg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -1859,14 +2082,31 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-dynamic-import": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.1.tgz", - "integrity": "sha512-av2gdSTyXcJVdI+8aFZsCAtR29xJt0S5tas+Ef8NvBNmD1a+N/3ecMLeMBgfcK+xzsjdLDT6oHt+DFPyeqUbDA==", + "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.7.tgz", + "integrity": "sha512-HvS6JF66xSS5rNKXLqkk7L9c/jZ/cdIVIcoPVrnl8IsVpLggTjXs8OWekbLHs/VtYDDh5WXnQyeE3PPUGm22MA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.25.7", + "@babel/helper-plugin-utils": "^7.25.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-dynamic-import": { + "version": "7.25.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.25.8.tgz", + "integrity": "sha512-gznWY+mr4ZQL/EWPcbBQUP3BXS5FwZp8RUOw06BaRn8tQLzN4XLIxXejpHN9Qo8x8jjBmAAKp6FoS51AgkSA/A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -1876,13 +2116,14 @@ } }, "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.1.tgz", - "integrity": "sha512-U1yX13dVBSwS23DEAqU+Z/PkwE9/m7QQy8Y9/+Tdb8UWYaGNDYwTLi19wqIAiROr8sXVum9A/rtiH5H0boUcTw==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.25.7.tgz", + "integrity": "sha512-yjqtpstPfZ0h/y40fAXRv2snciYr0OAoMXY/0ClC7tm4C/nG5NJKmIItlaYlLbIVAWNfrYuy9dq1bE0SbX0PEg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.15", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.25.7", + "@babel/helper-plugin-utils": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -1892,13 +2133,13 @@ } }, "node_modules/@babel/plugin-transform-export-namespace-from": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.1.tgz", - "integrity": "sha512-Ft38m/KFOyzKw2UaJFkWG9QnHPG/Q/2SkOrRk4pNBPg5IPZ+dOxcmkK5IyuBcxiNPyyYowPGUReyBvrvZs7IlQ==", + "version": "7.25.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.25.8.tgz", + "integrity": "sha512-sPtYrduWINTQTW7FtOy99VCTWp4H23UX7vYcut7S4CIMEXU+54zKX9uCoGkLsWXteyaMXzVHgzWbLfQ1w4GZgw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + "@babel/helper-plugin-utils": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -1908,13 +2149,14 @@ } }, "node_modules/@babel/plugin-transform-flow-strip-types": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.24.1.tgz", - "integrity": "sha512-iIYPIWt3dUmUKKE10s3W+jsQ3icFkw0JyRVyY1B7G4yK/nngAOHLVx8xlhA6b/Jzl/Y0nis8gjqhqKtRDQqHWQ==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.25.7.tgz", + "integrity": "sha512-q8Td2PPc6/6I73g96SreSUCKEcwMXCwcXSIAVTyTTN6CpJe0dMj8coxu1fg1T9vfBLi6Rsi6a4ECcFBbKabS5w==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/plugin-syntax-flow": "^7.24.1" + "@babel/helper-plugin-utils": "^7.25.7", + "@babel/plugin-syntax-flow": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -1924,13 +2166,14 @@ } }, "node_modules/@babel/plugin-transform-for-of": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.1.tgz", - "integrity": "sha512-OxBdcnF04bpdQdR3i4giHZNZQn7cm8RQKcSwA17wAAqEELo1ZOwp5FFgeptWUQXFyT9kwHo10aqqauYkRZPCAg==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.25.7.tgz", + "integrity": "sha512-n/TaiBGJxYFWvpJDfsxSj9lEEE44BFM1EPGz4KEiTipTgkoFVVcCmzAL3qA7fdQU96dpo4gGf5HBx/KnDvqiHw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" + "@babel/helper-plugin-utils": "^7.25.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -1940,14 +2183,15 @@ } }, "node_modules/@babel/plugin-transform-function-name": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.24.1.tgz", - "integrity": "sha512-BXmDZpPlh7jwicKArQASrj8n22/w6iymRnvHYYd2zO30DbE277JO20/7yXJT3QxDPtiQiOxQBbZH4TpivNXIxA==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.7.tgz", + "integrity": "sha512-5MCTNcjCMxQ63Tdu9rxyN6cAWurqfrDZ76qvVPrGYdBxIj+EawuuxTu/+dgJlhK5eRz3v1gLwp6XwS8XaX2NiQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-compilation-targets": "^7.25.7", + "@babel/helper-plugin-utils": "^7.25.7", + "@babel/traverse": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -1957,13 +2201,13 @@ } }, "node_modules/@babel/plugin-transform-json-strings": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.1.tgz", - "integrity": "sha512-U7RMFmRvoasscrIFy5xA4gIp8iWnWubnKkKuUGJjsuOH7GfbMkB+XZzeslx2kLdEGdOJDamEmCqOks6e8nv8DQ==", + "version": "7.25.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.25.8.tgz", + "integrity": "sha512-4OMNv7eHTmJ2YXs3tvxAfa/I43di+VcF+M4Wt66c88EAED1RoGaf1D64cL5FkRpNL+Vx9Hds84lksWvd/wMIdA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/plugin-syntax-json-strings": "^7.8.3" + "@babel/helper-plugin-utils": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -1973,12 +2217,13 @@ } }, "node_modules/@babel/plugin-transform-literals": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.24.1.tgz", - "integrity": "sha512-zn9pwz8U7nCqOYIiBaOxoQOtYmMODXTJnkxG4AtX8fPmnCRYWBOHD0qcpwS9e2VDSp1zNJYpdnFMIKb8jmwu6g==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.7.tgz", + "integrity": "sha512-fwzkLrSu2fESR/cm4t6vqd7ebNIopz2QHGtjoU+dswQo/P6lwAG04Q98lliE3jkz/XqnbGFLnUcE0q0CVUf92w==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -1988,13 +2233,13 @@ } }, "node_modules/@babel/plugin-transform-logical-assignment-operators": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.1.tgz", - "integrity": "sha512-OhN6J4Bpz+hIBqItTeWJujDOfNP+unqv/NJgyhlpSqgBTPm37KkMmZV6SYcOj+pnDbdcl1qRGV/ZiIjX9Iy34w==", + "version": "7.25.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.25.8.tgz", + "integrity": "sha512-f5W0AhSbbI+yY6VakT04jmxdxz+WsID0neG7+kQZbCOjuyJNdL5Nn4WIBm4hRpKnUcO9lP0eipUhFN12JpoH8g==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + "@babel/helper-plugin-utils": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -2004,12 +2249,13 @@ } }, "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.1.tgz", - "integrity": "sha512-4ojai0KysTWXzHseJKa1XPNXKRbuUrhkOPY4rEGeR+7ChlJVKxFa3H3Bz+7tWaGKgJAXUWKOGmltN+u9B3+CVg==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.25.7.tgz", + "integrity": "sha512-Std3kXwpXfRV0QtQy5JJcRpkqP8/wG4XL7hSKZmGlxPlDqmpXtEPRmhF7ztnlTCtUN3eXRUJp+sBEZjaIBVYaw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -2019,13 +2265,14 @@ } }, "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.1.tgz", - "integrity": "sha512-lAxNHi4HVtjnHd5Rxg3D5t99Xm6H7b04hUS7EHIXcUl2EV4yl1gWdqZrNzXnSrHveL9qMdbODlLF55mvgjAfaQ==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.25.7.tgz", + "integrity": "sha512-CgselSGCGzjQvKzghCvDTxKHP3iooenLpJDO842ehn5D2G5fJB222ptnDwQho0WjEvg7zyoxb9P+wiYxiJX5yA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-module-transforms": "^7.25.7", + "@babel/helper-plugin-utils": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -2035,14 +2282,15 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.1.tgz", - "integrity": "sha512-szog8fFTUxBfw0b98gEWPaEqF42ZUD/T3bkynW/wtgx2p/XCP55WEsb+VosKceRSd6njipdZvNogqdtI4Q0chw==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.25.7.tgz", + "integrity": "sha512-L9Gcahi0kKFYXvweO6n0wc3ZG1ChpSFdgG+eV1WYZ3/dGbJK7vvk91FgGgak8YwRgrCuihF8tE/Xg07EkL5COg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-simple-access": "^7.22.5" + "@babel/helper-module-transforms": "^7.25.7", + "@babel/helper-plugin-utils": "^7.25.7", + "@babel/helper-simple-access": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -2052,15 +2300,16 @@ } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.24.1.tgz", - "integrity": "sha512-mqQ3Zh9vFO1Tpmlt8QPnbwGHzNz3lpNEMxQb1kAemn/erstyqw1r9KeOlOfo3y6xAnFEcOv2tSyrXfmMk+/YZA==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.7.tgz", + "integrity": "sha512-t9jZIvBmOXJsiuyOwhrIGs8dVcD6jDyg2icw1VL4A/g+FnWyJKwUfSSU2nwJuMV2Zqui856El9u+ElB+j9fV1g==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-validator-identifier": "^7.22.20" + "@babel/helper-module-transforms": "^7.25.7", + "@babel/helper-plugin-utils": "^7.25.7", + "@babel/helper-validator-identifier": "^7.25.7", + "@babel/traverse": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -2070,13 +2319,14 @@ } }, "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.1.tgz", - "integrity": "sha512-tuA3lpPj+5ITfcCluy6nWonSL7RvaG0AOTeAuvXqEKS34lnLzXpDb0dcP6K8jD0zWZFNDVly90AGFJPnm4fOYg==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.25.7.tgz", + "integrity": "sha512-p88Jg6QqsaPh+EB7I9GJrIqi1Zt4ZBHUQtjw3z1bzEXcLh6GfPqzZJ6G+G1HBGKUNukT58MnKG7EN7zXQBCODw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-module-transforms": "^7.25.7", + "@babel/helper-plugin-utils": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -2086,13 +2336,14 @@ } }, "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz", - "integrity": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.25.7.tgz", + "integrity": "sha512-BtAT9LzCISKG3Dsdw5uso4oV1+v2NlVXIIomKJgQybotJY3OwCwJmkongjHgwGKoZXd0qG5UZ12JUlDQ07W6Ow==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-create-regexp-features-plugin": "^7.25.7", + "@babel/helper-plugin-utils": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -2102,12 +2353,13 @@ } }, "node_modules/@babel/plugin-transform-new-target": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.1.tgz", - "integrity": "sha512-/rurytBM34hYy0HKZQyA0nHbQgQNFm4Q/BOc9Hflxi2X3twRof7NaE5W46j4kQitm7SvACVRXsa6N/tSZxvPug==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.25.7.tgz", + "integrity": "sha512-CfCS2jDsbcZaVYxRFo2qtavW8SpdzmBXC2LOI4oO0rP+JSRDxxF3inF4GcPsLgfb5FjkhXG5/yR/lxuRs2pySA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -2117,13 +2369,13 @@ } }, "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.1.tgz", - "integrity": "sha512-iQ+caew8wRrhCikO5DrUYx0mrmdhkaELgFa+7baMcVuhxIkN7oxt06CZ51D65ugIb1UWRQ8oQe+HXAVM6qHFjw==", + "version": "7.25.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.25.8.tgz", + "integrity": "sha512-Z7WJJWdQc8yCWgAmjI3hyC+5PXIubH9yRKzkl9ZEG647O9szl9zvmKLzpbItlijBnVhTUf1cpyWBsZ3+2wjWPQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + "@babel/helper-plugin-utils": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -2133,13 +2385,13 @@ } }, "node_modules/@babel/plugin-transform-numeric-separator": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.1.tgz", - "integrity": "sha512-7GAsGlK4cNL2OExJH1DzmDeKnRv/LXq0eLUSvudrehVA5Rgg4bIrqEUW29FbKMBRT0ztSqisv7kjP+XIC4ZMNw==", + "version": "7.25.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.25.8.tgz", + "integrity": "sha512-rm9a5iEFPS4iMIy+/A/PiS0QN0UyjPIeVvbU5EMZFKJZHt8vQnasbpo3T3EFcxzCeYO0BHfc4RqooCZc51J86Q==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" + "@babel/helper-plugin-utils": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -2149,15 +2401,15 @@ } }, "node_modules/@babel/plugin-transform-object-rest-spread": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.5.tgz", - "integrity": "sha512-7EauQHszLGM3ay7a161tTQH7fj+3vVM/gThlz5HpFtnygTxjrlvoeq7MPVA1Vy9Q555OB8SnAOsMkLShNkkrHA==", + "version": "7.25.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.25.8.tgz", + "integrity": "sha512-LkUu0O2hnUKHKE7/zYOIjByMa4VRaV2CD/cdGz0AxU9we+VA3kDDggKEzI0Oz1IroG+6gUP6UmWEHBMWZU316g==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-plugin-utils": "^7.24.5", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.24.5" + "@babel/helper-compilation-targets": "^7.25.7", + "@babel/helper-plugin-utils": "^7.25.7", + "@babel/plugin-transform-parameters": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -2167,13 +2419,14 @@ } }, "node_modules/@babel/plugin-transform-object-super": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.1.tgz", - "integrity": "sha512-oKJqR3TeI5hSLRxudMjFQ9re9fBVUU0GICqM3J1mi8MqlhVr6hC/ZN4ttAyMuQR6EZZIY6h/exe5swqGNNIkWQ==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.25.7.tgz", + "integrity": "sha512-pWT6UXCEW3u1t2tcAGtE15ornCBvopHj9Bps9D2DsH15APgNVOTwwczGckX+WkAvBmuoYKRCFa4DK+jM8vh5AA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-replace-supers": "^7.24.1" + "@babel/helper-plugin-utils": "^7.25.7", + "@babel/helper-replace-supers": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -2183,13 +2436,13 @@ } }, "node_modules/@babel/plugin-transform-optional-catch-binding": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.1.tgz", - "integrity": "sha512-oBTH7oURV4Y+3EUrf6cWn1OHio3qG/PVwO5J03iSJmBg6m2EhKjkAu/xuaXaYwWW9miYtvbWv4LNf0AmR43LUA==", + "version": "7.25.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.25.8.tgz", + "integrity": "sha512-EbQYweoMAHOn7iJ9GgZo14ghhb9tTjgOc88xFgYngifx7Z9u580cENCV159M4xDh3q/irbhSjZVpuhpC2gKBbg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + "@babel/helper-plugin-utils": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -2199,14 +2452,14 @@ } }, "node_modules/@babel/plugin-transform-optional-chaining": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.5.tgz", - "integrity": "sha512-xWCkmwKT+ihmA6l7SSTpk8e4qQl/274iNbSKRRS8mpqFR32ksy36+a+LWY8OXCCEefF8WFlnOHVsaDI2231wBg==", + "version": "7.25.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.25.8.tgz", + "integrity": "sha512-q05Bk7gXOxpTHoQ8RSzGSh/LHVB9JEIkKnk3myAWwZHnYiTGYtbdrYkIsS8Xyh4ltKf7GNUSgzs/6P2bJtBAQg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" + "@babel/helper-plugin-utils": "^7.25.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -2216,12 +2469,13 @@ } }, "node_modules/@babel/plugin-transform-parameters": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.5.tgz", - "integrity": "sha512-9Co00MqZ2aoky+4j2jhofErthm6QVLKbpQrvz20c3CH9KQCLHyNB+t2ya4/UrRpQGR+Wrwjg9foopoeSdnHOkA==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.25.7.tgz", + "integrity": "sha512-FYiTvku63me9+1Nz7TOx4YMtW3tWXzfANZtrzHhUZrz4d47EEtMQhzFoZWESfXuAMMT5mwzD4+y1N8ONAX6lMQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.5" + "@babel/helper-plugin-utils": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -2231,13 +2485,14 @@ } }, "node_modules/@babel/plugin-transform-private-methods": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.1.tgz", - "integrity": "sha512-tGvisebwBO5em4PaYNqt4fkw56K2VALsAbAakY0FjTYqJp7gfdrgr7YX76Or8/cpik0W6+tj3rZ0uHU9Oil4tw==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.7.tgz", + "integrity": "sha512-KY0hh2FluNxMLwOCHbxVOKfdB5sjWG4M183885FmaqWWiGMhRZq4DQRKH6mHdEucbJnyDyYiZNwNG424RymJjA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.24.1", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-create-class-features-plugin": "^7.25.7", + "@babel/helper-plugin-utils": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -2247,15 +2502,15 @@ } }, "node_modules/@babel/plugin-transform-private-property-in-object": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.5.tgz", - "integrity": "sha512-JM4MHZqnWR04jPMujQDTBVRnqxpLLpx2tkn7iPn+Hmsc0Gnb79yvRWOkvqFOx3Z7P7VxiRIR22c4eGSNj87OBQ==", + "version": "7.25.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.25.8.tgz", + "integrity": "sha512-8Uh966svuB4V8RHHg0QJOB32QK287NBksJOByoKmHMp1TAobNniNalIkI2i5IPj5+S9NYCG4VIjbEuiSN8r+ow==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-create-class-features-plugin": "^7.24.5", - "@babel/helper-plugin-utils": "^7.24.5", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + "@babel/helper-annotate-as-pure": "^7.25.7", + "@babel/helper-create-class-features-plugin": "^7.25.7", + "@babel/helper-plugin-utils": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -2264,13 +2519,27 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.1.tgz", - "integrity": "sha512-LetvD7CrHmEx0G442gOomRr66d7q8HzzGGr4PMHGr+5YIm6++Yke+jxj246rpvsbyhJwCLxcTn6zW1P1BSenqA==", + "node_modules/@babel/plugin-transform-private-property-in-object/node_modules/@babel/helper-annotate-as-pure": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.7.tgz", + "integrity": "sha512-4xwU8StnqnlIhhioZf1tqnVWeQ9pvH/ujS8hRfw/WOza+/a+1qv69BWNy+oY231maTCWgKWhfBU7kDpsds6zAA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/types": "^7.25.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.25.7.tgz", + "integrity": "sha512-lQEeetGKfFi0wHbt8ClQrUSUMfEeI3MMm74Z73T9/kuz990yYVtfofjf3NuA42Jy3auFOpbjDyCSiIkTs1VIYw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -2280,12 +2549,13 @@ } }, "node_modules/@babel/plugin-transform-react-display-name": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.24.1.tgz", - "integrity": "sha512-mvoQg2f9p2qlpDQRBC7M3c3XTr0k7cp/0+kFKKO/7Gtu0LSw16eKB+Fabe2bDT/UpsyasTBBkAnbdsLrkD5XMw==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.25.7.tgz", + "integrity": "sha512-r0QY7NVU8OnrwE+w2IWiRom0wwsTbjx4+xH2RTd7AVdof3uurXOF+/mXHQDRk+2jIvWgSaCHKMgggfvM4dyUGA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -2295,16 +2565,17 @@ } }, "node_modules/@babel/plugin-transform-react-jsx": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.23.4.tgz", - "integrity": "sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.25.7.tgz", + "integrity": "sha512-vILAg5nwGlR9EXE8JIOX4NHXd49lrYbN8hnjffDtoULwpL9hUx/N55nqh2qd0q6FyNDfjl9V79ecKGvFbcSA0Q==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-jsx": "^7.23.3", - "@babel/types": "^7.23.4" + "@babel/helper-annotate-as-pure": "^7.25.7", + "@babel/helper-module-imports": "^7.25.7", + "@babel/helper-plugin-utils": "^7.25.7", + "@babel/plugin-syntax-jsx": "^7.25.7", + "@babel/types": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -2313,13 +2584,27 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.1.tgz", - "integrity": "sha512-sJwZBCzIBE4t+5Q4IGLaaun5ExVMRY0lYwos/jNecjMrVCygCdph3IKv0tkP5Fc87e/1+bebAmEAGBfnRD+cnw==", + "node_modules/@babel/plugin-transform-react-jsx/node_modules/@babel/helper-annotate-as-pure": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.7.tgz", + "integrity": "sha512-4xwU8StnqnlIhhioZf1tqnVWeQ9pvH/ujS8hRfw/WOza+/a+1qv69BWNy+oY231maTCWgKWhfBU7kDpsds6zAA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", + "@babel/types": "^7.25.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.25.7.tgz", + "integrity": "sha512-mgDoQCRjrY3XK95UuV60tZlFCQGXEtMg8H+IsW72ldw1ih1jZhzYXbJvghmAEpg5UVhhnCeia1CkGttUvCkiMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.7", "regenerator-transform": "^0.15.2" }, "engines": { @@ -2330,12 +2615,13 @@ } }, "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.1.tgz", - "integrity": "sha512-JAclqStUfIwKN15HrsQADFgeZt+wexNQ0uLhuqvqAUFoqPMjEcFCYZBhq0LUdz6dZK/mD+rErhW71fbx8RYElg==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.25.7.tgz", + "integrity": "sha512-3OfyfRRqiGeOvIWSagcwUTVk2hXBsr/ww7bLn6TRTuXnexA+Udov2icFOxFX9abaj4l96ooYkcNN1qi2Zvqwng==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -2345,16 +2631,17 @@ } }, "node_modules/@babel/plugin-transform-runtime": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.24.0.tgz", - "integrity": "sha512-zc0GA5IitLKJrSfXlXmp8KDqLrnGECK7YRfQBmEKg1NmBOQ7e+KuclBEKJgzifQeUYLdNiAw4B4bjyvzWVLiSA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.24.7.tgz", + "integrity": "sha512-YqXjrk4C+a1kZjewqt+Mmu2UuV1s07y8kqcUf4qYLnoqemhR4gRQikhdAhSVJioMjVTu6Mo6pAbaypEA3jY6fw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-plugin-utils": "^7.24.0", - "babel-plugin-polyfill-corejs2": "^0.4.8", - "babel-plugin-polyfill-corejs3": "^0.9.0", - "babel-plugin-polyfill-regenerator": "^0.5.5", + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "babel-plugin-polyfill-corejs2": "^0.4.10", + "babel-plugin-polyfill-corejs3": "^0.10.1", + "babel-plugin-polyfill-regenerator": "^0.6.1", "semver": "^6.3.1" }, "engines": { @@ -2369,17 +2656,19 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.1.tgz", - "integrity": "sha512-LyjVB1nsJ6gTTUKRjRWx9C1s9hE7dLfP/knKdrfeH9UPtAGjYGgxIbFfx7xyLIEWs7Xe1Gnf8EWiUqfjLhInZA==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.25.7.tgz", + "integrity": "sha512-uBbxNwimHi5Bv3hUccmOFlUy3ATO6WagTApenHz9KzoIdn0XeACdB12ZJ4cjhuB2WSi80Ez2FWzJnarccriJeA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -2389,13 +2678,14 @@ } }, "node_modules/@babel/plugin-transform-spread": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.1.tgz", - "integrity": "sha512-KjmcIM+fxgY+KxPVbjelJC6hrH1CgtPmTvdXAfn3/a9CnWGSTY7nH4zm5+cjmWJybdcPSsD0++QssDsjcpe47g==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.25.7.tgz", + "integrity": "sha512-Mm6aeymI0PBh44xNIv/qvo8nmbkpZze1KvR8MkEqbIREDxoiWTi18Zr2jryfRMwDfVZF9foKh060fWgni44luw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" + "@babel/helper-plugin-utils": "^7.25.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -2405,12 +2695,13 @@ } }, "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.1.tgz", - "integrity": "sha512-9v0f1bRXgPVcPrngOQvLXeGNNVLc8UjMVfebo9ka0WF3/7+aVUHmaJVT3sa0XCzEFioPfPHZiOcYG9qOsH63cw==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.25.7.tgz", + "integrity": "sha512-ZFAeNkpGuLnAQ/NCsXJ6xik7Id+tHuS+NT+ue/2+rn/31zcdnupCdmunOizEaP0JsUmTFSTOPoQY7PkK2pttXw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -2420,12 +2711,13 @@ } }, "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.1.tgz", - "integrity": "sha512-WRkhROsNzriarqECASCNu/nojeXCDTE/F2HmRgOzi7NGvyfYGq1NEjKBK3ckLfRgGc6/lPAqP0vDOSw3YtG34g==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.25.7.tgz", + "integrity": "sha512-SI274k0nUsFFmyQupiO7+wKATAmMFf8iFgq2O+vVFXZ0SV9lNfT1NGzBEhjquFmD8I9sqHLguH+gZVN3vww2AA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -2435,12 +2727,13 @@ } }, "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.5.tgz", - "integrity": "sha512-UTGnhYVZtTAjdwOTzT+sCyXmTn8AhaxOS/MjG9REclZ6ULHWF9KoCZur0HSGU7hk8PdBFKKbYe6+gqdXWz84Jg==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.25.7.tgz", + "integrity": "sha512-OmWmQtTHnO8RSUbL0NTdtpbZHeNTnm68Gj5pA4Y2blFNh+V4iZR68V1qL9cI37J21ZN7AaCnkfdHtLExQPf2uA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.5" + "@babel/helper-plugin-utils": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -2450,12 +2743,13 @@ } }, "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.1.tgz", - "integrity": "sha512-RlkVIcWT4TLI96zM660S877E7beKlQw7Ig+wqkKBiWfj0zH5Q4h50q6er4wzZKRNSYpfo6ILJ+hrJAGSX2qcNw==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.25.7.tgz", + "integrity": "sha512-BN87D7KpbdiABA+t3HbVqHzKWUDN3dymLaTnPFAMyc8lV+KN3+YzNhVRNdinaCPA4AUqx7ubXbQ9shRjYBl3SQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -2465,13 +2759,14 @@ } }, "node_modules/@babel/plugin-transform-unicode-property-regex": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.1.tgz", - "integrity": "sha512-Ss4VvlfYV5huWApFsF8/Sq0oXnGO+jB+rijFEFugTd3cwSObUSnUi88djgR5528Csl0uKlrI331kRqe56Ov2Ng==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.25.7.tgz", + "integrity": "sha512-IWfR89zcEPQGB/iB408uGtSPlQd3Jpq11Im86vUgcmSTcoWAiQMCTOa2K2yNNqFJEBVICKhayctee65Ka8OB0w==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-create-regexp-features-plugin": "^7.25.7", + "@babel/helper-plugin-utils": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -2481,13 +2776,14 @@ } }, "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.1.tgz", - "integrity": "sha512-2A/94wgZgxfTsiLaQ2E36XAOdcZmGAaEEgVmxQWwZXWkGhvoHbaqXcKnU8zny4ycpu3vNqg0L/PcCiYtHtA13g==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.25.7.tgz", + "integrity": "sha512-8JKfg/hiuA3qXnlLx8qtv5HWRbgyFx2hMMtpDDuU2rTckpKkGu4ycK5yYHwuEa16/quXfoxHBIApEsNyMWnt0g==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-create-regexp-features-plugin": "^7.25.7", + "@babel/helper-plugin-utils": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -2497,13 +2793,14 @@ } }, "node_modules/@babel/plugin-transform-unicode-sets-regex": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.24.1.tgz", - "integrity": "sha512-fqj4WuzzS+ukpgerpAoOnMfQXwUHFxXUZUE84oL2Kao2N8uSlvcpnAidKASgsNgzZHBsHWvcm8s9FPWUhAb8fA==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.7.tgz", + "integrity": "sha512-YRW8o9vzImwmh4Q3Rffd09bH5/hvY0pxg+1H1i0f7APoUeg12G7+HhLj9ZFNIrYkgBXhIijPJ+IXypN0hLTIbw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-create-regexp-features-plugin": "^7.25.7", + "@babel/helper-plugin-utils": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -2513,26 +2810,29 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.24.0.tgz", - "integrity": "sha512-ZxPEzV9IgvGn73iK0E6VB9/95Nd7aMFpbE0l8KQFDG70cOV9IxRP7Y2FUPmlK0v6ImlLqYX50iuZ3ZTVhOF2lA==", + "version": "7.25.3", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.25.3.tgz", + "integrity": "sha512-QsYW7UeAaXvLPX9tdVliMJE7MD7M6MLYVTovRTIwhoYQVFHR1rM4wO8wqAezYi3/BpSD+NzVCZ69R6smWiIi8g==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.23.5", - "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-validator-option": "^7.23.5", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.23.3", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.23.3", - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.23.7", + "@babel/compat-data": "^7.25.2", + "@babel/helper-compilation-targets": "^7.25.2", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-validator-option": "^7.24.8", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.25.3", + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.25.0", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.25.0", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.24.7", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.25.0", "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", "@babel/plugin-syntax-class-static-block": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-import-assertions": "^7.23.3", - "@babel/plugin-syntax-import-attributes": "^7.23.3", + "@babel/plugin-syntax-import-assertions": "^7.24.7", + "@babel/plugin-syntax-import-attributes": "^7.24.7", "@babel/plugin-syntax-import-meta": "^7.10.4", "@babel/plugin-syntax-json-strings": "^7.8.3", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", @@ -2544,59 +2844,60 @@ "@babel/plugin-syntax-private-property-in-object": "^7.14.5", "@babel/plugin-syntax-top-level-await": "^7.14.5", "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", - "@babel/plugin-transform-arrow-functions": "^7.23.3", - "@babel/plugin-transform-async-generator-functions": "^7.23.9", - "@babel/plugin-transform-async-to-generator": "^7.23.3", - "@babel/plugin-transform-block-scoped-functions": "^7.23.3", - "@babel/plugin-transform-block-scoping": "^7.23.4", - "@babel/plugin-transform-class-properties": "^7.23.3", - "@babel/plugin-transform-class-static-block": "^7.23.4", - "@babel/plugin-transform-classes": "^7.23.8", - "@babel/plugin-transform-computed-properties": "^7.23.3", - "@babel/plugin-transform-destructuring": "^7.23.3", - "@babel/plugin-transform-dotall-regex": "^7.23.3", - "@babel/plugin-transform-duplicate-keys": "^7.23.3", - "@babel/plugin-transform-dynamic-import": "^7.23.4", - "@babel/plugin-transform-exponentiation-operator": "^7.23.3", - "@babel/plugin-transform-export-namespace-from": "^7.23.4", - "@babel/plugin-transform-for-of": "^7.23.6", - "@babel/plugin-transform-function-name": "^7.23.3", - "@babel/plugin-transform-json-strings": "^7.23.4", - "@babel/plugin-transform-literals": "^7.23.3", - "@babel/plugin-transform-logical-assignment-operators": "^7.23.4", - "@babel/plugin-transform-member-expression-literals": "^7.23.3", - "@babel/plugin-transform-modules-amd": "^7.23.3", - "@babel/plugin-transform-modules-commonjs": "^7.23.3", - "@babel/plugin-transform-modules-systemjs": "^7.23.9", - "@babel/plugin-transform-modules-umd": "^7.23.3", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", - "@babel/plugin-transform-new-target": "^7.23.3", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.23.4", - "@babel/plugin-transform-numeric-separator": "^7.23.4", - "@babel/plugin-transform-object-rest-spread": "^7.24.0", - "@babel/plugin-transform-object-super": "^7.23.3", - "@babel/plugin-transform-optional-catch-binding": "^7.23.4", - "@babel/plugin-transform-optional-chaining": "^7.23.4", - "@babel/plugin-transform-parameters": "^7.23.3", - "@babel/plugin-transform-private-methods": "^7.23.3", - "@babel/plugin-transform-private-property-in-object": "^7.23.4", - "@babel/plugin-transform-property-literals": "^7.23.3", - "@babel/plugin-transform-regenerator": "^7.23.3", - "@babel/plugin-transform-reserved-words": "^7.23.3", - "@babel/plugin-transform-shorthand-properties": "^7.23.3", - "@babel/plugin-transform-spread": "^7.23.3", - "@babel/plugin-transform-sticky-regex": "^7.23.3", - "@babel/plugin-transform-template-literals": "^7.23.3", - "@babel/plugin-transform-typeof-symbol": "^7.23.3", - "@babel/plugin-transform-unicode-escapes": "^7.23.3", - "@babel/plugin-transform-unicode-property-regex": "^7.23.3", - "@babel/plugin-transform-unicode-regex": "^7.23.3", - "@babel/plugin-transform-unicode-sets-regex": "^7.23.3", + "@babel/plugin-transform-arrow-functions": "^7.24.7", + "@babel/plugin-transform-async-generator-functions": "^7.25.0", + "@babel/plugin-transform-async-to-generator": "^7.24.7", + "@babel/plugin-transform-block-scoped-functions": "^7.24.7", + "@babel/plugin-transform-block-scoping": "^7.25.0", + "@babel/plugin-transform-class-properties": "^7.24.7", + "@babel/plugin-transform-class-static-block": "^7.24.7", + "@babel/plugin-transform-classes": "^7.25.0", + "@babel/plugin-transform-computed-properties": "^7.24.7", + "@babel/plugin-transform-destructuring": "^7.24.8", + "@babel/plugin-transform-dotall-regex": "^7.24.7", + "@babel/plugin-transform-duplicate-keys": "^7.24.7", + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.25.0", + "@babel/plugin-transform-dynamic-import": "^7.24.7", + "@babel/plugin-transform-exponentiation-operator": "^7.24.7", + "@babel/plugin-transform-export-namespace-from": "^7.24.7", + "@babel/plugin-transform-for-of": "^7.24.7", + "@babel/plugin-transform-function-name": "^7.25.1", + "@babel/plugin-transform-json-strings": "^7.24.7", + "@babel/plugin-transform-literals": "^7.25.2", + "@babel/plugin-transform-logical-assignment-operators": "^7.24.7", + "@babel/plugin-transform-member-expression-literals": "^7.24.7", + "@babel/plugin-transform-modules-amd": "^7.24.7", + "@babel/plugin-transform-modules-commonjs": "^7.24.8", + "@babel/plugin-transform-modules-systemjs": "^7.25.0", + "@babel/plugin-transform-modules-umd": "^7.24.7", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.24.7", + "@babel/plugin-transform-new-target": "^7.24.7", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.7", + "@babel/plugin-transform-numeric-separator": "^7.24.7", + "@babel/plugin-transform-object-rest-spread": "^7.24.7", + "@babel/plugin-transform-object-super": "^7.24.7", + "@babel/plugin-transform-optional-catch-binding": "^7.24.7", + "@babel/plugin-transform-optional-chaining": "^7.24.8", + "@babel/plugin-transform-parameters": "^7.24.7", + "@babel/plugin-transform-private-methods": "^7.24.7", + "@babel/plugin-transform-private-property-in-object": "^7.24.7", + "@babel/plugin-transform-property-literals": "^7.24.7", + "@babel/plugin-transform-regenerator": "^7.24.7", + "@babel/plugin-transform-reserved-words": "^7.24.7", + "@babel/plugin-transform-shorthand-properties": "^7.24.7", + "@babel/plugin-transform-spread": "^7.24.7", + "@babel/plugin-transform-sticky-regex": "^7.24.7", + "@babel/plugin-transform-template-literals": "^7.24.7", + "@babel/plugin-transform-typeof-symbol": "^7.24.8", + "@babel/plugin-transform-unicode-escapes": "^7.24.7", + "@babel/plugin-transform-unicode-property-regex": "^7.24.7", + "@babel/plugin-transform-unicode-regex": "^7.24.7", + "@babel/plugin-transform-unicode-sets-regex": "^7.24.7", "@babel/preset-modules": "0.1.6-no-external-plugins", - "babel-plugin-polyfill-corejs2": "^0.4.8", - "babel-plugin-polyfill-corejs3": "^0.9.0", - "babel-plugin-polyfill-regenerator": "^0.5.5", - "core-js-compat": "^3.31.0", + "babel-plugin-polyfill-corejs2": "^0.4.10", + "babel-plugin-polyfill-corejs3": "^0.10.4", + "babel-plugin-polyfill-regenerator": "^0.6.1", + "core-js-compat": "^3.37.1", "semver": "^6.3.1" }, "engines": { @@ -2611,6 +2912,7 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } @@ -2620,6 +2922,7 @@ "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", "@babel/types": "^7.4.4", @@ -2629,17 +2932,12 @@ "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/@babel/regjsgen": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", - "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", - "dev": true - }, "node_modules/@babel/runtime": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.0.tgz", - "integrity": "sha512-Chk32uHMg6TnQdvw2e9IlqPpFX/6NLuK0Ys2PqLb7/gL5uFn9mXvK715FGLlOLQrcO4qIkNHkvPGktzzXexsFw==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.0.tgz", + "integrity": "sha512-7dRy4DwXwtzBrPbZflqxnvfxLF8kdZXPkhymtDeFoFqE6ldzjQFgYTtYIFARcLEYDrqfBfYcZt1WqFxRoyC9Rw==", "dev": true, + "license": "MIT", "dependencies": { "regenerator-runtime": "^0.14.0" }, @@ -2648,33 +2946,32 @@ } }, "node_modules/@babel/template": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.0.tgz", - "integrity": "sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.7.tgz", + "integrity": "sha512-wRwtAgI3bAS+JGU2upWNL9lSlDcRCqD05BZ1n3X2ONLH1WilFP6O1otQjeMK/1g0pvYcXC7b/qVUB1keofjtZA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.23.5", - "@babel/parser": "^7.24.0", - "@babel/types": "^7.24.0" + "@babel/code-frame": "^7.25.7", + "@babel/parser": "^7.25.7", + "@babel/types": "^7.25.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.5.tgz", - "integrity": "sha512-7aaBLeDQ4zYcUFDUD41lJc1fG8+5IU9DaNSJAgal866FGvmD5EbWQgnEC6kO1gGLsX0esNkfnJSndbTXA3r7UA==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.7.tgz", + "integrity": "sha512-jatJPT1Zjqvh/1FyJs6qAHL+Dzb7sTb+xr7Q+gM1b+1oBsMsQQ4FkVKb6dFlJvLlVssqkRzV05Jzervt9yhnzg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.24.2", - "@babel/generator": "^7.24.5", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.24.5", - "@babel/parser": "^7.24.5", - "@babel/types": "^7.24.5", + "@babel/code-frame": "^7.25.7", + "@babel/generator": "^7.25.7", + "@babel/parser": "^7.25.7", + "@babel/template": "^7.25.7", + "@babel/types": "^7.25.7", "debug": "^4.3.1", "globals": "^11.1.0" }, @@ -2683,40 +2980,52 @@ } }, "node_modules/@babel/traverse/node_modules/@babel/generator": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.5.tgz", - "integrity": "sha512-x32i4hEXvr+iI0NEoEfDKzlemF8AmtOP8CcrRaEcpzysWuoEb1KknpcvMsHKPONoKZiDuItklgWhB18xEhr9PA==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.7.tgz", + "integrity": "sha512-5Dqpl5fyV9pIAD62yK9P7fcA768uVPUyrQmqpqstHWgMma4feF1x/oFysBCVZLY5wJ2GkMUCdsNDnGZrPoR6rA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.24.5", + "@babel/types": "^7.25.7", "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25", - "jsesc": "^2.5.1" + "jsesc": "^3.0.2" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/traverse/node_modules/@babel/helper-split-export-declaration": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.5.tgz", - "integrity": "sha512-5CHncttXohrHk8GWOFCcCl4oRD9fKosWlIRgWm4ql9VYioKm52Mk2xsmoohvm7f3JoiLSM5ZgJuRaf5QZZYd3Q==", + "node_modules/@babel/traverse/node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", "dev": true, - "dependencies": { - "@babel/types": "^7.24.5" + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/traverse/node_modules/jsesc": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", + "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" }, "engines": { - "node": ">=6.9.0" + "node": ">=6" } }, "node_modules/@babel/types": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.5.tgz", - "integrity": "sha512-6mQNsaLeXTw0nxYUYu+NSa4Hx4BlF1x1x8/PMFbiR+GBSr+2DkECc69b8hgy2frEodNcvPffeH8YfWd3LI6jhQ==", + "version": "7.25.8", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.8.tgz", + "integrity": "sha512-JWtuCu8VQsMladxVz/P4HzHUGCAwpuqacmowgXFs5XjxIgKuNjnLokQzuVjlTvIzODaDmpjT3oxcC48vyk9EWg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-string-parser": "^7.24.1", - "@babel/helper-validator-identifier": "^7.24.5", + "@babel/helper-string-parser": "^7.25.7", + "@babel/helper-validator-identifier": "^7.25.7", "to-fast-properties": "^2.0.0" }, "engines": { @@ -2728,385 +3037,427 @@ "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.1.90" } }, "node_modules/@discoveryjs/json-ext": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", - "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.6.1.tgz", + "integrity": "sha512-boghen8F0Q8D+0/Q1/1r6DUEieUJ8w2a1gIknExMSHBsJFOr2+0KUfHiVYBvucPwl3+RU5PFBK833FjFCh3BhA==", "dev": true, + "license": "MIT", "engines": { - "node": ">=10.0.0" + "node": ">=14.17.0" } }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.20.1.tgz", - "integrity": "sha512-m55cpeupQ2DbuRGQMMZDzbv9J9PgVelPjlcmM5kxHnrBdBx6REaEd7LamYV7Dm8N7rCyR/XwU6rVP8ploKtIkA==", + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.23.0.tgz", + "integrity": "sha512-3sG8Zwa5fMcA9bgqB8AfWPQ+HFke6uD3h1s3RIwUNK8EG7a4buxvuFTs3j1IMs2NXAk9F30C/FF4vxRgQCcmoQ==", "cpu": [ "ppc64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "aix" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/android-arm": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.20.1.tgz", - "integrity": "sha512-4j0+G27/2ZXGWR5okcJi7pQYhmkVgb4D7UKwxcqrjhvp5TKWx3cUjgB1CGj1mfdmJBQ9VnUGgUhign+FPF2Zgw==", + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.23.0.tgz", + "integrity": "sha512-+KuOHTKKyIKgEEqKbGTK8W7mPp+hKinbMBeEnNzjJGyFcWsfrXjSTNluJHCY1RqhxFurdD8uNXQDei7qDlR6+g==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/android-arm64": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.20.1.tgz", - "integrity": "sha512-hCnXNF0HM6AjowP+Zou0ZJMWWa1VkD77BXe959zERgGJBBxB+sV+J9f/rcjeg2c5bsukD/n17RKWXGFCO5dD5A==", + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.23.0.tgz", + "integrity": "sha512-EuHFUYkAVfU4qBdyivULuu03FhJO4IJN9PGuABGrFy4vUuzk91P2d+npxHcFdpUnfYKy0PuV+n6bKIpHOB3prQ==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/android-x64": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.20.1.tgz", - "integrity": "sha512-MSfZMBoAsnhpS+2yMFYIQUPs8Z19ajwfuaSZx+tSl09xrHZCjbeXXMsUF/0oq7ojxYEpsSo4c0SfjxOYXRbpaA==", + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.23.0.tgz", + "integrity": "sha512-WRrmKidLoKDl56LsbBMhzTTBxrsVwTKdNbKDalbEZr0tcsBgCLbEtoNthOW6PX942YiYq8HzEnb4yWQMLQuipQ==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.20.1.tgz", - "integrity": "sha512-Ylk6rzgMD8klUklGPzS414UQLa5NPXZD5tf8JmQU8GQrj6BrFA/Ic9tb2zRe1kOZyCbGl+e8VMbDRazCEBqPvA==", + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.23.0.tgz", + "integrity": "sha512-YLntie/IdS31H54Ogdn+v50NuoWF5BDkEUFpiOChVa9UnKpftgwzZRrI4J132ETIi+D8n6xh9IviFV3eXdxfow==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.20.1.tgz", - "integrity": "sha512-pFIfj7U2w5sMp52wTY1XVOdoxw+GDwy9FsK3OFz4BpMAjvZVs0dT1VXs8aQm22nhwoIWUmIRaE+4xow8xfIDZA==", + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.23.0.tgz", + "integrity": "sha512-IMQ6eme4AfznElesHUPDZ+teuGwoRmVuuixu7sv92ZkdQcPbsNHzutd+rAfaBKo8YK3IrBEi9SLLKWJdEvJniQ==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.1.tgz", - "integrity": "sha512-UyW1WZvHDuM4xDz0jWun4qtQFauNdXjXOtIy7SYdf7pbxSWWVlqhnR/T2TpX6LX5NI62spt0a3ldIIEkPM6RHw==", + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.23.0.tgz", + "integrity": "sha512-0muYWCng5vqaxobq6LB3YNtevDFSAZGlgtLoAc81PjUfiFz36n4KMpwhtAd4he8ToSI3TGyuhyx5xmiWNYZFyw==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "freebsd" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.20.1.tgz", - "integrity": "sha512-itPwCw5C+Jh/c624vcDd9kRCCZVpzpQn8dtwoYIt2TJF3S9xJLiRohnnNrKwREvcZYx0n8sCSbvGH349XkcQeg==", + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.23.0.tgz", + "integrity": "sha512-XKDVu8IsD0/q3foBzsXGt/KjD/yTKBCIwOHE1XwiXmrRwrX6Hbnd5Eqn/WvDekddK21tfszBSrE/WMaZh+1buQ==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "freebsd" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-arm": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.20.1.tgz", - "integrity": "sha512-LojC28v3+IhIbfQ+Vu4Ut5n3wKcgTu6POKIHN9Wpt0HnfgUGlBuyDDQR4jWZUZFyYLiz4RBBBmfU6sNfn6RhLw==", + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.23.0.tgz", + "integrity": "sha512-SEELSTEtOFu5LPykzA395Mc+54RMg1EUgXP+iw2SJ72+ooMwVsgfuwXo5Fn0wXNgWZsTVHwY2cg4Vi/bOD88qw==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.20.1.tgz", - "integrity": "sha512-cX8WdlF6Cnvw/DO9/X7XLH2J6CkBnz7Twjpk56cshk9sjYVcuh4sXQBy5bmTwzBjNVZze2yaV1vtcJS04LbN8w==", + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.23.0.tgz", + "integrity": "sha512-j1t5iG8jE7BhonbsEg5d9qOYcVZv/Rv6tghaXM/Ug9xahM0nX/H2gfu6X6z11QRTMT6+aywOMA8TDkhPo8aCGw==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.20.1.tgz", - "integrity": "sha512-4H/sQCy1mnnGkUt/xszaLlYJVTz3W9ep52xEefGtd6yXDQbz/5fZE5dFLUgsPdbUOQANcVUa5iO6g3nyy5BJiw==", + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.23.0.tgz", + "integrity": "sha512-P7O5Tkh2NbgIm2R6x1zGJJsnacDzTFcRWZyTTMgFdVit6E98LTxO+v8LCCLWRvPrjdzXHx9FEOA8oAZPyApWUA==", "cpu": [ "ia32" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.20.1.tgz", - "integrity": "sha512-c0jgtB+sRHCciVXlyjDcWb2FUuzlGVRwGXgI+3WqKOIuoo8AmZAddzeOHeYLtD+dmtHw3B4Xo9wAUdjlfW5yYA==", + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.23.0.tgz", + "integrity": "sha512-InQwepswq6urikQiIC/kkx412fqUZudBO4SYKu0N+tGhXRWUqAx+Q+341tFV6QdBifpjYgUndV1hhMq3WeJi7A==", "cpu": [ "loong64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.20.1.tgz", - "integrity": "sha512-TgFyCfIxSujyuqdZKDZ3yTwWiGv+KnlOeXXitCQ+trDODJ+ZtGOzLkSWngynP0HZnTsDyBbPy7GWVXWaEl6lhA==", + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.23.0.tgz", + "integrity": "sha512-J9rflLtqdYrxHv2FqXE2i1ELgNjT+JFURt/uDMoPQLcjWQA5wDKgQA4t/dTqGa88ZVECKaD0TctwsUfHbVoi4w==", "cpu": [ "mips64el" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.20.1.tgz", - "integrity": "sha512-b+yuD1IUeL+Y93PmFZDZFIElwbmFfIKLKlYI8M6tRyzE6u7oEP7onGk0vZRh8wfVGC2dZoy0EqX1V8qok4qHaw==", + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.23.0.tgz", + "integrity": "sha512-cShCXtEOVc5GxU0fM+dsFD10qZ5UpcQ8AM22bYj0u/yaAykWnqXJDpd77ublcX6vdDsWLuweeuSNZk4yUxZwtw==", "cpu": [ "ppc64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.20.1.tgz", - "integrity": "sha512-wpDlpE0oRKZwX+GfomcALcouqjjV8MIX8DyTrxfyCfXxoKQSDm45CZr9fanJ4F6ckD4yDEPT98SrjvLwIqUCgg==", + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.23.0.tgz", + "integrity": "sha512-HEtaN7Y5UB4tZPeQmgz/UhzoEyYftbMXrBCUjINGjh3uil+rB/QzzpMshz3cNUxqXN7Vr93zzVtpIDL99t9aRw==", "cpu": [ "riscv64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.20.1.tgz", - "integrity": "sha512-5BepC2Au80EohQ2dBpyTquqGCES7++p7G+7lXe1bAIvMdXm4YYcEfZtQrP4gaoZ96Wv1Ute61CEHFU7h4FMueQ==", + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.23.0.tgz", + "integrity": "sha512-WDi3+NVAuyjg/Wxi+o5KPqRbZY0QhI9TjrEEm+8dmpY9Xir8+HE/HNx2JoLckhKbFopW0RdO2D72w8trZOV+Wg==", "cpu": [ "s390x" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-x64": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.20.1.tgz", - "integrity": "sha512-5gRPk7pKuaIB+tmH+yKd2aQTRpqlf1E4f/mC+tawIm/CGJemZcHZpp2ic8oD83nKgUPMEd0fNanrnFljiruuyA==", + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.23.0.tgz", + "integrity": "sha512-a3pMQhUEJkITgAw6e0bWA+F+vFtCciMjW/LPtoj99MhVt+Mfb6bbL9hu2wmTZgNd994qTAEw+U/r6k3qHWWaOQ==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.20.1.tgz", - "integrity": "sha512-4fL68JdrLV2nVW2AaWZBv3XEm3Ae3NZn/7qy2KGAt3dexAgSVT+Hc97JKSZnqezgMlv9x6KV0ZkZY7UO5cNLCg==", + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.23.0.tgz", + "integrity": "sha512-cRK+YDem7lFTs2Q5nEv/HHc4LnrfBCbH5+JHu6wm2eP+d8OZNoSMYgPZJq78vqQ9g+9+nMuIsAO7skzphRXHyw==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "netbsd" ], "engines": { - "node": ">=12" + "node": ">=18" } }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.20.1.tgz", - "integrity": "sha512-GhRuXlvRE+twf2ES+8REbeCb/zeikNqwD3+6S5y5/x+DYbAQUNl0HNBs4RQJqrechS4v4MruEr8ZtAin/hK5iw==", + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.23.0.tgz", + "integrity": "sha512-suXjq53gERueVWu0OKxzWqk7NxiUWSUlrxoZK7usiF50C6ipColGR5qie2496iKGYNLhDZkPxBI3erbnYkU0rQ==", "cpu": [ - "x64" + "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "openbsd" ], "engines": { - "node": ">=12" + "node": ">=18" } }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.20.1.tgz", - "integrity": "sha512-ZnWEyCM0G1Ex6JtsygvC3KUUrlDXqOihw8RicRuQAzw+c4f1D66YlPNNV3rkjVW90zXVsHwZYWbJh3v+oQFM9Q==", + "node_modules/@esbuild/openbsd-x64": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.23.0.tgz", + "integrity": "sha512-6p3nHpby0DM/v15IFKMjAaayFhqnXV52aEmv1whZHX56pdkK+MEaLoQWj+H42ssFarP1PcomVhbsR4pkz09qBg==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.23.0.tgz", + "integrity": "sha512-BFelBGfrBwk6LVrmFzCq1u1dZbG4zy/Kp93w2+y83Q5UGYF1d8sCzeLI9NXjKyujjBBniQa8R8PzLFAUrSM9OA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", "optional": true, "os": [ "sunos" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.20.1.tgz", - "integrity": "sha512-QZ6gXue0vVQY2Oon9WyLFCdSuYbXSoxaZrPuJ4c20j6ICedfsDilNPYfHLlMH7vGfU5DQR0czHLmJvH4Nzis/A==", + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.23.0.tgz", + "integrity": "sha512-lY6AC8p4Cnb7xYHuIxQ6iYPe6MfO2CC43XXKo9nBXDb35krYt7KGhQnOkRGar5psxYkircpCqfbNDB4uJbS2jQ==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.20.1.tgz", - "integrity": "sha512-HzcJa1NcSWTAU0MJIxOho8JftNp9YALui3o+Ny7hCh0v5f90nprly1U3Sj1Ldj/CvKKdvvFsCRvDkpsEMp4DNw==", + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.23.0.tgz", + "integrity": "sha512-7L1bHlOTcO4ByvI7OXVI5pNN6HSu6pUQq9yodga8izeuB1KcT2UkHaH6118QJwopExPn0rMHIseCTx1CRo/uNA==", "cpu": [ "ia32" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/win32-x64": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.20.1.tgz", - "integrity": "sha512-0MBh53o6XtI6ctDnRMeQ+xoCN8kD2qI1rY1KgF/xdWQwoFeKou7puvDfV8/Wv4Ctx2rRpET/gGdz3YlNtNACSA==", + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.23.0.tgz", + "integrity": "sha512-Arm+WgUFLUATuoxCJcahGuk6Yj9Pzxd6l11Zb/2aAuv5kWWvvfhLFo2fni4uSK5vzlUdCGZ/BdV5tH8klj8p8g==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@eslint-community/eslint-utils": { @@ -3114,6 +3465,7 @@ "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", "dev": true, + "license": "MIT", "dependencies": { "eslint-visitor-keys": "^3.3.0" }, @@ -3125,25 +3477,95 @@ } }, "node_modules/@eslint-community/regexpp": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", - "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", + "version": "4.11.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.1.tgz", + "integrity": "sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q==", "dev": true, + "license": "MIT", "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, - "node_modules/@eslint/eslintrc": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", - "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "node_modules/@eslint/compat": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@eslint/compat/-/compat-1.2.0.tgz", + "integrity": "sha512-CkPWddN7J9JPrQedEr2X7AjK9y1jaMJtxZ4A/+jTMFA2+n5BWhcKHW/EbJyARqg2zzQfgtWUtVmG3hrG6+nGpg==", "dev": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "peerDependencies": { + "eslint": "^9.10.0" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/@eslint/config-array": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.18.0.tgz", + "integrity": "sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==", + "dev": true, + "license": "Apache-2.0", "peer": true, + "dependencies": { + "@eslint/object-schema": "^2.1.4", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/config-array/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@eslint/config-array/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "peer": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@eslint/core": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.6.0.tgz", + "integrity": "sha512-8I2Q8ykA4J0x0o7cg67FPVnehcqWTBehu/lmY+bolPFHGjh49YzGBMXTvpqVgEbBdvNCSxj6iFgiIyHzf03lzg==", + "dev": true, + "license": "Apache-2.0", + "peer": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.1.0.tgz", + "integrity": "sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==", + "dev": true, "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", + "espree": "^10.0.1", + "globals": "^14.0.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", @@ -3151,7 +3573,7 @@ "strip-json-comments": "^3.1.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "url": "https://opencollective.com/eslint" @@ -3162,7 +3584,7 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, - "peer": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -3179,23 +3601,20 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, - "peer": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", "dev": true, - "peer": true, - "dependencies": { - "type-fest": "^0.20.2" - }, + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -3206,14 +3625,14 @@ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true, - "peer": true + "license": "MIT" }, "node_modules/@eslint/eslintrc/node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, - "peer": true, + "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -3221,54 +3640,70 @@ "node": "*" } }, - "node_modules/@eslint/eslintrc/node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "node_modules/@eslint/js": { + "version": "9.12.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.12.0.tgz", + "integrity": "sha512-eohesHH8WFRUprDNyEREgqP6beG6htMeUYeCpkEgBCieCMme5r9zFWjzAJp//9S+Kub4rqE+jXe9Cp1a7IYIIA==", "dev": true, - "peer": true, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@eslint/js": { - "version": "8.57.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", - "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", + "node_modules/@eslint/object-schema": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.4.tgz", + "integrity": "sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==", "dev": true, + "license": "Apache-2.0", "peer": true, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.0.tgz", + "integrity": "sha512-vH9PiIMMwvhCx31Af3HiGzsVNULDbyVkHXwlemn/B0TFj/00ho3y55efXrUZTfQipxoHC5u4xq6zblww1zm1Ig==", + "dev": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, "node_modules/@fontsource/material-icons": { - "version": "5.0.18", - "resolved": "https://registry.npmjs.org/@fontsource/material-icons/-/material-icons-5.0.18.tgz", - "integrity": "sha512-2DL5z2yKWE+kXQrBiUTwIOMQjhs6t+EoPql8Ai4N6t2mjUhBdi2RChW44V3z1WgwupoqILXrAa4/id4/AuruMQ==" + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@fontsource/material-icons/-/material-icons-5.1.0.tgz", + "integrity": "sha512-xqTEO5vcVl8saTAi3QBRpGot4pX9WkqR7lOp07NfHwizigIPUTWnCc9UNlotWs3Jt4TWI8GKomDn2HdK2GwOtw==", + "license": "Apache-2.0" }, "node_modules/@fontsource/material-icons-outlined": { - "version": "5.0.12", - "resolved": "https://registry.npmjs.org/@fontsource/material-icons-outlined/-/material-icons-outlined-5.0.12.tgz", - "integrity": "sha512-Zi8qYVOCtSS6CFGZzjUY+ENYmVtSgH1GDQBeGllwXJ2Ny/TmCTsO+tjHpr74nV4u63JSAAl72QnX0eOhOcldJw==" + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@fontsource/material-icons-outlined/-/material-icons-outlined-5.1.0.tgz", + "integrity": "sha512-t9V/OMa8miDpjm7PSQ3pX0Xy83PVz8jykGvGE3LA9N6nd1dAy4qCYaRO/rFAiEOV/KTDneIMM4pd42ZJQjZihw==", + "license": "Apache-2.0" }, "node_modules/@fontsource/material-symbols-outlined": { - "version": "5.0.30", - "resolved": "https://registry.npmjs.org/@fontsource/material-symbols-outlined/-/material-symbols-outlined-5.0.30.tgz", - "integrity": "sha512-rq8HONa3sMSDnHyierfMqsLjfW7JlKOubjf3rXFjN8tNvpEkChyFlGVIKX7ViSG0rga+ZE3UP6x8hfLm6dtnGg==" + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@fontsource/material-symbols-outlined/-/material-symbols-outlined-5.1.1.tgz", + "integrity": "sha512-4iedOY3TpSzs6sGzfWGZxMt/iVsC2lBdrQfIACTkq0e59DnVfMuzhHGFvjIYcQZFWOV7qgfnCf3mYnV0EMxRtw==", + "license": "Apache-2.0" }, "node_modules/@fontsource/roboto": { - "version": "5.0.13", - "resolved": "https://registry.npmjs.org/@fontsource/roboto/-/roboto-5.0.13.tgz", - "integrity": "sha512-j61DHjsdUCKMXSdNLTOxcG701FWnF0jcqNNQi2iPCDxU8seN/sMxeh62dC++UiagCWq9ghTypX+Pcy7kX+QOeQ==" + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@fontsource/roboto/-/roboto-5.1.0.tgz", + "integrity": "sha512-cFRRC1s6RqPygeZ8Uw/acwVHqih8Czjt6Q0MwoUoDe9U3m4dH1HmNDRBZyqlMSFwgNAUKgFImncKdmDHyKpwdg==", + "license": "Apache-2.0" }, "node_modules/@graphql-codegen/add": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@graphql-codegen/add/-/add-5.0.2.tgz", - "integrity": "sha512-ouBkSvMFUhda5VoKumo/ZvsZM9P5ZTyDsI8LW18VxSNWOjrTeLXBWHG8Gfaai0HwhflPtCYVABbriEcOmrRShQ==", + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@graphql-codegen/add/-/add-5.0.3.tgz", + "integrity": "sha512-SxXPmramkth8XtBlAHu4H4jYcYXM/o3p01+psU+0NADQowA8jtYkK6MW5rV6T+CxkEaNZItfSmZRPgIuypcqnA==", "dev": true, + "license": "MIT", "dependencies": { "@graphql-codegen/plugin-helpers": "^5.0.3", "tslib": "~2.6.0" @@ -3277,16 +3712,24 @@ "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" } }, - "node_modules/@graphql-codegen/cli": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@graphql-codegen/cli/-/cli-5.0.2.tgz", - "integrity": "sha512-MBIaFqDiLKuO4ojN6xxG9/xL9wmfD3ZjZ7RsPjwQnSHBCUXnEkdKvX+JVpx87Pq29Ycn8wTJUguXnTZ7Di0Mlw==", + "node_modules/@graphql-codegen/add/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", "dev": true, + "license": "0BSD" + }, + "node_modules/@graphql-codegen/cli": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@graphql-codegen/cli/-/cli-5.0.3.tgz", + "integrity": "sha512-ULpF6Sbu2d7vNEOgBtE9avQp2oMgcPY/QBYcCqk0Xru5fz+ISjcovQX29V7CS7y5wWBRzNLoXwJQGeEyWbl05g==", + "dev": true, + "license": "MIT", "dependencies": { "@babel/generator": "^7.18.13", "@babel/template": "^7.18.10", "@babel/types": "^7.18.13", - "@graphql-codegen/client-preset": "^4.2.2", + "@graphql-codegen/client-preset": "^4.4.0", "@graphql-codegen/core": "^4.0.2", "@graphql-codegen/plugin-helpers": "^5.0.3", "@graphql-tools/apollo-engine-loader": "^8.0.0", @@ -3299,12 +3742,12 @@ "@graphql-tools/prisma-loader": "^8.0.0", "@graphql-tools/url-loader": "^8.0.0", "@graphql-tools/utils": "^10.0.0", - "@whatwg-node/fetch": "^0.8.0", + "@whatwg-node/fetch": "^0.9.20", "chalk": "^4.1.0", "cosmiconfig": "^8.1.3", "debounce": "^1.2.0", "detect-indent": "^6.0.0", - "graphql-config": "^5.0.2", + "graphql-config": "^5.1.1", "inquirer": "^8.0.0", "is-glob": "^4.0.1", "jiti": "^1.17.1", @@ -3325,6 +3768,9 @@ "graphql-codegen": "cjs/bin.js", "graphql-codegen-esm": "esm/bin.js" }, + "engines": { + "node": ">=16" + }, "peerDependencies": { "@parcel/watcher": "^2.1.0", "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" @@ -3340,6 +3786,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -3355,6 +3802,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -3366,13 +3814,21 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@graphql-codegen/cli/node_modules/cli-width": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", - "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "node_modules/@graphql-codegen/cli/node_modules/cli-truncate": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", + "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", "dev": true, + "license": "MIT", + "dependencies": { + "slice-ansi": "^3.0.0", + "string-width": "^4.2.0" + }, "engines": { - "node": ">= 10" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/@graphql-codegen/cli/node_modules/color-convert": { @@ -3380,6 +3836,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -3391,56 +3848,125 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@graphql-codegen/cli/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/@graphql-codegen/cli/node_modules/inquirer": { - "version": "8.2.6", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.6.tgz", - "integrity": "sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==", + "node_modules/@graphql-codegen/cli/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, - "dependencies": { - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.1", - "cli-cursor": "^3.1.0", - "cli-width": "^3.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.21", - "mute-stream": "0.0.8", - "ora": "^5.4.1", - "run-async": "^2.4.0", - "rxjs": "^7.5.5", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "through": "^2.3.6", - "wrap-ansi": "^6.0.1" - }, + "license": "MIT", "engines": { - "node": ">=12.0.0" + "node": ">=8" } }, - "node_modules/@graphql-codegen/cli/node_modules/mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", - "dev": true - }, - "node_modules/@graphql-codegen/cli/node_modules/run-async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", - "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "node_modules/@graphql-codegen/cli/node_modules/listr2": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-4.0.5.tgz", + "integrity": "sha512-juGHV1doQdpNT3GSTs9IUN43QJb7KHdF9uqg7Vufs/tG9VTzpFphqF4pm/ICdAABGQxsyNn9CiYA3StkI6jpwA==", "dev": true, + "license": "MIT", + "dependencies": { + "cli-truncate": "^2.1.0", + "colorette": "^2.0.16", + "log-update": "^4.0.0", + "p-map": "^4.0.0", + "rfdc": "^1.3.0", + "rxjs": "^7.5.5", + "through": "^2.3.8", + "wrap-ansi": "^7.0.0" + }, "engines": { - "node": ">=0.12.0" + "node": ">=12" + }, + "peerDependencies": { + "enquirer": ">= 2.3.0 < 3" + }, + "peerDependenciesMeta": { + "enquirer": { + "optional": true + } + } + }, + "node_modules/@graphql-codegen/cli/node_modules/listr2/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/@graphql-codegen/cli/node_modules/log-update": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", + "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-escapes": "^4.3.0", + "cli-cursor": "^3.1.0", + "slice-ansi": "^4.0.0", + "wrap-ansi": "^6.2.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@graphql-codegen/cli/node_modules/log-update/node_modules/slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/@graphql-codegen/cli/node_modules/slice-ansi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", + "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=8" } }, "node_modules/@graphql-codegen/cli/node_modules/supports-color": { @@ -3448,6 +3974,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -3456,34 +3983,46 @@ } }, "node_modules/@graphql-codegen/client-preset": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@graphql-codegen/client-preset/-/client-preset-4.2.5.tgz", - "integrity": "sha512-hAdB6HN8EDmkoBtr0bPUN/7NH6svzqbcTDMWBCRXPESXkl7y80po+IXrXUjsSrvhKG8xkNXgJNz/2mjwHzywcA==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@graphql-codegen/client-preset/-/client-preset-4.4.0.tgz", + "integrity": "sha512-Q0NHFK7KXLhEaRC/k82ge0dHDfeHJEvvDeV0vV3+oSurHNa/lpxQtbK2BqknZe+JDfZ1YOOvYT93XsAkYD+SQg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.20.2", "@babel/template": "^7.20.7", - "@graphql-codegen/add": "^5.0.2", - "@graphql-codegen/gql-tag-operations": "4.0.6", - "@graphql-codegen/plugin-helpers": "^5.0.3", - "@graphql-codegen/typed-document-node": "^5.0.6", - "@graphql-codegen/typescript": "^4.0.6", - "@graphql-codegen/typescript-operations": "^4.2.0", - "@graphql-codegen/visitor-plugin-common": "^5.1.0", + "@graphql-codegen/add": "^5.0.3", + "@graphql-codegen/gql-tag-operations": "4.0.10", + "@graphql-codegen/plugin-helpers": "^5.0.4", + "@graphql-codegen/typed-document-node": "^5.0.10", + "@graphql-codegen/typescript": "^4.1.0", + "@graphql-codegen/typescript-operations": "^4.3.0", + "@graphql-codegen/visitor-plugin-common": "^5.4.0", "@graphql-tools/documents": "^1.0.0", "@graphql-tools/utils": "^10.0.0", "@graphql-typed-document-node/core": "3.2.0", "tslib": "~2.6.0" }, + "engines": { + "node": ">=16" + }, "peerDependencies": { "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" } }, + "node_modules/@graphql-codegen/client-preset/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", + "dev": true, + "license": "0BSD" + }, "node_modules/@graphql-codegen/core": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/@graphql-codegen/core/-/core-4.0.2.tgz", "integrity": "sha512-IZbpkhwVqgizcjNiaVzNAzm/xbWT6YnGgeOLwVjm4KbJn3V2jchVtuzHH09G5/WkkLSk2wgbXNdwjM41JxO6Eg==", "dev": true, + "license": "MIT", "dependencies": { "@graphql-codegen/plugin-helpers": "^5.0.3", "@graphql-tools/schema": "^10.0.0", @@ -3494,27 +4033,46 @@ "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" } }, - "node_modules/@graphql-codegen/gql-tag-operations": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/@graphql-codegen/gql-tag-operations/-/gql-tag-operations-4.0.6.tgz", - "integrity": "sha512-y6iXEDpDNjwNxJw3WZqX1/Znj0QHW7+y8O+t2V8qvbTT+3kb2lr9ntc8By7vCr6ctw9tXI4XKaJgpTstJDOwFA==", + "node_modules/@graphql-codegen/core/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", "dev": true, + "license": "0BSD" + }, + "node_modules/@graphql-codegen/gql-tag-operations": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/@graphql-codegen/gql-tag-operations/-/gql-tag-operations-4.0.10.tgz", + "integrity": "sha512-WsBEVL3XQdBboFJJL5WxrUjkuo3B7Sa51R9NbT7PKBe0HCNstoouGZIvQJRUubttFCqTTyoFtNsoRSKB+rsRug==", + "dev": true, + "license": "MIT", "dependencies": { - "@graphql-codegen/plugin-helpers": "^5.0.3", - "@graphql-codegen/visitor-plugin-common": "5.1.0", + "@graphql-codegen/plugin-helpers": "^5.0.4", + "@graphql-codegen/visitor-plugin-common": "5.4.0", "@graphql-tools/utils": "^10.0.0", "auto-bind": "~4.0.0", "tslib": "~2.6.0" }, + "engines": { + "node": ">=16" + }, "peerDependencies": { "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" } }, - "node_modules/@graphql-codegen/plugin-helpers": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/@graphql-codegen/plugin-helpers/-/plugin-helpers-5.0.3.tgz", - "integrity": "sha512-yZ1rpULIWKBZqCDlvGIJRSyj1B2utkEdGmXZTBT/GVayP4hyRYlkd36AJV/LfEsVD8dnsKL5rLz2VTYmRNlJ5Q==", + "node_modules/@graphql-codegen/gql-tag-operations/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", "dev": true, + "license": "0BSD" + }, + "node_modules/@graphql-codegen/plugin-helpers": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@graphql-codegen/plugin-helpers/-/plugin-helpers-5.0.4.tgz", + "integrity": "sha512-MOIuHFNWUnFnqVmiXtrI+4UziMTYrcquljaI5f/T/Bc7oO7sXcfkAvgkNWEEi9xWreYwvuer3VHCuPI/lAFWbw==", + "dev": true, + "license": "MIT", "dependencies": { "@graphql-tools/utils": "^10.0.0", "change-case-all": "1.0.15", @@ -3527,11 +4085,19 @@ "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" } }, - "node_modules/@graphql-codegen/schema-ast": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@graphql-codegen/schema-ast/-/schema-ast-4.0.2.tgz", - "integrity": "sha512-5mVAOQQK3Oz7EtMl/l3vOQdc2aYClUzVDHHkMvZlunc+KlGgl81j8TLa+X7ANIllqU4fUEsQU3lJmk4hXP6K7Q==", + "node_modules/@graphql-codegen/plugin-helpers/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", "dev": true, + "license": "0BSD" + }, + "node_modules/@graphql-codegen/schema-ast": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@graphql-codegen/schema-ast/-/schema-ast-4.1.0.tgz", + "integrity": "sha512-kZVn0z+th9SvqxfKYgztA6PM7mhnSZaj4fiuBWvMTqA+QqQ9BBed6Pz41KuD/jr0gJtnlr2A4++/0VlpVbCTmQ==", + "dev": true, + "license": "MIT", "dependencies": { "@graphql-codegen/plugin-helpers": "^5.0.3", "@graphql-tools/utils": "^10.0.0", @@ -3541,34 +4107,56 @@ "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" } }, - "node_modules/@graphql-codegen/typed-document-node": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/@graphql-codegen/typed-document-node/-/typed-document-node-5.0.6.tgz", - "integrity": "sha512-US0J95hOE2/W/h42w4oiY+DFKG7IetEN1mQMgXXeat1w6FAR5PlIz4JrRrEkiVfVetZ1g7K78SOwBD8/IJnDiA==", + "node_modules/@graphql-codegen/schema-ast/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", "dev": true, + "license": "0BSD" + }, + "node_modules/@graphql-codegen/typed-document-node": { + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/@graphql-codegen/typed-document-node/-/typed-document-node-5.0.10.tgz", + "integrity": "sha512-YPDUNs6x0muoVWlbY2yEs0lGxFHMTszlGDh6klT/5rqiTDTZg3zz8Wd1ZTihkcH8+V6T0AT9qDWwcx9fcS2tvQ==", + "dev": true, + "license": "MIT", "dependencies": { - "@graphql-codegen/plugin-helpers": "^5.0.3", - "@graphql-codegen/visitor-plugin-common": "5.1.0", + "@graphql-codegen/plugin-helpers": "^5.0.4", + "@graphql-codegen/visitor-plugin-common": "5.4.0", "auto-bind": "~4.0.0", "change-case-all": "1.0.15", "tslib": "~2.6.0" }, + "engines": { + "node": ">=16" + }, "peerDependencies": { "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" } }, - "node_modules/@graphql-codegen/typescript": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/@graphql-codegen/typescript/-/typescript-4.0.6.tgz", - "integrity": "sha512-IBG4N+Blv7KAL27bseruIoLTjORFCT3r+QYyMC3g11uY3/9TPpaUyjSdF70yBe5GIQ6dAgDU+ENUC1v7EPi0rw==", + "node_modules/@graphql-codegen/typed-document-node/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", "dev": true, + "license": "0BSD" + }, + "node_modules/@graphql-codegen/typescript": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@graphql-codegen/typescript/-/typescript-4.1.0.tgz", + "integrity": "sha512-/fS53Nh6U6c58GTOxqfyKTLQfQv36P8II/vPw/fg0cdcWbALhRPls69P8vXUWjrElmLKzCrdusBWPp/r+AKUBQ==", + "dev": true, + "license": "MIT", "dependencies": { - "@graphql-codegen/plugin-helpers": "^5.0.3", + "@graphql-codegen/plugin-helpers": "^5.0.4", "@graphql-codegen/schema-ast": "^4.0.2", - "@graphql-codegen/visitor-plugin-common": "5.1.0", + "@graphql-codegen/visitor-plugin-common": "5.4.0", "auto-bind": "~4.0.0", "tslib": "~2.6.0" }, + "engines": { + "node": ">=16" + }, "peerDependencies": { "graphql": "^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" } @@ -3578,6 +4166,7 @@ "resolved": "https://registry.npmjs.org/@graphql-codegen/typescript-apollo-angular/-/typescript-apollo-angular-4.0.0.tgz", "integrity": "sha512-uZQGvZBXJrgJ+9KKeRrKcB8wHCsailJ1WaCizNLf2YsTBUELVX0SQRrSFptAul9qYzsS84LRs6ndJsmSUnER6w==", "dev": true, + "license": "MIT", "dependencies": { "@graphql-codegen/plugin-helpers": "^3.0.0", "@graphql-codegen/visitor-plugin-common": "2.13.1", @@ -3597,6 +4186,7 @@ "resolved": "https://registry.npmjs.org/@graphql-codegen/plugin-helpers/-/plugin-helpers-3.1.2.tgz", "integrity": "sha512-emOQiHyIliVOIjKVKdsI5MXj312zmRDwmHpyUTZMjfpvxq/UVAHUJIVdVf+lnjjrI+LXBTgMlTWTgHQfmICxjg==", "dev": true, + "license": "MIT", "dependencies": { "@graphql-tools/utils": "^9.0.0", "change-case-all": "1.0.15", @@ -3613,13 +4203,15 @@ "version": "2.4.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", - "dev": true + "dev": true, + "license": "0BSD" }, "node_modules/@graphql-codegen/typescript-apollo-angular/node_modules/@graphql-codegen/visitor-plugin-common": { "version": "2.13.1", "resolved": "https://registry.npmjs.org/@graphql-codegen/visitor-plugin-common/-/visitor-plugin-common-2.13.1.tgz", "integrity": "sha512-mD9ufZhDGhyrSaWQGrU1Q1c5f01TeWtSWy/cDwXYjJcHIj1Y/DG2x0tOflEfCvh5WcnmHNIw4lzDsg1W7iFJEg==", "dev": true, + "license": "MIT", "dependencies": { "@graphql-codegen/plugin-helpers": "^2.7.2", "@graphql-tools/optimize": "^1.3.0", @@ -3641,6 +4233,7 @@ "resolved": "https://registry.npmjs.org/@graphql-codegen/plugin-helpers/-/plugin-helpers-2.7.2.tgz", "integrity": "sha512-kln2AZ12uii6U59OQXdjLk5nOlh1pHis1R98cDZGFnfaiAbX9V3fxcZ1MMJkB7qFUymTALzyjZoXXdyVmPMfRg==", "dev": true, + "license": "MIT", "dependencies": { "@graphql-tools/utils": "^8.8.0", "change-case-all": "1.0.14", @@ -3658,6 +4251,7 @@ "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.13.1.tgz", "integrity": "sha512-qIh9yYpdUFmctVqovwMdheVNJqFh+DQNWIhX87FJStfXYnmweBUDATok9fWPleKeFwxnW8IapKmY8m8toJEkAw==", "dev": true, + "license": "MIT", "dependencies": { "tslib": "^2.4.0" }, @@ -3670,6 +4264,7 @@ "resolved": "https://registry.npmjs.org/change-case-all/-/change-case-all-1.0.14.tgz", "integrity": "sha512-CWVm2uT7dmSHdO/z1CXT/n47mWonyypzBbuCy5tN7uMg22BsfkhwT6oHmFCAk+gL1LOOxhdbB9SZz3J1KTY3gA==", "dev": true, + "license": "MIT", "dependencies": { "change-case": "^4.1.2", "is-lower-case": "^2.0.2", @@ -3687,13 +4282,15 @@ "version": "2.4.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", - "dev": true + "dev": true, + "license": "0BSD" }, "node_modules/@graphql-codegen/typescript-apollo-angular/node_modules/@graphql-tools/optimize": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/@graphql-tools/optimize/-/optimize-1.4.0.tgz", "integrity": "sha512-dJs/2XvZp+wgHH8T5J2TqptT9/6uVzIYvA6uFACha+ufvdMBedkfR4b4GbT8jAKLRARiqRTxy3dctnwkTM2tdw==", "dev": true, + "license": "MIT", "dependencies": { "tslib": "^2.4.0" }, @@ -3706,6 +4303,7 @@ "resolved": "https://registry.npmjs.org/@graphql-tools/relay-operation-optimizer/-/relay-operation-optimizer-6.5.18.tgz", "integrity": "sha512-mc5VPyTeV+LwiM+DNvoDQfPqwQYhPV/cl5jOBjTgSniyaq8/86aODfMkrE2OduhQ5E00hqrkuL2Fdrgk0w1QJg==", "dev": true, + "license": "MIT", "dependencies": { "@ardatan/relay-compiler": "12.0.0", "@graphql-tools/utils": "^9.2.1", @@ -3720,6 +4318,7 @@ "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-9.2.1.tgz", "integrity": "sha512-WUw506Ql6xzmOORlriNrD6Ugx+HjVgYxt9KCXD9mHAak+eaXSwuGGPyE60hy9xaDEoXKBsG7SkG69ybitaVl6A==", "dev": true, + "license": "MIT", "dependencies": { "@graphql-typed-document-node/core": "^3.1.1", "tslib": "^2.4.0" @@ -3728,29 +4327,55 @@ "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@graphql-codegen/typescript-operations": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@graphql-codegen/typescript-operations/-/typescript-operations-4.2.0.tgz", - "integrity": "sha512-lmuwYb03XC7LNRS8oo9M4/vlOrq/wOKmTLBHlltK2YJ1BO/4K/Q9Jdv/jDmJpNydHVR1fmeF4wAfsIp1f9JibA==", + "node_modules/@graphql-codegen/typescript-apollo-angular/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", "dev": true, + "license": "0BSD" + }, + "node_modules/@graphql-codegen/typescript-operations": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@graphql-codegen/typescript-operations/-/typescript-operations-4.3.0.tgz", + "integrity": "sha512-ZORwMy8OgsiYd9EZUhTMd4/g5LvTFpx6Fh6dNN0cxFkqSc6KhjX0vhzWsyK8N9+ILaHSutT8UTrLMdJi35HzDQ==", + "dev": true, + "license": "MIT", "dependencies": { - "@graphql-codegen/plugin-helpers": "^5.0.3", - "@graphql-codegen/typescript": "^4.0.6", - "@graphql-codegen/visitor-plugin-common": "5.1.0", + "@graphql-codegen/plugin-helpers": "^5.0.4", + "@graphql-codegen/typescript": "^4.1.0", + "@graphql-codegen/visitor-plugin-common": "5.4.0", "auto-bind": "~4.0.0", "tslib": "~2.6.0" }, + "engines": { + "node": ">=16" + }, "peerDependencies": { "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" } }, - "node_modules/@graphql-codegen/visitor-plugin-common": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@graphql-codegen/visitor-plugin-common/-/visitor-plugin-common-5.1.0.tgz", - "integrity": "sha512-eamQxtA9bjJqI2lU5eYoA1GbdMIRT2X8m8vhWYsVQVWD3qM7sx/IqJU0kx0J3Vd4/CSd36BzL6RKwksibytDIg==", + "node_modules/@graphql-codegen/typescript-operations/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", "dev": true, + "license": "0BSD" + }, + "node_modules/@graphql-codegen/typescript/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", + "dev": true, + "license": "0BSD" + }, + "node_modules/@graphql-codegen/visitor-plugin-common": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@graphql-codegen/visitor-plugin-common/-/visitor-plugin-common-5.4.0.tgz", + "integrity": "sha512-tL7hOrO+4MiNfDiHewhRQCiH9GTAh0M9Y/BZxYGGEdnrfGgqK5pCxtjq7EY/L19VGIyU7hhzYTQ0r1HzEbB4Jw==", + "dev": true, + "license": "MIT", "dependencies": { - "@graphql-codegen/plugin-helpers": "^5.0.3", + "@graphql-codegen/plugin-helpers": "^5.0.4", "@graphql-tools/optimize": "^2.0.0", "@graphql-tools/relay-operation-optimizer": "^7.0.0", "@graphql-tools/utils": "^10.0.0", @@ -3761,15 +4386,26 @@ "parse-filepath": "^1.0.2", "tslib": "~2.6.0" }, + "engines": { + "node": ">=16" + }, "peerDependencies": { "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" } }, + "node_modules/@graphql-codegen/visitor-plugin-common/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", + "dev": true, + "license": "0BSD" + }, "node_modules/@graphql-tools/apollo-engine-loader": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/@graphql-tools/apollo-engine-loader/-/apollo-engine-loader-8.0.1.tgz", "integrity": "sha512-NaPeVjtrfbPXcl+MLQCJLWtqe2/E4bbAqcauEOQ+3sizw1Fc2CNmhHRF8a6W4D0ekvTRRXAMptXYgA2uConbrA==", "dev": true, + "license": "MIT", "dependencies": { "@ardatan/sync-fetch": "^0.0.1", "@graphql-tools/utils": "^10.0.13", @@ -3783,55 +4419,12 @@ "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@graphql-tools/apollo-engine-loader/node_modules/@whatwg-node/events": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@whatwg-node/events/-/events-0.1.1.tgz", - "integrity": "sha512-AyQEn5hIPV7Ze+xFoXVU3QTHXVbWPrzaOkxtENMPMuNL6VVHrp4hHfDt9nrQpjO7BgvuM95dMtkycX5M/DZR3w==", - "dev": true, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@graphql-tools/apollo-engine-loader/node_modules/@whatwg-node/fetch": { - "version": "0.9.17", - "resolved": "https://registry.npmjs.org/@whatwg-node/fetch/-/fetch-0.9.17.tgz", - "integrity": "sha512-TDYP3CpCrxwxpiNY0UMNf096H5Ihf67BK1iKGegQl5u9SlpEDYrvnV71gWBGJm+Xm31qOy8ATgma9rm8Pe7/5Q==", - "dev": true, - "dependencies": { - "@whatwg-node/node-fetch": "^0.5.7", - "urlpattern-polyfill": "^10.0.0" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@graphql-tools/apollo-engine-loader/node_modules/@whatwg-node/node-fetch": { - "version": "0.5.11", - "resolved": "https://registry.npmjs.org/@whatwg-node/node-fetch/-/node-fetch-0.5.11.tgz", - "integrity": "sha512-LS8tSomZa3YHnntpWt3PP43iFEEl6YeIsvDakczHBKlay5LdkXFr8w7v8H6akpG5nRrzydyB0k1iE2eoL6aKIQ==", - "dev": true, - "dependencies": { - "@kamilkisiela/fast-url-parser": "^1.1.4", - "@whatwg-node/events": "^0.1.0", - "busboy": "^1.6.0", - "fast-querystring": "^1.1.1", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@graphql-tools/apollo-engine-loader/node_modules/urlpattern-polyfill": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-10.0.0.tgz", - "integrity": "sha512-H/A06tKD7sS1O1X2SshBVeA5FLycRpjqiBeqGKmBwBDBy28EnRjORxTNe269KSSr5un5qyWi1iL61wLxpd+ZOg==", - "dev": true - }, "node_modules/@graphql-tools/batch-execute": { "version": "9.0.4", "resolved": "https://registry.npmjs.org/@graphql-tools/batch-execute/-/batch-execute-9.0.4.tgz", "integrity": "sha512-kkebDLXgDrep5Y0gK1RN3DMUlLqNhg60OAz0lTCqrYeja6DshxLtLkj+zV4mVbBA4mQOEoBmw6g1LZs3dA84/w==", "dev": true, + "license": "MIT", "dependencies": { "@graphql-tools/utils": "^10.0.13", "dataloader": "^2.2.2", @@ -3846,12 +4439,13 @@ } }, "node_modules/@graphql-tools/code-file-loader": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/@graphql-tools/code-file-loader/-/code-file-loader-8.1.1.tgz", - "integrity": "sha512-q4KN25EPSUztc8rA8YUU3ufh721Yk12xXDbtUA+YstczWS7a1RJlghYMFEfR1HsHSYbF7cUqkbnTKSGM3o52bQ==", + "version": "8.1.3", + "resolved": "https://registry.npmjs.org/@graphql-tools/code-file-loader/-/code-file-loader-8.1.3.tgz", + "integrity": "sha512-Qoo8VyU0ux7k20DkzL5wFm7Y6iqlG1GQ0xA4T3EQbm4B/qbENsMc38l76QnXYIVmIlKAnD9EAvzxPEQ8iv+ZPA==", "dev": true, + "license": "MIT", "dependencies": { - "@graphql-tools/graphql-tag-pluck": "8.3.0", + "@graphql-tools/graphql-tag-pluck": "8.3.2", "@graphql-tools/utils": "^10.0.13", "globby": "^11.0.3", "tslib": "^2.4.0", @@ -3865,15 +4459,17 @@ } }, "node_modules/@graphql-tools/delegate": { - "version": "10.0.7", - "resolved": "https://registry.npmjs.org/@graphql-tools/delegate/-/delegate-10.0.7.tgz", - "integrity": "sha512-/gEEC/SdSKj+T+44ExK79NU1QFTry/NtOsgkzpzTuuokl4fJRIomjkc8bK5K69icNknSbY7J549JVhtYIPgS2A==", + "version": "10.0.21", + "resolved": "https://registry.npmjs.org/@graphql-tools/delegate/-/delegate-10.0.21.tgz", + "integrity": "sha512-UytyYVvDfLQbCYG1aQo8Vc67c1WhEjzW9ytYKEEqMJSdlwfMCujHmCz7EyH5DNjTAKapDHuQcN5VivKGap/Beg==", "dev": true, + "license": "MIT", "dependencies": { "@graphql-tools/batch-execute": "^9.0.4", - "@graphql-tools/executor": "^1.2.1", - "@graphql-tools/schema": "^10.0.3", - "@graphql-tools/utils": "^10.0.13", + "@graphql-tools/executor": "^1.3.1", + "@graphql-tools/schema": "^10.0.4", + "@graphql-tools/utils": "^10.3.4", + "@repeaterjs/repeater": "^3.0.6", "dataloader": "^2.2.2", "tslib": "^2.5.0" }, @@ -3885,10 +4481,11 @@ } }, "node_modules/@graphql-tools/documents": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@graphql-tools/documents/-/documents-1.0.0.tgz", - "integrity": "sha512-rHGjX1vg/nZ2DKqRGfDPNC55CWZBMldEVcH+91BThRa6JeT80NqXknffLLEZLRUxyikCfkwMsk6xR3UNMqG0Rg==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@graphql-tools/documents/-/documents-1.0.1.tgz", + "integrity": "sha512-aweoMH15wNJ8g7b2r4C4WRuJxZ0ca8HtNO54rkye/3duxTkW4fGBEutCx03jCIr5+a1l+4vFJNP859QnAVBVCA==", "dev": true, + "license": "MIT", "dependencies": { "lodash.sortby": "^4.7.0", "tslib": "^2.4.0" @@ -3901,12 +4498,13 @@ } }, "node_modules/@graphql-tools/executor": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@graphql-tools/executor/-/executor-1.2.6.tgz", - "integrity": "sha512-+1kjfqzM5T2R+dCw7F4vdJ3CqG+fY/LYJyhNiWEFtq0ToLwYzR/KKyD8YuzTirEjSxWTVlcBh7endkx5n5F6ew==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@graphql-tools/executor/-/executor-1.3.1.tgz", + "integrity": "sha512-tgJDdGf9SCAm64ofEMZdv925u6/J+eTmv36TGNLxgP2DpCJsZ6gnJ4A+0D28EazDXqJIvMiPd+3d+o3cCRCAnQ==", "dev": true, + "license": "MIT", "dependencies": { - "@graphql-tools/utils": "^10.1.1", + "@graphql-tools/utils": "^10.3.4", "@graphql-typed-document-node/core": "3.2.0", "@repeaterjs/repeater": "^3.0.4", "tslib": "^2.4.0", @@ -3920,17 +4518,18 @@ } }, "node_modules/@graphql-tools/executor-graphql-ws": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@graphql-tools/executor-graphql-ws/-/executor-graphql-ws-1.1.2.tgz", - "integrity": "sha512-+9ZK0rychTH1LUv4iZqJ4ESbmULJMTsv3XlFooPUngpxZkk00q6LqHKJRrsLErmQrVaC7cwQCaRBJa0teK17Lg==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/executor-graphql-ws/-/executor-graphql-ws-1.3.0.tgz", + "integrity": "sha512-waghXHJjJiEEiWNYLbV7aRUbdvZOelSrtTgqpwco15k9iE4CMJyy2GQihLPEkIHcqSW0EHBlH1BbWDHI7noFPw==", "dev": true, + "license": "MIT", "dependencies": { - "@graphql-tools/utils": "^10.0.13", + "@graphql-tools/utils": "^10.3.0", "@types/ws": "^8.0.0", "graphql-ws": "^5.14.0", "isomorphic-ws": "^5.0.0", "tslib": "^2.4.0", - "ws": "^8.13.0" + "ws": "^8.17.1" }, "engines": { "node": ">=16.0.0" @@ -3940,12 +4539,13 @@ } }, "node_modules/@graphql-tools/executor-http": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@graphql-tools/executor-http/-/executor-http-1.0.9.tgz", - "integrity": "sha512-+NXaZd2MWbbrWHqU4EhXcrDbogeiCDmEbrAN+rMn4Nu2okDjn2MTFDbTIab87oEubQCH4Te1wDkWPKrzXup7+Q==", + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/@graphql-tools/executor-http/-/executor-http-1.1.6.tgz", + "integrity": "sha512-wGKjJzbi6em8cWI3sry6T7kAgoxMXYNM+KlbsWczPvIsHvv1cqXlrP1lwC6f7Ja1FfWdU1ZIEgOv93ext7IDyQ==", "dev": true, + "license": "MIT", "dependencies": { - "@graphql-tools/utils": "^10.0.13", + "@graphql-tools/utils": "^10.3.2", "@repeaterjs/repeater": "^3.0.4", "@whatwg-node/fetch": "^0.9.0", "extract-files": "^11.0.0", @@ -3960,61 +4560,18 @@ "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@graphql-tools/executor-http/node_modules/@whatwg-node/events": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@whatwg-node/events/-/events-0.1.1.tgz", - "integrity": "sha512-AyQEn5hIPV7Ze+xFoXVU3QTHXVbWPrzaOkxtENMPMuNL6VVHrp4hHfDt9nrQpjO7BgvuM95dMtkycX5M/DZR3w==", - "dev": true, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@graphql-tools/executor-http/node_modules/@whatwg-node/fetch": { - "version": "0.9.17", - "resolved": "https://registry.npmjs.org/@whatwg-node/fetch/-/fetch-0.9.17.tgz", - "integrity": "sha512-TDYP3CpCrxwxpiNY0UMNf096H5Ihf67BK1iKGegQl5u9SlpEDYrvnV71gWBGJm+Xm31qOy8ATgma9rm8Pe7/5Q==", - "dev": true, - "dependencies": { - "@whatwg-node/node-fetch": "^0.5.7", - "urlpattern-polyfill": "^10.0.0" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@graphql-tools/executor-http/node_modules/@whatwg-node/node-fetch": { - "version": "0.5.11", - "resolved": "https://registry.npmjs.org/@whatwg-node/node-fetch/-/node-fetch-0.5.11.tgz", - "integrity": "sha512-LS8tSomZa3YHnntpWt3PP43iFEEl6YeIsvDakczHBKlay5LdkXFr8w7v8H6akpG5nRrzydyB0k1iE2eoL6aKIQ==", - "dev": true, - "dependencies": { - "@kamilkisiela/fast-url-parser": "^1.1.4", - "@whatwg-node/events": "^0.1.0", - "busboy": "^1.6.0", - "fast-querystring": "^1.1.1", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@graphql-tools/executor-http/node_modules/urlpattern-polyfill": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-10.0.0.tgz", - "integrity": "sha512-H/A06tKD7sS1O1X2SshBVeA5FLycRpjqiBeqGKmBwBDBy28EnRjORxTNe269KSSr5un5qyWi1iL61wLxpd+ZOg==", - "dev": true - }, "node_modules/@graphql-tools/executor-legacy-ws": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@graphql-tools/executor-legacy-ws/-/executor-legacy-ws-1.0.6.tgz", - "integrity": "sha512-lDSxz9VyyquOrvSuCCnld3256Hmd+QI2lkmkEv7d4mdzkxkK4ddAWW1geQiWrQvWmdsmcnGGlZ7gDGbhEExwqg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/executor-legacy-ws/-/executor-legacy-ws-1.1.0.tgz", + "integrity": "sha512-k+6ZyiaAd8SmwuzbEOfA/LVkuI1nqidhoMw+CJ7c41QGOjSMzc0VS0UZbJyeitI0n7a+uP/Meln1wjzJ2ReDtQ==", "dev": true, + "license": "MIT", "dependencies": { - "@graphql-tools/utils": "^10.0.13", + "@graphql-tools/utils": "^10.3.0", "@types/ws": "^8.0.0", "isomorphic-ws": "^5.0.0", "tslib": "^2.4.0", - "ws": "^8.15.0" + "ws": "^8.17.1" }, "engines": { "node": ">=16.0.0" @@ -4024,12 +4581,13 @@ } }, "node_modules/@graphql-tools/git-loader": { - "version": "8.0.5", - "resolved": "https://registry.npmjs.org/@graphql-tools/git-loader/-/git-loader-8.0.5.tgz", - "integrity": "sha512-P97/1mhruDiA6D5WUmx3n/aeGPLWj2+4dpzDOxFGGU+z9NcI/JdygMkeFpGZNHeJfw+kHfxgPcMPnxHcyhAoVA==", + "version": "8.0.7", + "resolved": "https://registry.npmjs.org/@graphql-tools/git-loader/-/git-loader-8.0.7.tgz", + "integrity": "sha512-+s23lxHR24+zLDk9/Hfl7/8Qcal8Q1yJ8armRp1fvcJyuc0RTZv97ZoZb0tArTfME74z+kJ92Mx4SfZMd7mHSQ==", "dev": true, + "license": "MIT", "dependencies": { - "@graphql-tools/graphql-tag-pluck": "8.3.0", + "@graphql-tools/graphql-tag-pluck": "8.3.2", "@graphql-tools/utils": "^10.0.13", "is-glob": "4.0.3", "micromatch": "^4.0.4", @@ -4048,6 +4606,7 @@ "resolved": "https://registry.npmjs.org/@graphql-tools/github-loader/-/github-loader-8.0.1.tgz", "integrity": "sha512-W4dFLQJ5GtKGltvh/u1apWRFKBQOsDzFxO9cJkOYZj1VzHCpRF43uLST4VbCfWve+AwBqOuKr7YgkHoxpRMkcg==", "dev": true, + "license": "MIT", "dependencies": { "@ardatan/sync-fetch": "^0.0.1", "@graphql-tools/executor-http": "^1.0.9", @@ -4064,55 +4623,12 @@ "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@graphql-tools/github-loader/node_modules/@whatwg-node/events": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@whatwg-node/events/-/events-0.1.1.tgz", - "integrity": "sha512-AyQEn5hIPV7Ze+xFoXVU3QTHXVbWPrzaOkxtENMPMuNL6VVHrp4hHfDt9nrQpjO7BgvuM95dMtkycX5M/DZR3w==", - "dev": true, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@graphql-tools/github-loader/node_modules/@whatwg-node/fetch": { - "version": "0.9.17", - "resolved": "https://registry.npmjs.org/@whatwg-node/fetch/-/fetch-0.9.17.tgz", - "integrity": "sha512-TDYP3CpCrxwxpiNY0UMNf096H5Ihf67BK1iKGegQl5u9SlpEDYrvnV71gWBGJm+Xm31qOy8ATgma9rm8Pe7/5Q==", - "dev": true, - "dependencies": { - "@whatwg-node/node-fetch": "^0.5.7", - "urlpattern-polyfill": "^10.0.0" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@graphql-tools/github-loader/node_modules/@whatwg-node/node-fetch": { - "version": "0.5.11", - "resolved": "https://registry.npmjs.org/@whatwg-node/node-fetch/-/node-fetch-0.5.11.tgz", - "integrity": "sha512-LS8tSomZa3YHnntpWt3PP43iFEEl6YeIsvDakczHBKlay5LdkXFr8w7v8H6akpG5nRrzydyB0k1iE2eoL6aKIQ==", - "dev": true, - "dependencies": { - "@kamilkisiela/fast-url-parser": "^1.1.4", - "@whatwg-node/events": "^0.1.0", - "busboy": "^1.6.0", - "fast-querystring": "^1.1.1", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@graphql-tools/github-loader/node_modules/urlpattern-polyfill": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-10.0.0.tgz", - "integrity": "sha512-H/A06tKD7sS1O1X2SshBVeA5FLycRpjqiBeqGKmBwBDBy28EnRjORxTNe269KSSr5un5qyWi1iL61wLxpd+ZOg==", - "dev": true - }, "node_modules/@graphql-tools/graphql-file-loader": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/@graphql-tools/graphql-file-loader/-/graphql-file-loader-8.0.1.tgz", "integrity": "sha512-7gswMqWBabTSmqbaNyWSmRRpStWlcCkBc73E6NZNlh4YNuiyKOwbvSkOUYFOqFMfEL+cFsXgAvr87Vz4XrYSbA==", "dev": true, + "license": "MIT", "dependencies": { "@graphql-tools/import": "7.0.1", "@graphql-tools/utils": "^10.0.13", @@ -4128,10 +4644,11 @@ } }, "node_modules/@graphql-tools/graphql-tag-pluck": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/@graphql-tools/graphql-tag-pluck/-/graphql-tag-pluck-8.3.0.tgz", - "integrity": "sha512-gNqukC+s7iHC7vQZmx1SEJQmLnOguBq+aqE2zV2+o1hxkExvKqyFli1SY/9gmukFIKpKutCIj+8yLOM+jARutw==", + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/@graphql-tools/graphql-tag-pluck/-/graphql-tag-pluck-8.3.2.tgz", + "integrity": "sha512-wJKkDjXRg2qJAVhAVE96zJGMli8Ity9mKUB7gTbvJwsAniaquRqLcTXUQ19X9qVT4ACzbbp+tAfk96b2U3tfog==", "dev": true, + "license": "MIT", "dependencies": { "@babel/core": "^7.22.9", "@babel/parser": "^7.16.8", @@ -4153,6 +4670,7 @@ "resolved": "https://registry.npmjs.org/@graphql-tools/import/-/import-7.0.1.tgz", "integrity": "sha512-935uAjAS8UAeXThqHfYVr4HEAp6nHJ2sximZKO1RzUTq5WoALMAhhGARl0+ecm6X+cqNUwIChJbjtaa6P/ML0w==", "dev": true, + "license": "MIT", "dependencies": { "@graphql-tools/utils": "^10.0.13", "resolve-from": "5.0.0", @@ -4170,6 +4688,7 @@ "resolved": "https://registry.npmjs.org/@graphql-tools/json-file-loader/-/json-file-loader-8.0.1.tgz", "integrity": "sha512-lAy2VqxDAHjVyqeJonCP6TUemrpYdDuKt25a10X6zY2Yn3iFYGnuIDQ64cv3ytyGY6KPyPB+Kp+ZfOkNDG3FQA==", "dev": true, + "license": "MIT", "dependencies": { "@graphql-tools/utils": "^10.0.13", "globby": "^11.0.3", @@ -4188,6 +4707,7 @@ "resolved": "https://registry.npmjs.org/@graphql-tools/load/-/load-8.0.2.tgz", "integrity": "sha512-S+E/cmyVmJ3CuCNfDuNF2EyovTwdWfQScXv/2gmvJOti2rGD8jTt9GYVzXaxhblLivQR9sBUCNZu/w7j7aXUCA==", "dev": true, + "license": "MIT", "dependencies": { "@graphql-tools/schema": "^10.0.3", "@graphql-tools/utils": "^10.0.13", @@ -4202,12 +4722,13 @@ } }, "node_modules/@graphql-tools/merge": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/@graphql-tools/merge/-/merge-9.0.4.tgz", - "integrity": "sha512-MivbDLUQ+4Q8G/Hp/9V72hbn810IJDEZQ57F01sHnlrrijyadibfVhaQfW/pNH+9T/l8ySZpaR/DpL5i+ruZ+g==", + "version": "9.0.7", + "resolved": "https://registry.npmjs.org/@graphql-tools/merge/-/merge-9.0.7.tgz", + "integrity": "sha512-lbTrIuXIbUSmSumHkPRY1QX0Z8JEtmRhnIrkH7vkfeEmf0kNn/nCWvJwqokm5U7L+a+DA1wlRM4slIlbfXjJBA==", "dev": true, + "license": "MIT", "dependencies": { - "@graphql-tools/utils": "^10.0.13", + "@graphql-tools/utils": "^10.5.4", "tslib": "^2.4.0" }, "engines": { @@ -4222,6 +4743,7 @@ "resolved": "https://registry.npmjs.org/@graphql-tools/optimize/-/optimize-2.0.0.tgz", "integrity": "sha512-nhdT+CRGDZ+bk68ic+Jw1OZ99YCDIKYA5AlVAnBHJvMawSx9YQqQAIj4refNc1/LRieGiuWvhbG3jvPVYho0Dg==", "dev": true, + "license": "MIT", "dependencies": { "tslib": "^2.4.0" }, @@ -4237,6 +4759,7 @@ "resolved": "https://registry.npmjs.org/@graphql-tools/prisma-loader/-/prisma-loader-8.0.4.tgz", "integrity": "sha512-hqKPlw8bOu/GRqtYr0+dINAI13HinTVYBDqhwGAPIFmLr5s+qKskzgCiwbsckdrb5LWVFmVZc+UXn80OGiyBzg==", "dev": true, + "license": "MIT", "dependencies": { "@graphql-tools/url-loader": "^8.0.2", "@graphql-tools/utils": "^10.0.13", @@ -4262,49 +4785,12 @@ "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@graphql-tools/prisma-loader/node_modules/@whatwg-node/events": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@whatwg-node/events/-/events-0.1.1.tgz", - "integrity": "sha512-AyQEn5hIPV7Ze+xFoXVU3QTHXVbWPrzaOkxtENMPMuNL6VVHrp4hHfDt9nrQpjO7BgvuM95dMtkycX5M/DZR3w==", - "dev": true, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@graphql-tools/prisma-loader/node_modules/@whatwg-node/fetch": { - "version": "0.9.17", - "resolved": "https://registry.npmjs.org/@whatwg-node/fetch/-/fetch-0.9.17.tgz", - "integrity": "sha512-TDYP3CpCrxwxpiNY0UMNf096H5Ihf67BK1iKGegQl5u9SlpEDYrvnV71gWBGJm+Xm31qOy8ATgma9rm8Pe7/5Q==", - "dev": true, - "dependencies": { - "@whatwg-node/node-fetch": "^0.5.7", - "urlpattern-polyfill": "^10.0.0" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@graphql-tools/prisma-loader/node_modules/@whatwg-node/node-fetch": { - "version": "0.5.11", - "resolved": "https://registry.npmjs.org/@whatwg-node/node-fetch/-/node-fetch-0.5.11.tgz", - "integrity": "sha512-LS8tSomZa3YHnntpWt3PP43iFEEl6YeIsvDakczHBKlay5LdkXFr8w7v8H6akpG5nRrzydyB0k1iE2eoL6aKIQ==", - "dev": true, - "dependencies": { - "@kamilkisiela/fast-url-parser": "^1.1.4", - "@whatwg-node/events": "^0.1.0", - "busboy": "^1.6.0", - "fast-querystring": "^1.1.1", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=16.0.0" - } - }, "node_modules/@graphql-tools/prisma-loader/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -4320,6 +4806,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -4336,6 +4823,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -4347,13 +4835,15 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@graphql-tools/prisma-loader/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -4363,6 +4853,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -4370,17 +4861,12 @@ "node": ">=8" } }, - "node_modules/@graphql-tools/prisma-loader/node_modules/urlpattern-polyfill": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-10.0.0.tgz", - "integrity": "sha512-H/A06tKD7sS1O1X2SshBVeA5FLycRpjqiBeqGKmBwBDBy28EnRjORxTNe269KSSr5un5qyWi1iL61wLxpd+ZOg==", - "dev": true - }, "node_modules/@graphql-tools/relay-operation-optimizer": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/@graphql-tools/relay-operation-optimizer/-/relay-operation-optimizer-7.0.1.tgz", "integrity": "sha512-y0ZrQ/iyqWZlsS/xrJfSir3TbVYJTYmMOu4TaSz6F4FRDTQ3ie43BlKkhf04rC28pnUOS4BO9pDcAo1D30l5+A==", "dev": true, + "license": "MIT", "dependencies": { "@ardatan/relay-compiler": "12.0.0", "@graphql-tools/utils": "^10.0.13", @@ -4394,13 +4880,14 @@ } }, "node_modules/@graphql-tools/schema": { - "version": "10.0.3", - "resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-10.0.3.tgz", - "integrity": "sha512-p28Oh9EcOna6i0yLaCFOnkcBDQECVf3SCexT6ktb86QNj9idnkhI+tCxnwZDh58Qvjd2nURdkbevvoZkvxzCog==", + "version": "10.0.6", + "resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-10.0.6.tgz", + "integrity": "sha512-EIJgPRGzpvDFEjVp+RF1zNNYIC36BYuIeZ514jFoJnI6IdxyVyIRDLx/ykgMdaa1pKQerpfdqDnsF4JnZoDHSQ==", "dev": true, + "license": "MIT", "dependencies": { - "@graphql-tools/merge": "^9.0.3", - "@graphql-tools/utils": "^10.0.13", + "@graphql-tools/merge": "^9.0.6", + "@graphql-tools/utils": "^10.5.4", "tslib": "^2.4.0", "value-or-promise": "^1.0.12" }, @@ -4416,6 +4903,7 @@ "resolved": "https://registry.npmjs.org/@graphql-tools/url-loader/-/url-loader-8.0.2.tgz", "integrity": "sha512-1dKp2K8UuFn7DFo1qX5c1cyazQv2h2ICwA9esHblEqCYrgf69Nk8N7SODmsfWg94OEaI74IqMoM12t7eIGwFzQ==", "dev": true, + "license": "MIT", "dependencies": { "@ardatan/sync-fetch": "^0.0.1", "@graphql-tools/delegate": "^10.0.4", @@ -4438,58 +4926,15 @@ "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@graphql-tools/url-loader/node_modules/@whatwg-node/events": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@whatwg-node/events/-/events-0.1.1.tgz", - "integrity": "sha512-AyQEn5hIPV7Ze+xFoXVU3QTHXVbWPrzaOkxtENMPMuNL6VVHrp4hHfDt9nrQpjO7BgvuM95dMtkycX5M/DZR3w==", - "dev": true, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@graphql-tools/url-loader/node_modules/@whatwg-node/fetch": { - "version": "0.9.17", - "resolved": "https://registry.npmjs.org/@whatwg-node/fetch/-/fetch-0.9.17.tgz", - "integrity": "sha512-TDYP3CpCrxwxpiNY0UMNf096H5Ihf67BK1iKGegQl5u9SlpEDYrvnV71gWBGJm+Xm31qOy8ATgma9rm8Pe7/5Q==", - "dev": true, - "dependencies": { - "@whatwg-node/node-fetch": "^0.5.7", - "urlpattern-polyfill": "^10.0.0" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@graphql-tools/url-loader/node_modules/@whatwg-node/node-fetch": { - "version": "0.5.11", - "resolved": "https://registry.npmjs.org/@whatwg-node/node-fetch/-/node-fetch-0.5.11.tgz", - "integrity": "sha512-LS8tSomZa3YHnntpWt3PP43iFEEl6YeIsvDakczHBKlay5LdkXFr8w7v8H6akpG5nRrzydyB0k1iE2eoL6aKIQ==", - "dev": true, - "dependencies": { - "@kamilkisiela/fast-url-parser": "^1.1.4", - "@whatwg-node/events": "^0.1.0", - "busboy": "^1.6.0", - "fast-querystring": "^1.1.1", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@graphql-tools/url-loader/node_modules/urlpattern-polyfill": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-10.0.0.tgz", - "integrity": "sha512-H/A06tKD7sS1O1X2SshBVeA5FLycRpjqiBeqGKmBwBDBy28EnRjORxTNe269KSSr5un5qyWi1iL61wLxpd+ZOg==", - "dev": true - }, "node_modules/@graphql-tools/utils": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-10.2.0.tgz", - "integrity": "sha512-HYV7dO6pNA2nGKawygaBpk8y+vXOUjjzzO43W/Kb7EPRmXUEQKjHxPYRvQbiF72u1N3XxwGK5jnnFk9WVhUwYw==", + "version": "10.5.4", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-10.5.4.tgz", + "integrity": "sha512-XHnyCWSlg1ccsD8s0y6ugo5GZ5TpkTiFVNPSYms5G0s6Z/xTuSmiLBfeqgkfaCwLmLaQnRCmNDL2JRnqc2R5bQ==", "dev": true, + "license": "MIT", "dependencies": { "@graphql-typed-document-node/core": "^3.1.1", - "cross-inspect": "1.0.0", + "cross-inspect": "1.0.1", "dset": "^3.1.2", "tslib": "^2.4.0" }, @@ -4505,6 +4950,7 @@ "resolved": "https://registry.npmjs.org/@graphql-tools/wrap/-/wrap-10.0.5.tgz", "integrity": "sha512-Cbr5aYjr3HkwdPvetZp1cpDWTGdD1Owgsb3z/ClzhmrboiK86EnQDxDvOJiQkDCPWE9lNBwj8Y4HfxroY0D9DQ==", "dev": true, + "license": "MIT", "dependencies": { "@graphql-tools/delegate": "^10.0.4", "@graphql-tools/schema": "^10.0.3", @@ -4523,47 +4969,35 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.2.0.tgz", "integrity": "sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==", + "license": "MIT", "peerDependencies": { "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.11.14", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", - "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", + "node_modules/@humanfs/core": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.0.tgz", + "integrity": "sha512-2cbWIHbZVEweE853g8jymffCA+NCMiuqeECeBBLm8dg2oFdjuGJhgN4UAbI+6v0CKbbhvtXA4qV8YR5Ji86nmw==", "dev": true, + "license": "Apache-2.0", "peer": true, - "dependencies": { - "@humanwhocodes/object-schema": "^2.0.2", - "debug": "^4.3.1", - "minimatch": "^3.0.5" - }, "engines": { - "node": ">=10.10.0" + "node": ">=18.18.0" } }, - "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "node_modules/@humanfs/node": { + "version": "0.16.5", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.5.tgz", + "integrity": "sha512-KSPA4umqSG4LHYRodq31VDwKAvaTF4xmVlzM8Aeh4PlU1JQ3IG0wiA8C25d3RQ9nJyM3mBHyI53K06VVL/oFFg==", "dev": true, + "license": "Apache-2.0", "peer": true, "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "peer": true, - "dependencies": { - "brace-expansion": "^1.1.7" + "@humanfs/core": "^0.19.0", + "@humanwhocodes/retry": "^0.3.0" }, "engines": { - "node": "*" + "node": ">=18.18.0" } }, "node_modules/@humanwhocodes/module-importer": { @@ -4571,6 +5005,7 @@ "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", "dev": true, + "license": "Apache-2.0", "peer": true, "engines": { "node": ">=12.22" @@ -4580,18 +5015,260 @@ "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@humanwhocodes/object-schema": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", - "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "node_modules/@humanwhocodes/retry": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", + "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", "dev": true, - "peer": true + "license": "Apache-2.0", + "peer": true, + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@inquirer/checkbox": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-2.5.0.tgz", + "integrity": "sha512-sMgdETOfi2dUHT8r7TT1BTKOwNvdDGFDXYWtQ2J69SvlYNntk9I/gJe7r5yvMwwsuKnYbuRs3pNhx4tgNck5aA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^9.1.0", + "@inquirer/figures": "^1.0.5", + "@inquirer/type": "^1.5.3", + "ansi-escapes": "^4.3.2", + "yoctocolors-cjs": "^2.1.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@inquirer/confirm": { + "version": "3.1.22", + "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-3.1.22.tgz", + "integrity": "sha512-gsAKIOWBm2Q87CDfs9fEo7wJT3fwWIJfnDGMn9Qy74gBnNFOACDNfhUzovubbJjWnKLGBln7/NcSmZwj5DuEXg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^9.0.10", + "@inquirer/type": "^1.5.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@inquirer/core": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-9.2.1.tgz", + "integrity": "sha512-F2VBt7W/mwqEU4bL0RnHNZmC/OxzNx9cOYxHqnXX3MP6ruYvZUZAW9imgN9+h/uBT/oP8Gh888J2OZSbjSeWcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/figures": "^1.0.6", + "@inquirer/type": "^2.0.0", + "@types/mute-stream": "^0.0.4", + "@types/node": "^22.5.5", + "@types/wrap-ansi": "^3.0.0", + "ansi-escapes": "^4.3.2", + "cli-width": "^4.1.0", + "mute-stream": "^1.0.0", + "signal-exit": "^4.1.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^6.2.0", + "yoctocolors-cjs": "^2.1.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@inquirer/core/node_modules/@inquirer/type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-2.0.0.tgz", + "integrity": "sha512-XvJRx+2KR3YXyYtPUUy+qd9i7p+GO9Ko6VIIpWlBrpWwXDv8WLFeHTxz35CfQFUiBMLXlGHhGzys7lqit9gWag==", + "dev": true, + "license": "MIT", + "dependencies": { + "mute-stream": "^1.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@inquirer/editor": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-2.2.0.tgz", + "integrity": "sha512-9KHOpJ+dIL5SZli8lJ6xdaYLPPzB8xB9GZItg39MBybzhxA16vxmszmQFrRwbOA918WA2rvu8xhDEg/p6LXKbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^9.1.0", + "@inquirer/type": "^1.5.3", + "external-editor": "^3.1.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@inquirer/expand": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-2.3.0.tgz", + "integrity": "sha512-qnJsUcOGCSG1e5DTOErmv2BPQqrtT6uzqn1vI/aYGiPKq+FgslGZmtdnXbhuI7IlT7OByDoEEqdnhUnVR2hhLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^9.1.0", + "@inquirer/type": "^1.5.3", + "yoctocolors-cjs": "^2.1.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@inquirer/figures": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.7.tgz", + "integrity": "sha512-m+Trk77mp54Zma6xLkLuY+mvanPxlE4A7yNKs2HBiyZ4UkVs28Mv5c/pgWrHeInx+USHeX/WEPzjrWrcJiQgjw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@inquirer/input": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-2.3.0.tgz", + "integrity": "sha512-XfnpCStx2xgh1LIRqPXrTNEEByqQWoxsWYzNRSEUxJ5c6EQlhMogJ3vHKu8aXuTacebtaZzMAHwEL0kAflKOBw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^9.1.0", + "@inquirer/type": "^1.5.3" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@inquirer/number": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-1.1.0.tgz", + "integrity": "sha512-ilUnia/GZUtfSZy3YEErXLJ2Sljo/mf9fiKc08n18DdwdmDbOzRcTv65H1jjDvlsAuvdFXf4Sa/aL7iw/NanVA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^9.1.0", + "@inquirer/type": "^1.5.3" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@inquirer/password": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-2.2.0.tgz", + "integrity": "sha512-5otqIpgsPYIshqhgtEwSspBQE40etouR8VIxzpJkv9i0dVHIpyhiivbkH9/dGiMLdyamT54YRdGJLfl8TFnLHg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^9.1.0", + "@inquirer/type": "^1.5.3", + "ansi-escapes": "^4.3.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@inquirer/prompts": { + "version": "5.3.8", + "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-5.3.8.tgz", + "integrity": "sha512-b2BudQY/Si4Y2a0PdZZL6BeJtl8llgeZa7U2j47aaJSCeAl1e4UI7y8a9bSkO3o/ZbZrgT5muy/34JbsjfIWxA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/checkbox": "^2.4.7", + "@inquirer/confirm": "^3.1.22", + "@inquirer/editor": "^2.1.22", + "@inquirer/expand": "^2.1.22", + "@inquirer/input": "^2.2.9", + "@inquirer/number": "^1.0.10", + "@inquirer/password": "^2.1.22", + "@inquirer/rawlist": "^2.2.4", + "@inquirer/search": "^1.0.7", + "@inquirer/select": "^2.4.7" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@inquirer/rawlist": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-2.3.0.tgz", + "integrity": "sha512-zzfNuINhFF7OLAtGHfhwOW2TlYJyli7lOUoJUXw/uyklcwalV6WRXBXtFIicN8rTRK1XTiPWB4UY+YuW8dsnLQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^9.1.0", + "@inquirer/type": "^1.5.3", + "yoctocolors-cjs": "^2.1.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@inquirer/search": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-1.1.0.tgz", + "integrity": "sha512-h+/5LSj51dx7hp5xOn4QFnUaKeARwUCLs6mIhtkJ0JYPBLmEYjdHSYh7I6GrLg9LwpJ3xeX0FZgAG1q0QdCpVQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^9.1.0", + "@inquirer/figures": "^1.0.5", + "@inquirer/type": "^1.5.3", + "yoctocolors-cjs": "^2.1.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@inquirer/select": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-2.5.0.tgz", + "integrity": "sha512-YmDobTItPP3WcEI86GvPo+T2sRHkxxOq/kXmsBjHS5BVXUgvgZ5AfJjkvQvZr03T81NnI3KrrRuMzeuYUQRFOA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^9.1.0", + "@inquirer/figures": "^1.0.5", + "@inquirer/type": "^1.5.3", + "ansi-escapes": "^4.3.2", + "yoctocolors-cjs": "^2.1.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@inquirer/type": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-1.5.5.tgz", + "integrity": "sha512-MzICLu4yS7V8AA61sANROZ9vT1H3ooca5dSmI1FjZkzq7o/koMsRfQSzRtFo+F3Ao4Sf1C0bpLKejpKB/+j6MA==", + "dev": true, + "license": "MIT", + "dependencies": { + "mute-stream": "^1.0.0" + }, + "engines": { + "node": ">=18" + } }, "node_modules/@isaacs/cliui": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", - "dev": true, + "license": "ISC", "dependencies": { "string-width": "^5.1.2", "string-width-cjs": "npm:string-width@^4.2.0", @@ -4605,10 +5282,10 @@ } }, "node_modules/@isaacs/cliui/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "dev": true, + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "license": "MIT", "engines": { "node": ">=12" }, @@ -4620,7 +5297,7 @@ "version": "6.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -4632,13 +5309,13 @@ "version": "9.2.2", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true + "license": "MIT" }, "node_modules/@isaacs/cliui/node_modules/string-width": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, + "license": "MIT", "dependencies": { "eastasianwidth": "^0.2.0", "emoji-regex": "^9.2.2", @@ -4655,7 +5332,7 @@ "version": "7.1.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^6.0.1" }, @@ -4670,7 +5347,7 @@ "version": "8.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^6.1.0", "string-width": "^5.0.1", @@ -4683,55 +5360,12 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", - "dev": true, - "dependencies": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true - }, "node_modules/@istanbuljs/schema": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -4741,6 +5375,7 @@ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/set-array": "^1.2.1", "@jridgewell/sourcemap-codec": "^1.4.10", @@ -4755,6 +5390,7 @@ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.0.0" } @@ -4764,6 +5400,7 @@ "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.0.0" } @@ -4773,816 +5410,754 @@ "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25" } }, "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "dev": true, + "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.25", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, + "node_modules/@jsonjoy.com/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/json-pack": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-1.1.0.tgz", + "integrity": "sha512-zlQONA+msXPPwHWZMKFVS78ewFczIll5lXiVPwFPCZUsrOKdxc2AvxU1HoNBmMRhqDZUR9HkC3UOm+6pME6Xsg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/base64": "^1.1.1", + "@jsonjoy.com/util": "^1.1.2", + "hyperdyperid": "^1.2.0", + "thingies": "^1.20.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/util": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/util/-/util-1.5.0.tgz", + "integrity": "sha512-ojoNsrIuPI9g6o8UxhraZQSyF2ByJanAY4cTFbc8Mf2AXEF4aQRGY1dJxyJpuyav8r9FGflEt/Ff3u5Nt6YMPA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsverse/transloco": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@jsverse/transloco/-/transloco-7.5.0.tgz", + "integrity": "sha512-OnK8y84TWxWeNH+Qw0kHPECpmLOrwMRP+NMcUXm3lEqRrd13qe9XkhbAysAHGJ6kfZqgIiAMS9rqnFf6JTSc5g==", + "license": "MIT", + "dependencies": { + "@jsverse/transloco-utils": "^7.0.0", + "flat": "6.0.1", + "fs-extra": "^11.0.0", + "glob": "^10.0.0", + "lodash.kebabcase": "^4.1.1", + "ora": "^5.4.1", + "replace-in-file": "^7.0.1", + "tslib": "^2.2.0" + }, + "peerDependencies": { + "@angular/core": ">=16.0.0" + } + }, + "node_modules/@jsverse/transloco-keys-manager": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@jsverse/transloco-keys-manager/-/transloco-keys-manager-5.1.0.tgz", + "integrity": "sha512-NXz9f4rdiFk71gQBIxgDSEYlw9Gwl/qWeOT/OODFQDIKlBg3zLhRntpGkSANbzvxkkL+r/98zXOg0RK1lPnN4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@angular/compiler": "17.2.0", + "@jsverse/transloco-utils": "7.0.1", + "@phenomnomnominal/tsquery": "6.1.3", + "chalk": "5.3.0", + "cheerio": "1.0.0-rc.12", + "cli-table3": "0.6.1", + "command-line-args": "5.2.1", + "command-line-usage": "7.0.1", + "cosmiconfig": "9.0.0", + "debug": "4.3.5", + "deep-diff": "1.0.2", + "flat": "6.0.1", + "fs-extra": "11.2.0", + "gettext-parser": "8.0.0", + "glob": "10.3.10", + "jsonc-parser": "3.2.1", + "ora": "8.0.1" + }, + "bin": { + "transloco-keys-manager": "index.js" + }, + "engines": { + "node": ">=18.13.0" + } + }, + "node_modules/@jsverse/transloco-keys-manager/node_modules/@angular/compiler": { + "version": "17.2.0", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-17.2.0.tgz", + "integrity": "sha512-hsluvUtaRMlhKr5/dmQ53v8xDtkm0saqXYObGTLIWS3+QhXANHiM1WfPW/sz4G7ntocNjkYwMIjNjWl0NzeA5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^18.13.0 || >=20.9.0" + }, + "peerDependencies": { + "@angular/core": "17.2.0" + }, + "peerDependenciesMeta": { + "@angular/core": { + "optional": true + } + } + }, + "node_modules/@jsverse/transloco-keys-manager/node_modules/@angular/core": { + "version": "17.2.0", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-17.2.0.tgz", + "integrity": "sha512-CrH9z5xPuyrKKJzLSDbIF4PyWle68JcQ+9sioqhNzb3d/PeyqNC/LQQZ/60c6oFvzBMRSisVaqF5JPkLdgHRmQ==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^18.13.0 || >=20.9.0" + }, + "peerDependencies": { + "rxjs": "^6.5.3 || ^7.4.0", + "zone.js": "~0.14.0" + } + }, + "node_modules/@jsverse/transloco-keys-manager/node_modules/@jsverse/transloco-utils": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@jsverse/transloco-utils/-/transloco-utils-7.0.1.tgz", + "integrity": "sha512-Oxs2F5z5UREp2Jgp5KiB8V/VJ6jr1mVIWLJ/UFa3fmIo+4iszHBemgek3QoZaLG7DPUMR2xBWYNzKlGbZCTlMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "cosmiconfig": "^8.1.3", + "tslib": "^2.3.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@jsverse/transloco-keys-manager/node_modules/@jsverse/transloco-utils/node_modules/cosmiconfig": { + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", + "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", + "dev": true, + "license": "MIT", + "dependencies": { + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0", + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@jsverse/transloco-keys-manager/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@jsverse/transloco-keys-manager/node_modules/chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jsverse/transloco-keys-manager/node_modules/cli-cursor": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-4.0.0.tgz", + "integrity": "sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==", + "dev": true, + "license": "MIT", + "dependencies": { + "restore-cursor": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@jsverse/transloco-keys-manager/node_modules/cosmiconfig": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", + "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", + "dev": true, + "license": "MIT", + "dependencies": { + "env-paths": "^2.2.1", + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@jsverse/transloco-keys-manager/node_modules/debug": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", + "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@jsverse/transloco-keys-manager/node_modules/emoji-regex": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz", + "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jsverse/transloco-keys-manager/node_modules/glob": { + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "dev": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@jsverse/transloco-keys-manager/node_modules/is-interactive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-2.0.0.tgz", + "integrity": "sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@jsverse/transloco-keys-manager/node_modules/is-unicode-supported": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz", + "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@jsverse/transloco-keys-manager/node_modules/jsonc-parser": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.1.tgz", + "integrity": "sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jsverse/transloco-keys-manager/node_modules/log-symbols": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-6.0.0.tgz", + "integrity": "sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^5.3.0", + "is-unicode-supported": "^1.3.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@jsverse/transloco-keys-manager/node_modules/log-symbols/node_modules/is-unicode-supported": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz", + "integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@jsverse/transloco-keys-manager/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jsverse/transloco-keys-manager/node_modules/ora": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-8.0.1.tgz", + "integrity": "sha512-ANIvzobt1rls2BDny5fWZ3ZVKyD6nscLvfFRpQgfWsythlcsVUC9kL0zq6j2Z5z9wwp1kd7wpsD/T9qNPVLCaQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^5.3.0", + "cli-cursor": "^4.0.0", + "cli-spinners": "^2.9.2", + "is-interactive": "^2.0.0", + "is-unicode-supported": "^2.0.0", + "log-symbols": "^6.0.0", + "stdin-discarder": "^0.2.1", + "string-width": "^7.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@jsverse/transloco-keys-manager/node_modules/restore-cursor": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-4.0.0.tgz", + "integrity": "sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==", + "dev": true, + "license": "MIT", + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@jsverse/transloco-keys-manager/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/@jsverse/transloco-keys-manager/node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@jsverse/transloco-keys-manager/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@jsverse/transloco-utils": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@jsverse/transloco-utils/-/transloco-utils-7.0.2.tgz", + "integrity": "sha512-zud1M68mMC/Pu6irEba+Z2SzmwmmPzUPnBzMKlcGdIhzUe1z41cqQutK1M0QaQpY4h4yhumXcNaY/Ot6piv6QQ==", + "license": "MIT", + "dependencies": { + "cosmiconfig": "^8.1.3", + "tslib": "^2.3.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@jsverse/transloco/node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@jsverse/transloco/node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, "node_modules/@kamilkisiela/fast-url-parser": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/@kamilkisiela/fast-url-parser/-/fast-url-parser-1.1.4.tgz", "integrity": "sha512-gbkePEBupNydxCelHCESvFSFM8XPh1Zs/OAVRW/rKpEqPAl5PbOM90Si8mv9bvnR53uPD2s/FiRxdvSejpRJew==", - "dev": true + "dev": true, + "license": "MIT" + }, + "node_modules/@kurkle/color": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@kurkle/color/-/color-0.3.2.tgz", + "integrity": "sha512-fuscdXJ9G1qb7W8VdHi+IwRqij3lBkosAm4ydQtEmbY58OzHXqQhvlxqEkoz0yssNVn38bcpRWgA9PP+OGoisw==", + "license": "MIT" }, "node_modules/@leichtgewicht/ip-codec": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz", "integrity": "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==", - "dev": true - }, - "node_modules/@ljharb/through": { - "version": "2.3.13", - "resolved": "https://registry.npmjs.org/@ljharb/through/-/through-2.3.13.tgz", - "integrity": "sha512-/gKJun8NNiWGZJkGzI/Ragc53cOdcLNdzjLaIa+GEjguQs0ulsurx8WN0jijdK9yPqDvziX995sMRLyLt1uZMQ==", "dev": true, + "license": "MIT" + }, + "node_modules/@listr2/prompt-adapter-inquirer": { + "version": "2.0.15", + "resolved": "https://registry.npmjs.org/@listr2/prompt-adapter-inquirer/-/prompt-adapter-inquirer-2.0.15.tgz", + "integrity": "sha512-MZrGem/Ujjd4cPTLYDfCZK2iKKeiO/8OX13S6jqxldLs0Prf2aGqVlJ77nMBqMv7fzqgXEgjrNHLXcKR8l9lOg==", + "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.7" + "@inquirer/type": "^1.5.1" }, "engines": { - "node": ">= 0.4" + "node": ">=18.0.0" + }, + "peerDependencies": { + "@inquirer/prompts": ">= 3 < 6" } }, - "node_modules/@material/animation": { - "version": "15.0.0-canary.7f224ddd4.0", - "resolved": "https://registry.npmjs.org/@material/animation/-/animation-15.0.0-canary.7f224ddd4.0.tgz", - "integrity": "sha512-1GSJaPKef+7HRuV+HusVZHps64cmZuOItDbt40tjJVaikcaZvwmHlcTxRIqzcRoCdt5ZKHh3NoO7GB9Khg4Jnw==", - "dependencies": { - "tslib": "^2.1.0" - } + "node_modules/@lmdb/lmdb-darwin-arm64": { + "version": "3.0.13", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-darwin-arm64/-/lmdb-darwin-arm64-3.0.13.tgz", + "integrity": "sha512-uiKPB0Fv6WEEOZjruu9a6wnW/8jrjzlZbxXscMB8kuCJ1k6kHpcBnuvaAWcqhbI7rqX5GKziwWEdD+wi2gNLfA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] }, - "node_modules/@material/auto-init": { - "version": "15.0.0-canary.7f224ddd4.0", - "resolved": "https://registry.npmjs.org/@material/auto-init/-/auto-init-15.0.0-canary.7f224ddd4.0.tgz", - "integrity": "sha512-t7ZGpRJ3ec0QDUO0nJu/SMgLW7qcuG2KqIsEYD1Ej8qhI2xpdR2ydSDQOkVEitXmKoGol1oq4nYSBjTlB65GqA==", - "dependencies": { - "@material/base": "15.0.0-canary.7f224ddd4.0", - "tslib": "^2.1.0" - } + "node_modules/@lmdb/lmdb-darwin-x64": { + "version": "3.0.13", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-darwin-x64/-/lmdb-darwin-x64-3.0.13.tgz", + "integrity": "sha512-bEVIIfK5mSQoG1R19qA+fJOvCB+0wVGGnXHT3smchBVahYBdlPn2OsZZKzlHWfb1E+PhLBmYfqB5zQXFP7hJig==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] }, - "node_modules/@material/banner": { - "version": "15.0.0-canary.7f224ddd4.0", - "resolved": "https://registry.npmjs.org/@material/banner/-/banner-15.0.0-canary.7f224ddd4.0.tgz", - "integrity": "sha512-g9wBUZzYBizyBcBQXTIafnRUUPi7efU9gPJfzeGgkynXiccP/vh5XMmH+PBxl5v+4MlP/d4cZ2NUYoAN7UTqSA==", - "dependencies": { - "@material/base": "15.0.0-canary.7f224ddd4.0", - "@material/button": "15.0.0-canary.7f224ddd4.0", - "@material/dom": "15.0.0-canary.7f224ddd4.0", - "@material/elevation": "15.0.0-canary.7f224ddd4.0", - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/ripple": "15.0.0-canary.7f224ddd4.0", - "@material/rtl": "15.0.0-canary.7f224ddd4.0", - "@material/shape": "15.0.0-canary.7f224ddd4.0", - "@material/theme": "15.0.0-canary.7f224ddd4.0", - "@material/tokens": "15.0.0-canary.7f224ddd4.0", - "@material/typography": "15.0.0-canary.7f224ddd4.0", - "tslib": "^2.1.0" - } + "node_modules/@lmdb/lmdb-linux-arm": { + "version": "3.0.13", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm/-/lmdb-linux-arm-3.0.13.tgz", + "integrity": "sha512-Yml1KlMzOnXj/tnW7yX8U78iAzTk39aILYvCPbqeewAq1kSzl+w59k/fiVkTBfvDi/oW/5YRxL+Fq+Y1Fr1r2Q==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@material/base": { - "version": "15.0.0-canary.7f224ddd4.0", - "resolved": "https://registry.npmjs.org/@material/base/-/base-15.0.0-canary.7f224ddd4.0.tgz", - "integrity": "sha512-I9KQOKXpLfJkP8MqZyr8wZIzdPHrwPjFvGd9zSK91/vPyE4hzHRJc/0njsh9g8Lm9PRYLbifXX+719uTbHxx+A==", - "dependencies": { - "tslib": "^2.1.0" - } + "node_modules/@lmdb/lmdb-linux-arm64": { + "version": "3.0.13", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm64/-/lmdb-linux-arm64-3.0.13.tgz", + "integrity": "sha512-afbVrsMgZ9dUTNUchFpj5VkmJRxvht/u335jUJ7o23YTbNbnpmXif3VKQGCtnjSh+CZaqm6N3CPG8KO3zwyZ1Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@material/button": { - "version": "15.0.0-canary.7f224ddd4.0", - "resolved": "https://registry.npmjs.org/@material/button/-/button-15.0.0-canary.7f224ddd4.0.tgz", - "integrity": "sha512-BHB7iyHgRVH+JF16+iscR+Qaic+p7LU1FOLgP8KucRlpF9tTwIxQA6mJwGRi5gUtcG+vyCmzVS+hIQ6DqT/7BA==", - "dependencies": { - "@material/density": "15.0.0-canary.7f224ddd4.0", - "@material/dom": "15.0.0-canary.7f224ddd4.0", - "@material/elevation": "15.0.0-canary.7f224ddd4.0", - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/focus-ring": "15.0.0-canary.7f224ddd4.0", - "@material/ripple": "15.0.0-canary.7f224ddd4.0", - "@material/rtl": "15.0.0-canary.7f224ddd4.0", - "@material/shape": "15.0.0-canary.7f224ddd4.0", - "@material/theme": "15.0.0-canary.7f224ddd4.0", - "@material/tokens": "15.0.0-canary.7f224ddd4.0", - "@material/touch-target": "15.0.0-canary.7f224ddd4.0", - "@material/typography": "15.0.0-canary.7f224ddd4.0", - "tslib": "^2.1.0" - } + "node_modules/@lmdb/lmdb-linux-x64": { + "version": "3.0.13", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-x64/-/lmdb-linux-x64-3.0.13.tgz", + "integrity": "sha512-vOtxu0xC0SLdQ2WRXg8Qgd8T32ak4SPqk5zjItRszrJk2BdeXqfGxBJbP7o4aOvSPSmSSv46Lr1EP4HXU8v7Kg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@material/card": { - "version": "15.0.0-canary.7f224ddd4.0", - "resolved": "https://registry.npmjs.org/@material/card/-/card-15.0.0-canary.7f224ddd4.0.tgz", - "integrity": "sha512-kt7y9/IWOtJTr3Z/AoWJT3ZLN7CLlzXhx2udCLP9ootZU2bfGK0lzNwmo80bv/pJfrY9ihQKCtuGTtNxUy+vIw==", - "dependencies": { - "@material/dom": "15.0.0-canary.7f224ddd4.0", - "@material/elevation": "15.0.0-canary.7f224ddd4.0", - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/ripple": "15.0.0-canary.7f224ddd4.0", - "@material/rtl": "15.0.0-canary.7f224ddd4.0", - "@material/shape": "15.0.0-canary.7f224ddd4.0", - "@material/theme": "15.0.0-canary.7f224ddd4.0", - "@material/tokens": "15.0.0-canary.7f224ddd4.0", - "tslib": "^2.1.0" - } + "node_modules/@lmdb/lmdb-win32-x64": { + "version": "3.0.13", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-win32-x64/-/lmdb-win32-x64-3.0.13.tgz", + "integrity": "sha512-UCrMJQY/gJnOl3XgbWRZZUvGGBuKy6i0YNSptgMzHBjs+QYDYR1Mt/RLTOPy4fzzves65O1EDmlL//OzEqoLlA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] }, - "node_modules/@material/checkbox": { - "version": "15.0.0-canary.7f224ddd4.0", - "resolved": "https://registry.npmjs.org/@material/checkbox/-/checkbox-15.0.0-canary.7f224ddd4.0.tgz", - "integrity": "sha512-rURcrL5O1u6hzWR+dNgiQ/n89vk6tdmdP3mZgnxJx61q4I/k1yijKqNJSLrkXH7Rto3bM5NRKMOlgvMvVd7UMQ==", - "dependencies": { - "@material/animation": "15.0.0-canary.7f224ddd4.0", - "@material/base": "15.0.0-canary.7f224ddd4.0", - "@material/density": "15.0.0-canary.7f224ddd4.0", - "@material/dom": "15.0.0-canary.7f224ddd4.0", - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/focus-ring": "15.0.0-canary.7f224ddd4.0", - "@material/ripple": "15.0.0-canary.7f224ddd4.0", - "@material/rtl": "15.0.0-canary.7f224ddd4.0", - "@material/theme": "15.0.0-canary.7f224ddd4.0", - "@material/touch-target": "15.0.0-canary.7f224ddd4.0", - "tslib": "^2.1.0" - } + "node_modules/@msgpackr-extract/msgpackr-extract-darwin-arm64": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-3.0.3.tgz", + "integrity": "sha512-QZHtlVgbAdy2zAqNA9Gu1UpIuI8Xvsd1v8ic6B2pZmeFnFcMWiPLfWXh7TVw4eGEZ/C9TH281KwhVoeQUKbyjw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] }, - "node_modules/@material/chips": { - "version": "15.0.0-canary.7f224ddd4.0", - "resolved": "https://registry.npmjs.org/@material/chips/-/chips-15.0.0-canary.7f224ddd4.0.tgz", - "integrity": "sha512-AYAivV3GSk/T/nRIpH27sOHFPaSMrE3L0WYbnb5Wa93FgY8a0fbsFYtSH2QmtwnzXveg+B1zGTt7/xIIcynKdQ==", - "dependencies": { - "@material/animation": "15.0.0-canary.7f224ddd4.0", - "@material/base": "15.0.0-canary.7f224ddd4.0", - "@material/checkbox": "15.0.0-canary.7f224ddd4.0", - "@material/density": "15.0.0-canary.7f224ddd4.0", - "@material/dom": "15.0.0-canary.7f224ddd4.0", - "@material/elevation": "15.0.0-canary.7f224ddd4.0", - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/focus-ring": "15.0.0-canary.7f224ddd4.0", - "@material/ripple": "15.0.0-canary.7f224ddd4.0", - "@material/rtl": "15.0.0-canary.7f224ddd4.0", - "@material/shape": "15.0.0-canary.7f224ddd4.0", - "@material/theme": "15.0.0-canary.7f224ddd4.0", - "@material/tokens": "15.0.0-canary.7f224ddd4.0", - "@material/touch-target": "15.0.0-canary.7f224ddd4.0", - "@material/typography": "15.0.0-canary.7f224ddd4.0", - "safevalues": "^0.3.4", - "tslib": "^2.1.0" - } + "node_modules/@msgpackr-extract/msgpackr-extract-darwin-x64": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-x64/-/msgpackr-extract-darwin-x64-3.0.3.tgz", + "integrity": "sha512-mdzd3AVzYKuUmiWOQ8GNhl64/IoFGol569zNRdkLReh6LRLHOXxU4U8eq0JwaD8iFHdVGqSy4IjFL4reoWCDFw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] }, - "node_modules/@material/circular-progress": { - "version": "15.0.0-canary.7f224ddd4.0", - "resolved": "https://registry.npmjs.org/@material/circular-progress/-/circular-progress-15.0.0-canary.7f224ddd4.0.tgz", - "integrity": "sha512-DJrqCKb+LuGtjNvKl8XigvyK02y36GRkfhMUYTcJEi3PrOE00bwXtyj7ilhzEVshQiXg6AHGWXtf5UqwNrx3Ow==", - "dependencies": { - "@material/animation": "15.0.0-canary.7f224ddd4.0", - "@material/base": "15.0.0-canary.7f224ddd4.0", - "@material/dom": "15.0.0-canary.7f224ddd4.0", - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/progress-indicator": "15.0.0-canary.7f224ddd4.0", - "@material/rtl": "15.0.0-canary.7f224ddd4.0", - "@material/theme": "15.0.0-canary.7f224ddd4.0", - "tslib": "^2.1.0" - } + "node_modules/@msgpackr-extract/msgpackr-extract-linux-arm": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm/-/msgpackr-extract-linux-arm-3.0.3.tgz", + "integrity": "sha512-fg0uy/dG/nZEXfYilKoRe7yALaNmHoYeIoJuJ7KJ+YyU2bvY8vPv27f7UKhGRpY6euFYqEVhxCFZgAUNQBM3nw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@material/data-table": { - "version": "15.0.0-canary.7f224ddd4.0", - "resolved": "https://registry.npmjs.org/@material/data-table/-/data-table-15.0.0-canary.7f224ddd4.0.tgz", - "integrity": "sha512-/2WZsuBIq9z9RWYF5Jo6b7P6u0fwit+29/mN7rmAZ6akqUR54nXyNfoSNiyydMkzPlZZsep5KrSHododDhBZbA==", - "dependencies": { - "@material/animation": "15.0.0-canary.7f224ddd4.0", - "@material/base": "15.0.0-canary.7f224ddd4.0", - "@material/checkbox": "15.0.0-canary.7f224ddd4.0", - "@material/density": "15.0.0-canary.7f224ddd4.0", - "@material/dom": "15.0.0-canary.7f224ddd4.0", - "@material/elevation": "15.0.0-canary.7f224ddd4.0", - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/icon-button": "15.0.0-canary.7f224ddd4.0", - "@material/linear-progress": "15.0.0-canary.7f224ddd4.0", - "@material/list": "15.0.0-canary.7f224ddd4.0", - "@material/menu": "15.0.0-canary.7f224ddd4.0", - "@material/rtl": "15.0.0-canary.7f224ddd4.0", - "@material/select": "15.0.0-canary.7f224ddd4.0", - "@material/shape": "15.0.0-canary.7f224ddd4.0", - "@material/theme": "15.0.0-canary.7f224ddd4.0", - "@material/tokens": "15.0.0-canary.7f224ddd4.0", - "@material/touch-target": "15.0.0-canary.7f224ddd4.0", - "@material/typography": "15.0.0-canary.7f224ddd4.0", - "tslib": "^2.1.0" - } + "node_modules/@msgpackr-extract/msgpackr-extract-linux-arm64": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm64/-/msgpackr-extract-linux-arm64-3.0.3.tgz", + "integrity": "sha512-YxQL+ax0XqBJDZiKimS2XQaf+2wDGVa1enVRGzEvLLVFeqa5kx2bWbtcSXgsxjQB7nRqqIGFIcLteF/sHeVtQg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@material/density": { - "version": "15.0.0-canary.7f224ddd4.0", - "resolved": "https://registry.npmjs.org/@material/density/-/density-15.0.0-canary.7f224ddd4.0.tgz", - "integrity": "sha512-o9EXmGKVpiQ6mHhyV3oDDzc78Ow3E7v8dlaOhgaDSXgmqaE8v5sIlLNa/LKSyUga83/fpGk3QViSGXotpQx0jA==", - "dependencies": { - "tslib": "^2.1.0" - } + "node_modules/@msgpackr-extract/msgpackr-extract-linux-x64": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-x64/-/msgpackr-extract-linux-x64-3.0.3.tgz", + "integrity": "sha512-cvwNfbP07pKUfq1uH+S6KJ7dT9K8WOE4ZiAcsrSes+UY55E/0jLYc+vq+DO7jlmqRb5zAggExKm0H7O/CBaesg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@material/dialog": { - "version": "15.0.0-canary.7f224ddd4.0", - "resolved": "https://registry.npmjs.org/@material/dialog/-/dialog-15.0.0-canary.7f224ddd4.0.tgz", - "integrity": "sha512-u0XpTlv1JqWC/bQ3DavJ1JguofTelLT2wloj59l3/1b60jv42JQ6Am7jU3I8/SIUB1MKaW7dYocXjDWtWJakLA==", - "dependencies": { - "@material/animation": "15.0.0-canary.7f224ddd4.0", - "@material/base": "15.0.0-canary.7f224ddd4.0", - "@material/button": "15.0.0-canary.7f224ddd4.0", - "@material/dom": "15.0.0-canary.7f224ddd4.0", - "@material/elevation": "15.0.0-canary.7f224ddd4.0", - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/icon-button": "15.0.0-canary.7f224ddd4.0", - "@material/ripple": "15.0.0-canary.7f224ddd4.0", - "@material/rtl": "15.0.0-canary.7f224ddd4.0", - "@material/shape": "15.0.0-canary.7f224ddd4.0", - "@material/theme": "15.0.0-canary.7f224ddd4.0", - "@material/tokens": "15.0.0-canary.7f224ddd4.0", - "@material/touch-target": "15.0.0-canary.7f224ddd4.0", - "@material/typography": "15.0.0-canary.7f224ddd4.0", - "tslib": "^2.1.0" - } - }, - "node_modules/@material/dom": { - "version": "15.0.0-canary.7f224ddd4.0", - "resolved": "https://registry.npmjs.org/@material/dom/-/dom-15.0.0-canary.7f224ddd4.0.tgz", - "integrity": "sha512-mQ1HT186GPQSkRg5S18i70typ5ZytfjL09R0gJ2Qg5/G+MLCGi7TAjZZSH65tuD/QGOjel4rDdWOTmYbPYV6HA==", - "dependencies": { - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/rtl": "15.0.0-canary.7f224ddd4.0", - "tslib": "^2.1.0" - } - }, - "node_modules/@material/drawer": { - "version": "15.0.0-canary.7f224ddd4.0", - "resolved": "https://registry.npmjs.org/@material/drawer/-/drawer-15.0.0-canary.7f224ddd4.0.tgz", - "integrity": "sha512-qyO0W0KBftfH8dlLR0gVAgv7ZHNvU8ae11Ao6zJif/YxcvK4+gph1z8AO4H410YmC2kZiwpSKyxM1iQCCzbb4g==", - "dependencies": { - "@material/animation": "15.0.0-canary.7f224ddd4.0", - "@material/base": "15.0.0-canary.7f224ddd4.0", - "@material/dom": "15.0.0-canary.7f224ddd4.0", - "@material/elevation": "15.0.0-canary.7f224ddd4.0", - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/list": "15.0.0-canary.7f224ddd4.0", - "@material/ripple": "15.0.0-canary.7f224ddd4.0", - "@material/rtl": "15.0.0-canary.7f224ddd4.0", - "@material/shape": "15.0.0-canary.7f224ddd4.0", - "@material/theme": "15.0.0-canary.7f224ddd4.0", - "@material/typography": "15.0.0-canary.7f224ddd4.0", - "tslib": "^2.1.0" - } - }, - "node_modules/@material/elevation": { - "version": "15.0.0-canary.7f224ddd4.0", - "resolved": "https://registry.npmjs.org/@material/elevation/-/elevation-15.0.0-canary.7f224ddd4.0.tgz", - "integrity": "sha512-tV6s4/pUBECedaI36Yj18KmRCk1vfue/JP/5yYRlFNnLMRVISePbZaKkn/BHXVf+26I3W879+XqIGlDVdmOoMA==", - "dependencies": { - "@material/animation": "15.0.0-canary.7f224ddd4.0", - "@material/base": "15.0.0-canary.7f224ddd4.0", - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/rtl": "15.0.0-canary.7f224ddd4.0", - "@material/theme": "15.0.0-canary.7f224ddd4.0", - "tslib": "^2.1.0" - } - }, - "node_modules/@material/fab": { - "version": "15.0.0-canary.7f224ddd4.0", - "resolved": "https://registry.npmjs.org/@material/fab/-/fab-15.0.0-canary.7f224ddd4.0.tgz", - "integrity": "sha512-4h76QrzfZTcPdd+awDPZ4Q0YdSqsXQnS540TPtyXUJ/5G99V6VwGpjMPIxAsW0y+pmI9UkLL/srrMaJec+7r4Q==", - "dependencies": { - "@material/animation": "15.0.0-canary.7f224ddd4.0", - "@material/dom": "15.0.0-canary.7f224ddd4.0", - "@material/elevation": "15.0.0-canary.7f224ddd4.0", - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/focus-ring": "15.0.0-canary.7f224ddd4.0", - "@material/ripple": "15.0.0-canary.7f224ddd4.0", - "@material/rtl": "15.0.0-canary.7f224ddd4.0", - "@material/shape": "15.0.0-canary.7f224ddd4.0", - "@material/theme": "15.0.0-canary.7f224ddd4.0", - "@material/tokens": "15.0.0-canary.7f224ddd4.0", - "@material/touch-target": "15.0.0-canary.7f224ddd4.0", - "@material/typography": "15.0.0-canary.7f224ddd4.0", - "tslib": "^2.1.0" - } - }, - "node_modules/@material/feature-targeting": { - "version": "15.0.0-canary.7f224ddd4.0", - "resolved": "https://registry.npmjs.org/@material/feature-targeting/-/feature-targeting-15.0.0-canary.7f224ddd4.0.tgz", - "integrity": "sha512-SAjtxYh6YlKZriU83diDEQ7jNSP2MnxKsER0TvFeyG1vX/DWsUyYDOIJTOEa9K1N+fgJEBkNK8hY55QhQaspew==", - "dependencies": { - "tslib": "^2.1.0" - } - }, - "node_modules/@material/floating-label": { - "version": "15.0.0-canary.7f224ddd4.0", - "resolved": "https://registry.npmjs.org/@material/floating-label/-/floating-label-15.0.0-canary.7f224ddd4.0.tgz", - "integrity": "sha512-0KMo5ijjYaEHPiZ2pCVIcbaTS2LycvH9zEhEMKwPPGssBCX7iz5ffYQFk7e5yrQand1r3jnQQgYfHAwtykArnQ==", - "dependencies": { - "@material/animation": "15.0.0-canary.7f224ddd4.0", - "@material/base": "15.0.0-canary.7f224ddd4.0", - "@material/dom": "15.0.0-canary.7f224ddd4.0", - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/rtl": "15.0.0-canary.7f224ddd4.0", - "@material/theme": "15.0.0-canary.7f224ddd4.0", - "@material/typography": "15.0.0-canary.7f224ddd4.0", - "tslib": "^2.1.0" - } - }, - "node_modules/@material/focus-ring": { - "version": "15.0.0-canary.7f224ddd4.0", - "resolved": "https://registry.npmjs.org/@material/focus-ring/-/focus-ring-15.0.0-canary.7f224ddd4.0.tgz", - "integrity": "sha512-Jmg1nltq4J6S6A10EGMZnvufrvU3YTi+8R8ZD9lkSbun0Fm2TVdICQt/Auyi6An9zP66oQN6c31eqO6KfIPsDg==", - "dependencies": { - "@material/dom": "15.0.0-canary.7f224ddd4.0", - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/rtl": "15.0.0-canary.7f224ddd4.0" - } - }, - "node_modules/@material/form-field": { - "version": "15.0.0-canary.7f224ddd4.0", - "resolved": "https://registry.npmjs.org/@material/form-field/-/form-field-15.0.0-canary.7f224ddd4.0.tgz", - "integrity": "sha512-fEPWgDQEPJ6WF7hNnIStxucHR9LE4DoDSMqCsGWS2Yu+NLZYLuCEecgR0UqQsl1EQdNRaFh8VH93KuxGd2hiPg==", - "dependencies": { - "@material/base": "15.0.0-canary.7f224ddd4.0", - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/ripple": "15.0.0-canary.7f224ddd4.0", - "@material/rtl": "15.0.0-canary.7f224ddd4.0", - "@material/theme": "15.0.0-canary.7f224ddd4.0", - "@material/typography": "15.0.0-canary.7f224ddd4.0", - "tslib": "^2.1.0" - } - }, - "node_modules/@material/icon-button": { - "version": "15.0.0-canary.7f224ddd4.0", - "resolved": "https://registry.npmjs.org/@material/icon-button/-/icon-button-15.0.0-canary.7f224ddd4.0.tgz", - "integrity": "sha512-DcK7IL4ICY/DW+48YQZZs9g0U1kRaW0Wb0BxhvppDMYziHo/CTpFdle4gjyuTyRxPOdHQz5a97ru48Z9O4muTw==", - "dependencies": { - "@material/base": "15.0.0-canary.7f224ddd4.0", - "@material/density": "15.0.0-canary.7f224ddd4.0", - "@material/dom": "15.0.0-canary.7f224ddd4.0", - "@material/elevation": "15.0.0-canary.7f224ddd4.0", - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/focus-ring": "15.0.0-canary.7f224ddd4.0", - "@material/ripple": "15.0.0-canary.7f224ddd4.0", - "@material/rtl": "15.0.0-canary.7f224ddd4.0", - "@material/theme": "15.0.0-canary.7f224ddd4.0", - "@material/touch-target": "15.0.0-canary.7f224ddd4.0", - "tslib": "^2.1.0" - } - }, - "node_modules/@material/image-list": { - "version": "15.0.0-canary.7f224ddd4.0", - "resolved": "https://registry.npmjs.org/@material/image-list/-/image-list-15.0.0-canary.7f224ddd4.0.tgz", - "integrity": "sha512-voMjG2p80XbjL1B2lmF65zO5gEgJOVKClLdqh4wbYzYfwY/SR9c8eLvlYG7DLdFaFBl/7gGxD8TvvZ329HUFPw==", - "dependencies": { - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/shape": "15.0.0-canary.7f224ddd4.0", - "@material/theme": "15.0.0-canary.7f224ddd4.0", - "@material/typography": "15.0.0-canary.7f224ddd4.0", - "tslib": "^2.1.0" - } - }, - "node_modules/@material/layout-grid": { - "version": "15.0.0-canary.7f224ddd4.0", - "resolved": "https://registry.npmjs.org/@material/layout-grid/-/layout-grid-15.0.0-canary.7f224ddd4.0.tgz", - "integrity": "sha512-veDABLxMn2RmvfnUO2RUmC1OFfWr4cU+MrxKPoDD2hl3l3eDYv5fxws6r5T1JoSyXoaN+oEZpheS0+M9Ure8Pg==", - "dependencies": { - "tslib": "^2.1.0" - } - }, - "node_modules/@material/line-ripple": { - "version": "15.0.0-canary.7f224ddd4.0", - "resolved": "https://registry.npmjs.org/@material/line-ripple/-/line-ripple-15.0.0-canary.7f224ddd4.0.tgz", - "integrity": "sha512-f60hVJhIU6I3/17Tqqzch1emUKEcfVVgHVqADbU14JD+oEIz429ZX9ksZ3VChoU3+eejFl+jVdZMLE/LrAuwpg==", - "dependencies": { - "@material/animation": "15.0.0-canary.7f224ddd4.0", - "@material/base": "15.0.0-canary.7f224ddd4.0", - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/theme": "15.0.0-canary.7f224ddd4.0", - "tslib": "^2.1.0" - } - }, - "node_modules/@material/linear-progress": { - "version": "15.0.0-canary.7f224ddd4.0", - "resolved": "https://registry.npmjs.org/@material/linear-progress/-/linear-progress-15.0.0-canary.7f224ddd4.0.tgz", - "integrity": "sha512-pRDEwPQielDiC9Sc5XhCXrGxP8wWOnAO8sQlMebfBYHYqy5hhiIzibezS8CSaW4MFQFyXmCmpmqWlbqGYRmiyg==", - "dependencies": { - "@material/animation": "15.0.0-canary.7f224ddd4.0", - "@material/base": "15.0.0-canary.7f224ddd4.0", - "@material/dom": "15.0.0-canary.7f224ddd4.0", - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/progress-indicator": "15.0.0-canary.7f224ddd4.0", - "@material/rtl": "15.0.0-canary.7f224ddd4.0", - "@material/theme": "15.0.0-canary.7f224ddd4.0", - "tslib": "^2.1.0" - } - }, - "node_modules/@material/list": { - "version": "15.0.0-canary.7f224ddd4.0", - "resolved": "https://registry.npmjs.org/@material/list/-/list-15.0.0-canary.7f224ddd4.0.tgz", - "integrity": "sha512-Is0NV91sJlXF5pOebYAtWLF4wU2MJDbYqztML/zQNENkQxDOvEXu3nWNb3YScMIYJJXvARO0Liur5K4yPagS1Q==", - "dependencies": { - "@material/base": "15.0.0-canary.7f224ddd4.0", - "@material/density": "15.0.0-canary.7f224ddd4.0", - "@material/dom": "15.0.0-canary.7f224ddd4.0", - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/ripple": "15.0.0-canary.7f224ddd4.0", - "@material/rtl": "15.0.0-canary.7f224ddd4.0", - "@material/shape": "15.0.0-canary.7f224ddd4.0", - "@material/theme": "15.0.0-canary.7f224ddd4.0", - "@material/tokens": "15.0.0-canary.7f224ddd4.0", - "@material/typography": "15.0.0-canary.7f224ddd4.0", - "tslib": "^2.1.0" - } - }, - "node_modules/@material/menu": { - "version": "15.0.0-canary.7f224ddd4.0", - "resolved": "https://registry.npmjs.org/@material/menu/-/menu-15.0.0-canary.7f224ddd4.0.tgz", - "integrity": "sha512-D11QU1dXqLbh5X1zKlEhS3QWh0b5BPNXlafc5MXfkdJHhOiieb7LC9hMJhbrHtj24FadJ7evaFW/T2ugJbJNnQ==", - "dependencies": { - "@material/base": "15.0.0-canary.7f224ddd4.0", - "@material/dom": "15.0.0-canary.7f224ddd4.0", - "@material/elevation": "15.0.0-canary.7f224ddd4.0", - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/list": "15.0.0-canary.7f224ddd4.0", - "@material/menu-surface": "15.0.0-canary.7f224ddd4.0", - "@material/ripple": "15.0.0-canary.7f224ddd4.0", - "@material/rtl": "15.0.0-canary.7f224ddd4.0", - "@material/shape": "15.0.0-canary.7f224ddd4.0", - "@material/theme": "15.0.0-canary.7f224ddd4.0", - "@material/tokens": "15.0.0-canary.7f224ddd4.0", - "tslib": "^2.1.0" - } - }, - "node_modules/@material/menu-surface": { - "version": "15.0.0-canary.7f224ddd4.0", - "resolved": "https://registry.npmjs.org/@material/menu-surface/-/menu-surface-15.0.0-canary.7f224ddd4.0.tgz", - "integrity": "sha512-7RZHvw0gbwppaAJ/Oh5SWmfAKJ62aw1IMB3+3MRwsb5PLoV666wInYa+zJfE4i7qBeOn904xqT2Nko5hY0ssrg==", - "dependencies": { - "@material/animation": "15.0.0-canary.7f224ddd4.0", - "@material/base": "15.0.0-canary.7f224ddd4.0", - "@material/elevation": "15.0.0-canary.7f224ddd4.0", - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/rtl": "15.0.0-canary.7f224ddd4.0", - "@material/shape": "15.0.0-canary.7f224ddd4.0", - "@material/theme": "15.0.0-canary.7f224ddd4.0", - "tslib": "^2.1.0" - } - }, - "node_modules/@material/notched-outline": { - "version": "15.0.0-canary.7f224ddd4.0", - "resolved": "https://registry.npmjs.org/@material/notched-outline/-/notched-outline-15.0.0-canary.7f224ddd4.0.tgz", - "integrity": "sha512-Yg2usuKB2DKlKIBISbie9BFsOVuffF71xjbxPbybvqemxqUBd+bD5/t6H1fLE+F8/NCu5JMigho4ewUU+0RCiw==", - "dependencies": { - "@material/base": "15.0.0-canary.7f224ddd4.0", - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/floating-label": "15.0.0-canary.7f224ddd4.0", - "@material/rtl": "15.0.0-canary.7f224ddd4.0", - "@material/shape": "15.0.0-canary.7f224ddd4.0", - "@material/theme": "15.0.0-canary.7f224ddd4.0", - "tslib": "^2.1.0" - } - }, - "node_modules/@material/progress-indicator": { - "version": "15.0.0-canary.7f224ddd4.0", - "resolved": "https://registry.npmjs.org/@material/progress-indicator/-/progress-indicator-15.0.0-canary.7f224ddd4.0.tgz", - "integrity": "sha512-UPbDjE5CqT+SqTs0mNFG6uFEw7wBlgYmh+noSkQ6ty/EURm8lF125dmi4dv4kW0+octonMXqkGtAoZwLIHKf/w==", - "dependencies": { - "tslib": "^2.1.0" - } - }, - "node_modules/@material/radio": { - "version": "15.0.0-canary.7f224ddd4.0", - "resolved": "https://registry.npmjs.org/@material/radio/-/radio-15.0.0-canary.7f224ddd4.0.tgz", - "integrity": "sha512-wR1X0Sr0KmQLu6+YOFKAI84G3L6psqd7Kys5kfb8WKBM36zxO5HQXC5nJm/Y0rdn22ixzsIz2GBo0MNU4V4k1A==", - "dependencies": { - "@material/animation": "15.0.0-canary.7f224ddd4.0", - "@material/base": "15.0.0-canary.7f224ddd4.0", - "@material/density": "15.0.0-canary.7f224ddd4.0", - "@material/dom": "15.0.0-canary.7f224ddd4.0", - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/focus-ring": "15.0.0-canary.7f224ddd4.0", - "@material/ripple": "15.0.0-canary.7f224ddd4.0", - "@material/theme": "15.0.0-canary.7f224ddd4.0", - "@material/touch-target": "15.0.0-canary.7f224ddd4.0", - "tslib": "^2.1.0" - } - }, - "node_modules/@material/ripple": { - "version": "15.0.0-canary.7f224ddd4.0", - "resolved": "https://registry.npmjs.org/@material/ripple/-/ripple-15.0.0-canary.7f224ddd4.0.tgz", - "integrity": "sha512-JqOsWM1f4aGdotP0rh1vZlPZTg6lZgh39FIYHFMfOwfhR+LAikUJ+37ciqZuewgzXB6iiRO6a8aUH6HR5SJYPg==", - "dependencies": { - "@material/animation": "15.0.0-canary.7f224ddd4.0", - "@material/base": "15.0.0-canary.7f224ddd4.0", - "@material/dom": "15.0.0-canary.7f224ddd4.0", - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/rtl": "15.0.0-canary.7f224ddd4.0", - "@material/theme": "15.0.0-canary.7f224ddd4.0", - "tslib": "^2.1.0" - } - }, - "node_modules/@material/rtl": { - "version": "15.0.0-canary.7f224ddd4.0", - "resolved": "https://registry.npmjs.org/@material/rtl/-/rtl-15.0.0-canary.7f224ddd4.0.tgz", - "integrity": "sha512-UVf14qAtmPiaaZjuJtmN36HETyoKWmsZM/qn1L5ciR2URb8O035dFWnz4ZWFMmAYBno/L7JiZaCkPurv2ZNrGA==", - "dependencies": { - "@material/theme": "15.0.0-canary.7f224ddd4.0", - "tslib": "^2.1.0" - } - }, - "node_modules/@material/segmented-button": { - "version": "15.0.0-canary.7f224ddd4.0", - "resolved": "https://registry.npmjs.org/@material/segmented-button/-/segmented-button-15.0.0-canary.7f224ddd4.0.tgz", - "integrity": "sha512-LCnVRUSAhELTKI/9hSvyvIvQIpPpqF29BV+O9yM4WoNNmNWqTulvuiv7grHZl6Z+kJuxSg4BGbsPxxb9dXozPg==", - "dependencies": { - "@material/base": "15.0.0-canary.7f224ddd4.0", - "@material/elevation": "15.0.0-canary.7f224ddd4.0", - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/ripple": "15.0.0-canary.7f224ddd4.0", - "@material/theme": "15.0.0-canary.7f224ddd4.0", - "@material/touch-target": "15.0.0-canary.7f224ddd4.0", - "@material/typography": "15.0.0-canary.7f224ddd4.0", - "tslib": "^2.1.0" - } - }, - "node_modules/@material/select": { - "version": "15.0.0-canary.7f224ddd4.0", - "resolved": "https://registry.npmjs.org/@material/select/-/select-15.0.0-canary.7f224ddd4.0.tgz", - "integrity": "sha512-WioZtQEXRpglum0cMSzSqocnhsGRr+ZIhvKb3FlaNrTaK8H3Y4QA7rVjv3emRtrLOOjaT6/RiIaUMTo9AGzWQQ==", - "dependencies": { - "@material/animation": "15.0.0-canary.7f224ddd4.0", - "@material/base": "15.0.0-canary.7f224ddd4.0", - "@material/density": "15.0.0-canary.7f224ddd4.0", - "@material/dom": "15.0.0-canary.7f224ddd4.0", - "@material/elevation": "15.0.0-canary.7f224ddd4.0", - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/floating-label": "15.0.0-canary.7f224ddd4.0", - "@material/line-ripple": "15.0.0-canary.7f224ddd4.0", - "@material/list": "15.0.0-canary.7f224ddd4.0", - "@material/menu": "15.0.0-canary.7f224ddd4.0", - "@material/menu-surface": "15.0.0-canary.7f224ddd4.0", - "@material/notched-outline": "15.0.0-canary.7f224ddd4.0", - "@material/ripple": "15.0.0-canary.7f224ddd4.0", - "@material/rtl": "15.0.0-canary.7f224ddd4.0", - "@material/shape": "15.0.0-canary.7f224ddd4.0", - "@material/theme": "15.0.0-canary.7f224ddd4.0", - "@material/tokens": "15.0.0-canary.7f224ddd4.0", - "@material/typography": "15.0.0-canary.7f224ddd4.0", - "tslib": "^2.1.0" - } - }, - "node_modules/@material/shape": { - "version": "15.0.0-canary.7f224ddd4.0", - "resolved": "https://registry.npmjs.org/@material/shape/-/shape-15.0.0-canary.7f224ddd4.0.tgz", - "integrity": "sha512-8z8l1W3+cymObunJoRhwFPKZ+FyECfJ4MJykNiaZq7XJFZkV6xNmqAVrrbQj93FtLsECn9g4PjjIomguVn/OEw==", - "dependencies": { - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/rtl": "15.0.0-canary.7f224ddd4.0", - "@material/theme": "15.0.0-canary.7f224ddd4.0", - "tslib": "^2.1.0" - } - }, - "node_modules/@material/slider": { - "version": "15.0.0-canary.7f224ddd4.0", - "resolved": "https://registry.npmjs.org/@material/slider/-/slider-15.0.0-canary.7f224ddd4.0.tgz", - "integrity": "sha512-QU/WSaSWlLKQRqOhJrPgm29wqvvzRusMqwAcrCh1JTrCl+xwJ43q5WLDfjYhubeKtrEEgGu9tekkAiYfMG7EBw==", - "dependencies": { - "@material/animation": "15.0.0-canary.7f224ddd4.0", - "@material/base": "15.0.0-canary.7f224ddd4.0", - "@material/dom": "15.0.0-canary.7f224ddd4.0", - "@material/elevation": "15.0.0-canary.7f224ddd4.0", - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/ripple": "15.0.0-canary.7f224ddd4.0", - "@material/rtl": "15.0.0-canary.7f224ddd4.0", - "@material/theme": "15.0.0-canary.7f224ddd4.0", - "@material/tokens": "15.0.0-canary.7f224ddd4.0", - "@material/typography": "15.0.0-canary.7f224ddd4.0", - "tslib": "^2.1.0" - } - }, - "node_modules/@material/snackbar": { - "version": "15.0.0-canary.7f224ddd4.0", - "resolved": "https://registry.npmjs.org/@material/snackbar/-/snackbar-15.0.0-canary.7f224ddd4.0.tgz", - "integrity": "sha512-sm7EbVKddaXpT/aXAYBdPoN0k8yeg9+dprgBUkrdqGzWJAeCkxb4fv2B3He88YiCtvkTz2KLY4CThPQBSEsMFQ==", - "dependencies": { - "@material/animation": "15.0.0-canary.7f224ddd4.0", - "@material/base": "15.0.0-canary.7f224ddd4.0", - "@material/button": "15.0.0-canary.7f224ddd4.0", - "@material/dom": "15.0.0-canary.7f224ddd4.0", - "@material/elevation": "15.0.0-canary.7f224ddd4.0", - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/icon-button": "15.0.0-canary.7f224ddd4.0", - "@material/ripple": "15.0.0-canary.7f224ddd4.0", - "@material/rtl": "15.0.0-canary.7f224ddd4.0", - "@material/shape": "15.0.0-canary.7f224ddd4.0", - "@material/theme": "15.0.0-canary.7f224ddd4.0", - "@material/tokens": "15.0.0-canary.7f224ddd4.0", - "@material/typography": "15.0.0-canary.7f224ddd4.0", - "tslib": "^2.1.0" - } - }, - "node_modules/@material/switch": { - "version": "15.0.0-canary.7f224ddd4.0", - "resolved": "https://registry.npmjs.org/@material/switch/-/switch-15.0.0-canary.7f224ddd4.0.tgz", - "integrity": "sha512-lEDJfRvkVyyeHWIBfoxYjJVl+WlEAE2kZ/+6OqB1FW0OV8ftTODZGhHRSzjVBA1/p4FPuhAtKtoK9jTpa4AZjA==", - "dependencies": { - "@material/animation": "15.0.0-canary.7f224ddd4.0", - "@material/base": "15.0.0-canary.7f224ddd4.0", - "@material/density": "15.0.0-canary.7f224ddd4.0", - "@material/dom": "15.0.0-canary.7f224ddd4.0", - "@material/elevation": "15.0.0-canary.7f224ddd4.0", - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/focus-ring": "15.0.0-canary.7f224ddd4.0", - "@material/ripple": "15.0.0-canary.7f224ddd4.0", - "@material/rtl": "15.0.0-canary.7f224ddd4.0", - "@material/shape": "15.0.0-canary.7f224ddd4.0", - "@material/theme": "15.0.0-canary.7f224ddd4.0", - "@material/tokens": "15.0.0-canary.7f224ddd4.0", - "safevalues": "^0.3.4", - "tslib": "^2.1.0" - } - }, - "node_modules/@material/tab": { - "version": "15.0.0-canary.7f224ddd4.0", - "resolved": "https://registry.npmjs.org/@material/tab/-/tab-15.0.0-canary.7f224ddd4.0.tgz", - "integrity": "sha512-E1xGACImyCLurhnizyOTCgOiVezce4HlBFAI6YhJo/AyVwjN2Dtas4ZLQMvvWWqpyhITNkeYdOchwCC1mrz3AQ==", - "dependencies": { - "@material/base": "15.0.0-canary.7f224ddd4.0", - "@material/elevation": "15.0.0-canary.7f224ddd4.0", - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/focus-ring": "15.0.0-canary.7f224ddd4.0", - "@material/ripple": "15.0.0-canary.7f224ddd4.0", - "@material/rtl": "15.0.0-canary.7f224ddd4.0", - "@material/tab-indicator": "15.0.0-canary.7f224ddd4.0", - "@material/theme": "15.0.0-canary.7f224ddd4.0", - "@material/tokens": "15.0.0-canary.7f224ddd4.0", - "@material/typography": "15.0.0-canary.7f224ddd4.0", - "tslib": "^2.1.0" - } - }, - "node_modules/@material/tab-bar": { - "version": "15.0.0-canary.7f224ddd4.0", - "resolved": "https://registry.npmjs.org/@material/tab-bar/-/tab-bar-15.0.0-canary.7f224ddd4.0.tgz", - "integrity": "sha512-p1Asb2NzrcECvAQU3b2SYrpyJGyJLQWR+nXTYzDKE8WOpLIRCXap2audNqD7fvN/A20UJ1J8U01ptrvCkwJ4eA==", - "dependencies": { - "@material/animation": "15.0.0-canary.7f224ddd4.0", - "@material/base": "15.0.0-canary.7f224ddd4.0", - "@material/density": "15.0.0-canary.7f224ddd4.0", - "@material/elevation": "15.0.0-canary.7f224ddd4.0", - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/tab": "15.0.0-canary.7f224ddd4.0", - "@material/tab-indicator": "15.0.0-canary.7f224ddd4.0", - "@material/tab-scroller": "15.0.0-canary.7f224ddd4.0", - "@material/theme": "15.0.0-canary.7f224ddd4.0", - "@material/tokens": "15.0.0-canary.7f224ddd4.0", - "@material/typography": "15.0.0-canary.7f224ddd4.0", - "tslib": "^2.1.0" - } - }, - "node_modules/@material/tab-indicator": { - "version": "15.0.0-canary.7f224ddd4.0", - "resolved": "https://registry.npmjs.org/@material/tab-indicator/-/tab-indicator-15.0.0-canary.7f224ddd4.0.tgz", - "integrity": "sha512-h9Td3MPqbs33spcPS7ecByRHraYgU4tNCZpZzZXw31RypjKvISDv/PS5wcA4RmWqNGih78T7xg4QIGsZg4Pk4w==", - "dependencies": { - "@material/animation": "15.0.0-canary.7f224ddd4.0", - "@material/base": "15.0.0-canary.7f224ddd4.0", - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/theme": "15.0.0-canary.7f224ddd4.0", - "tslib": "^2.1.0" - } - }, - "node_modules/@material/tab-scroller": { - "version": "15.0.0-canary.7f224ddd4.0", - "resolved": "https://registry.npmjs.org/@material/tab-scroller/-/tab-scroller-15.0.0-canary.7f224ddd4.0.tgz", - "integrity": "sha512-LFeYNjQpdXecwECd8UaqHYbhscDCwhGln5Yh+3ctvcEgvmDPNjhKn/DL3sWprWvG8NAhP6sHMrsGhQFVdCWtTg==", - "dependencies": { - "@material/animation": "15.0.0-canary.7f224ddd4.0", - "@material/base": "15.0.0-canary.7f224ddd4.0", - "@material/dom": "15.0.0-canary.7f224ddd4.0", - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/tab": "15.0.0-canary.7f224ddd4.0", - "tslib": "^2.1.0" - } - }, - "node_modules/@material/textfield": { - "version": "15.0.0-canary.7f224ddd4.0", - "resolved": "https://registry.npmjs.org/@material/textfield/-/textfield-15.0.0-canary.7f224ddd4.0.tgz", - "integrity": "sha512-AExmFvgE5nNF0UA4l2cSzPghtxSUQeeoyRjFLHLy+oAaE4eKZFrSy0zEpqPeWPQpEMDZk+6Y+6T3cOFYBeSvsw==", - "dependencies": { - "@material/animation": "15.0.0-canary.7f224ddd4.0", - "@material/base": "15.0.0-canary.7f224ddd4.0", - "@material/density": "15.0.0-canary.7f224ddd4.0", - "@material/dom": "15.0.0-canary.7f224ddd4.0", - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/floating-label": "15.0.0-canary.7f224ddd4.0", - "@material/line-ripple": "15.0.0-canary.7f224ddd4.0", - "@material/notched-outline": "15.0.0-canary.7f224ddd4.0", - "@material/ripple": "15.0.0-canary.7f224ddd4.0", - "@material/rtl": "15.0.0-canary.7f224ddd4.0", - "@material/shape": "15.0.0-canary.7f224ddd4.0", - "@material/theme": "15.0.0-canary.7f224ddd4.0", - "@material/tokens": "15.0.0-canary.7f224ddd4.0", - "@material/typography": "15.0.0-canary.7f224ddd4.0", - "tslib": "^2.1.0" - } - }, - "node_modules/@material/theme": { - "version": "15.0.0-canary.7f224ddd4.0", - "resolved": "https://registry.npmjs.org/@material/theme/-/theme-15.0.0-canary.7f224ddd4.0.tgz", - "integrity": "sha512-hs45hJoE9yVnoVOcsN1jklyOa51U4lzWsEnQEuJTPOk2+0HqCQ0yv/q0InpSnm2i69fNSyZC60+8HADZGF8ugQ==", - "dependencies": { - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "tslib": "^2.1.0" - } - }, - "node_modules/@material/tokens": { - "version": "15.0.0-canary.7f224ddd4.0", - "resolved": "https://registry.npmjs.org/@material/tokens/-/tokens-15.0.0-canary.7f224ddd4.0.tgz", - "integrity": "sha512-r9TDoicmcT7FhUXC4eYMFnt9TZsz0G8T3wXvkKncLppYvZ517gPyD/1+yhuGfGOxAzxTrM66S/oEc1fFE2q4hw==", - "dependencies": { - "@material/elevation": "15.0.0-canary.7f224ddd4.0" - } - }, - "node_modules/@material/tooltip": { - "version": "15.0.0-canary.7f224ddd4.0", - "resolved": "https://registry.npmjs.org/@material/tooltip/-/tooltip-15.0.0-canary.7f224ddd4.0.tgz", - "integrity": "sha512-8qNk3pmPLTnam3XYC1sZuplQXW9xLn4Z4MI3D+U17Q7pfNZfoOugGr+d2cLA9yWAEjVJYB0mj8Yu86+udo4N9w==", - "dependencies": { - "@material/animation": "15.0.0-canary.7f224ddd4.0", - "@material/base": "15.0.0-canary.7f224ddd4.0", - "@material/button": "15.0.0-canary.7f224ddd4.0", - "@material/dom": "15.0.0-canary.7f224ddd4.0", - "@material/elevation": "15.0.0-canary.7f224ddd4.0", - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/rtl": "15.0.0-canary.7f224ddd4.0", - "@material/shape": "15.0.0-canary.7f224ddd4.0", - "@material/theme": "15.0.0-canary.7f224ddd4.0", - "@material/tokens": "15.0.0-canary.7f224ddd4.0", - "@material/typography": "15.0.0-canary.7f224ddd4.0", - "safevalues": "^0.3.4", - "tslib": "^2.1.0" - } - }, - "node_modules/@material/top-app-bar": { - "version": "15.0.0-canary.7f224ddd4.0", - "resolved": "https://registry.npmjs.org/@material/top-app-bar/-/top-app-bar-15.0.0-canary.7f224ddd4.0.tgz", - "integrity": "sha512-SARR5/ClYT4CLe9qAXakbr0i0cMY0V3V4pe3ElIJPfL2Z2c4wGR1mTR8m2LxU1MfGKK8aRoUdtfKaxWejp+eNA==", - "dependencies": { - "@material/animation": "15.0.0-canary.7f224ddd4.0", - "@material/base": "15.0.0-canary.7f224ddd4.0", - "@material/elevation": "15.0.0-canary.7f224ddd4.0", - "@material/ripple": "15.0.0-canary.7f224ddd4.0", - "@material/rtl": "15.0.0-canary.7f224ddd4.0", - "@material/shape": "15.0.0-canary.7f224ddd4.0", - "@material/theme": "15.0.0-canary.7f224ddd4.0", - "@material/typography": "15.0.0-canary.7f224ddd4.0", - "tslib": "^2.1.0" - } - }, - "node_modules/@material/touch-target": { - "version": "15.0.0-canary.7f224ddd4.0", - "resolved": "https://registry.npmjs.org/@material/touch-target/-/touch-target-15.0.0-canary.7f224ddd4.0.tgz", - "integrity": "sha512-BJo/wFKHPYLGsRaIpd7vsQwKr02LtO2e89Psv0on/p0OephlNIgeB9dD9W+bQmaeZsZ6liKSKRl6wJWDiK71PA==", - "dependencies": { - "@material/base": "15.0.0-canary.7f224ddd4.0", - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/rtl": "15.0.0-canary.7f224ddd4.0", - "@material/theme": "15.0.0-canary.7f224ddd4.0", - "tslib": "^2.1.0" - } - }, - "node_modules/@material/typography": { - "version": "15.0.0-canary.7f224ddd4.0", - "resolved": "https://registry.npmjs.org/@material/typography/-/typography-15.0.0-canary.7f224ddd4.0.tgz", - "integrity": "sha512-kBaZeCGD50iq1DeRRH5OM5Jl7Gdk+/NOfKArkY4ksBZvJiStJ7ACAhpvb8MEGm4s3jvDInQFLsDq3hL+SA79sQ==", - "dependencies": { - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/theme": "15.0.0-canary.7f224ddd4.0", - "tslib": "^2.1.0" - } + "node_modules/@msgpackr-extract/msgpackr-extract-win32-x64": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-3.0.3.tgz", + "integrity": "sha512-x0fWaQtYp4E6sktbsdAqnehxDgEc/VwM7uLsRCYWaiGu0ykYdZPiS8zCWdnjHwyiumousxfBm4SO31eXqwEZhQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] }, "node_modules/@ngtools/webpack": { - "version": "17.3.6", - "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-17.3.6.tgz", - "integrity": "sha512-equxbgh2DKzZtiFMoVf1KD4yJcH1q8lpqQ/GSPPQUvONcmHrr+yqdRUdaJ7oZCyCYmXF/nByBxtMKtJr6nKZVg==", + "version": "18.2.8", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-18.2.8.tgz", + "integrity": "sha512-sq0kI8gEen4QlM6X8XqOYy7j4B8iLCYNo+iKxatV36ts4AXH0MuVkP56+oMaoH5oZNoSqd0RlfnotEHfvJAr8A==", "dev": true, + "license": "MIT", "engines": { - "node": "^18.13.0 || >=20.9.0", + "node": "^18.19.1 || ^20.11.1 || >=22.0.0", "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", "yarn": ">= 1.13.0" }, "peerDependencies": { - "@angular/compiler-cli": "^17.0.0", - "typescript": ">=5.2 <5.5", + "@angular/compiler-cli": "^18.0.0", + "typescript": ">=5.4 <5.6", "webpack": "^5.54.0" } }, @@ -5591,6 +6166,7 @@ "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, + "license": "MIT", "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" @@ -5604,6 +6180,7 @@ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "dev": true, + "license": "MIT", "engines": { "node": ">= 8" } @@ -5613,6 +6190,7 @@ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, + "license": "MIT", "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" @@ -5621,11 +6199,22 @@ "node": ">= 8" } }, + "node_modules/@nolyfill/is-core-module": { + "version": "1.0.39", + "resolved": "https://registry.npmjs.org/@nolyfill/is-core-module/-/is-core-module-1.0.39.tgz", + "integrity": "sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.4.0" + } + }, "node_modules/@npmcli/agent": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/@npmcli/agent/-/agent-2.2.2.tgz", "integrity": "sha512-OrcNPXdpSl9UX7qPVRWbmWMCSXrcDa2M9DvrbOTj7ao1S4PlqVFYv9/yLKMkrJKZ/V5A/kDBC690or307i26Og==", "dev": true, + "license": "ISC", "dependencies": { "agent-base": "^7.1.0", "http-proxy-agent": "^7.0.0", @@ -5638,19 +6227,18 @@ } }, "node_modules/@npmcli/agent/node_modules/lru-cache": { - "version": "10.2.2", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", - "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==", + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", "dev": true, - "engines": { - "node": "14 || >=16.14" - } + "license": "ISC" }, "node_modules/@npmcli/fs": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.0.tgz", - "integrity": "sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.1.tgz", + "integrity": "sha512-q9CRWjpHCMIh5sVyefoD1cA7PkvILqCZsnSOEUUivORLjxCO/Irmue2DprETiNgEqktDBZaM1Bi+jrarx1XdCg==", "dev": true, + "license": "ISC", "dependencies": { "semver": "^7.3.5" }, @@ -5659,12 +6247,14 @@ } }, "node_modules/@npmcli/git": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-5.0.6.tgz", - "integrity": "sha512-4x/182sKXmQkf0EtXxT26GEsaOATpD7WVtza5hrYivWZeo6QefC6xq9KAXrnjtFKBZ4rZwR7aX/zClYYXgtwLw==", + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-5.0.8.tgz", + "integrity": "sha512-liASfw5cqhjNW9UFd+ruwwdEf/lbOAQjLL2XY2dFW/bkJheXDYZgOyul/4gVvEV4BWkTXjYGmDqMw9uegdbJNQ==", "dev": true, + "license": "ISC", "dependencies": { "@npmcli/promise-spawn": "^7.0.0", + "ini": "^4.1.3", "lru-cache": "^10.0.1", "npm-pick-manifest": "^9.0.0", "proc-log": "^4.0.0", @@ -5682,33 +6272,24 @@ "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", "dev": true, + "license": "ISC", "engines": { "node": ">=16" } }, "node_modules/@npmcli/git/node_modules/lru-cache": { - "version": "10.2.2", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", - "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==", + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", "dev": true, - "engines": { - "node": "14 || >=16.14" - } - }, - "node_modules/@npmcli/git/node_modules/proc-log": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz", - "integrity": "sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==", - "dev": true, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } + "license": "ISC" }, "node_modules/@npmcli/git/node_modules/which": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", "dev": true, + "license": "ISC", "dependencies": { "isexe": "^3.1.1" }, @@ -5724,6 +6305,7 @@ "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-2.1.0.tgz", "integrity": "sha512-c8UuGLeZpm69BryRykLuKRyKFZYJsZSCT4aVY5ds4omyZqJ172ApzgfKJ5eV/r3HgLdUYgFVe54KSFVjKoe27w==", "dev": true, + "license": "ISC", "dependencies": { "npm-bundled": "^3.0.0", "npm-normalize-package-bin": "^3.0.0" @@ -5740,15 +6322,17 @@ "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-3.0.0.tgz", "integrity": "sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA==", "dev": true, + "license": "ISC", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/@npmcli/package-json": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@npmcli/package-json/-/package-json-5.1.0.tgz", - "integrity": "sha512-1aL4TuVrLS9sf8quCLerU3H9J4vtCtgu8VauYozrmEyU57i/EdKleCnsQ7vpnABIH6c9mnTxcH5sFkO3BlV8wQ==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/@npmcli/package-json/-/package-json-5.2.1.tgz", + "integrity": "sha512-f7zYC6kQautXHvNbLEWgD/uGu1+xCn9izgqBfgItWSx22U0ZDekxN08A1vM8cTxj/cRVe0Q94Ode+tdoYmIOOQ==", "dev": true, + "license": "ISC", "dependencies": { "@npmcli/git": "^5.0.0", "glob": "^10.2.2", @@ -5763,41 +6347,48 @@ } }, "node_modules/@npmcli/package-json/node_modules/glob": { - "version": "10.3.12", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.12.tgz", - "integrity": "sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==", + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", "dev": true, + "license": "ISC", "dependencies": { "foreground-child": "^3.1.0", - "jackspeak": "^2.3.6", - "minimatch": "^9.0.1", - "minipass": "^7.0.4", - "path-scurry": "^1.10.2" + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" }, "bin": { "glob": "dist/esm/bin.mjs" }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@npmcli/package-json/node_modules/proc-log": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz", - "integrity": "sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==", + "node_modules/@npmcli/package-json/node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", "dev": true, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" } }, "node_modules/@npmcli/promise-spawn": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-7.0.1.tgz", - "integrity": "sha512-P4KkF9jX3y+7yFUxgcUdDtLy+t4OlDGuEBLNs57AZsfSfg+uV6MLndqGpnl4831ggaEdXwR50XFoZP4VFtHolg==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-7.0.2.tgz", + "integrity": "sha512-xhfYPXoV5Dy4UkY0D+v2KkwvnDfiA/8Mt3sWCGI/hM03NsYIH8ZaG6QzS9x7pje5vHZBZJ2v6VRFVTWACnqcmQ==", "dev": true, + "license": "ISC", "dependencies": { "which": "^4.0.0" }, @@ -5810,6 +6401,7 @@ "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", "dev": true, + "license": "ISC", "engines": { "node": ">=16" } @@ -5819,6 +6411,7 @@ "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", "dev": true, + "license": "ISC", "dependencies": { "isexe": "^3.1.1" }, @@ -5830,24 +6423,27 @@ } }, "node_modules/@npmcli/redact": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@npmcli/redact/-/redact-1.1.0.tgz", - "integrity": "sha512-PfnWuOkQgu7gCbnSsAisaX7hKOdZ4wSAhAzH3/ph5dSGau52kCRrMMGbiSQLwyTZpgldkZ49b0brkOr1AzGBHQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/redact/-/redact-2.0.1.tgz", + "integrity": "sha512-YgsR5jCQZhVmTJvjduTOIHph0L73pK8xwMVaDY0PatySqVM9AZj93jpoXYSJqfHFxFkN9dmqTw6OiqExsS3LPw==", "dev": true, + "license": "ISC", "engines": { "node": "^16.14.0 || >=18.0.0" } }, "node_modules/@npmcli/run-script": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-7.0.4.tgz", - "integrity": "sha512-9ApYM/3+rBt9V80aYg6tZfzj3UWdiYyCt7gJUD1VJKvWF5nwKDSICXbYIQbspFTq6TOpbsEtIC0LArB8d9PFmg==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-8.1.0.tgz", + "integrity": "sha512-y7efHHwghQfk28G2z3tlZ67pLG0XdfYbcVG26r7YIXALRsrVQcTq4/tdenSmdOrEsNahIYA/eh8aEVROWGFUDg==", "dev": true, + "license": "ISC", "dependencies": { "@npmcli/node-gyp": "^3.0.0", "@npmcli/package-json": "^5.0.0", "@npmcli/promise-spawn": "^7.0.0", "node-gyp": "^10.0.0", + "proc-log": "^4.0.0", "which": "^4.0.0" }, "engines": { @@ -5859,6 +6455,7 @@ "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", "dev": true, + "license": "ISC", "engines": { "node": ">=16" } @@ -5868,6 +6465,7 @@ "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", "dev": true, + "license": "ISC", "dependencies": { "isexe": "^3.1.1" }, @@ -5878,50 +6476,25 @@ "node": "^16.13.0 || >=18.0.0" } }, - "node_modules/@peculiar/asn1-schema": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/@peculiar/asn1-schema/-/asn1-schema-2.3.8.tgz", - "integrity": "sha512-ULB1XqHKx1WBU/tTFIA+uARuRoBVZ4pNdOA878RDrRbBfBGcSzi5HBkdScC6ZbHn8z7L8gmKCgPC1LHRrP46tA==", + "node_modules/@phenomnomnominal/tsquery": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/@phenomnomnominal/tsquery/-/tsquery-6.1.3.tgz", + "integrity": "sha512-CEqpJ872StsxRmwv9ePCZ4BCisrJSlREUC5XxIRYxhvODt4aQoJFFmjTgaP6meyKiiXxxN/VWPZ58j4yHXRkmw==", "dev": true, + "license": "MIT", "dependencies": { - "asn1js": "^3.0.5", - "pvtsutils": "^1.3.5", - "tslib": "^2.6.2" - } - }, - "node_modules/@peculiar/json-schema": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/@peculiar/json-schema/-/json-schema-1.1.12.tgz", - "integrity": "sha512-coUfuoMeIB7B8/NMekxaDzLhaYmp0HZNPEjYRm9goRou8UZIC3z21s0sL9AWoCw4EG876QyO3kYrc61WNF9B/w==", - "dev": true, - "dependencies": { - "tslib": "^2.0.0" + "@types/esquery": "^1.5.0", + "esquery": "^1.5.0" }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@peculiar/webcrypto": { - "version": "1.4.6", - "resolved": "https://registry.npmjs.org/@peculiar/webcrypto/-/webcrypto-1.4.6.tgz", - "integrity": "sha512-YBcMfqNSwn3SujUJvAaySy5tlYbYm6tVt9SKoXu8BaTdKGROiJDgPR3TXpZdAKUfklzm3lRapJEAltiMQtBgZg==", - "dev": true, - "dependencies": { - "@peculiar/asn1-schema": "^2.3.8", - "@peculiar/json-schema": "^1.1.12", - "pvtsutils": "^1.3.5", - "tslib": "^2.6.2", - "webcrypto-core": "^1.7.9" - }, - "engines": { - "node": ">=10.12.0" + "peerDependencies": { + "typescript": "^3 || ^4 || ^5" } }, "node_modules/@pkgjs/parseargs": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", - "dev": true, + "license": "MIT", "optional": true, "engines": { "node": ">=14" @@ -5932,6 +6505,7 @@ "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.1.1.tgz", "integrity": "sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==", "dev": true, + "license": "MIT", "engines": { "node": "^12.20.0 || ^14.18.0 || >=16.0.0" }, @@ -5940,19 +6514,20 @@ } }, "node_modules/@puppeteer/browsers": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.2.3.tgz", - "integrity": "sha512-bJ0UBsk0ESOs6RFcLXOt99a3yTDcOKlzfjad+rhFwdaG1Lu/Wzq58GHYCDTlZ9z6mldf4g+NTb+TXEfe0PpnsQ==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.4.0.tgz", + "integrity": "sha512-x8J1csfIygOwf6D6qUAZ0ASk3z63zPb7wkNeHRerCMh82qWKUrOgkuP005AJC8lDL6/evtXETGEJVcwykKT4/g==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "debug": "4.3.4", - "extract-zip": "2.0.1", - "progress": "2.0.3", - "proxy-agent": "6.4.0", - "semver": "7.6.0", - "tar-fs": "3.0.5", - "unbzip2-stream": "1.4.3", - "yargs": "17.7.2" + "debug": "^4.3.6", + "extract-zip": "^2.0.1", + "progress": "^2.0.3", + "proxy-agent": "^6.4.0", + "semver": "^7.6.3", + "tar-fs": "^3.0.6", + "unbzip2-stream": "^1.4.3", + "yargs": "^17.7.2" }, "bin": { "browsers": "lib/cjs/main-cli.js" @@ -5962,242 +6537,268 @@ } }, "node_modules/@repeaterjs/repeater": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@repeaterjs/repeater/-/repeater-3.0.5.tgz", - "integrity": "sha512-l3YHBLAol6d/IKnB9LhpD0cEZWAoe3eFKUyTYWmFmCO2Q/WOckxLQAUyMZWwZV2M/m3+4vgRoaolFqaII82/TA==", - "dev": true + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@repeaterjs/repeater/-/repeater-3.0.6.tgz", + "integrity": "sha512-Javneu5lsuhwNCryN+pXH93VPQ8g0dBX7wItHFgYiwQmzE1sVdg5tWHiOgHywzL2W21XQopa7IwIEnNbmeUJYA==", + "dev": true, + "license": "MIT" }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.17.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.17.2.tgz", - "integrity": "sha512-NM0jFxY8bB8QLkoKxIQeObCaDlJKewVlIEkuyYKm5An1tdVZ966w2+MPQ2l8LBZLjR+SgyV+nRkTIunzOYBMLQ==", + "version": "4.22.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.22.4.tgz", + "integrity": "sha512-Fxamp4aEZnfPOcGA8KSNEohV8hX7zVHOemC8jVBoBUHu5zpJK/Eu3uJwt6BMgy9fkvzxDaurgj96F/NiLukF2w==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.17.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.17.2.tgz", - "integrity": "sha512-yeX/Usk7daNIVwkq2uGoq2BYJKZY1JfyLTaHO/jaiSwi/lsf8fTFoQW/n6IdAsx5tx+iotu2zCJwz8MxI6D/Bw==", + "version": "4.22.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.22.4.tgz", + "integrity": "sha512-VXoK5UMrgECLYaMuGuVTOx5kcuap1Jm8g/M83RnCHBKOqvPPmROFJGQaZhGccnsFtfXQ3XYa4/jMCJvZnbJBdA==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.17.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.17.2.tgz", - "integrity": "sha512-kcMLpE6uCwls023+kknm71ug7MZOrtXo+y5p/tsg6jltpDtgQY1Eq5sGfHcQfb+lfuKwhBmEURDga9N0ol4YPw==", + "version": "4.22.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.22.4.tgz", + "integrity": "sha512-xMM9ORBqu81jyMKCDP+SZDhnX2QEVQzTcC6G18KlTQEzWK8r/oNZtKuZaCcHhnsa6fEeOBionoyl5JsAbE/36Q==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.17.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.17.2.tgz", - "integrity": "sha512-AtKwD0VEx0zWkL0ZjixEkp5tbNLzX+FCqGG1SvOu993HnSz4qDI6S4kGzubrEJAljpVkhRSlg5bzpV//E6ysTQ==", + "version": "4.22.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.22.4.tgz", + "integrity": "sha512-aJJyYKQwbHuhTUrjWjxEvGnNNBCnmpHDvrb8JFDbeSH3m2XdHcxDd3jthAzvmoI8w/kSjd2y0udT+4okADsZIw==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.17.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.17.2.tgz", - "integrity": "sha512-3reX2fUHqN7sffBNqmEyMQVj/CKhIHZd4y631duy0hZqI8Qoqf6lTtmAKvJFYa6bhU95B1D0WgzHkmTg33In0A==", + "version": "4.22.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.22.4.tgz", + "integrity": "sha512-j63YtCIRAzbO+gC2L9dWXRh5BFetsv0j0va0Wi9epXDgU/XUi5dJKo4USTttVyK7fGw2nPWK0PbAvyliz50SCQ==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.17.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.17.2.tgz", - "integrity": "sha512-uSqpsp91mheRgw96xtyAGP9FW5ChctTFEoXP0r5FAzj/3ZRv3Uxjtc7taRQSaQM/q85KEKjKsZuiZM3GyUivRg==", + "version": "4.22.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.22.4.tgz", + "integrity": "sha512-dJnWUgwWBX1YBRsuKKMOlXCzh2Wu1mlHzv20TpqEsfdZLb3WoJW2kIEsGwLkroYf24IrPAvOT/ZQ2OYMV6vlrg==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.17.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.17.2.tgz", - "integrity": "sha512-EMMPHkiCRtE8Wdk3Qhtciq6BndLtstqZIroHiiGzB3C5LDJmIZcSzVtLRbwuXuUft1Cnv+9fxuDtDxz3k3EW2A==", + "version": "4.22.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.22.4.tgz", + "integrity": "sha512-AdPRoNi3NKVLolCN/Sp4F4N1d98c4SBnHMKoLuiG6RXgoZ4sllseuGioszumnPGmPM2O7qaAX/IJdeDU8f26Aw==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.17.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.17.2.tgz", - "integrity": "sha512-NMPylUUZ1i0z/xJUIx6VUhISZDRT+uTWpBcjdv0/zkp7b/bQDF+NfnfdzuTiB1G6HTodgoFa93hp0O1xl+/UbA==", + "version": "4.22.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.22.4.tgz", + "integrity": "sha512-Gl0AxBtDg8uoAn5CCqQDMqAx22Wx22pjDOjBdmG0VIWX3qUBHzYmOKh8KXHL4UpogfJ14G4wk16EQogF+v8hmA==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.17.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.17.2.tgz", - "integrity": "sha512-T19My13y8uYXPw/L/k0JYaX1fJKFT/PWdXiHr8mTbXWxjVF1t+8Xl31DgBBvEKclw+1b00Chg0hxE2O7bTG7GQ==", + "version": "4.22.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.22.4.tgz", + "integrity": "sha512-3aVCK9xfWW1oGQpTsYJJPF6bfpWfhbRnhdlyhak2ZiyFLDaayz0EP5j9V1RVLAAxlmWKTDfS9wyRyY3hvhPoOg==", "cpu": [ "ppc64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.17.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.17.2.tgz", - "integrity": "sha512-BOaNfthf3X3fOWAB+IJ9kxTgPmMqPPH5f5k2DcCsRrBIbWnaJCgX2ll77dV1TdSy9SaXTR5iDXRL8n7AnoP5cg==", + "version": "4.22.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.22.4.tgz", + "integrity": "sha512-ePYIir6VYnhgv2C5Xe9u+ico4t8sZWXschR6fMgoPUK31yQu7hTEJb7bCqivHECwIClJfKgE7zYsh1qTP3WHUA==", "cpu": [ "riscv64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.17.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.17.2.tgz", - "integrity": "sha512-W0UP/x7bnn3xN2eYMql2T/+wpASLE5SjObXILTMPUBDB/Fg/FxC+gX4nvCfPBCbNhz51C+HcqQp2qQ4u25ok6g==", + "version": "4.22.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.22.4.tgz", + "integrity": "sha512-GqFJ9wLlbB9daxhVlrTe61vJtEY99/xB3C8e4ULVsVfflcpmR6c8UZXjtkMA6FhNONhj2eA5Tk9uAVw5orEs4Q==", "cpu": [ "s390x" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.17.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.17.2.tgz", - "integrity": "sha512-Hy7pLwByUOuyaFC6mAr7m+oMC+V7qyifzs/nW2OJfC8H4hbCzOX07Ov0VFk/zP3kBsELWNFi7rJtgbKYsav9QQ==", + "version": "4.22.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.22.4.tgz", + "integrity": "sha512-87v0ol2sH9GE3cLQLNEy0K/R0pz1nvg76o8M5nhMR0+Q+BBGLnb35P0fVz4CQxHYXaAOhE8HhlkaZfsdUOlHwg==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.17.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.17.2.tgz", - "integrity": "sha512-h1+yTWeYbRdAyJ/jMiVw0l6fOOm/0D1vNLui9iPuqgRGnXA0u21gAqOyB5iHjlM9MMfNOm9RHCQ7zLIzT0x11Q==", + "version": "4.22.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.22.4.tgz", + "integrity": "sha512-UV6FZMUgePDZrFjrNGIWzDo/vABebuXBhJEqrHxrGiU6HikPy0Z3LfdtciIttEUQfuDdCn8fqh7wiFJjCNwO+g==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.17.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.17.2.tgz", - "integrity": "sha512-tmdtXMfKAjy5+IQsVtDiCfqbynAQE/TQRpWdVataHmhMb9DCoJxp9vLcCBjEQWMiUYxO1QprH/HbY9ragCEFLA==", + "version": "4.22.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.22.4.tgz", + "integrity": "sha512-BjI+NVVEGAXjGWYHz/vv0pBqfGoUH0IGZ0cICTn7kB9PyjrATSkX+8WkguNjWoj2qSr1im/+tTGRaY+4/PdcQw==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.17.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.17.2.tgz", - "integrity": "sha512-7II/QCSTAHuE5vdZaQEwJq2ZACkBpQDOmQsE6D6XUbnBHW8IAhm4eTufL6msLJorzrHDFv3CF8oCA/hSIRuZeQ==", + "version": "4.22.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.22.4.tgz", + "integrity": "sha512-SiWG/1TuUdPvYmzmYnmd3IEifzR61Tragkbx9D3+R8mzQqDBz8v+BvZNDlkiTtI9T15KYZhP0ehn3Dld4n9J5g==", "cpu": [ "ia32" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.17.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.17.2.tgz", - "integrity": "sha512-TGGO7v7qOq4CYmSBVEYpI1Y5xDuCEnbVC5Vth8mOsW0gDSzxNrVERPc790IGHsrT2dQSimgMr9Ub3Y1Jci5/8w==", + "version": "4.22.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.22.4.tgz", + "integrity": "sha512-j8pPKp53/lq9lMXN57S8cFz0MynJk8OWNuUnXct/9KCpKU7DgU3bYMJhwWmcqC0UU29p8Lr0/7KEVcaM6bf47Q==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" ] }, - "node_modules/@schematics/angular": { - "version": "17.3.6", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-17.3.6.tgz", - "integrity": "sha512-jCNZdjHSVrI8TrrCnCoXC8GYvQRj7zh+SDdmm91Ve8dbikYNmBOKYLuPaCTsmojWx7ytv962yLlgKzpaa2bbfw==", + "node_modules/@rtsao/scc": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", + "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", "dev": true, + "license": "MIT" + }, + "node_modules/@schematics/angular": { + "version": "18.2.8", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-18.2.8.tgz", + "integrity": "sha512-62Sr7/j/dlhZorxH4GzQgpJy0s162BVts0Q7knZuEacP4VL+IWOUE1NS9OFkh/cbomoyXBdoewkZ5Zd1dVX78w==", + "dev": true, + "license": "MIT", "dependencies": { - "@angular-devkit/core": "17.3.6", - "@angular-devkit/schematics": "17.3.6", - "jsonc-parser": "3.2.1" + "@angular-devkit/core": "18.2.8", + "@angular-devkit/schematics": "18.2.8", + "jsonc-parser": "3.3.1" }, "engines": { - "node": "^18.13.0 || >=20.9.0", + "node": "^18.19.1 || ^20.11.1 || >=22.0.0", "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", "yarn": ">= 1.13.0" } }, "node_modules/@sigstore/bundle": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/@sigstore/bundle/-/bundle-2.3.1.tgz", - "integrity": "sha512-eqV17lO3EIFqCWK3969Rz+J8MYrRZKw9IBHpSo6DEcEX2c+uzDFOgHE9f2MnyDpfs48LFO4hXmk9KhQ74JzU1g==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@sigstore/bundle/-/bundle-2.3.2.tgz", + "integrity": "sha512-wueKWDk70QixNLB363yHc2D2ItTgYiMTdPwK8D9dKQMR3ZQ0c35IxP5xnwQ8cNLoCgCRcHf14kE+CLIvNX1zmA==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@sigstore/protobuf-specs": "^0.3.1" + "@sigstore/protobuf-specs": "^0.3.2" }, "engines": { "node": "^16.14.0 || >=18.0.0" @@ -6208,90 +6809,114 @@ "resolved": "https://registry.npmjs.org/@sigstore/core/-/core-1.1.0.tgz", "integrity": "sha512-JzBqdVIyqm2FRQCulY6nbQzMpJJpSiJ8XXWMhtOX9eKgaXXpfNOF53lzQEjIydlStnd/eFtuC1dW4VYdD93oRg==", "dev": true, + "license": "Apache-2.0", "engines": { "node": "^16.14.0 || >=18.0.0" } }, "node_modules/@sigstore/protobuf-specs": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.3.1.tgz", - "integrity": "sha512-aIL8Z9NsMr3C64jyQzE0XlkEyBLpgEJJFDHLVVStkFV5Q3Il/r/YtY6NJWKQ4cy4AE7spP1IX5Jq7VCAxHHMfQ==", + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.3.2.tgz", + "integrity": "sha512-c6B0ehIWxMI8wiS/bj6rHMPqeFvngFV7cDU/MY+B16P9Z3Mp9k8L93eYZ7BYzSickzuqAQqAq0V956b3Ju6mLw==", "dev": true, + "license": "Apache-2.0", "engines": { "node": "^16.14.0 || >=18.0.0" } }, "node_modules/@sigstore/sign": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@sigstore/sign/-/sign-2.3.0.tgz", - "integrity": "sha512-tsAyV6FC3R3pHmKS880IXcDJuiFJiKITO1jxR1qbplcsBkZLBmjrEw5GbC7ikD6f5RU1hr7WnmxB/2kKc1qUWQ==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@sigstore/sign/-/sign-2.3.2.tgz", + "integrity": "sha512-5Vz5dPVuunIIvC5vBb0APwo7qKA4G9yM48kPWJT+OEERs40md5GoUR1yedwpekWZ4m0Hhw44m6zU+ObsON+iDA==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@sigstore/bundle": "^2.3.0", + "@sigstore/bundle": "^2.3.2", "@sigstore/core": "^1.0.0", - "@sigstore/protobuf-specs": "^0.3.1", - "make-fetch-happen": "^13.0.0" + "@sigstore/protobuf-specs": "^0.3.2", + "make-fetch-happen": "^13.0.1", + "proc-log": "^4.2.0", + "promise-retry": "^2.0.1" }, "engines": { "node": "^16.14.0 || >=18.0.0" } }, "node_modules/@sigstore/tuf": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/@sigstore/tuf/-/tuf-2.3.2.tgz", - "integrity": "sha512-mwbY1VrEGU4CO55t+Kl6I7WZzIl+ysSzEYdA1Nv/FTrl2bkeaPXo5PnWZAVfcY2zSdhOpsUTJW67/M2zHXGn5w==", + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/@sigstore/tuf/-/tuf-2.3.4.tgz", + "integrity": "sha512-44vtsveTPUpqhm9NCrbU8CWLe3Vck2HO1PNLw7RIajbB7xhtn5RBPm1VNSCMwqGYHhDsBJG8gDF0q4lgydsJvw==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@sigstore/protobuf-specs": "^0.3.0", - "tuf-js": "^2.2.0" + "@sigstore/protobuf-specs": "^0.3.2", + "tuf-js": "^2.2.1" }, "engines": { "node": "^16.14.0 || >=18.0.0" } }, "node_modules/@sigstore/verify": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@sigstore/verify/-/verify-1.2.0.tgz", - "integrity": "sha512-hQF60nc9yab+Csi4AyoAmilGNfpXT+EXdBgFkP9OgPwIBPwyqVf7JAWPtmqrrrneTmAT6ojv7OlH1f6Ix5BG4Q==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@sigstore/verify/-/verify-1.2.1.tgz", + "integrity": "sha512-8iKx79/F73DKbGfRf7+t4dqrc0bRr0thdPrxAtCKWRm/F0tG71i6O1rvlnScncJLLBZHn3h8M3c1BSUAb9yu8g==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@sigstore/bundle": "^2.3.1", + "@sigstore/bundle": "^2.3.2", "@sigstore/core": "^1.1.0", - "@sigstore/protobuf-specs": "^0.3.1" + "@sigstore/protobuf-specs": "^0.3.2" }, "engines": { "node": "^16.14.0 || >=18.0.0" } }, + "node_modules/@sindresorhus/merge-streams": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-2.3.0.tgz", + "integrity": "sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@socket.io/component-emitter": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz", "integrity": "sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@tootallnate/quickjs-emscripten": { "version": "0.23.0", "resolved": "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz", "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@tufjs/canonical-json": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@tufjs/canonical-json/-/canonical-json-2.0.0.tgz", "integrity": "sha512-yVtV8zsdo8qFHe+/3kw81dSLyF7D576A5cCFCi4X7B39tWT7SekaEFUnvnWJHz+9qO7qJTah1JbrDjWKqFtdWA==", "dev": true, + "license": "MIT", "engines": { "node": "^16.14.0 || >=18.0.0" } }, "node_modules/@tufjs/models": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@tufjs/models/-/models-2.0.0.tgz", - "integrity": "sha512-c8nj8BaOExmZKO2DXhDfegyhSGcG9E/mPN3U13L+/PsoWm1uaGiHHjxqSHQiasDBQwDA3aHuw9+9spYAP1qvvg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@tufjs/models/-/models-2.0.1.tgz", + "integrity": "sha512-92F7/SFyufn4DXsha9+QfKnN03JGqtMFMXgSHbZOo8JG59WkTni7UzAouNQDf7AuP9OAMxVOPQcqG3sB7w+kkg==", "dev": true, + "license": "MIT", "dependencies": { "@tufjs/canonical-json": "2.0.0", - "minimatch": "^9.0.3" + "minimatch": "^9.0.4" }, "engines": { "node": "^16.14.0 || >=18.0.0" @@ -6302,6 +6927,7 @@ "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", "dev": true, + "license": "MIT", "dependencies": { "@types/connect": "*", "@types/node": "*" @@ -6312,6 +6938,7 @@ "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.13.tgz", "integrity": "sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } @@ -6321,6 +6948,7 @@ "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } @@ -6330,6 +6958,7 @@ "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz", "integrity": "sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==", "dev": true, + "license": "MIT", "dependencies": { "@types/express-serve-static-core": "*", "@types/node": "*" @@ -6339,48 +6968,42 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/cors": { "version": "2.8.17", "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.17.tgz", "integrity": "sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } }, - "node_modules/@types/eslint": { - "version": "8.56.10", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.10.tgz", - "integrity": "sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ==", + "node_modules/@types/esquery": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@types/esquery/-/esquery-1.5.4.tgz", + "integrity": "sha512-yYO4Q8H+KJHKW1rEeSzHxcZi90durqYgWVfnh5K6ZADVBjBv2e1NEveYX5yT2bffgN7RqzH3k9930m+i2yBoMA==", "dev": true, + "license": "MIT", "dependencies": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "node_modules/@types/eslint-scope": { - "version": "3.7.7", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", - "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", - "dev": true, - "dependencies": { - "@types/eslint": "*", "@types/estree": "*" } }, "node_modules/@types/estree": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", - "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", - "dev": true + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", + "dev": true, + "license": "MIT" }, "node_modules/@types/express": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/body-parser": "*", "@types/express-serve-static-core": "^4.17.33", @@ -6389,10 +7012,24 @@ } }, "node_modules/@types/express-serve-static-core": { - "version": "4.19.0", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.0.tgz", - "integrity": "sha512-bGyep3JqPCRry1wq+O5n7oiBgGWmeIJXPjXXCo8EK0u8duZGSYar7cGqd3ML2JUsLGeB7fmc06KYo9fLGWqPvQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-5.0.0.tgz", + "integrity": "sha512-AbXMTZGt40T+KON9/Fdxx0B2WK5hsgxcfXJLr5bFpZ7b4JCex2WyQPTEKdXqfHiY5nKKBScZ7yCoO6Pvgxfvnw==", "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "node_modules/@types/express/node_modules/@types/express-serve-static-core": { + "version": "4.19.6", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.6.tgz", + "integrity": "sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==", + "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*", "@types/qs": "*", @@ -6404,13 +7041,15 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/http-proxy": { - "version": "1.17.14", - "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.14.tgz", - "integrity": "sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w==", + "version": "1.17.15", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.15.tgz", + "integrity": "sha512-25g5atgiVNTIv0LBDTg1H74Hvayx0ajtJPLLcYE3whFv75J0pWNtOBzaXJQgDTmrX1bx5U9YC2w/n65BN1HwRQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } @@ -6419,39 +7058,55 @@ "version": "5.1.4", "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-5.1.4.tgz", "integrity": "sha512-px7OMFO/ncXxixDe1zR13V1iycqWae0MxTaw62RpFlksUi5QuNWgQJFkTQjIOvrmutJbI7Fp2Y2N1F6D2R4G6w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/js-yaml": { "version": "4.0.9", "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.9.tgz", "integrity": "sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/json-schema": { "version": "7.0.15", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/json5": { "version": "0.0.29", "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/mime": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", - "dev": true + "dev": true, + "license": "MIT" + }, + "node_modules/@types/mute-stream": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/@types/mute-stream/-/mute-stream-0.0.4.tgz", + "integrity": "sha512-CPM9nzrCPPJHQNA9keH9CVkVI+WR5kMa+7XEs5jcGQ0VoAGnLv242w8lIVgwAEfmE4oufJRaTc9PNLQl0ioAow==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } }, "node_modules/@types/node": { - "version": "20.12.7", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.7.tgz", - "integrity": "sha512-wq0cICSkRLVaf3UGLMGItu/PtdY7oaXaI/RVU+xliKVOtRna3PRY57ZDfztpDL0n11vfymMUnXv8QwYCO7L1wg==", + "version": "22.7.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.7.5.tgz", + "integrity": "sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ==", "dev": true, + "license": "MIT", "dependencies": { - "undici-types": "~5.26.4" + "undici-types": "~6.19.2" } }, "node_modules/@types/node-forge": { @@ -6459,39 +7114,38 @@ "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.11.tgz", "integrity": "sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } }, "node_modules/@types/qs": { - "version": "6.9.15", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.15.tgz", - "integrity": "sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==", - "dev": true + "version": "6.9.16", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.16.tgz", + "integrity": "sha512-7i+zxXdPD0T4cKDuxCUXJ4wHcsJLwENa6Z3dCu8cfCK743OGy5Nu1RmAGqDPsoTDINVEcdXKRvR/zre+P2Ku1A==", + "dev": true, + "license": "MIT" }, "node_modules/@types/range-parser": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", - "dev": true - }, - "node_modules/@types/semver": { - "version": "7.5.8", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", - "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", - "dev": true + "version": "0.12.2", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz", + "integrity": "sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==", + "dev": true, + "license": "MIT" }, "node_modules/@types/send": { "version": "0.17.4", "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", "dev": true, + "license": "MIT", "dependencies": { "@types/mime": "^1", "@types/node": "*" @@ -6502,6 +7156,7 @@ "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.4.tgz", "integrity": "sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==", "dev": true, + "license": "MIT", "dependencies": { "@types/express": "*" } @@ -6511,6 +7166,7 @@ "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", "dev": true, + "license": "MIT", "dependencies": { "@types/http-errors": "*", "@types/node": "*", @@ -6522,15 +7178,24 @@ "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.36.tgz", "integrity": "sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } }, - "node_modules/@types/ws": { - "version": "8.5.10", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.10.tgz", - "integrity": "sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==", + "node_modules/@types/wrap-ansi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/wrap-ansi/-/wrap-ansi-3.0.0.tgz", + "integrity": "sha512-ltIpx+kM7g/MLRZfkbL7EsCEjfzCcScLpkg37eXEtx5kmrAKBkTJwd1GIAjDSL8wTpM6Hzn5YO4pSb91BEwu1g==", "dev": true, + "license": "MIT" + }, + "node_modules/@types/ws": { + "version": "8.5.12", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.12.tgz", + "integrity": "sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ==", + "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } @@ -6540,39 +7205,39 @@ "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz", "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "@types/node": "*" } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.8.0.tgz", - "integrity": "sha512-gFTT+ezJmkwutUPmB0skOj3GZJtlEGnlssems4AjkVweUPGj7jRwwqg0Hhg7++kPGJqKtTYx+R05Ftww372aIg==", + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.8.1.tgz", + "integrity": "sha512-xfvdgA8AP/vxHgtgU310+WBnLB4uJQ9XdyP17RebG26rLtDrQJV3ZYrcopX91GrHmMoH8bdSwMRh2a//TiJ1jQ==", "dev": true, + "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "7.8.0", - "@typescript-eslint/type-utils": "7.8.0", - "@typescript-eslint/utils": "7.8.0", - "@typescript-eslint/visitor-keys": "7.8.0", - "debug": "^4.3.4", + "@typescript-eslint/scope-manager": "8.8.1", + "@typescript-eslint/type-utils": "8.8.1", + "@typescript-eslint/utils": "8.8.1", + "@typescript-eslint/visitor-keys": "8.8.1", "graphemer": "^1.4.0", "ignore": "^5.3.1", "natural-compare": "^1.4.0", - "semver": "^7.6.0", "ts-api-utils": "^1.3.0" }, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^7.0.0", - "eslint": "^8.56.0" + "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0", + "eslint": "^8.57.0 || ^9.0.0" }, "peerDependenciesMeta": { "typescript": { @@ -6581,26 +7246,27 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.8.0.tgz", - "integrity": "sha512-KgKQly1pv0l4ltcftP59uQZCi4HUYswCLbTqVZEJu7uLX8CTLyswqMLqLN+2QFz4jCptqWVV4SB7vdxcH2+0kQ==", + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.8.1.tgz", + "integrity": "sha512-hQUVn2Lij2NAxVFEdvIGxT9gP1tq2yM83m+by3whWFsWC+1y8pxxxHUFE1UqDu2VsGi2i6RLcv4QvouM84U+ow==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "@typescript-eslint/scope-manager": "7.8.0", - "@typescript-eslint/types": "7.8.0", - "@typescript-eslint/typescript-estree": "7.8.0", - "@typescript-eslint/visitor-keys": "7.8.0", + "@typescript-eslint/scope-manager": "8.8.1", + "@typescript-eslint/types": "8.8.1", + "@typescript-eslint/typescript-estree": "8.8.1", + "@typescript-eslint/visitor-keys": "8.8.1", "debug": "^4.3.4" }, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^8.56.0" + "eslint": "^8.57.0 || ^9.0.0" }, "peerDependenciesMeta": { "typescript": { @@ -6609,16 +7275,17 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.8.0.tgz", - "integrity": "sha512-viEmZ1LmwsGcnr85gIq+FCYI7nO90DVbE37/ll51hjv9aG+YZMb4WDE2fyWpUR4O/UrhGRpYXK/XajcGTk2B8g==", + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.8.1.tgz", + "integrity": "sha512-X4JdU+66Mazev/J0gfXlcC/dV6JI37h+93W9BRYXrSn0hrE64IoWgVkO9MSJgEzoWkxONgaQpICWg8vAN74wlA==", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/types": "7.8.0", - "@typescript-eslint/visitor-keys": "7.8.0" + "@typescript-eslint/types": "8.8.1", + "@typescript-eslint/visitor-keys": "8.8.1" }, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", @@ -6626,26 +7293,24 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.8.0.tgz", - "integrity": "sha512-H70R3AefQDQpz9mGv13Uhi121FNMh+WEaRqcXTX09YEDky21km4dV1ZXJIp8QjXc4ZaVkXVdohvWDzbnbHDS+A==", + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.8.1.tgz", + "integrity": "sha512-qSVnpcbLP8CALORf0za+vjLYj1Wp8HSoiI8zYU5tHxRVj30702Z1Yw4cLwfNKhTPWp5+P+k1pjmD5Zd1nhxiZA==", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "7.8.0", - "@typescript-eslint/utils": "7.8.0", + "@typescript-eslint/typescript-estree": "8.8.1", + "@typescript-eslint/utils": "8.8.1", "debug": "^4.3.4", "ts-api-utils": "^1.3.0" }, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, - "peerDependencies": { - "eslint": "^8.56.0" - }, "peerDependenciesMeta": { "typescript": { "optional": true @@ -6653,12 +7318,13 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.8.0.tgz", - "integrity": "sha512-wf0peJ+ZGlcH+2ZS23aJbOv+ztjeeP8uQ9GgwMJGVLx/Nj9CJt17GWgWWoSmoRVKAX2X+7fzEnAjxdvK2gqCLw==", + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.8.1.tgz", + "integrity": "sha512-WCcTP4SDXzMd23N27u66zTKMuEevH4uzU8C9jf0RO4E04yVHgQgW+r+TeVTNnO1KIfrL8ebgVVYYMMO3+jC55Q==", "dev": true, + "license": "MIT", "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", @@ -6666,22 +7332,23 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.8.0.tgz", - "integrity": "sha512-5pfUCOwK5yjPaJQNy44prjCwtr981dO8Qo9J9PwYXZ0MosgAbfEMB008dJ5sNo3+/BN6ytBPuSvXUg9SAqB0dg==", + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.8.1.tgz", + "integrity": "sha512-A5d1R9p+X+1js4JogdNilDuuq+EHZdsH9MjTVxXOdVFfTJXunKJR/v+fNNyO4TnoOn5HqobzfRlc70NC6HTcdg==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "@typescript-eslint/types": "7.8.0", - "@typescript-eslint/visitor-keys": "7.8.0", + "@typescript-eslint/types": "8.8.1", + "@typescript-eslint/visitor-keys": "8.8.1", "debug": "^4.3.4", - "globby": "^11.1.0", + "fast-glob": "^3.3.2", "is-glob": "^4.0.3", "minimatch": "^9.0.4", "semver": "^7.6.0", "ts-api-utils": "^1.3.0" }, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", @@ -6694,59 +7361,52 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.8.0.tgz", - "integrity": "sha512-L0yFqOCflVqXxiZyXrDr80lnahQfSOfc9ELAAZ75sqicqp2i36kEZZGuUymHNFoYOqxRT05up760b4iGsl02nQ==", + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.8.1.tgz", + "integrity": "sha512-/QkNJDbV0bdL7H7d0/y0qBbV2HTtf0TIyjSDTvvmQEzeVx8jEImEbLuOA4EsvE8gIgqMitns0ifb5uQhMj8d9w==", "dev": true, + "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@types/json-schema": "^7.0.15", - "@types/semver": "^7.5.8", - "@typescript-eslint/scope-manager": "7.8.0", - "@typescript-eslint/types": "7.8.0", - "@typescript-eslint/typescript-estree": "7.8.0", - "semver": "^7.6.0" + "@typescript-eslint/scope-manager": "8.8.1", + "@typescript-eslint/types": "8.8.1", + "@typescript-eslint/typescript-estree": "8.8.1" }, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^8.56.0" + "eslint": "^8.57.0 || ^9.0.0" } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.8.0.tgz", - "integrity": "sha512-q4/gibTNBQNA0lGyYQCmWRS5D15n8rXh4QjK3KV+MBPlTYHpfBUT3D3PaPR/HeNiI9W6R7FvlkcGhNyAoP+caA==", + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.8.1.tgz", + "integrity": "sha512-0/TdC3aeRAsW7MDvYRwEc1Uwm0TIBfzjPFgg60UU2Haj5qsCs9cc3zNgY71edqE3LbWfF/WoZQd3lJoDXFQpag==", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/types": "7.8.0", + "@typescript-eslint/types": "8.8.1", "eslint-visitor-keys": "^3.4.3" }, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@ungap/structured-clone": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", - "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", - "dev": true, - "peer": true - }, "node_modules/@vitejs/plugin-basic-ssl": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@vitejs/plugin-basic-ssl/-/plugin-basic-ssl-1.1.0.tgz", "integrity": "sha512-wO4Dk/rm8u7RNhOf95ZzcEmC9rYOncYgvq4z3duaJrCgjN8BxAnDVyndanfcJZ0O6XZzHz6Q0hTimxTg8Y9g/A==", "dev": true, + "license": "MIT", "engines": { "node": ">=14.6.0" }, @@ -6759,6 +7419,7 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz", "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==", "dev": true, + "license": "MIT", "dependencies": { "@webassemblyjs/helper-numbers": "1.11.6", "@webassemblyjs/helper-wasm-bytecode": "1.11.6" @@ -6768,25 +7429,29 @@ "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@webassemblyjs/helper-api-error": { "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@webassemblyjs/helper-buffer": { "version": "1.12.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz", "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@webassemblyjs/helper-numbers": { "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", "dev": true, + "license": "MIT", "dependencies": { "@webassemblyjs/floating-point-hex-parser": "1.11.6", "@webassemblyjs/helper-api-error": "1.11.6", @@ -6797,13 +7462,15 @@ "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@webassemblyjs/helper-wasm-section": { "version": "1.12.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz", "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==", "dev": true, + "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.12.1", "@webassemblyjs/helper-buffer": "1.12.1", @@ -6816,6 +7483,7 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", "dev": true, + "license": "MIT", "dependencies": { "@xtuc/ieee754": "^1.2.0" } @@ -6825,6 +7493,7 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@xtuc/long": "4.2.2" } @@ -6833,13 +7502,15 @@ "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@webassemblyjs/wasm-edit": { "version": "1.12.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz", "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==", "dev": true, + "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.12.1", "@webassemblyjs/helper-buffer": "1.12.1", @@ -6856,6 +7527,7 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz", "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==", "dev": true, + "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.12.1", "@webassemblyjs/helper-wasm-bytecode": "1.11.6", @@ -6869,6 +7541,7 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz", "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==", "dev": true, + "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.12.1", "@webassemblyjs/helper-buffer": "1.12.1", @@ -6881,6 +7554,7 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz", "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==", "dev": true, + "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.12.1", "@webassemblyjs/helper-api-error": "1.11.6", @@ -6895,47 +7569,47 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz", "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==", "dev": true, + "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.12.1", "@xtuc/long": "4.2.2" } }, - "node_modules/@whatwg-node/events": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/@whatwg-node/events/-/events-0.0.3.tgz", - "integrity": "sha512-IqnKIDWfXBJkvy/k6tzskWTc2NK3LcqHlb+KHGCrjOCH4jfQckRX0NAiIcC/vIqQkzLYw2r2CTSwAxcrtcD6lA==", - "dev": true - }, "node_modules/@whatwg-node/fetch": { - "version": "0.8.8", - "resolved": "https://registry.npmjs.org/@whatwg-node/fetch/-/fetch-0.8.8.tgz", - "integrity": "sha512-CdcjGC2vdKhc13KKxgsc6/616BQ7ooDIgPeTuAiE8qfCnS0mGzcfCOoZXypQSz73nxI+GWc7ZReIAVhxoE1KCg==", + "version": "0.9.21", + "resolved": "https://registry.npmjs.org/@whatwg-node/fetch/-/fetch-0.9.21.tgz", + "integrity": "sha512-Wt0jPb+04JjobK0pAAN7mEHxVHcGA9HoP3OyCsZtyAecNQeADXCZ1MihFwVwjsgaRYuGVmNlsCmLxlG6mor8Gw==", "dev": true, + "license": "MIT", "dependencies": { - "@peculiar/webcrypto": "^1.4.0", - "@whatwg-node/node-fetch": "^0.3.6", - "busboy": "^1.6.0", - "urlpattern-polyfill": "^8.0.0", - "web-streams-polyfill": "^3.2.1" + "@whatwg-node/node-fetch": "^0.5.23", + "urlpattern-polyfill": "^10.0.0" + }, + "engines": { + "node": ">=18.0.0" } }, "node_modules/@whatwg-node/node-fetch": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/@whatwg-node/node-fetch/-/node-fetch-0.3.6.tgz", - "integrity": "sha512-w9wKgDO4C95qnXZRwZTfCmLWqyRnooGjcIwG0wADWjw9/HN0p7dtvtgSvItZtUyNteEvgTrd8QojNEqV6DAGTA==", + "version": "0.5.26", + "resolved": "https://registry.npmjs.org/@whatwg-node/node-fetch/-/node-fetch-0.5.26.tgz", + "integrity": "sha512-4jXDeZ4IH4bylZ6wu14VEx0aDXXhrN4TC279v9rPmn08g4EYekcYf8wdcOOnS9STjDkb6x77/6xBUTqxGgjr8g==", "dev": true, + "license": "MIT", "dependencies": { - "@whatwg-node/events": "^0.0.3", + "@kamilkisiela/fast-url-parser": "^1.1.4", "busboy": "^1.6.0", "fast-querystring": "^1.1.1", - "fast-url-parser": "^1.1.3", - "tslib": "^2.3.1" + "tslib": "^2.6.3" + }, + "engines": { + "node": ">=18.0.0" } }, "node_modules/@wry/caches": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@wry/caches/-/caches-1.0.1.tgz", "integrity": "sha512-bXuaUNLVVkD20wcGBWRyo7j9N3TxePEWFZj2Y+r9OoUzfqmavM84+mFykRicNsBqatba5JLay1t48wxaXaWnlA==", + "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, @@ -6947,6 +7621,7 @@ "version": "0.7.4", "resolved": "https://registry.npmjs.org/@wry/context/-/context-0.7.4.tgz", "integrity": "sha512-jmT7Sb4ZQWI5iyu3lobQxICu2nC/vbUhP0vIdd6tHC9PTfenmRmuIFqktc6GH9cgi+ZHnsLWPvfSvc4DrYmKiQ==", + "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, @@ -6958,6 +7633,7 @@ "version": "0.5.7", "resolved": "https://registry.npmjs.org/@wry/equality/-/equality-0.5.7.tgz", "integrity": "sha512-BRFORjsTuQv5gxcXsuDXx6oGRhuVsEGwZy6LOzRRfgu+eSfxbhUQ9L9YtSEIuIjY/o7g3iWFjrc5eSY1GXP2Dw==", + "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, @@ -6969,6 +7645,7 @@ "version": "0.5.0", "resolved": "https://registry.npmjs.org/@wry/trie/-/trie-0.5.0.tgz", "integrity": "sha512-FNoYzHawTMk/6KMQoEG5O4PuioX19UbwdQKF44yw0nLfOypfQdjtfZzo/UIJWAJ23sNIFbD1Ug9lbaDGMwbqQA==", + "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, @@ -6980,34 +7657,52 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/@xtuc/long": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true + "dev": true, + "license": "Apache-2.0" }, "node_modules/@yarnpkg/lockfile": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", - "dev": true + "dev": true, + "license": "BSD-2-Clause" }, "node_modules/abbrev": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz", "integrity": "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==", "dev": true, + "license": "ISC", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "dev": true, + "license": "MIT", + "dependencies": { + "event-target-shim": "^5.0.0" + }, + "engines": { + "node": ">=6.5" + } + }, "node_modules/accepts": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", "dev": true, + "license": "MIT", "dependencies": { "mime-types": "~2.1.34", "negotiator": "0.6.3" @@ -7017,10 +7712,11 @@ } }, "node_modules/acorn": { - "version": "8.11.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", - "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", + "version": "8.12.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", + "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", "dev": true, + "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -7028,11 +7724,12 @@ "node": ">=0.4.0" } }, - "node_modules/acorn-import-assertions": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", - "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", + "node_modules/acorn-import-attributes": { + "version": "1.9.5", + "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", + "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", "dev": true, + "license": "MIT", "peerDependencies": { "acorn": "^8" } @@ -7042,7 +7739,7 @@ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true, - "peer": true, + "license": "MIT", "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } @@ -7052,6 +7749,7 @@ "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz", "integrity": "sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==", "dev": true, + "license": "MIT", "dependencies": { "loader-utils": "^2.0.0", "regex-parser": "^2.2.11" @@ -7065,6 +7763,7 @@ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", "dev": true, + "license": "MIT", "dependencies": { "big.js": "^5.2.2", "emojis-list": "^3.0.0", @@ -7079,6 +7778,7 @@ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", "dev": true, + "license": "MIT", "dependencies": { "debug": "^4.3.4" }, @@ -7091,6 +7791,7 @@ "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", "dev": true, + "license": "MIT", "dependencies": { "clean-stack": "^2.0.0", "indent-string": "^4.0.0" @@ -7100,15 +7801,16 @@ } }, "node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", "dev": true, + "license": "MIT", "dependencies": { - "fast-deep-equal": "^3.1.1", + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" + "require-from-string": "^2.0.2" }, "funding": { "type": "github", @@ -7116,10 +7818,11 @@ } }, "node_modules/ajv-formats": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz", + "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==", "dev": true, + "license": "MIT", "dependencies": { "ajv": "^8.0.0" }, @@ -7137,6 +7840,7 @@ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.3" }, @@ -7149,6 +7853,7 @@ "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -7158,6 +7863,7 @@ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", "dev": true, + "license": "MIT", "dependencies": { "type-fest": "^0.21.3" }, @@ -7176,6 +7882,7 @@ "engines": [ "node >= 0.8.0" ], + "license": "Apache-2.0", "bin": { "ansi-html": "bin/ansi-html" } @@ -7184,7 +7891,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -7193,7 +7900,7 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^1.9.0" }, @@ -7206,6 +7913,7 @@ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "dev": true, + "license": "ISC", "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -7219,6 +7927,7 @@ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8.6" }, @@ -7227,9 +7936,10 @@ } }, "node_modules/apollo-angular": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/apollo-angular/-/apollo-angular-7.0.0.tgz", - "integrity": "sha512-+gugknTvQRx1AYhOMU11yM8j15ZCHx8OShc5PpMcSUYELMNLLyYLZGb2zCaA2RYsX/dV8VU95GuZcQ7rgfMKUA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/apollo-angular/-/apollo-angular-7.2.0.tgz", + "integrity": "sha512-YPpRMkV7Le4VKyYfBuwG4WntAg00gJozwvVKtgtYyFVgsqaIUKpFc0mM0RYWoMoULxzkHRNOFYh57PXSrHQWjg==", + "license": "MIT", "dependencies": { "tslib": "^2.6.2" }, @@ -7237,7 +7947,7 @@ "node": ">=16" }, "peerDependencies": { - "@angular/core": "^17.0.0", + "@angular/core": "^17.0.0 || ^18.0.0", "@apollo/client": "^3.0.0", "graphql": "^15.0.0 || ^16.0.0", "rxjs": "^6.0.0 || ^7.0.0" @@ -7247,13 +7957,24 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true + "license": "Python-2.0" + }, + "node_modules/array-back": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz", + "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } }, "node_modules/array-buffer-byte-length": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.5", "is-array-buffer": "^3.0.4" @@ -7269,13 +7990,15 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/array-includes": { "version": "3.1.8", "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -7296,6 +8019,7 @@ "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -7305,6 +8029,7 @@ "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz", "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -7325,6 +8050,7 @@ "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -7343,6 +8069,7 @@ "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -7361,6 +8088,7 @@ "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", "dev": true, + "license": "MIT", "dependencies": { "array-buffer-byte-length": "^1.0.1", "call-bind": "^1.0.5", @@ -7382,27 +8110,15 @@ "version": "2.0.6", "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", - "dev": true - }, - "node_modules/asn1js": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/asn1js/-/asn1js-3.0.5.tgz", - "integrity": "sha512-FVnvrKJwpt9LP2lAMl8qZswRNm3T4q9CON+bxldk2iwk3FFpuwhx2FfinyitizWHsVYyaY+y5JzDR0rCMV5yTQ==", "dev": true, - "dependencies": { - "pvtsutils": "^1.3.2", - "pvutils": "^1.1.3", - "tslib": "^2.4.0" - }, - "engines": { - "node": ">=12.0.0" - } + "license": "MIT" }, "node_modules/ast-types": { "version": "0.13.4", "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz", "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==", "dev": true, + "license": "MIT", "dependencies": { "tslib": "^2.0.1" }, @@ -7415,6 +8131,7 @@ "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -7424,6 +8141,7 @@ "resolved": "https://registry.npmjs.org/auto-bind/-/auto-bind-4.0.0.tgz", "integrity": "sha512-Hdw8qdNiqdJ8LqT0iK0sVzkFbzg6fhnQqqfWhBDxcHZvU75+B+ayzTy8x+k5Ix0Y92XOhOUlx74ps+bA6BeYMQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" }, @@ -7432,9 +8150,9 @@ } }, "node_modules/autoprefixer": { - "version": "10.4.18", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.18.tgz", - "integrity": "sha512-1DKbDfsr6KUElM6wg+0zRNkB/Q7WcKYAaK+pzXn+Xqmszm/5Xa9coeNdtP88Vi+dPzZnMjhge8GIV49ZQkDa+g==", + "version": "10.4.20", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.20.tgz", + "integrity": "sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==", "dev": true, "funding": [ { @@ -7450,12 +8168,13 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { - "browserslist": "^4.23.0", - "caniuse-lite": "^1.0.30001591", + "browserslist": "^4.23.3", + "caniuse-lite": "^1.0.30001646", "fraction.js": "^4.3.7", "normalize-range": "^0.1.2", - "picocolors": "^1.0.0", + "picocolors": "^1.0.1", "postcss-value-parser": "^4.2.0" }, "bin": { @@ -7473,6 +8192,7 @@ "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", "dev": true, + "license": "MIT", "dependencies": { "possible-typed-array-names": "^1.0.0" }, @@ -7484,16 +8204,18 @@ } }, "node_modules/b4a": { - "version": "1.6.6", - "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.6.tgz", - "integrity": "sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg==", - "dev": true + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.7.tgz", + "integrity": "sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==", + "dev": true, + "license": "Apache-2.0" }, "node_modules/babel-loader": { "version": "9.1.3", "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.1.3.tgz", "integrity": "sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==", "dev": true, + "license": "MIT", "dependencies": { "find-cache-dir": "^4.0.0", "schema-utils": "^4.0.0" @@ -7506,27 +8228,12 @@ "webpack": ">=5" } }, - "node_modules/babel-plugin-istanbul": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^5.0.4", - "test-exclude": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/babel-plugin-polyfill-corejs2": { "version": "0.4.11", "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz", "integrity": "sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==", "dev": true, + "license": "MIT", "dependencies": { "@babel/compat-data": "^7.22.6", "@babel/helper-define-polyfill-provider": "^0.6.2", @@ -7541,62 +8248,33 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.9.0.tgz", - "integrity": "sha512-7nZPG1uzK2Ymhy/NbaOWTg3uibM2BmGASS4vHS4szRZAIR8R6GwA/xAujpdrXU5iyklrimWnLWU+BLF9suPTqg==", + "version": "0.10.6", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.6.tgz", + "integrity": "sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.5.0", - "core-js-compat": "^3.34.0" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/babel-plugin-polyfill-corejs3/node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.5.0.tgz", - "integrity": "sha512-NovQquuQLAQ5HuyjCz7WQP9MjRj7dx++yspwiyUiGl9ZyadHRSql1HZh5ogRd8W8w6YM6EQ/NTB8rgjLt5W65Q==", - "dev": true, - "dependencies": { - "@babel/helper-compilation-targets": "^7.22.6", - "@babel/helper-plugin-utils": "^7.22.5", - "debug": "^4.1.1", - "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2" + "@babel/helper-define-polyfill-provider": "^0.6.2", + "core-js-compat": "^3.38.0" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.5.tgz", - "integrity": "sha512-OJGYZlhLqBh2DDHeqAxWB1XIvr49CxiJ2gIt61/PU55CQK4Z58OzMqjDe1zwQdQk+rBYsRc+1rJmdajM3gimHg==", + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.2.tgz", + "integrity": "sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.5.0" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/babel-plugin-polyfill-regenerator/node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.5.0.tgz", - "integrity": "sha512-NovQquuQLAQ5HuyjCz7WQP9MjRj7dx++yspwiyUiGl9ZyadHRSql1HZh5ogRd8W8w6YM6EQ/NTB8rgjLt5W65Q==", - "dev": true, - "dependencies": { - "@babel/helper-compilation-targets": "^7.22.6", - "@babel/helper-plugin-utils": "^7.22.5", - "debug": "^4.1.1", - "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2" + "@babel/helper-define-polyfill-provider": "^0.6.2" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" @@ -7606,13 +8284,15 @@ "version": "7.0.0-beta.0", "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-7.0.0-beta.0.tgz", "integrity": "sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/babel-preset-fbjs": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/babel-preset-fbjs/-/babel-preset-fbjs-3.4.0.tgz", "integrity": "sha512-9ywCsCvo1ojrw0b+XYk7aFvTH6D9064t0RIL1rtMf3nsa02Xw41MS7sZw216Im35xj/UY0PDBQsa1brUDDF1Ow==", "dev": true, + "license": "MIT", "dependencies": { "@babel/plugin-proposal-class-properties": "^7.0.0", "@babel/plugin-proposal-object-rest-spread": "^7.0.0", @@ -7650,59 +8330,64 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true + "license": "MIT" }, "node_modules/bare-events": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.2.2.tgz", - "integrity": "sha512-h7z00dWdG0PYOQEvChhOSWvOfkIKsdZGkWr083FgN/HyoQuebSew/cgirYqh9SCuy/hRvxc5Vy6Fw8xAmYHLkQ==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.5.0.tgz", + "integrity": "sha512-/E8dDe9dsbLyh2qrZ64PEPadOQ0F4gbl1sUJOrmph7xOiIxfY8vwab/4bFLh4Y88/Hk/ujKcrQKc+ps0mv873A==", "dev": true, + "license": "Apache-2.0", "optional": true }, "node_modules/bare-fs": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-2.3.0.tgz", - "integrity": "sha512-TNFqa1B4N99pds2a5NYHR15o0ZpdNKbAeKTE/+G6ED/UeOavv8RY3dr/Fu99HW3zU3pXpo2kDNO8Sjsm2esfOw==", + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-2.3.5.tgz", + "integrity": "sha512-SlE9eTxifPDJrT6YgemQ1WGFleevzwY+XAP1Xqgl56HtcrisC2CHCZ2tq6dBpcH2TnNxwUEUGhweo+lrQtYuiw==", "dev": true, + "license": "Apache-2.0", "optional": true, "dependencies": { "bare-events": "^2.0.0", "bare-path": "^2.0.0", - "bare-stream": "^1.0.0" + "bare-stream": "^2.0.0" } }, "node_modules/bare-os": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-2.3.0.tgz", - "integrity": "sha512-oPb8oMM1xZbhRQBngTgpcQ5gXw6kjOaRsSWsIeNyRxGed2w/ARyP7ScBYpWR1qfX2E5rS3gBw6OWcSQo+s+kUg==", + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-2.4.4.tgz", + "integrity": "sha512-z3UiI2yi1mK0sXeRdc4O1Kk8aOa/e+FNWZcTiPB/dfTWyLypuE99LibgRaQki914Jq//yAWylcAt+mknKdixRQ==", "dev": true, + "license": "Apache-2.0", "optional": true }, "node_modules/bare-path": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-2.1.2.tgz", - "integrity": "sha512-o7KSt4prEphWUHa3QUwCxUI00R86VdjiuxmJK0iNVDHYPGo+HsDaVCnqCmPbf/MiW1ok8F4p3m8RTHlWk8K2ig==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-2.1.3.tgz", + "integrity": "sha512-lh/eITfU8hrj9Ru5quUp0Io1kJWIk1bTjzo7JH1P5dWmQ2EL4hFUlfI8FonAhSlgIfhn63p84CDY/x+PisgcXA==", "dev": true, + "license": "Apache-2.0", "optional": true, "dependencies": { "bare-os": "^2.1.0" } }, "node_modules/bare-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-1.0.0.tgz", - "integrity": "sha512-KhNUoDL40iP4gFaLSsoGE479t0jHijfYdIcxRn/XtezA2BaUD0NRf/JGRpsMq6dMNM+SrCrB0YSSo/5wBY4rOQ==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.3.0.tgz", + "integrity": "sha512-pVRWciewGUeCyKEuRxwv06M079r+fRjAQjBEK2P6OYGrO43O+Z0LrPZZEjlc4mB6C2RpZ9AxJ1s7NLEtOHO6eA==", "dev": true, + "license": "Apache-2.0", "optional": true, "dependencies": { - "streamx": "^2.16.1" + "b4a": "^1.6.6", + "streamx": "^2.20.0" } }, "node_modules/base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true, "funding": [ { "type": "github", @@ -7716,13 +8401,15 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/base64id": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", "dev": true, + "license": "MIT", "engines": { "node": "^4.5.0 || >= 5.9" } @@ -7732,6 +8419,7 @@ "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.5.tgz", "integrity": "sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==", "dev": true, + "license": "MIT", "engines": { "node": ">=10.0.0" } @@ -7740,13 +8428,15 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/big.js": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", "dev": true, + "license": "MIT", "engines": { "node": "*" } @@ -7756,6 +8446,7 @@ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" }, @@ -7767,18 +8458,33 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dev": true, + "license": "MIT", "dependencies": { "buffer": "^5.5.0", "inherits": "^2.0.4", "readable-stream": "^3.4.0" } }, + "node_modules/bl/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/body-parser": { - "version": "1.20.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", - "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", + "version": "1.20.3", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", + "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", "dev": true, + "license": "MIT", "dependencies": { "bytes": "3.1.2", "content-type": "~1.0.5", @@ -7788,7 +8494,7 @@ "http-errors": "2.0.0", "iconv-lite": "0.4.24", "on-finished": "2.4.1", - "qs": "6.11.0", + "qs": "6.13.0", "raw-body": "2.5.2", "type-is": "~1.6.18", "unpipe": "1.0.0" @@ -7803,6 +8509,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.0.0" } @@ -7811,13 +8518,15 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/bonjour-service": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.2.1.tgz", "integrity": "sha512-oSzCS2zV14bh2kji6vNe7vrpJYCHGvcZnlffFQ1MEoX/WOeQ/teD8SYWKR942OI3INjq8OMNJlbPK5LLLUxFDw==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.3", "multicast-dns": "^7.2.5" @@ -7827,33 +8536,35 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/brace-expansion": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } }, "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, + "license": "MIT", "dependencies": { - "fill-range": "^7.0.1" + "fill-range": "^7.1.1" }, "engines": { "node": ">=8" } }, "node_modules/browserslist": { - "version": "4.23.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", - "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.0.tgz", + "integrity": "sha512-Rmb62sR1Zpjql25eSanFGEhAxcFwfA1K0GuQcLoaJBAcENegrQut3hYdhXFF1obQfiDyqIW/cLM5HSJ/9k884A==", "dev": true, "funding": [ { @@ -7869,11 +8580,12 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { - "caniuse-lite": "^1.0.30001587", - "electron-to-chromium": "^1.4.668", - "node-releases": "^2.0.14", - "update-browserslist-db": "^1.0.13" + "caniuse-lite": "^1.0.30001663", + "electron-to-chromium": "^1.5.28", + "node-releases": "^2.0.18", + "update-browserslist-db": "^1.1.0" }, "bin": { "browserslist": "cli.js" @@ -7887,6 +8599,7 @@ "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { "node-int64": "^0.4.0" } @@ -7895,7 +8608,6 @@ "version": "5.7.1", "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, "funding": [ { "type": "github", @@ -7910,6 +8622,7 @@ "url": "https://feross.org/support" } ], + "license": "MIT", "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.1.13" @@ -7920,6 +8633,7 @@ "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", "dev": true, + "license": "MIT", "engines": { "node": "*" } @@ -7928,15 +8642,23 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "node_modules/builtins": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.1.0.tgz", - "integrity": "sha512-SW9lzGTLvWTP1AY8xeAMZimqDrIaSdLQUcVr9DMef51niJ022Ri87SwRRKYm4A6iHfkPaiVUu/Duw2Wc4J7kKg==", "dev": true, + "license": "MIT" + }, + "node_modules/bundle-name": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz", + "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==", + "dev": true, + "license": "MIT", "dependencies": { - "semver": "^7.0.0" + "run-applescript": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/busboy": { @@ -7956,15 +8678,17 @@ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } }, "node_modules/cacache": { - "version": "18.0.2", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-18.0.2.tgz", - "integrity": "sha512-r3NU8h/P+4lVUHfeRw1dtgQYar3DZMm4/cm2bZgOvrFC/su7budSOeqh52VJIC4U4iG1WWwV6vRW0znqBvxNuw==", + "version": "18.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-18.0.4.tgz", + "integrity": "sha512-B+L5iIa9mgcjLbliir2th36yEwPftrzteHYujzsx3dFP/31GCHcIeS8f5MGd80odLOjaOvSpU3EEAmRQptkxLQ==", "dev": true, + "license": "ISC", "dependencies": { "@npmcli/fs": "^3.1.0", "fs-minipass": "^3.0.0", @@ -7984,41 +8708,55 @@ } }, "node_modules/cacache/node_modules/glob": { - "version": "10.3.12", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.12.tgz", - "integrity": "sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==", + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", "dev": true, + "license": "ISC", "dependencies": { "foreground-child": "^3.1.0", - "jackspeak": "^2.3.6", - "minimatch": "^9.0.1", - "minipass": "^7.0.4", - "path-scurry": "^1.10.2" + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" }, "bin": { "glob": "dist/esm/bin.mjs" }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/cacache/node_modules/lru-cache": { - "version": "10.2.2", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", - "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==", + "node_modules/cacache/node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", "dev": true, - "engines": { - "node": "14 || >=16.14" + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" } }, + "node_modules/cacache/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" + }, "node_modules/call-bind": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", "dev": true, + "license": "MIT", "dependencies": { "es-define-property": "^1.0.0", "es-errors": "^1.3.0", @@ -8037,7 +8775,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -8047,6 +8785,7 @@ "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", "dev": true, + "license": "MIT", "dependencies": { "pascal-case": "^3.1.2", "tslib": "^2.0.3" @@ -8057,14 +8796,15 @@ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/caniuse-lite": { - "version": "1.0.30001614", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001614.tgz", - "integrity": "sha512-jmZQ1VpmlRwHgdP1/uiKzgiAuGOfLEJsYFP4+GBou/QQ4U6IOJCB4NP1c+1p9RGLpwObcT94jA5/uO+F1vBbog==", + "version": "1.0.30001668", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001668.tgz", + "integrity": "sha512-nWLrdxqCdblixUO+27JtGJJE/txpJlyUy5YN1u53wLZkP0emYCo5zgS6QYft7VUYR42LGgi/S5hdLZTrnyIddw==", "dev": true, "funding": [ { @@ -8079,13 +8819,15 @@ "type": "github", "url": "https://github.com/sponsors/ai" } - ] + ], + "license": "CC-BY-4.0" }, "node_modules/capital-case": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/capital-case/-/capital-case-1.0.4.tgz", "integrity": "sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==", "dev": true, + "license": "MIT", "dependencies": { "no-case": "^3.0.4", "tslib": "^2.0.3", @@ -8096,7 +8838,7 @@ "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -8106,11 +8848,104 @@ "node": ">=4" } }, + "node_modules/chalk-template": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/chalk-template/-/chalk-template-0.4.0.tgz", + "integrity": "sha512-/ghrgmhfY8RaSdeo43hNXxpoHAtxdbskUHjPpfqUWGttFgycUhYPGx3YZBCnUCvOa7Doivn1IZec3DEGFoMgLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.1.2" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/chalk-template?sponsor=1" + } + }, + "node_modules/chalk-template/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/chalk-template/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chalk-template/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/chalk-template/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/chalk-template/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/chalk-template/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/change-case": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/change-case/-/change-case-4.1.2.tgz", "integrity": "sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==", "dev": true, + "license": "MIT", "dependencies": { "camel-case": "^4.1.2", "capital-case": "^1.0.4", @@ -8131,6 +8966,7 @@ "resolved": "https://registry.npmjs.org/change-case-all/-/change-case-all-1.0.15.tgz", "integrity": "sha512-3+GIFhk3sNuvFAJKU46o26OdzudQlPNBCu1ZQi3cMeMHhty1bhDxu2WrEilVNYaGvqUtR1VSigFcJOiS13dRhQ==", "dev": true, + "license": "MIT", "dependencies": { "change-case": "^4.1.2", "is-lower-case": "^2.0.2", @@ -8148,13 +8984,67 @@ "version": "0.7.0", "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", - "dev": true + "dev": true, + "license": "MIT" + }, + "node_modules/chart.js": { + "version": "4.4.4", + "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-4.4.4.tgz", + "integrity": "sha512-emICKGBABnxhMjUjlYRR12PmOXhJ2eJjEHL2/dZlWjxRAZT1D8xplLFq5M0tMQK8ja+wBS/tuVEJB5C6r7VxJA==", + "license": "MIT", + "dependencies": { + "@kurkle/color": "^0.3.0" + }, + "engines": { + "pnpm": ">=8" + } + }, + "node_modules/cheerio": { + "version": "1.0.0-rc.12", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz", + "integrity": "sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "cheerio-select": "^2.1.0", + "dom-serializer": "^2.0.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1", + "htmlparser2": "^8.0.1", + "parse5": "^7.0.0", + "parse5-htmlparser2-tree-adapter": "^7.0.0" + }, + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/cheeriojs/cheerio?sponsor=1" + } + }, + "node_modules/cheerio-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", + "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0", + "css-select": "^5.1.0", + "css-what": "^6.1.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } }, "node_modules/chokidar": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", "dev": true, + "license": "MIT", "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -8174,49 +9064,60 @@ "fsevents": "~2.3.2" } }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/chownr": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", "dev": true, + "license": "ISC", "engines": { "node": ">=10" } }, "node_modules/chrome-trace-event": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", - "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", + "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.0" } }, "node_modules/chromium-bidi": { - "version": "0.5.19", - "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.5.19.tgz", - "integrity": "sha512-UA6zL77b7RYCjJkZBsZ0wlvCTD+jTjllZ8f6wdO4buevXgTZYjV+XLB9CiEa2OuuTGGTLnI7eN9I60YxuALGQg==", + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.8.0.tgz", + "integrity": "sha512-uJydbGdTw0DEUjhoogGveneJVWX/9YuqkWePzMmkBYwtdAqo5d3J/ovNKFr+/2hWXYmYCr6it8mSSTIj6SS6Ug==", "dev": true, + "license": "Apache-2.0", "dependencies": { "mitt": "3.0.1", "urlpattern-polyfill": "10.0.0", - "zod": "3.22.4" + "zod": "3.23.8" }, "peerDependencies": { "devtools-protocol": "*" } }, - "node_modules/chromium-bidi/node_modules/urlpattern-polyfill": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-10.0.0.tgz", - "integrity": "sha512-H/A06tKD7sS1O1X2SshBVeA5FLycRpjqiBeqGKmBwBDBy28EnRjORxTNe269KSSr5un5qyWi1iL61wLxpd+ZOg==", - "dev": true - }, "node_modules/clean-stack": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -8225,7 +9126,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dev": true, + "license": "MIT", "dependencies": { "restore-cursor": "^3.1.0" }, @@ -8237,7 +9138,7 @@ "version": "2.9.2", "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", - "dev": true, + "license": "MIT", "engines": { "node": ">=6" }, @@ -8245,27 +9146,99 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/cli-truncate": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", - "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", + "node_modules/cli-table3": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.1.tgz", + "integrity": "sha512-w0q/enDHhPLq44ovMGdQeeDLvwxwavsJX7oQGYt/LrBlYsyaxyDnp6z3QzFut/6kLLKnlcUVJLrpB7KBfgG/RA==", "dev": true, + "license": "MIT", "dependencies": { - "slice-ansi": "^3.0.0", "string-width": "^4.2.0" }, "engines": { - "node": ">=8" + "node": "10.* || >= 12.*" + }, + "optionalDependencies": { + "colors": "1.4.0" + } + }, + "node_modules/cli-truncate": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-4.0.0.tgz", + "integrity": "sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==", + "dev": true, + "license": "MIT", + "dependencies": { + "slice-ansi": "^5.0.0", + "string-width": "^7.0.0" + }, + "engines": { + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/cli-truncate/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/cli-truncate/node_modules/emoji-regex": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz", + "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==", + "dev": true, + "license": "MIT" + }, + "node_modules/cli-truncate/node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-truncate/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, "node_modules/cli-width": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==", "dev": true, + "license": "ISC", "engines": { "node": ">= 12" } @@ -8274,7 +9247,7 @@ "version": "8.0.1", "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dev": true, + "license": "ISC", "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.1", @@ -8288,7 +9261,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -8303,7 +9276,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -8315,13 +9288,13 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "license": "MIT" }, "node_modules/cliui/node_modules/wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -8338,7 +9311,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", - "dev": true, + "license": "MIT", "engines": { "node": ">=0.8" } @@ -8348,6 +9321,7 @@ "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", "dev": true, + "license": "MIT", "dependencies": { "is-plain-object": "^2.0.4", "kind-of": "^6.0.2", @@ -8361,7 +9335,7 @@ "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, + "license": "MIT", "dependencies": { "color-name": "1.1.3" } @@ -8370,31 +9344,98 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true + "license": "MIT" }, "node_modules/colorette": { "version": "2.0.20", "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", - "dev": true + "dev": true, + "license": "MIT" + }, + "node_modules/colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/command-line-args": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-5.2.1.tgz", + "integrity": "sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-back": "^3.1.0", + "find-replace": "^3.0.0", + "lodash.camelcase": "^4.3.0", + "typical": "^4.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/command-line-usage": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-7.0.1.tgz", + "integrity": "sha512-NCyznE//MuTjwi3y84QVUGEOT+P5oto1e1Pk/jFPVdPPfsG03qpTIl3yw6etR+v73d0lXsoojRpvbru2sqePxQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-back": "^6.2.2", + "chalk-template": "^0.4.0", + "table-layout": "^3.0.0", + "typical": "^7.1.1" + }, + "engines": { + "node": ">=12.20.0" + } + }, + "node_modules/command-line-usage/node_modules/array-back": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-6.2.2.tgz", + "integrity": "sha512-gUAZ7HPyb4SJczXAMUXMGAvI976JoK3qEx9v1FTmeYuJj0IBiaKttG1ydtGKdkfqWkIkouke7nG8ufGy77+Cvw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.17" + } + }, + "node_modules/command-line-usage/node_modules/typical": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-7.2.0.tgz", + "integrity": "sha512-W1+HdVRUl8fS3MZ9ogD51GOb46xMmhAZzR0WPw5jcgIZQJVvkddYzAl4YTU6g5w33Y1iRQLdIi2/1jhi2RNL0g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.17" + } }, "node_modules/commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/common-path-prefix": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/common-tags": { "version": "1.8.2", "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==", "dev": true, + "license": "MIT", "engines": { "node": ">=4.0.0" } @@ -8404,6 +9445,7 @@ "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", "dev": true, + "license": "MIT", "dependencies": { "mime-db": ">= 1.43.0 < 2" }, @@ -8416,6 +9458,7 @@ "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", "dev": true, + "license": "MIT", "dependencies": { "accepts": "~1.3.5", "bytes": "3.0.0", @@ -8434,6 +9477,7 @@ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -8443,6 +9487,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.0.0" } @@ -8451,25 +9496,29 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/compression/node_modules/safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/connect": { "version": "3.7.0", "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", "dev": true, + "license": "MIT", "dependencies": { "debug": "2.6.9", "finalhandler": "1.1.2", @@ -8485,6 +9534,7 @@ "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8" } @@ -8494,6 +9544,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.0.0" } @@ -8502,13 +9553,15 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/constant-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/constant-case/-/constant-case-3.0.4.tgz", "integrity": "sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==", "dev": true, + "license": "MIT", "dependencies": { "no-case": "^3.0.4", "tslib": "^2.0.3", @@ -8520,6 +9573,7 @@ "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", "dev": true, + "license": "MIT", "dependencies": { "safe-buffer": "5.2.1" }, @@ -8532,6 +9586,7 @@ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -8540,13 +9595,15 @@ "version": "1.9.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/cookie": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", - "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -8555,13 +9612,15 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/copy-anything": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz", "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==", "dev": true, + "license": "MIT", "dependencies": { "is-what": "^3.14.1" }, @@ -8570,20 +9629,21 @@ } }, "node_modules/copy-webpack-plugin": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-11.0.0.tgz", - "integrity": "sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==", + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-12.0.2.tgz", + "integrity": "sha512-SNwdBeHyII+rWvee/bTnAYyO8vfVdcSTud4EIb6jcZ8inLeWucJE0DnxXQBjlQ5zlteuuvooGQy3LIyGxhvlOA==", "dev": true, + "license": "MIT", "dependencies": { - "fast-glob": "^3.2.11", + "fast-glob": "^3.3.2", "glob-parent": "^6.0.1", - "globby": "^13.1.1", + "globby": "^14.0.0", "normalize-path": "^3.0.0", - "schema-utils": "^4.0.0", - "serialize-javascript": "^6.0.0" + "schema-utils": "^4.2.0", + "serialize-javascript": "^6.0.2" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 18.12.0" }, "funding": { "type": "opencollective", @@ -8593,42 +9653,33 @@ "webpack": "^5.1.0" } }, - "node_modules/copy-webpack-plugin/node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, "node_modules/copy-webpack-plugin/node_modules/globby": { - "version": "13.2.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-13.2.2.tgz", - "integrity": "sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==", + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-14.0.2.tgz", + "integrity": "sha512-s3Fq41ZVh7vbbe2PN3nrW7yC7U7MFVc5c98/iTl9c2GawNMKx/J648KQRW6WKkuU8GIbbh2IXfIRQjOZnXcTnw==", "dev": true, + "license": "MIT", "dependencies": { - "dir-glob": "^3.0.1", - "fast-glob": "^3.3.0", + "@sindresorhus/merge-streams": "^2.1.0", + "fast-glob": "^3.3.2", "ignore": "^5.2.4", - "merge2": "^1.4.1", - "slash": "^4.0.0" + "path-type": "^5.0.0", + "slash": "^5.1.0", + "unicorn-magic": "^0.1.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/copy-webpack-plugin/node_modules/slash": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", - "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "node_modules/copy-webpack-plugin/node_modules/path-type": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-5.0.0.tgz", + "integrity": "sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -8636,13 +9687,27 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/core-js-compat": { - "version": "3.37.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.37.0.tgz", - "integrity": "sha512-vYq4L+T8aS5UuFg4UwDhc7YNRWVeVZwltad9C/jV3R2LgVOpS9BDr7l/WL6BN0dbV3k1XejPTHqqEzJgsa0frA==", + "node_modules/copy-webpack-plugin/node_modules/slash": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", + "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/core-js-compat": { + "version": "3.38.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.38.1.tgz", + "integrity": "sha512-JRH6gfXxGmrzF3tZ57lFx97YARxCXPaMzPo6jELZhv88pBH5VXpQ+y0znKGlFnzuaihqhLbefxSJxWJMPtfDzw==", + "dev": true, + "license": "MIT", "dependencies": { - "browserslist": "^4.23.0" + "browserslist": "^4.23.3" }, "funding": { "type": "opencollective", @@ -8653,13 +9718,15 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/cors": { "version": "2.8.5", "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", "dev": true, + "license": "MIT", "dependencies": { "object-assign": "^4", "vary": "^1" @@ -8672,7 +9739,7 @@ "version": "8.3.6", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", - "dev": true, + "license": "MIT", "dependencies": { "import-fresh": "^3.3.0", "js-yaml": "^4.1.0", @@ -8695,10 +9762,11 @@ } }, "node_modules/critters": { - "version": "0.0.22", - "resolved": "https://registry.npmjs.org/critters/-/critters-0.0.22.tgz", - "integrity": "sha512-NU7DEcQZM2Dy8XTKFHxtdnIM/drE312j2T4PCVaSUcS0oBeyT/NImpRw/Ap0zOr/1SE7SgPK9tGPg1WK/sVakw==", + "version": "0.0.24", + "resolved": "https://registry.npmjs.org/critters/-/critters-0.0.24.tgz", + "integrity": "sha512-Oyqew0FGM0wYUSNqR0L6AteO5MpMoUU0rhKRieXeiKs+PmRTxiJMyaunYB2KF6fQ3dzChXKCpbFOEJx3OQ1v/Q==", "dev": true, + "license": "Apache-2.0", "dependencies": { "chalk": "^4.1.0", "css-select": "^5.1.0", @@ -8714,6 +9782,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -8729,6 +9798,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -8745,6 +9815,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -8756,13 +9827,15 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/critters/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -8772,6 +9845,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -8784,15 +9858,17 @@ "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.8.tgz", "integrity": "sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==", "dev": true, + "license": "MIT", "dependencies": { "node-fetch": "^2.6.12" } }, "node_modules/cross-inspect": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/cross-inspect/-/cross-inspect-1.0.0.tgz", - "integrity": "sha512-4PFfn4b5ZN6FMNGSZlyb7wUhuN8wvj8t/VQHZdM4JsDcruGJ8L2kf9zao98QIrBPFCpdk27qst/AGTl7pL3ypQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cross-inspect/-/cross-inspect-1.0.1.tgz", + "integrity": "sha512-Pcw1JTvZLSJH83iiGWt6fRcT+BjZlCDRVwYLbUcHzv/CRpB7r0MlSrGbIyQvVSNyGnbt7G4AXuyCiDR3POvZ1A==", "dev": true, + "license": "MIT", "dependencies": { "tslib": "^2.4.0" }, @@ -8804,7 +9880,7 @@ "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, + "license": "MIT", "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -8815,22 +9891,23 @@ } }, "node_modules/css-loader": { - "version": "6.10.0", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.10.0.tgz", - "integrity": "sha512-LTSA/jWbwdMlk+rhmElbDR2vbtQoTBPr7fkJE+mxrHj+7ru0hUmHafDRzWIjIHTwpitWVaqY2/UWGRca3yUgRw==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-7.1.2.tgz", + "integrity": "sha512-6WvYYn7l/XEGN8Xu2vWFt9nVzrCn39vKyTEFf/ExEyoksJjjSZV/0/35XPlMbpnr6VGhZIUg5yJrL8tGfes/FA==", "dev": true, + "license": "MIT", "dependencies": { "icss-utils": "^5.1.0", "postcss": "^8.4.33", - "postcss-modules-extract-imports": "^3.0.0", - "postcss-modules-local-by-default": "^4.0.4", - "postcss-modules-scope": "^3.1.1", + "postcss-modules-extract-imports": "^3.1.0", + "postcss-modules-local-by-default": "^4.0.5", + "postcss-modules-scope": "^3.2.0", "postcss-modules-values": "^4.0.0", "postcss-value-parser": "^4.2.0", "semver": "^7.5.4" }, "engines": { - "node": ">= 12.13.0" + "node": ">= 18.12.0" }, "funding": { "type": "opencollective", @@ -8838,7 +9915,7 @@ }, "peerDependencies": { "@rspack/core": "0.x || 1.x", - "webpack": "^5.0.0" + "webpack": "^5.27.0" }, "peerDependenciesMeta": { "@rspack/core": { @@ -8854,6 +9931,7 @@ "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "boolbase": "^1.0.0", "css-what": "^6.1.0", @@ -8870,6 +9948,7 @@ "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">= 6" }, @@ -8882,6 +9961,7 @@ "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", "dev": true, + "license": "MIT", "bin": { "cssesc": "bin/cssesc" }, @@ -8893,13 +9973,15 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", "integrity": "sha512-GAj5FOq0Hd+RsCGVJxZuKaIDXDf3h6GQoNEjFgbLLI/trgtavwUbSnZ5pVfg27DVCaWjIohryS0JFwIJyT2cMg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/data-uri-to-buffer": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz", "integrity": "sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 14" } @@ -8909,6 +9991,7 @@ "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.6", "es-errors": "^1.3.0", @@ -8926,6 +10009,7 @@ "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "es-errors": "^1.3.0", @@ -8943,6 +10027,7 @@ "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.6", "es-errors": "^1.3.0", @@ -8959,13 +10044,25 @@ "version": "2.2.2", "resolved": "https://registry.npmjs.org/dataloader/-/dataloader-2.2.2.tgz", "integrity": "sha512-8YnDaaf7N3k/q5HnTJVuzSyLETjoZjVmHc4AeKAzOvKHEFQKcn64OKBfzHYtE9zGjctNM7V9I0MfnUVLpi7M5g==", - "dev": true + "dev": true, + "license": "MIT" + }, + "node_modules/date-fns": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-4.1.0.tgz", + "integrity": "sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/kossnocorp" + } }, "node_modules/date-format": { "version": "4.0.14", "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.14.tgz", "integrity": "sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==", "dev": true, + "license": "MIT", "engines": { "node": ">=4.0" } @@ -8974,15 +10071,17 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz", "integrity": "sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", "dev": true, + "license": "MIT", "dependencies": { - "ms": "2.1.2" + "ms": "^2.1.3" }, "engines": { "node": ">=6.0" @@ -8998,22 +10097,62 @@ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, + "node_modules/deep-diff": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/deep-diff/-/deep-diff-1.0.2.tgz", + "integrity": "sha512-aWS3UIVH+NPGCD1kki+DCU9Dua032iSsO43LqQpcs4R3+dVv7tX0qBGjiVHJHjplsoUM2XRO/KB92glqc68awg==", + "dev": true, + "license": "MIT" + }, "node_modules/deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true, + "license": "MIT", "peer": true }, + "node_modules/default-browser": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.2.1.tgz", + "integrity": "sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==", + "dev": true, + "license": "MIT", + "dependencies": { + "bundle-name": "^4.1.0", + "default-browser-id": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-browser-id": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.0.tgz", + "integrity": "sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/default-gateway": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "execa": "^5.0.0" }, @@ -9025,7 +10164,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", - "dev": true, + "license": "MIT", "dependencies": { "clone": "^1.0.2" }, @@ -9038,6 +10177,7 @@ "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", "dev": true, + "license": "MIT", "dependencies": { "es-define-property": "^1.0.0", "es-errors": "^1.3.0", @@ -9051,12 +10191,16 @@ } }, "node_modules/define-lazy-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", + "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", "dev": true, + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/define-properties": { @@ -9064,6 +10208,7 @@ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", "dev": true, + "license": "MIT", "dependencies": { "define-data-property": "^1.0.1", "has-property-descriptors": "^1.0.0", @@ -9081,6 +10226,7 @@ "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz", "integrity": "sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==", "dev": true, + "license": "MIT", "dependencies": { "ast-types": "^0.13.4", "escodegen": "^2.1.0", @@ -9095,6 +10241,7 @@ "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -9104,6 +10251,7 @@ "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz", "integrity": "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6.0" } @@ -9113,6 +10261,7 @@ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8", "npm": "1.2.8000 || >= 1.4.16" @@ -9123,6 +10272,17 @@ "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==", "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/detect-libc": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", + "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", + "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=8" } @@ -9131,25 +10291,29 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/devtools-protocol": { - "version": "0.0.1273771", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1273771.tgz", - "integrity": "sha512-QDbb27xcTVReQQW/GHJsdQqGKwYBE7re7gxehj467kKP2DKuYBUj6i2k5LRiAC66J1yZG/9gsxooz/s9pcm0Og==", - "dev": true + "version": "0.0.1342118", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1342118.tgz", + "integrity": "sha512-75fMas7PkYNDTmDyb6PRJCH7ILmHLp+BhrZGeMsa4bCh40DTxgCz2NRy5UDzII4C5KuD0oBMZ9vXKhEl6UD/3w==", + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/di": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", "integrity": "sha512-uJaamHkagcZtHPqCIHZxnFrXlunQXgBOsZSUOWwFw31QJCAbyTBoHMW75YOTur5ZNx8pIeAKgf6GWIgaqqiLhA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", "dev": true, + "license": "MIT", "dependencies": { "path-type": "^4.0.0" }, @@ -9162,6 +10326,7 @@ "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", "integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==", "dev": true, + "license": "MIT", "dependencies": { "@leichtgewicht/ip-codec": "^2.0.1" }, @@ -9170,16 +10335,16 @@ } }, "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "dev": true, - "peer": true, + "license": "Apache-2.0", "dependencies": { "esutils": "^2.0.2" }, "engines": { - "node": ">=6.0.0" + "node": ">=0.10.0" } }, "node_modules/dom-serialize": { @@ -9187,6 +10352,7 @@ "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", "integrity": "sha512-Yra4DbvoW7/Z6LBN560ZwXMjoNOSAN2wRsKFGc4iBeso+mpIA6qj1vfdf9HpMaKAqG6wXTy+1SYEzmNpKXOSsQ==", "dev": true, + "license": "MIT", "dependencies": { "custom-event": "~1.0.0", "ent": "~2.2.0", @@ -9199,6 +10365,7 @@ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", "dev": true, + "license": "MIT", "dependencies": { "domelementtype": "^2.3.0", "domhandler": "^5.0.2", @@ -9218,13 +10385,15 @@ "type": "github", "url": "https://github.com/sponsors/fb55" } - ] + ], + "license": "BSD-2-Clause" }, "node_modules/domhandler": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "domelementtype": "^2.3.0" }, @@ -9240,6 +10409,7 @@ "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "dom-serializer": "^2.0.0", "domelementtype": "^2.3.0", @@ -9254,6 +10424,7 @@ "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", "dev": true, + "license": "MIT", "dependencies": { "no-case": "^3.0.4", "tslib": "^2.0.3" @@ -9264,6 +10435,7 @@ "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=12" }, @@ -9272,10 +10444,11 @@ } }, "node_modules/dset": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/dset/-/dset-3.1.3.tgz", - "integrity": "sha512-20TuZZHCEZ2O71q9/+8BwKwZ0QtD9D8ObhrihJPr+vLLYlSuAU3/zL4cSlgbfeoGHTjCSJBa7NGcrF9/Bx/WJQ==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/dset/-/dset-3.1.4.tgz", + "integrity": "sha512-2QF/g9/zTaPDc3BjNcVTGoBbXBgYfMTTceLaYcFJ/W9kggFUkhxD/hMEeuLKbugyef9SqAx8cpgwlIP/jinUTA==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -9284,31 +10457,34 @@ "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true + "license": "MIT" }, "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/electron-to-chromium": { - "version": "1.4.751", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.751.tgz", - "integrity": "sha512-2DEPi++qa89SMGRhufWTiLmzqyuGmNF3SK4+PQetW1JKiZdEpF4XQonJXJCzyuYSA6mauiMhbyVhqYAP45Hvfw==", - "dev": true + "version": "1.5.36", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.36.tgz", + "integrity": "sha512-HYTX8tKge/VNp6FGO+f/uVDmUkq+cEfcxYhKf15Akc4M5yxt5YmorwlAitKWjWhWQnKcDRBAQKXkhqqXMqcrjw==", + "dev": true, + "license": "ISC" }, "node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true + "license": "MIT" }, "node_modules/emojis-list": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4" } @@ -9318,6 +10494,7 @@ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -9327,7 +10504,7 @@ "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", "dev": true, - "optional": true, + "license": "MIT", "dependencies": { "iconv-lite": "^0.6.2" } @@ -9337,7 +10514,7 @@ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "dev": true, - "optional": true, + "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" }, @@ -9350,51 +10527,55 @@ "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", "dev": true, + "license": "MIT", "dependencies": { "once": "^1.4.0" } }, "node_modules/engine.io": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.5.4.tgz", - "integrity": "sha512-KdVSDKhVKyOi+r5uEabrDLZw2qXStVvCsEB/LN3mw4WFi6Gx50jTyuxYVCwAAC0U46FdnzP/ScKRBTXb/NiEOg==", + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.6.2.tgz", + "integrity": "sha512-gmNvsYi9C8iErnZdVcJnvCpSKbWTt1E8+JZo8b+daLninywUWi5NQ5STSHZ9rFjFO7imNcvb8Pc5pe/wMR5xEw==", "dev": true, + "license": "MIT", "dependencies": { "@types/cookie": "^0.4.1", "@types/cors": "^2.8.12", "@types/node": ">=10.0.0", "accepts": "~1.3.4", "base64id": "2.0.0", - "cookie": "~0.4.1", + "cookie": "~0.7.2", "cors": "~2.8.5", "debug": "~4.3.1", "engine.io-parser": "~5.2.1", - "ws": "~8.11.0" + "ws": "~8.17.1" }, "engines": { "node": ">=10.2.0" } }, "node_modules/engine.io-parser": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.2.tgz", - "integrity": "sha512-RcyUFKA93/CXH20l4SoVvzZfrSDMOTUS3bWVpTt2FuFP+XYrL8i8oonHP7WInRyVHXh0n/ORtoeiE1os+8qkSw==", + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.3.tgz", + "integrity": "sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=10.0.0" } }, "node_modules/engine.io/node_modules/ws": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", - "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", + "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=10.0.0" }, "peerDependencies": { "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" + "utf-8-validate": ">=5.0.2" }, "peerDependenciesMeta": { "bufferutil": { @@ -9406,10 +10587,11 @@ } }, "node_modules/enhanced-resolve": { - "version": "5.16.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.16.0.tgz", - "integrity": "sha512-O+QWCviPNSSLAD9Ucn8Awv+poAkqn3T1XY5/N7kR7rQO9yfSGWkYZDwpJ+iKF7B8rxaQKWngSqACpgzeapSyoA==", + "version": "5.17.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", + "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==", "dev": true, + "license": "MIT", "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" @@ -9419,16 +10601,24 @@ } }, "node_modules/ent": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", - "integrity": "sha512-GHrMyVZQWvTIdDtpiEXdHZnFQKzeO09apj8Cbl4pKWy4i0Oprcq17usfDt5aO63swf0JOeMWjWQE/LzgSRuWpA==", - "dev": true + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.1.tgz", + "integrity": "sha512-QHuXVeZx9d+tIQAz/XztU0ZwZf2Agg9CcXcgE1rurqvdBeDBrpSwjl8/6XUqMg7tw2Y7uAdKb2sRv+bSEFqQ5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "punycode": "^1.4.1" + }, + "engines": { + "node": ">= 0.4" + } }, "node_modules/entities": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", "devOptional": true, + "license": "BSD-2-Clause", "engines": { "node": ">=0.12" }, @@ -9441,21 +10631,37 @@ "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, + "node_modules/environment": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/environment/-/environment-1.1.0.tgz", + "integrity": "sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/err-code": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/errno": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "prr": "~1.0.1" @@ -9468,7 +10674,7 @@ "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, + "license": "MIT", "dependencies": { "is-arrayish": "^0.2.1" } @@ -9478,6 +10684,7 @@ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", "dev": true, + "license": "MIT", "dependencies": { "array-buffer-byte-length": "^1.0.1", "arraybuffer.prototype.slice": "^1.0.3", @@ -9538,6 +10745,7 @@ "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", "dev": true, + "license": "MIT", "dependencies": { "get-intrinsic": "^1.2.4" }, @@ -9550,21 +10758,24 @@ "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" } }, "node_modules/es-module-lexer": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.2.tgz", - "integrity": "sha512-l60ETUTmLqbVbVHv1J4/qj+M8nq7AwMzEcg3kmJDt9dCNrTk+yHcYFf/Kw75pMDwd9mPcIGCG5LcS20SxYRzFA==", - "dev": true + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.4.tgz", + "integrity": "sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==", + "dev": true, + "license": "MIT" }, "node_modules/es-object-atoms": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", "dev": true, + "license": "MIT", "dependencies": { "es-errors": "^1.3.0" }, @@ -9577,6 +10788,7 @@ "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", "dev": true, + "license": "MIT", "dependencies": { "get-intrinsic": "^1.2.4", "has-tostringtag": "^1.0.2", @@ -9591,6 +10803,7 @@ "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", "dev": true, + "license": "MIT", "dependencies": { "hasown": "^2.0.0" } @@ -9600,6 +10813,7 @@ "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", "dev": true, + "license": "MIT", "dependencies": { "is-callable": "^1.1.4", "is-date-object": "^1.0.1", @@ -9613,61 +10827,63 @@ } }, "node_modules/esbuild": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.20.1.tgz", - "integrity": "sha512-OJwEgrpWm/PCMsLVWXKqvcjme3bHNpOgN7Tb6cQnR5n0TPbQx1/Xrn7rqM+wn17bYeT6MGB5sn1Bh5YiGi70nA==", + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.23.0.tgz", + "integrity": "sha512-1lvV17H2bMYda/WaFb2jLPeHU3zml2k4/yagNMG8Q/YtfMjCwEUZa2eXXMgZTVSL5q1n4H7sQ0X6CdJDqqeCFA==", "dev": true, "hasInstallScript": true, - "optional": true, + "license": "MIT", "bin": { "esbuild": "bin/esbuild" }, "engines": { - "node": ">=12" + "node": ">=18" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.20.1", - "@esbuild/android-arm": "0.20.1", - "@esbuild/android-arm64": "0.20.1", - "@esbuild/android-x64": "0.20.1", - "@esbuild/darwin-arm64": "0.20.1", - "@esbuild/darwin-x64": "0.20.1", - "@esbuild/freebsd-arm64": "0.20.1", - "@esbuild/freebsd-x64": "0.20.1", - "@esbuild/linux-arm": "0.20.1", - "@esbuild/linux-arm64": "0.20.1", - "@esbuild/linux-ia32": "0.20.1", - "@esbuild/linux-loong64": "0.20.1", - "@esbuild/linux-mips64el": "0.20.1", - "@esbuild/linux-ppc64": "0.20.1", - "@esbuild/linux-riscv64": "0.20.1", - "@esbuild/linux-s390x": "0.20.1", - "@esbuild/linux-x64": "0.20.1", - "@esbuild/netbsd-x64": "0.20.1", - "@esbuild/openbsd-x64": "0.20.1", - "@esbuild/sunos-x64": "0.20.1", - "@esbuild/win32-arm64": "0.20.1", - "@esbuild/win32-ia32": "0.20.1", - "@esbuild/win32-x64": "0.20.1" + "@esbuild/aix-ppc64": "0.23.0", + "@esbuild/android-arm": "0.23.0", + "@esbuild/android-arm64": "0.23.0", + "@esbuild/android-x64": "0.23.0", + "@esbuild/darwin-arm64": "0.23.0", + "@esbuild/darwin-x64": "0.23.0", + "@esbuild/freebsd-arm64": "0.23.0", + "@esbuild/freebsd-x64": "0.23.0", + "@esbuild/linux-arm": "0.23.0", + "@esbuild/linux-arm64": "0.23.0", + "@esbuild/linux-ia32": "0.23.0", + "@esbuild/linux-loong64": "0.23.0", + "@esbuild/linux-mips64el": "0.23.0", + "@esbuild/linux-ppc64": "0.23.0", + "@esbuild/linux-riscv64": "0.23.0", + "@esbuild/linux-s390x": "0.23.0", + "@esbuild/linux-x64": "0.23.0", + "@esbuild/netbsd-x64": "0.23.0", + "@esbuild/openbsd-arm64": "0.23.0", + "@esbuild/openbsd-x64": "0.23.0", + "@esbuild/sunos-x64": "0.23.0", + "@esbuild/win32-arm64": "0.23.0", + "@esbuild/win32-ia32": "0.23.0", + "@esbuild/win32-x64": "0.23.0" } }, "node_modules/esbuild-wasm": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.20.1.tgz", - "integrity": "sha512-6v/WJubRsjxBbQdz6izgvx7LsVFvVaGmSdwrFHmEzoVgfXL89hkKPoQHsnVI2ngOkcBUQT9kmAM1hVL1k/Av4A==", + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.23.0.tgz", + "integrity": "sha512-6jP8UmWy6R6TUUV8bMuC3ZyZ6lZKI56x0tkxyCIqWwRRJ/DgeQKneh/Oid5EoGoPFLrGNkz47ZEtWAYuiY/u9g==", "dev": true, + "license": "MIT", "bin": { "esbuild": "bin/esbuild" }, "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/escalade": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", - "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", - "dev": true, + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "license": "MIT", "engines": { "node": ">=6" } @@ -9676,13 +10892,14 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, + "license": "MIT", "engines": { "node": ">=0.8.0" } @@ -9692,6 +10909,7 @@ "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "esprima": "^4.0.1", "estraverse": "^5.2.0", @@ -9713,65 +10931,72 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, + "license": "BSD-3-Clause", "optional": true, "engines": { "node": ">=0.10.0" } }, "node_modules/eslint": { - "version": "8.57.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", - "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", + "version": "9.12.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.12.0.tgz", + "integrity": "sha512-UVIOlTEWxwIopRL1wgSQYdnVDcEvs2wyaO6DGo5mXqe3r16IoCNWkR29iHhyaP4cICWjbgbmFUGAhh0GJRuGZw==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.57.0", - "@humanwhocodes/config-array": "^0.11.14", + "@eslint-community/regexpp": "^4.11.0", + "@eslint/config-array": "^0.18.0", + "@eslint/core": "^0.6.0", + "@eslint/eslintrc": "^3.1.0", + "@eslint/js": "9.12.0", + "@eslint/plugin-kit": "^0.2.0", + "@humanfs/node": "^0.16.5", "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "@ungap/structured-clone": "^1.2.0", + "@humanwhocodes/retry": "^0.3.1", + "@types/estree": "^1.0.6", + "@types/json-schema": "^7.0.15", "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", "debug": "^4.3.2", - "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.2", - "eslint-visitor-keys": "^3.4.3", - "espree": "^9.6.1", - "esquery": "^1.4.2", + "eslint-scope": "^8.1.0", + "eslint-visitor-keys": "^4.1.0", + "espree": "^10.2.0", + "esquery": "^1.5.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", + "file-entry-cache": "^8.0.0", "find-up": "^5.0.0", "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", "optionator": "^0.9.3", - "strip-ansi": "^6.0.1", "text-table": "^0.2.0" }, "bin": { "eslint": "bin/eslint.js" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://opencollective.com/eslint" + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } } }, "node_modules/eslint-config-prettier": { @@ -9779,6 +11004,7 @@ "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz", "integrity": "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==", "dev": true, + "license": "MIT", "bin": { "eslint-config-prettier": "bin/cli.js" }, @@ -9791,6 +11017,7 @@ "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", "dev": true, + "license": "MIT", "dependencies": { "debug": "^3.2.7", "is-core-module": "^2.13.0", @@ -9802,22 +11029,25 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, + "license": "MIT", "dependencies": { "ms": "^2.1.1" } }, "node_modules/eslint-import-resolver-typescript": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.6.1.tgz", - "integrity": "sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==", + "version": "3.6.3", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.6.3.tgz", + "integrity": "sha512-ud9aw4szY9cCT1EWWdGv1L1XR6hh2PaRWif0j2QjQ0pgTY/69iw+W0Z4qZv5wHahOl8isEr+k/JnyAqNQkLkIA==", "dev": true, + "license": "ISC", "dependencies": { - "debug": "^4.3.4", - "enhanced-resolve": "^5.12.0", - "eslint-module-utils": "^2.7.4", - "fast-glob": "^3.3.1", - "get-tsconfig": "^4.5.0", - "is-core-module": "^2.11.0", + "@nolyfill/is-core-module": "1.0.39", + "debug": "^4.3.5", + "enhanced-resolve": "^5.15.0", + "eslint-module-utils": "^2.8.1", + "fast-glob": "^3.3.2", + "get-tsconfig": "^4.7.5", + "is-bun-module": "^1.0.2", "is-glob": "^4.0.3" }, "engines": { @@ -9828,14 +11058,24 @@ }, "peerDependencies": { "eslint": "*", - "eslint-plugin-import": "*" + "eslint-plugin-import": "*", + "eslint-plugin-import-x": "*" + }, + "peerDependenciesMeta": { + "eslint-plugin-import": { + "optional": true + }, + "eslint-plugin-import-x": { + "optional": true + } } }, "node_modules/eslint-module-utils": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz", - "integrity": "sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.0.tgz", + "integrity": "sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==", "dev": true, + "license": "MIT", "dependencies": { "debug": "^3.2.7" }, @@ -9853,39 +11093,43 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, + "license": "MIT", "dependencies": { "ms": "^2.1.1" } }, "node_modules/eslint-plugin-import": { - "version": "2.29.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz", - "integrity": "sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==", + "version": "2.31.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz", + "integrity": "sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==", "dev": true, + "license": "MIT", "dependencies": { - "array-includes": "^3.1.7", - "array.prototype.findlastindex": "^1.2.3", + "@rtsao/scc": "^1.1.0", + "array-includes": "^3.1.8", + "array.prototype.findlastindex": "^1.2.5", "array.prototype.flat": "^1.3.2", "array.prototype.flatmap": "^1.3.2", "debug": "^3.2.7", "doctrine": "^2.1.0", "eslint-import-resolver-node": "^0.3.9", - "eslint-module-utils": "^2.8.0", - "hasown": "^2.0.0", - "is-core-module": "^2.13.1", + "eslint-module-utils": "^2.12.0", + "hasown": "^2.0.2", + "is-core-module": "^2.15.1", "is-glob": "^4.0.3", "minimatch": "^3.1.2", - "object.fromentries": "^2.0.7", - "object.groupby": "^1.0.1", - "object.values": "^1.1.7", + "object.fromentries": "^2.0.8", + "object.groupby": "^1.0.3", + "object.values": "^1.2.0", "semver": "^6.3.1", + "string.prototype.trimend": "^1.0.8", "tsconfig-paths": "^3.15.0" }, "engines": { "node": ">=4" }, "peerDependencies": { - "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" } }, "node_modules/eslint-plugin-import/node_modules/brace-expansion": { @@ -9893,6 +11137,7 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -9903,27 +11148,17 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, + "license": "MIT", "dependencies": { "ms": "^2.1.1" } }, - "node_modules/eslint-plugin-import/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/eslint-plugin-import/node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -9936,18 +11171,20 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/eslint-plugin-prettier": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.1.3.tgz", - "integrity": "sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.2.1.tgz", + "integrity": "sha512-gH3iR3g4JfF+yYPaJYkN7jEl9QbweL/YfkoRlNnuIEHEz1vHVlCmWOS+eGGiRuzHQXdJFCOTxRgvju9b8VUmrw==", "dev": true, + "license": "MIT", "dependencies": { "prettier-linter-helpers": "^1.0.0", - "synckit": "^0.8.6" + "synckit": "^0.9.1" }, "engines": { "node": "^14.18.0 || >=16.0.0" @@ -9970,30 +11207,19 @@ } } }, - "node_modules/eslint-plugin-sonarjs": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-sonarjs/-/eslint-plugin-sonarjs-0.25.1.tgz", - "integrity": "sha512-5IOKvj/GMBNqjxBdItfotfRHo7w48496GOu1hxdeXuD0mB1JBlDCViiLHETDTfA8pDAVSBimBEQoetRXYceQEw==", - "dev": true, - "engines": { - "node": ">=16" - }, - "peerDependencies": { - "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, "node_modules/eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.1.0.tgz", + "integrity": "sha512-14dSvlhaVhKKsa9Fx1l8A17s7ah7Ef7wCakJ10LYk6+GYmP9yDti2oq2SEwcyndt6knfcZyhyxwY3i9yL78EQw==", "dev": true, + "license": "BSD-2-Clause", "peer": true, "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "url": "https://opencollective.com/eslint" @@ -10004,6 +11230,7 @@ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, + "license": "Apache-2.0", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -10016,6 +11243,7 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "fast-deep-equal": "^3.1.1", @@ -10033,6 +11261,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "color-convert": "^2.0.1" @@ -10049,6 +11278,7 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "balanced-match": "^1.0.0", @@ -10060,6 +11290,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "ansi-styles": "^4.1.0", @@ -10077,6 +11308,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "color-name": "~1.1.4" @@ -10090,6 +11322,7 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true, + "license": "MIT", "peer": true }, "node_modules/eslint/node_modules/escape-string-regexp": { @@ -10097,6 +11330,7 @@ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, + "license": "MIT", "peer": true, "engines": { "node": ">=10" @@ -10105,50 +11339,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint/node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "node_modules/eslint/node_modules/eslint-visitor-keys": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.1.0.tgz", + "integrity": "sha512-Q7lok0mqMUSf5a/AdAZkA5a/gHcO6snwQClVNNvFKCAVlxXucdU8pKydU5ZVZjBx5xr37vGbFFWtLQYreLzrZg==", "dev": true, + "license": "Apache-2.0", "peer": true, - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, "engines": { - "node": ">=10" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "peer": true, - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/eslint/node_modules/globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", - "dev": true, - "peer": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://opencollective.com/eslint" } }, "node_modules/eslint/node_modules/has-flag": { @@ -10156,6 +11358,7 @@ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "license": "MIT", "peer": true, "engines": { "node": ">=8" @@ -10166,29 +11369,15 @@ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true, + "license": "MIT", "peer": true }, - "node_modules/eslint/node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "peer": true, - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/eslint/node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, + "license": "ISC", "peer": true, "dependencies": { "brace-expansion": "^1.1.7" @@ -10197,27 +11386,12 @@ "node": "*" } }, - "node_modules/eslint/node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "peer": true, - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/eslint/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "has-flag": "^4.0.0" @@ -10226,32 +11400,32 @@ "node": ">=8" } }, - "node_modules/eslint/node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "node_modules/espree": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.2.0.tgz", + "integrity": "sha512-upbkBJbckcCNBDBDXEbuhjbP68n+scUd3k/U2EkyM9nw+I/jPiL4cLF/Al06CF96wRltFda16sxDFrxsI1v0/g==", "dev": true, - "peer": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.12.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.1.0" + }, "engines": { - "node": ">=10" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://opencollective.com/eslint" } }, - "node_modules/espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.1.0.tgz", + "integrity": "sha512-Q7lok0mqMUSf5a/AdAZkA5a/gHcO6snwQClVNNvFKCAVlxXucdU8pKydU5ZVZjBx5xr37vGbFFWtLQYreLzrZg==", "dev": true, - "peer": true, - "dependencies": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - }, + "license": "Apache-2.0", "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "url": "https://opencollective.com/eslint" @@ -10262,6 +11436,7 @@ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true, + "license": "BSD-2-Clause", "bin": { "esparse": "bin/esparse.js", "esvalidate": "bin/esvalidate.js" @@ -10271,11 +11446,11 @@ } }, "node_modules/esquery": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", - "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", "dev": true, - "peer": true, + "license": "BSD-3-Clause", "dependencies": { "estraverse": "^5.1.0" }, @@ -10288,6 +11463,7 @@ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "estraverse": "^5.2.0" }, @@ -10300,6 +11476,7 @@ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } @@ -10309,6 +11486,7 @@ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=0.10.0" } @@ -10318,21 +11496,34 @@ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } }, + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/eventemitter3": { "version": "4.0.7", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/events": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8.x" } @@ -10342,6 +11533,7 @@ "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "dev": true, + "license": "MIT", "dependencies": { "cross-spawn": "^7.0.3", "get-stream": "^6.0.0", @@ -10365,6 +11557,7 @@ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -10372,44 +11565,53 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/execa/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true, + "license": "ISC" + }, "node_modules/exponential-backoff": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.1.tgz", "integrity": "sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==", - "dev": true + "dev": true, + "license": "Apache-2.0" }, "node_modules/express": { - "version": "4.19.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", - "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", + "version": "4.21.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.21.1.tgz", + "integrity": "sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ==", "dev": true, + "license": "MIT", "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.20.2", + "body-parser": "1.20.3", "content-disposition": "0.5.4", "content-type": "~1.0.4", - "cookie": "0.6.0", + "cookie": "0.7.1", "cookie-signature": "1.0.6", "debug": "2.6.9", "depd": "2.0.0", - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", - "finalhandler": "1.2.0", + "finalhandler": "1.3.1", "fresh": "0.5.2", "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", + "merge-descriptors": "1.0.3", "methods": "~1.1.2", "on-finished": "2.4.1", "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", + "path-to-regexp": "0.1.10", "proxy-addr": "~2.0.7", - "qs": "6.11.0", + "qs": "6.13.0", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", + "send": "0.19.0", + "serve-static": "1.16.2", "setprototypeof": "1.2.0", "statuses": "2.0.1", "type-is": "~1.6.18", @@ -10421,10 +11623,11 @@ } }, "node_modules/express/node_modules/cookie": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", - "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", + "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -10434,18 +11637,30 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.0.0" } }, - "node_modules/express/node_modules/finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "node_modules/express/node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/express/node_modules/finalhandler": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", + "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", + "dev": true, + "license": "MIT", "dependencies": { "debug": "2.6.9", - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "on-finished": "2.4.1", "parseurl": "~1.3.3", @@ -10460,13 +11675,15 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/express/node_modules/statuses": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -10475,13 +11692,15 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/external-editor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", "dev": true, + "license": "MIT", "dependencies": { "chardet": "^0.7.0", "iconv-lite": "^0.4.24", @@ -10496,6 +11715,7 @@ "resolved": "https://registry.npmjs.org/extract-files/-/extract-files-11.0.0.tgz", "integrity": "sha512-FuoE1qtbJ4bBVvv94CC7s0oTnKUGvQs+Rjf1L2SJFfS+HTVVjhPFtehPdQ0JiGPqVNfSSZvL5yzHHQq2Z4WNhQ==", "dev": true, + "license": "MIT", "engines": { "node": "^12.20 || >= 14.13" }, @@ -10508,6 +11728,7 @@ "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "debug": "^4.1.1", "get-stream": "^5.1.0", @@ -10527,31 +11748,36 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/fast-decode-uri-component/-/fast-decode-uri-component-1.0.1.tgz", "integrity": "sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/fast-diff": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", - "dev": true + "dev": true, + "license": "Apache-2.0" }, "node_modules/fast-fifo": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/fast-glob": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", "dev": true, + "license": "MIT", "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", @@ -10563,17 +11789,32 @@ "node": ">=8.6.0" } }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", "dev": true, + "license": "MIT", "peer": true }, "node_modules/fast-querystring": { @@ -10581,24 +11822,24 @@ "resolved": "https://registry.npmjs.org/fast-querystring/-/fast-querystring-1.1.2.tgz", "integrity": "sha512-g6KuKWmFXc0fID8WWH0jit4g0AGBoJhCkJMb1RmbsSEUNvQ+ZC8D6CUZ+GtF8nMzSPXnhiePyyqqipzNNEnHjg==", "dev": true, + "license": "MIT", "dependencies": { "fast-decode-uri-component": "^1.0.1" } }, - "node_modules/fast-url-parser": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/fast-url-parser/-/fast-url-parser-1.1.3.tgz", - "integrity": "sha512-5jOCVXADYNuRkKFzNJ0dCCewsZiYo0dz8QNYljkOpFC6r2U4OBmKtvm/Tsuh4w1YYdDqDb31a8TVhBJ2OJKdqQ==", + "node_modules/fast-uri": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.2.tgz", + "integrity": "sha512-GR6f0hD7XXyNJa25Tb9BuIdN0tdr+0BMi6/CJPH3wJO1JjNG3n/VsSw38AwRdKZABm8lGbPfakLRkYzx2V9row==", "dev": true, - "dependencies": { - "punycode": "^1.3.2" - } + "license": "MIT" }, "node_modules/fastq": { "version": "1.17.1", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", "dev": true, + "license": "ISC", "dependencies": { "reusify": "^1.0.4" } @@ -10608,6 +11849,7 @@ "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", "dev": true, + "license": "Apache-2.0", "dependencies": { "websocket-driver": ">=0.5.1" }, @@ -10620,6 +11862,7 @@ "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "bser": "2.1.1" } @@ -10629,6 +11872,7 @@ "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-3.0.5.tgz", "integrity": "sha512-ztsSx77JBtkuMrEypfhgc3cI0+0h+svqeie7xHbh1k/IKdcydnvadp/mUaGgjAOXQmQSxsqgaRhS3q9fy+1kxg==", "dev": true, + "license": "MIT", "dependencies": { "cross-fetch": "^3.1.5", "fbjs-css-vars": "^1.0.0", @@ -10643,13 +11887,15 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz", "integrity": "sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/fd-slicer": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", "dev": true, + "license": "MIT", "dependencies": { "pend": "~1.2.0" } @@ -10659,6 +11905,7 @@ "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", "dev": true, + "license": "MIT", "dependencies": { "escape-string-regexp": "^1.0.5" }, @@ -10670,31 +11917,34 @@ } }, "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { - "flat-cache": "^3.0.4" + "flat-cache": "^4.0.0" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=16.0.0" } }, "node_modules/filesize": { - "version": "9.0.11", - "resolved": "https://registry.npmjs.org/filesize/-/filesize-9.0.11.tgz", - "integrity": "sha512-gTAiTtI0STpKa5xesyTA9hA3LX4ga8sm2nWRcffEa1L/5vQwb4mj2MdzMkoHoGv4QzfDshQZuYscQSf8c4TKOA==", + "version": "10.1.6", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-10.1.6.tgz", + "integrity": "sha512-sJslQKU2uM33qH5nqewAwVB2QgR6w1aMNsYUp3aN5rMRyXEwJGmZvaWzeJFNTOXWlHQyBFCWrdj3fV/fsTOX8w==", + "license": "BSD-3-Clause", "engines": { - "node": ">= 0.4.0" + "node": ">= 10.4.0" } }, "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, + "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" }, @@ -10707,6 +11957,7 @@ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", "dev": true, + "license": "MIT", "dependencies": { "debug": "2.6.9", "encodeurl": "~1.0.2", @@ -10725,6 +11976,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.0.0" } @@ -10733,13 +11985,15 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/finalhandler/node_modules/on-finished": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", "dev": true, + "license": "MIT", "dependencies": { "ee-first": "1.1.1" }, @@ -10752,6 +12006,7 @@ "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-4.0.0.tgz", "integrity": "sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==", "dev": true, + "license": "MIT", "dependencies": { "common-path-prefix": "^3.0.0", "pkg-dir": "^7.0.0" @@ -10763,53 +12018,75 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "node_modules/find-replace": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz", + "integrity": "sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==", "dev": true, + "license": "MIT", "dependencies": { - "locate-path": "^5.0.0", + "array-back": "^3.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "locate-path": "^6.0.0", "path-exists": "^4.0.0" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/flat": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", - "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", - "dev": true, + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/flat/-/flat-6.0.1.tgz", + "integrity": "sha512-/3FfIa8mbrg3xE7+wAhWeV+bd7L2Mof+xtZb5dRDKZ+wDvYJK4WDYeIOuOhre5Yv5aQObZrlbRmk3RTSiuQBtw==", + "license": "BSD-3-Clause", "bin": { "flat": "cli.js" + }, + "engines": { + "node": ">=18" } }, "node_modules/flat-cache": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", - "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "flatted": "^3.2.9", - "keyv": "^4.5.3", - "rimraf": "^3.0.2" + "keyv": "^4.5.4" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=16" } }, "node_modules/flatted": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/follow-redirects": { - "version": "1.15.6", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", - "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", "dev": true, "funding": [ { @@ -10817,6 +12094,7 @@ "url": "https://github.com/sponsors/RubenVerborgh" } ], + "license": "MIT", "engines": { "node": ">=4.0" }, @@ -10831,15 +12109,16 @@ "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", "dev": true, + "license": "MIT", "dependencies": { "is-callable": "^1.1.3" } }, "node_modules/foreground-child": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", - "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", - "dev": true, + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", + "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", + "license": "ISC", "dependencies": { "cross-spawn": "^7.0.0", "signal-exit": "^4.0.1" @@ -10851,23 +12130,12 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/foreground-child/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/forwarded": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -10877,6 +12145,7 @@ "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", "dev": true, + "license": "MIT", "engines": { "node": "*" }, @@ -10890,6 +12159,7 @@ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -10898,7 +12168,7 @@ "version": "11.2.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", - "dev": true, + "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -10913,6 +12183,7 @@ "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz", "integrity": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==", "dev": true, + "license": "ISC", "dependencies": { "minipass": "^7.0.3" }, @@ -10920,17 +12191,11 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/fs-monkey": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.5.tgz", - "integrity": "sha512-8uMbBjrhzW76TYgEV27Y5E//W2f/lTFmx78P2w19FZSxarhI/798APGQyuGCwmkNxgwGRhrLfvWyLBvNtuOmew==", - "dev": true - }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true + "license": "ISC" }, "node_modules/fsevents": { "version": "2.3.3", @@ -10938,6 +12203,7 @@ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dev": true, "hasInstallScript": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -10951,6 +12217,7 @@ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -10960,6 +12227,7 @@ "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -10978,6 +12246,7 @@ "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -10987,6 +12256,7 @@ "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } @@ -10995,16 +12265,30 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, + "license": "ISC", "engines": { "node": "6.* || 8.* || >= 10.*" } }, + "node_modules/get-east-asian-width": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.2.0.tgz", + "integrity": "sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/get-intrinsic": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", "dev": true, + "license": "MIT", "dependencies": { "es-errors": "^1.3.0", "function-bind": "^1.1.2", @@ -11019,20 +12303,12 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", - "dev": true, - "engines": { - "node": ">=8.0.0" - } - }, "node_modules/get-stream": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", "dev": true, + "license": "MIT", "dependencies": { "pump": "^3.0.0" }, @@ -11048,6 +12324,7 @@ "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.5", "es-errors": "^1.3.0", @@ -11061,10 +12338,11 @@ } }, "node_modules/get-tsconfig": { - "version": "4.7.3", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.3.tgz", - "integrity": "sha512-ZvkrzoUA0PQZM6fy6+/Hce561s+faD1rsNwhnO5FelNjyy7EMGJ3Rz1AQ8GYDWjhRs/7dBLOEJvhK8MiEJOAFg==", + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.8.1.tgz", + "integrity": "sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==", "dev": true, + "license": "MIT", "dependencies": { "resolve-pkg-maps": "^1.0.0" }, @@ -11077,6 +12355,7 @@ "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.3.tgz", "integrity": "sha512-BzUrJBS9EcUb4cFol8r4W3v1cPsSyajLSthNkz5BxbpDcHN5tIrM10E2eNvfnvBn3DaT3DUgx0OpsBKkaOpanw==", "dev": true, + "license": "MIT", "dependencies": { "basic-ftp": "^5.0.2", "data-uri-to-buffer": "^6.0.2", @@ -11087,11 +12366,29 @@ "node": ">= 14" } }, + "node_modules/gettext-parser": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/gettext-parser/-/gettext-parser-8.0.0.tgz", + "integrity": "sha512-eFmhDi2xQ+2reMRY2AbJ2oa10uFOl1oyGbAKdCZiNOk94NJHi7aN0OBELSC9v35ZAPQdr+uRBi93/Gu4SlBdrA==", + "dev": true, + "license": "MIT", + "dependencies": { + "content-type": "^1.0.5", + "encoding": "^0.1.13", + "readable-stream": "^4.5.2", + "safe-buffer": "^5.2.1" + }, + "engines": { + "node": ">=18" + } + }, "node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, + "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -11108,28 +12405,31 @@ } }, "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, + "license": "ISC", "dependencies": { - "is-glob": "^4.0.1" + "is-glob": "^4.0.3" }, "engines": { - "node": ">= 6" + "node": ">=10.13.0" } }, "node_modules/glob-to-regexp": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "dev": true + "dev": true, + "license": "BSD-2-Clause" }, "node_modules/glob/node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -11140,6 +12440,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -11148,12 +12449,15 @@ } }, "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "version": "15.11.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.11.0.tgz", + "integrity": "sha512-yeyNSjdbyVaWurlwCpcA6XNBrHTMIeDdj0/hnvX/OLJ9ekOXYbLsLinH/MucQyGvNnXhidTdNhTtJaffL2sMfw==", "dev": true, "engines": { - "node": ">=4" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/globalthis": { @@ -11161,6 +12465,7 @@ "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", "dev": true, + "license": "MIT", "dependencies": { "define-properties": "^1.2.1", "gopd": "^1.0.1" @@ -11177,6 +12482,7 @@ "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dev": true, + "license": "MIT", "dependencies": { "array-union": "^2.1.0", "dir-glob": "^3.0.1", @@ -11197,6 +12503,7 @@ "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", "dev": true, + "license": "MIT", "dependencies": { "get-intrinsic": "^1.1.3" }, @@ -11208,27 +12515,30 @@ "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true + "license": "ISC" }, "node_modules/graphemer": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/graphql": { - "version": "16.8.1", - "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.8.1.tgz", - "integrity": "sha512-59LZHPdGZVh695Ud9lRzPBVTtlX9ZCV150Er2W43ro37wVof0ctenSaskPPjN7lVTIN8mSZt8PHUNKZuNQUuxw==", + "version": "16.9.0", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.9.0.tgz", + "integrity": "sha512-GGTKBX4SD7Wdb8mqeDLni2oaRGYQWjWHGKPQ24ZMnUtKfcsVoiv4uX8+LJr1K6U5VW2Lu1BwJnj7uiori0YtRw==", + "license": "MIT", "engines": { "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0" } }, "node_modules/graphql-config": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/graphql-config/-/graphql-config-5.0.3.tgz", - "integrity": "sha512-BNGZaoxIBkv9yy6Y7omvsaBUHOzfFcII3UN++tpH8MGOKFPFkCPZuwx09ggANMt8FgyWP1Od8SWPmrUEZca4NQ==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/graphql-config/-/graphql-config-5.1.3.tgz", + "integrity": "sha512-RBhejsPjrNSuwtckRlilWzLVt2j8itl74W9Gke1KejDTz7oaA5kVd6wRn9zK9TS5mcmIYGxf7zN7a1ORMdxp1Q==", "dev": true, + "license": "MIT", "dependencies": { "@graphql-tools/graphql-file-loader": "^8.0.0", "@graphql-tools/json-file-loader": "^8.0.0", @@ -11237,8 +12547,8 @@ "@graphql-tools/url-loader": "^8.0.0", "@graphql-tools/utils": "^10.0.0", "cosmiconfig": "^8.1.0", - "jiti": "^1.18.2", - "minimatch": "^4.2.3", + "jiti": "^2.0.0", + "minimatch": "^9.0.5", "string-env-interpolation": "^1.0.1", "tslib": "^2.4.0" }, @@ -11255,26 +12565,14 @@ } } }, - "node_modules/graphql-config/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "node_modules/graphql-config/node_modules/jiti": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.3.3.tgz", + "integrity": "sha512-EX4oNDwcXSivPrw2qKH2LB5PoFxEvgtv2JgwW0bU858HoLQ+kutSvjLMUqBd0PeJYEinLWhoI9Ol0eYMqj/wNQ==", "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/graphql-config/node_modules/minimatch": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-4.2.3.tgz", - "integrity": "sha512-lIUdtK5hdofgCTu3aT0sOaHsYR37viUuIc0rwnnDXImbwFRcumyLMeZaM0t0I/fgxS6s6JMfu0rLD1Wz9pv1ng==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": ">=10" + "license": "MIT", + "bin": { + "jiti": "lib/jiti-cli.mjs" } }, "node_modules/graphql-request": { @@ -11282,6 +12580,7 @@ "resolved": "https://registry.npmjs.org/graphql-request/-/graphql-request-6.1.0.tgz", "integrity": "sha512-p+XPfS4q7aIpKVcgmnZKhMNqhltk20hfXtkaIkTfjjmiKMJ5xrt5c743cL03y/K7y1rg3WrIC49xGiEQ4mxdNw==", "dev": true, + "license": "MIT", "dependencies": { "@graphql-typed-document-node/core": "^3.2.0", "cross-fetch": "^3.1.5" @@ -11294,6 +12593,7 @@ "version": "2.12.6", "resolved": "https://registry.npmjs.org/graphql-tag/-/graphql-tag-2.12.6.tgz", "integrity": "sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==", + "license": "MIT", "dependencies": { "tslib": "^2.1.0" }, @@ -11309,6 +12609,7 @@ "resolved": "https://registry.npmjs.org/graphql-ws/-/graphql-ws-5.16.0.tgz", "integrity": "sha512-Ju2RCU2dQMgSKtArPbEtsK5gNLnsQyTNIo/T7cZNp96niC1x0KdJNZV0TIoilceBPQwfb5itrGl8pkFeOUMl4A==", "devOptional": true, + "license": "MIT", "workspaces": [ "website" ], @@ -11323,13 +12624,15 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/has-bigints": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -11338,7 +12641,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -11348,6 +12651,7 @@ "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "dev": true, + "license": "MIT", "dependencies": { "es-define-property": "^1.0.0" }, @@ -11360,6 +12664,7 @@ "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -11372,6 +12677,7 @@ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -11384,6 +12690,7 @@ "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "dev": true, + "license": "MIT", "dependencies": { "has-symbols": "^1.0.3" }, @@ -11399,6 +12706,7 @@ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", "dev": true, + "license": "MIT", "dependencies": { "function-bind": "^1.1.2" }, @@ -11411,6 +12719,7 @@ "resolved": "https://registry.npmjs.org/header-case/-/header-case-2.0.4.tgz", "integrity": "sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==", "dev": true, + "license": "MIT", "dependencies": { "capital-case": "^1.0.4", "tslib": "^2.0.3" @@ -11420,15 +12729,17 @@ "version": "3.3.2", "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "license": "BSD-3-Clause", "dependencies": { "react-is": "^16.7.0" } }, "node_modules/hosted-git-info": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.1.tgz", - "integrity": "sha512-+K84LB1DYwMHoHSgaOY/Jfhw3ucPmSET5v98Ke/HdNSw4a0UktWzyW1mjhjpuxxTqOOsfWT/7iVshHmVZ4IpOA==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz", + "integrity": "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==", "dev": true, + "license": "ISC", "dependencies": { "lru-cache": "^10.0.1" }, @@ -11437,19 +12748,18 @@ } }, "node_modules/hosted-git-info/node_modules/lru-cache": { - "version": "10.2.2", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", - "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==", + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", "dev": true, - "engines": { - "node": "14 || >=16.14" - } + "license": "ISC" }, "node_modules/hpack.js": { "version": "2.1.6", "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", "dev": true, + "license": "MIT", "dependencies": { "inherits": "^2.0.1", "obuf": "^1.0.0", @@ -11461,13 +12771,15 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/hpack.js/node_modules/readable-stream": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dev": true, + "license": "MIT", "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -11482,13 +12794,15 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/hpack.js/node_modules/string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, + "license": "MIT", "dependencies": { "safe-buffer": "~5.1.0" } @@ -11507,13 +12821,15 @@ "type": "patreon", "url": "https://patreon.com/mdevils" } - ] + ], + "license": "MIT" }, "node_modules/html-escaper": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/htmlparser2": { "version": "8.0.2", @@ -11527,6 +12843,7 @@ "url": "https://github.com/sponsors/fb55" } ], + "license": "MIT", "dependencies": { "domelementtype": "^2.3.0", "domhandler": "^5.0.3", @@ -11538,19 +12855,22 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", - "dev": true + "dev": true, + "license": "BSD-2-Clause" }, "node_modules/http-deceiver": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/http-errors": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", "dev": true, + "license": "MIT", "dependencies": { "depd": "2.0.0", "inherits": "2.0.4", @@ -11567,6 +12887,7 @@ "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -11575,13 +12896,15 @@ "version": "0.5.8", "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/http-proxy": { "version": "1.18.1", "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", "dev": true, + "license": "MIT", "dependencies": { "eventemitter3": "^4.0.0", "follow-redirects": "^1.0.0", @@ -11596,6 +12919,7 @@ "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", "dev": true, + "license": "MIT", "dependencies": { "agent-base": "^7.1.0", "debug": "^4.3.4" @@ -11605,34 +12929,29 @@ } }, "node_modules/http-proxy-middleware": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", - "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-3.0.0.tgz", + "integrity": "sha512-36AV1fIaI2cWRzHo+rbcxhe3M3jUDCNzc4D5zRl57sEWRAxdXYtw7FSQKYY6PDKssiAKjLYypbssHk+xs/kMXw==", "dev": true, + "license": "MIT", "dependencies": { - "@types/http-proxy": "^1.17.8", + "@types/http-proxy": "^1.17.10", + "debug": "^4.3.4", "http-proxy": "^1.18.1", "is-glob": "^4.0.1", "is-plain-obj": "^3.0.0", - "micromatch": "^4.0.2" + "micromatch": "^4.0.5" }, "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "@types/express": "^4.17.13" - }, - "peerDependenciesMeta": { - "@types/express": { - "optional": true - } + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/https-proxy-agent": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz", - "integrity": "sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==", + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", + "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", "dev": true, + "license": "MIT", "dependencies": { "agent-base": "^7.0.2", "debug": "4" @@ -11646,15 +12965,27 @@ "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=10.17.0" } }, + "node_modules/hyperdyperid": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/hyperdyperid/-/hyperdyperid-1.2.0.tgz", + "integrity": "sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.18" + } + }, "node_modules/iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dev": true, + "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3" }, @@ -11667,6 +12998,7 @@ "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", "dev": true, + "license": "ISC", "engines": { "node": "^10 || ^12 || >= 14" }, @@ -11678,7 +13010,6 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true, "funding": [ { "type": "github", @@ -11692,22 +13023,25 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "BSD-3-Clause" }, "node_modules/ignore": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", - "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4" } }, "node_modules/ignore-walk": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-6.0.4.tgz", - "integrity": "sha512-t7sv42WkwFkyKbivUCglsQW5YWMskWtbEf4MNKX5u/CCWHKSPzN4FtBQGsQZgCLbxOzpVlcbWVK5KB3auIOjSw==", + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-6.0.5.tgz", + "integrity": "sha512-VuuG0wCnjhnylG1ABXT3dAuIpTNDs/G8jlpmwXY03fXoXy/8ZK8/T+hMzt8L4WnrLCJgdybqgPagnF/f97cg3A==", "dev": true, + "license": "ISC", "dependencies": { "minimatch": "^9.0.0" }, @@ -11720,6 +13054,7 @@ "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", "dev": true, + "license": "MIT", "optional": true, "bin": { "image-size": "bin/image-size.js" @@ -11733,6 +13068,7 @@ "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.7.6.tgz", "integrity": "sha512-AizQPcaofEtO11RZhPPHBOJRdo/20MKQF9mBLnVkBoyHi1/zXK8fzVdnEpSV9gxqtnh6Qomfp3F0xT5qP/vThw==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.8.0" } @@ -11741,7 +13077,7 @@ "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, + "license": "MIT", "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -11757,7 +13093,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -11767,6 +13103,7 @@ "resolved": "https://registry.npmjs.org/import-from/-/import-from-4.0.0.tgz", "integrity": "sha512-P9J71vT5nLlDeV8FHs5nNxaLbrpfAV5cF5srvbZfpwpcJoM/xZR3hiv+q+SAnuSmuGbXMWud063iIMx/V/EWZQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=12.2" }, @@ -11779,6 +13116,7 @@ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8.19" } @@ -11788,6 +13126,7 @@ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -11796,7 +13135,8 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "license": "ISC", "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -11806,60 +13146,144 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true + "license": "ISC" }, "node_modules/ini": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.2.tgz", - "integrity": "sha512-AMB1mvwR1pyBFY/nSevUX6y8nJWS63/SzUKD3JyQn97s4xgIdgQPT75IRouIiBAN4yLQBUShNYVW0+UG25daCw==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.3.tgz", + "integrity": "sha512-X7rqawQBvfdjS10YU1y1YVreA3SsLrW9dX2CewP2EbBJM4ypVNLDkO5y04gejPwKIY9lR+7r9gn3rFPt/kmWFg==", "dev": true, + "license": "ISC", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/inquirer": { - "version": "9.2.15", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-9.2.15.tgz", - "integrity": "sha512-vI2w4zl/mDluHt9YEQ/543VTCwPKWiHzKtm9dM2V0NdFcqEexDAjUHzO1oA60HRNaVifGXXM1tRRNluLVHa0Kg==", + "version": "8.2.6", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.6.tgz", + "integrity": "sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==", "dev": true, + "license": "MIT", "dependencies": { - "@ljharb/through": "^2.3.12", - "ansi-escapes": "^4.3.2", - "chalk": "^5.3.0", + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.1", "cli-cursor": "^3.1.0", - "cli-width": "^4.1.0", - "external-editor": "^3.1.0", - "figures": "^3.2.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", "lodash": "^4.17.21", - "mute-stream": "1.0.0", + "mute-stream": "0.0.8", "ora": "^5.4.1", - "run-async": "^3.0.0", - "rxjs": "^7.8.1", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^6.2.0" + "run-async": "^2.4.0", + "rxjs": "^7.5.5", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6", + "wrap-ansi": "^6.0.1" }, "engines": { - "node": ">=18" + "node": ">=12.0.0" + } + }, + "node_modules/inquirer/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/inquirer/node_modules/chalk": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", - "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" + "node": ">=10" }, "funding": { "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/inquirer/node_modules/cli-width": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">= 10" + } + }, + "node_modules/inquirer/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/inquirer/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/inquirer/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/inquirer/node_modules/mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true, + "license": "ISC" + }, + "node_modules/inquirer/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/internal-slot": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", "dev": true, + "license": "MIT", "dependencies": { "es-errors": "^1.3.0", "hasown": "^2.0.0", @@ -11874,6 +13298,7 @@ "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", "dev": true, + "license": "MIT", "dependencies": { "loose-envify": "^1.0.0" } @@ -11883,6 +13308,7 @@ "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", "dev": true, + "license": "MIT", "dependencies": { "jsbn": "1.1.0", "sprintf-js": "^1.1.3" @@ -11896,6 +13322,7 @@ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz", "integrity": "sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 10" } @@ -11905,6 +13332,7 @@ "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", "dev": true, + "license": "MIT", "dependencies": { "is-relative": "^1.0.0", "is-windows": "^1.0.1" @@ -11918,6 +13346,7 @@ "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "get-intrinsic": "^1.2.1" @@ -11933,13 +13362,14 @@ "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true + "license": "MIT" }, "node_modules/is-bigint": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", "dev": true, + "license": "MIT", "dependencies": { "has-bigints": "^1.0.1" }, @@ -11952,6 +13382,7 @@ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "dev": true, + "license": "MIT", "dependencies": { "binary-extensions": "^2.0.0" }, @@ -11964,6 +13395,7 @@ "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -11975,11 +13407,22 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-bun-module": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-bun-module/-/is-bun-module-1.2.1.tgz", + "integrity": "sha512-AmidtEM6D6NmUiLOvvU7+IePxjEjOzra2h0pSrsfSAcXwl/83zLLXDByafUJy9k/rKK0pvXMLdwKwGHlX2Ke6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.6.3" + } + }, "node_modules/is-callable": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -11988,12 +13431,16 @@ } }, "node_modules/is-core-module": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", - "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", + "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", "dev": true, + "license": "MIT", "dependencies": { - "hasown": "^2.0.0" + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -12004,6 +13451,7 @@ "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", "dev": true, + "license": "MIT", "dependencies": { "is-typed-array": "^1.1.13" }, @@ -12019,6 +13467,7 @@ "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", "dev": true, + "license": "MIT", "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -12030,15 +13479,16 @@ } }, "node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", + "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", "dev": true, + "license": "MIT", "bin": { "is-docker": "cli.js" }, "engines": { - "node": ">=8" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -12049,17 +13499,22 @@ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", + "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", "dev": true, + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/is-glob": { @@ -12067,6 +13522,7 @@ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, + "license": "MIT", "dependencies": { "is-extglob": "^2.1.1" }, @@ -12074,11 +13530,30 @@ "node": ">=0.10.0" } }, + "node_modules/is-inside-container": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", + "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-docker": "^3.0.0" + }, + "bin": { + "is-inside-container": "cli.js" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-interactive": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", - "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -12087,13 +13562,15 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/is-lower-case": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/is-lower-case/-/is-lower-case-2.0.2.tgz", "integrity": "sha512-bVcMJy4X5Og6VZfdOZstSexlEy20Sr0k/p/b2IlQJlfdKAQuMpiv5w2Ccxb8sKdRUNAG1PnHVHjFSdRDVS6NlQ==", "dev": true, + "license": "MIT", "dependencies": { "tslib": "^2.0.3" } @@ -12103,6 +13580,7 @@ "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -12110,11 +13588,25 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-network-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-network-error/-/is-network-error-1.1.0.tgz", + "integrity": "sha512-tUdRRAnhT+OtCZR/LxZelH/C7QtjtFrTu5tXCA8pl55eTUElUHT+GPYV8MBMBvea/j+NxQqVt3LbWMRir7Gx9g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.12.0" } @@ -12124,6 +13616,7 @@ "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", "dev": true, + "license": "MIT", "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -12134,21 +13627,12 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, - "peer": true, - "engines": { - "node": ">=8" - } - }, "node_modules/is-plain-obj": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -12161,6 +13645,7 @@ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "dev": true, + "license": "MIT", "dependencies": { "isobject": "^3.0.1" }, @@ -12173,6 +13658,7 @@ "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -12189,6 +13675,7 @@ "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", "dev": true, + "license": "MIT", "dependencies": { "is-unc-path": "^1.0.0" }, @@ -12201,6 +13688,7 @@ "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7" }, @@ -12216,6 +13704,7 @@ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" }, @@ -12228,6 +13717,7 @@ "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", "dev": true, + "license": "MIT", "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -12243,6 +13733,7 @@ "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", "dev": true, + "license": "MIT", "dependencies": { "has-symbols": "^1.0.2" }, @@ -12258,6 +13749,7 @@ "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", "dev": true, + "license": "MIT", "dependencies": { "which-typed-array": "^1.1.14" }, @@ -12273,6 +13765,7 @@ "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", "dev": true, + "license": "MIT", "dependencies": { "unc-path-regex": "^0.1.2" }, @@ -12284,7 +13777,7 @@ "version": "0.1.0", "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -12297,6 +13790,7 @@ "resolved": "https://registry.npmjs.org/is-upper-case/-/is-upper-case-2.0.2.tgz", "integrity": "sha512-44pxmxAvnnAOwBg4tHPnkfvgjPwbc5QIsSstNU+YcJ1ovxVzCWpSGosPJOZh/a1tdl81fbgnLc9LLv+x2ywbPQ==", "dev": true, + "license": "MIT", "dependencies": { "tslib": "^2.0.3" } @@ -12306,6 +13800,7 @@ "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2" }, @@ -12317,40 +13812,48 @@ "version": "3.14.1", "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/is-windows": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz", + "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==", "dev": true, + "license": "MIT", "dependencies": { - "is-docker": "^2.0.0" + "is-inside-container": "^1.0.0" }, "engines": { - "node": ">=8" + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/isarray": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/isbinaryfile": { "version": "4.0.10", "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz", "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 8.0.0" }, @@ -12362,13 +13865,14 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true + "license": "ISC" }, "node_modules/isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -12378,6 +13882,7 @@ "resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-5.0.0.tgz", "integrity": "sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==", "dev": true, + "license": "MIT", "peerDependencies": { "ws": "*" } @@ -12387,33 +13892,26 @@ "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=8" } }, "node_modules/istanbul-lib-instrument": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", - "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", + "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", + "@babel/core": "^7.23.9", + "@babel/parser": "^7.23.9", + "@istanbuljs/schema": "^0.1.3", "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" + "semver": "^7.5.4" }, "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-instrument/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" + "node": ">=10" } }, "node_modules/istanbul-lib-report": { @@ -12421,6 +13919,7 @@ "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "istanbul-lib-coverage": "^3.0.0", "make-dir": "^4.0.0", @@ -12435,6 +13934,7 @@ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -12444,6 +13944,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -12456,6 +13957,7 @@ "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "debug": "^4.1.1", "istanbul-lib-coverage": "^3.0.0", @@ -12470,6 +13972,7 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } @@ -12479,6 +13982,7 @@ "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "html-escaper": "^2.0.0", "istanbul-lib-report": "^3.0.0" @@ -12492,6 +13996,7 @@ "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { "@isaacs/cliui": "^8.0.2" }, @@ -12506,16 +14011,18 @@ } }, "node_modules/jasmine-core": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-5.1.2.tgz", - "integrity": "sha512-2oIUMGn00FdUiqz6epiiJr7xcFyNYj3rDcfmnzfkBnHyBQ3cBQUs4mmyGsOb7TTLb9kxk7dBcmEmqhDKkBoDyA==", - "dev": true + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-5.3.0.tgz", + "integrity": "sha512-zsOmeBKESky4toybvWEikRiZ0jHoBEu79wNArLfMdSnlLMZx3Xcp6CSm2sUcYyoJC+Uyj8LBJap/MUbVSfJ27g==", + "dev": true, + "license": "MIT" }, "node_modules/jest-worker": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*", "merge-stream": "^2.0.0", @@ -12530,6 +14037,7 @@ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -12539,6 +14047,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -12550,19 +14059,21 @@ } }, "node_modules/jiti": { - "version": "1.21.0", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.0.tgz", - "integrity": "sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==", + "version": "1.21.6", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz", + "integrity": "sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==", "dev": true, + "license": "MIT", "bin": { "jiti": "bin/jiti.js" } }, "node_modules/jose": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/jose/-/jose-5.2.4.tgz", - "integrity": "sha512-6ScbIk2WWCeXkmzF6bRPmEuaqy1m8SbsRFMa/FLrSCkGIhj8OLVG/IH+XHVmNMx/KUo8cVWEE6oKR4dJ+S0Rkg==", + "version": "5.9.4", + "resolved": "https://registry.npmjs.org/jose/-/jose-5.9.4.tgz", + "integrity": "sha512-WBBl6au1qg6OHj67yCffCgFR3BADJBXN8MdRvCgJDuMv3driV2nHr7jdGvaKX9IolosAsn+M0XRArqLXUhyJHQ==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/panva" } @@ -12570,13 +14081,14 @@ "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "license": "MIT" }, "node_modules/js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, + "license": "MIT", "dependencies": { "argparse": "^2.0.1" }, @@ -12588,13 +14100,15 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", "dev": true, + "license": "MIT", "bin": { "jsesc": "bin/jsesc" }, @@ -12607,13 +14121,15 @@ "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", "dev": true, + "license": "MIT", "peer": true }, "node_modules/json-parse-even-better-errors": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.1.tgz", - "integrity": "sha512-aatBvbL26wVUCLmbWdCpeu9iF5wOyWpagiKkInA+kfws3sWdBrTnsvN2CKcyCYyUrc7rebNBlK6+kteg7ksecg==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.2.tgz", + "integrity": "sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==", "dev": true, + "license": "MIT", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -12622,13 +14138,15 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", "dev": true, + "license": "MIT", "peer": true }, "node_modules/json-to-pretty-yaml": { @@ -12636,6 +14154,7 @@ "resolved": "https://registry.npmjs.org/json-to-pretty-yaml/-/json-to-pretty-yaml-1.2.2.tgz", "integrity": "sha512-rvm6hunfCcqegwYaG5T4yKJWxc9FXFgBVrcTZ4XfSVRwa5HA/Xs+vB/Eo9treYYHCeNM0nrSUr82V/M31Urc7A==", "dev": true, + "license": "Apache-2.0", "dependencies": { "remedial": "^1.0.7", "remove-trailing-spaces": "^1.0.6" @@ -12649,6 +14168,7 @@ "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true, + "license": "MIT", "bin": { "json5": "lib/cli.js" }, @@ -12657,16 +14177,17 @@ } }, "node_modules/jsonc-parser": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.1.tgz", - "integrity": "sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==", - "dev": true + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz", + "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==", + "dev": true, + "license": "MIT" }, "node_modules/jsonfile": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, + "license": "MIT", "dependencies": { "universalify": "^2.0.0" }, @@ -12681,13 +14202,15 @@ "dev": true, "engines": [ "node >= 0.2.0" - ] + ], + "license": "MIT" }, "node_modules/karma": { - "version": "6.4.3", - "resolved": "https://registry.npmjs.org/karma/-/karma-6.4.3.tgz", - "integrity": "sha512-LuucC/RE92tJ8mlCwqEoRWXP38UMAqpnq98vktmS9SznSoUPPUJQbc91dHcxcunROvfQjdORVA/YFviH+Xci9Q==", + "version": "6.4.4", + "resolved": "https://registry.npmjs.org/karma/-/karma-6.4.4.tgz", + "integrity": "sha512-LrtUxbdvt1gOpo3gxG+VAJlJAEMhbWlM4YrFQgql98FwF7+K8K12LYO4hnDdUkNjeztYrOXEMqgTajSWgmtI/w==", "dev": true, + "license": "MIT", "dependencies": { "@colors/colors": "1.5.0", "body-parser": "^1.19.0", @@ -12726,6 +14249,7 @@ "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-3.2.0.tgz", "integrity": "sha512-rE9RkUPI7I9mAxByQWkGJFXfFD6lE4gC5nPuZdobf/QdTEJI6EU4yIay/cfU/xV4ZxlM5JiTv7zWYgA64NpS5Q==", "dev": true, + "license": "MIT", "dependencies": { "which": "^1.2.1" } @@ -12735,6 +14259,7 @@ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "dev": true, + "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -12747,6 +14272,7 @@ "resolved": "https://registry.npmjs.org/karma-coverage/-/karma-coverage-2.2.1.tgz", "integrity": "sha512-yj7hbequkQP2qOSb20GuNSIyE//PgJWHwC2IydLE6XRtsnaflv+/OSGNssPjobYUlhVVagy99TQpqUt3vAUG7A==", "dev": true, + "license": "MIT", "dependencies": { "istanbul-lib-coverage": "^3.2.0", "istanbul-lib-instrument": "^5.1.0", @@ -12764,16 +14290,35 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, + "node_modules/karma-coverage/node_modules/istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/karma-coverage/node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -12781,11 +14326,22 @@ "node": "*" } }, + "node_modules/karma-coverage/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/karma-jasmine": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-5.1.0.tgz", "integrity": "sha512-i/zQLFrfEpRyQoJF9fsCdTMOF5c2dK7C7OmsuKg2D0YSsuZSfQDiLuaiktbuio6F2wiCsZSnSnieIQ0ant/uzQ==", "dev": true, + "license": "MIT", "dependencies": { "jasmine-core": "^4.1.0" }, @@ -12801,6 +14357,7 @@ "resolved": "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-2.1.0.tgz", "integrity": "sha512-sPQE1+nlsn6Hwb5t+HHwyy0A1FNCVKuL1192b+XNauMYWThz2kweiBVW1DqloRpVvZIJkIoHVB7XRpK78n1xbQ==", "dev": true, + "license": "MIT", "peerDependencies": { "jasmine-core": "^4.0.0 || ^5.0.0", "karma": "^6.0.0", @@ -12808,16 +14365,18 @@ } }, "node_modules/karma-jasmine/node_modules/jasmine-core": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-4.6.0.tgz", - "integrity": "sha512-O236+gd0ZXS8YAjFx8xKaJ94/erqUliEkJTDedyE7iHvv4ZVqi+q+8acJxu05/WJDKm512EUNn809In37nWlAQ==", - "dev": true + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-4.6.1.tgz", + "integrity": "sha512-VYz/BjjmC3klLJlLwA4Kw8ytk0zDSmbbDLNs794VnWmkcCB7I9aAL/D48VNQtmITyPvea2C3jdUMfc3kAoy0PQ==", + "dev": true, + "license": "MIT" }, "node_modules/karma-source-map-support": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/karma-source-map-support/-/karma-source-map-support-1.4.0.tgz", "integrity": "sha512-RsBECncGO17KAoJCYXjv+ckIz+Ii9NCi+9enk+rq6XC81ezYkb4/RHE6CTXdA7IOJqoF3wcaLfVG0CPmE5ca6A==", "dev": true, + "license": "MIT", "dependencies": { "source-map-support": "^0.5.5" } @@ -12827,6 +14386,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -12842,6 +14402,7 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -12852,6 +14413,7 @@ "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", "dev": true, + "license": "ISC", "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", @@ -12863,6 +14425,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -12874,13 +14437,15 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/karma/node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -12893,6 +14458,7 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } @@ -12902,14 +14468,15 @@ "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.3.tgz", "integrity": "sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==", "dev": true, + "license": "MIT", "engines": { "node": ">=14.14" } }, "node_modules/karma/node_modules/ua-parser-js": { - "version": "0.7.37", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.37.tgz", - "integrity": "sha512-xV8kqRKM+jhMvcHWUKthV9fNebIzrNy//2O9ZwWcfiBFR5f25XVZPLlEajk/sf3Ra15V92isyQqnIEXRDaZWEA==", + "version": "0.7.39", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.39.tgz", + "integrity": "sha512-IZ6acm6RhQHNibSt7+c09hhvsKy9WUr4DVbeq9U8o71qxyYtJpQeDxQnMrVqnIFMLcQjHO0I9wgfO2vIahht4w==", "dev": true, "funding": [ { @@ -12925,6 +14492,10 @@ "url": "https://github.com/sponsors/faisalman" } ], + "license": "MIT", + "bin": { + "ua-parser-js": "script/cli.js" + }, "engines": { "node": "*" } @@ -12934,6 +14505,7 @@ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -12951,6 +14523,7 @@ "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "dev": true, + "license": "MIT", "dependencies": { "cliui": "^7.0.2", "escalade": "^3.1.1", @@ -12969,6 +14542,7 @@ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", "dev": true, + "license": "ISC", "engines": { "node": ">=10" } @@ -12978,6 +14552,7 @@ "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "json-buffer": "3.0.1" @@ -12988,24 +14563,17 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/klona": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz", - "integrity": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, "node_modules/launch-editor": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.6.1.tgz", - "integrity": "sha512-eB/uXmFVpY4zezmGp5XtU21kwo7GBbKB+EQ+UZeWtGb9yAM5xt/Evk+lYH3eRNAtId+ej4u7TYPFZ07w4s7rRw==", + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.9.1.tgz", + "integrity": "sha512-Gcnl4Bd+hRO9P9icCP/RVVT2o8SFlPXofuCxvA2SaZuH45whSvf5p8x5oih5ftLiVhEI4sp5xDY+R+b3zJBh5w==", "dev": true, + "license": "MIT", "dependencies": { "picocolors": "^1.0.0", "shell-quote": "^1.8.1" @@ -13016,6 +14584,7 @@ "resolved": "https://registry.npmjs.org/less/-/less-4.2.0.tgz", "integrity": "sha512-P3b3HJDBtSzsXUl0im2L7gTO5Ubg8mEN6G8qoTS77iXxXX4Hvu4Qj540PZDvQ8V6DmX6iXo98k7Md0Cm1PrLaA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "copy-anything": "^2.0.1", "parse-node-version": "^1.0.1", @@ -13038,23 +14607,30 @@ } }, "node_modules/less-loader": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-11.1.0.tgz", - "integrity": "sha512-C+uDBV7kS7W5fJlUjq5mPBeBVhYpTIm5gB09APT9o3n/ILeaXVsiSFTbZpTJCJwQ/Crczfn3DmfQFwxYusWFug==", + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-12.2.0.tgz", + "integrity": "sha512-MYUxjSQSBUQmowc0l5nPieOYwMzGPUaTzB6inNW/bdPEG9zOL3eAAD1Qw5ZxSPk7we5dMojHwNODYMV1hq4EVg==", "dev": true, - "dependencies": { - "klona": "^2.0.4" - }, + "license": "MIT", "engines": { - "node": ">= 14.15.0" + "node": ">= 18.12.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/webpack" }, "peerDependencies": { + "@rspack/core": "0.x || 1.x", "less": "^3.5.0 || ^4.0.0", "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } } }, "node_modules/less/node_modules/make-dir": { @@ -13062,6 +14638,7 @@ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "pify": "^4.0.1", @@ -13076,6 +14653,7 @@ "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", "dev": true, + "license": "MIT", "optional": true, "bin": { "mime": "cli.js" @@ -13089,6 +14667,7 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, + "license": "ISC", "optional": true, "bin": { "semver": "bin/semver" @@ -13099,6 +14678,7 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, + "license": "BSD-3-Clause", "optional": true, "engines": { "node": ">=0.10.0" @@ -13109,6 +14689,7 @@ "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "prelude-ls": "^1.2.1", @@ -13123,6 +14704,7 @@ "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-4.0.2.tgz", "integrity": "sha512-771TFWFD70G1wLTC4oU2Cw4qvtmNrIw+wRvBtn+okgHl7slJVi7zfNcdmqDL72BojM30VNJ2UHylr1o77U37Jw==", "dev": true, + "license": "ISC", "dependencies": { "webpack-sources": "^3.0.0" }, @@ -13139,145 +14721,234 @@ "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true + "license": "MIT" }, "node_modules/listr2": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/listr2/-/listr2-4.0.5.tgz", - "integrity": "sha512-juGHV1doQdpNT3GSTs9IUN43QJb7KHdF9uqg7Vufs/tG9VTzpFphqF4pm/ICdAABGQxsyNn9CiYA3StkI6jpwA==", + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-8.2.4.tgz", + "integrity": "sha512-opevsywziHd3zHCVQGAj8zu+Z3yHNkkoYhWIGnq54RrCVwLz0MozotJEDnKsIBLvkfLGN6BLOyAeRrYI0pKA4g==", "dev": true, + "license": "MIT", "dependencies": { - "cli-truncate": "^2.1.0", - "colorette": "^2.0.16", - "log-update": "^4.0.0", - "p-map": "^4.0.0", - "rfdc": "^1.3.0", - "rxjs": "^7.5.5", - "through": "^2.3.8", - "wrap-ansi": "^7.0.0" + "cli-truncate": "^4.0.0", + "colorette": "^2.0.20", + "eventemitter3": "^5.0.1", + "log-update": "^6.1.0", + "rfdc": "^1.4.1", + "wrap-ansi": "^9.0.0" }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/listr2/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, - "peerDependencies": { - "enquirer": ">= 2.3.0 < 3" - }, - "peerDependenciesMeta": { - "enquirer": { - "optional": true - } + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, "node_modules/listr2/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=12" }, "funding": { "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/listr2/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/listr2/node_modules/emoji-regex": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz", + "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==", "dev": true, + "license": "MIT" + }, + "node_modules/listr2/node_modules/eventemitter3": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", + "dev": true, + "license": "MIT" + }, + "node_modules/listr2/node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "dev": true, + "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" }, "engines": { - "node": ">=7.0.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/listr2/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/listr2/node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "node_modules/listr2/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "ansi-regex": "^6.0.1" }, "engines": { - "node": ">=10" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/listr2/node_modules/wrap-ansi": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz", + "integrity": "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.2.1", + "string-width": "^7.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" }, "funding": { "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, + "node_modules/lmdb": { + "version": "3.0.13", + "resolved": "https://registry.npmjs.org/lmdb/-/lmdb-3.0.13.tgz", + "integrity": "sha512-UGe+BbaSUQtAMZobTb4nHvFMrmvuAQKSeaqAX2meTEQjfsbpl5sxdHD8T72OnwD4GU9uwNhYXIVe4QGs8N9Zyw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "msgpackr": "^1.10.2", + "node-addon-api": "^6.1.0", + "node-gyp-build-optional-packages": "5.2.2", + "ordered-binary": "^1.4.1", + "weak-lru-cache": "^1.2.2" + }, + "bin": { + "download-lmdb-prebuilds": "bin/download-prebuilds.js" + }, + "optionalDependencies": { + "@lmdb/lmdb-darwin-arm64": "3.0.13", + "@lmdb/lmdb-darwin-x64": "3.0.13", + "@lmdb/lmdb-linux-arm": "3.0.13", + "@lmdb/lmdb-linux-arm64": "3.0.13", + "@lmdb/lmdb-linux-x64": "3.0.13", + "@lmdb/lmdb-win32-x64": "3.0.13" + } + }, "node_modules/loader-runner": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.11.5" } }, "node_modules/loader-utils": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.1.tgz", - "integrity": "sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.3.1.tgz", + "integrity": "sha512-FMJTLMXfCLMLfJxcX9PFqX5qD88Z5MRGaZCVzfuqeZSPsyiBzs+pahDQjbIWz2QIzPZz0NX9Zy4FX3lmK6YHIg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 12.13.0" } }, "node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, + "license": "MIT", + "peer": true, "dependencies": { - "p-locate": "^4.1.0" + "p-locate": "^5.0.0" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true + "dev": true, + "license": "MIT" + }, + "node_modules/lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", + "license": "MIT" + }, + "node_modules/lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", + "dev": true, + "license": "MIT" }, "node_modules/lodash.debounce": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", - "dev": true + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.kebabcase": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz", + "integrity": "sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==", + "license": "MIT" }, "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true, + "license": "MIT", "peer": true }, "node_modules/lodash.sortby": { "version": "4.7.0", "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/log-symbols": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, + "license": "MIT", "dependencies": { "chalk": "^4.1.0", "is-unicode-supported": "^0.1.0" @@ -13293,7 +14964,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -13308,7 +14979,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -13324,7 +14995,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -13336,13 +15007,13 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "license": "MIT" }, "node_modules/log-symbols/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -13351,7 +15022,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -13360,78 +15031,214 @@ } }, "node_modules/log-update": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", - "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-6.1.0.tgz", + "integrity": "sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-escapes": "^4.3.0", - "cli-cursor": "^3.1.0", - "slice-ansi": "^4.0.0", - "wrap-ansi": "^6.2.0" + "ansi-escapes": "^7.0.0", + "cli-cursor": "^5.0.0", + "slice-ansi": "^7.1.0", + "strip-ansi": "^7.1.0", + "wrap-ansi": "^9.0.0" }, "engines": { - "node": ">=10" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/log-update/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/log-update/node_modules/ansi-escapes": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.0.0.tgz", + "integrity": "sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==", "dev": true, + "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "environment": "^1.0.0" }, "engines": { - "node": ">=8" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/log-update/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" }, "funding": { "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/log-update/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/log-update/node_modules/cli-cursor": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz", + "integrity": "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==", "dev": true, + "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "restore-cursor": "^5.0.0" }, "engines": { - "node": ">=7.0.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/log-update/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/log-update/node_modules/slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "node_modules/log-update/node_modules/emoji-regex": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz", + "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==", "dev": true, + "license": "MIT" + }, + "node_modules/log-update/node_modules/is-fullwidth-code-point": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-5.0.0.tgz", + "integrity": "sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==", + "dev": true, + "license": "MIT", "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" + "get-east-asian-width": "^1.0.0" }, "engines": { - "node": ">=10" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/onetime": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-7.0.0.tgz", + "integrity": "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-function": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/restore-cursor": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-5.1.0.tgz", + "integrity": "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==", + "dev": true, + "license": "MIT", + "dependencies": { + "onetime": "^7.0.0", + "signal-exit": "^4.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/slice-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-7.1.0.tgz", + "integrity": "sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.2.1", + "is-fullwidth-code-point": "^5.0.0" + }, + "engines": { + "node": ">=18" }, "funding": { "url": "https://github.com/chalk/slice-ansi?sponsor=1" } }, + "node_modules/log-update/node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/log-update/node_modules/wrap-ansi": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz", + "integrity": "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.2.1", + "string-width": "^7.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, "node_modules/log4js": { "version": "6.9.1", "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.9.1.tgz", "integrity": "sha512-1somDdy9sChrr9/f4UlzhdaGfDR2c/SaD2a4T7qEkG4jTS57/B3qmnjLYePwQ8cqWnUHZI0iAKxMBpCZICiZ2g==", "dev": true, + "license": "Apache-2.0", "dependencies": { "date-format": "^4.0.14", "debug": "^4.3.4", @@ -13447,6 +15254,7 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "license": "MIT", "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" }, @@ -13459,6 +15267,7 @@ "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", "dev": true, + "license": "MIT", "dependencies": { "tslib": "^2.0.3" } @@ -13468,6 +15277,7 @@ "resolved": "https://registry.npmjs.org/lower-case-first/-/lower-case-first-2.0.2.tgz", "integrity": "sha512-EVm/rR94FJTZi3zefZ82fLWab+GX14LJN4HrWBcuo6Evmsl9hEfnqxgcHCKb9q+mNf6EVdsjx/qucYFIIB84pg==", "dev": true, + "license": "MIT", "dependencies": { "tslib": "^2.0.3" } @@ -13477,20 +15287,19 @@ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", "dev": true, + "license": "ISC", "dependencies": { "yallist": "^3.0.2" } }, "node_modules/magic-string": { - "version": "0.30.8", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.8.tgz", - "integrity": "sha512-ISQTe55T2ao7XtlAStud6qwYPZjE4GK1S/BeVPus4jrq6JuOnQ00YKQC581RWhR122W7msZV263KzVeLoqidyQ==", + "version": "0.30.11", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.11.tgz", + "integrity": "sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==", "dev": true, + "license": "MIT", "dependencies": { - "@jridgewell/sourcemap-codec": "^1.4.15" - }, - "engines": { - "node": ">=12" + "@jridgewell/sourcemap-codec": "^1.5.0" } }, "node_modules/make-dir": { @@ -13498,6 +15307,7 @@ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", "dev": true, + "license": "MIT", "dependencies": { "semver": "^7.5.3" }, @@ -13513,6 +15323,7 @@ "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-13.0.1.tgz", "integrity": "sha512-cKTUFc/rbKUd/9meOvgrpJ2WrNzymt6jfRDdwg5UCnVzv9dTpEj9JS5m3wtziXVCjluIXyL8pcaukYqezIzZQA==", "dev": true, + "license": "ISC", "dependencies": { "@npmcli/agent": "^2.0.0", "cacache": "^18.0.0", @@ -13531,20 +15342,12 @@ "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/make-fetch-happen/node_modules/proc-log": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz", - "integrity": "sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==", - "dev": true, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, "node_modules/map-cache": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -13554,39 +15357,54 @@ "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/memfs": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", - "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.13.0.tgz", + "integrity": "sha512-dIs5KGy24fbdDhIAg0RxXpFqQp3RwL6wgSMRF9OSuphL/Uc9a4u2/SDJKPLj/zUgtOGKuHrRMrj563+IErj4Cg==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "fs-monkey": "^1.0.4" + "@jsonjoy.com/json-pack": "^1.0.3", + "@jsonjoy.com/util": "^1.3.0", + "tree-dump": "^1.0.1", + "tslib": "^2.0.0" }, "engines": { "node": ">= 4.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" } }, "node_modules/merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", - "dev": true + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, "node_modules/merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 8" } @@ -13596,6 +15414,7 @@ "resolved": "https://registry.npmjs.org/meros/-/meros-1.3.0.tgz", "integrity": "sha512-2BNGOimxEz5hmjUG2FwoxCt5HN7BXdaWyFqEwxPTrJzVdABtrL4TiHTcsWSFAxPQ/tOnEaQEJh3qWq71QRMY+w==", "dev": true, + "license": "MIT", "engines": { "node": ">=13" }, @@ -13613,17 +15432,19 @@ "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, + "license": "MIT", "dependencies": { - "braces": "^3.0.2", + "braces": "^3.0.3", "picomatch": "^2.3.1" }, "engines": { @@ -13635,6 +15456,7 @@ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8.6" }, @@ -13647,6 +15469,7 @@ "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", "dev": true, + "license": "MIT", "bin": { "mime": "cli.js" }, @@ -13659,6 +15482,7 @@ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -13668,6 +15492,7 @@ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dev": true, + "license": "MIT", "dependencies": { "mime-db": "1.52.0" }, @@ -13679,16 +15504,30 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, - "node_modules/mini-css-extract-plugin": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.8.1.tgz", - "integrity": "sha512-/1HDlyFRxWIZPI1ZpgqlZ8jMw/1Dp/dl3P0L1jtZ+zVcHqwPhGwaJwKL00WVgfnBy6PWCde9W65or7IIETImuA==", + "node_modules/mimic-function": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/mimic-function/-/mimic-function-5.0.1.tgz", + "integrity": "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==", "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mini-css-extract-plugin": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.9.0.tgz", + "integrity": "sha512-Zs1YsZVfemekSZG+44vBsYTLQORkPMwnlv+aehcxK/NLKC+EGhDB39/YePYYqx/sTk6NnYpuqikhSn7+JIevTA==", + "dev": true, + "license": "MIT", "dependencies": { "schema-utils": "^4.0.0", "tapable": "^2.2.1" @@ -13708,13 +15547,14 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/minimatch": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", - "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", - "dev": true, + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -13730,15 +15570,16 @@ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", - "dev": true, + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "license": "ISC", "engines": { "node": ">=16 || 14 >=14.17" } @@ -13748,6 +15589,7 @@ "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-2.0.1.tgz", "integrity": "sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==", "dev": true, + "license": "ISC", "dependencies": { "minipass": "^7.0.3" }, @@ -13756,10 +15598,11 @@ } }, "node_modules/minipass-fetch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.4.tgz", - "integrity": "sha512-jHAqnA728uUpIaFm7NWsCnqKT6UqZz7GcI/bDpPATuwYyKwJwW0remxSCxUlKiEty+eopHGa3oc8WxgQ1FFJqg==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.5.tgz", + "integrity": "sha512-2N8elDQAtSnFV0Dk7gt15KHsS0Fyz6CbYZ360h0WTYV1Ty46li3rAXVOQj1THMNLdmrD9Vt5pBPtWtVkpwGBqg==", "dev": true, + "license": "MIT", "dependencies": { "minipass": "^7.0.3", "minipass-sized": "^1.0.3", @@ -13777,6 +15620,7 @@ "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", "dev": true, + "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -13789,6 +15633,7 @@ "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, + "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -13800,41 +15645,15 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/minipass-json-stream": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz", - "integrity": "sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==", "dev": true, - "dependencies": { - "jsonparse": "^1.3.1", - "minipass": "^3.0.0" - } - }, - "node_modules/minipass-json-stream/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/minipass-json-stream/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "license": "ISC" }, "node_modules/minipass-pipeline": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", "dev": true, + "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -13847,6 +15666,7 @@ "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, + "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -13858,13 +15678,15 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/minipass-sized": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", "dev": true, + "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -13877,6 +15699,7 @@ "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, + "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -13888,13 +15711,15 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/minizlib": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", "dev": true, + "license": "MIT", "dependencies": { "minipass": "^3.0.0", "yallist": "^4.0.0" @@ -13908,6 +15733,7 @@ "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, + "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -13919,19 +15745,22 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/mitt": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/mkdirp": { "version": "0.5.6", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", "dev": true, + "license": "MIT", "dependencies": { "minimist": "^1.2.6" }, @@ -13944,21 +15773,57 @@ "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.0.tgz", "integrity": "sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" } }, "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/msgpackr": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/msgpackr/-/msgpackr-1.11.0.tgz", + "integrity": "sha512-I8qXuuALqJe5laEBYoFykChhSXLikZmUhccjGsPuSJ/7uPip2TJ7lwdIQwWSAi0jGZDXv4WOP8Qg65QZRuXxXw==", + "dev": true, + "license": "MIT", + "optionalDependencies": { + "msgpackr-extract": "^3.0.2" + } + }, + "node_modules/msgpackr-extract": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/msgpackr-extract/-/msgpackr-extract-3.0.3.tgz", + "integrity": "sha512-P0efT1C9jIdVRefqjzOQ9Xml57zpOXnIuS+csaB4MdZbTdmGDLo8XhzBG1N7aO11gKDDkJvBLULeFTo46wwreA==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "dependencies": { + "node-gyp-build-optional-packages": "5.2.2" + }, + "bin": { + "download-msgpackr-prebuilds": "bin/download-prebuilds.js" + }, + "optionalDependencies": { + "@msgpackr-extract/msgpackr-extract-darwin-arm64": "3.0.3", + "@msgpackr-extract/msgpackr-extract-darwin-x64": "3.0.3", + "@msgpackr-extract/msgpackr-extract-linux-arm": "3.0.3", + "@msgpackr-extract/msgpackr-extract-linux-arm64": "3.0.3", + "@msgpackr-extract/msgpackr-extract-linux-x64": "3.0.3", + "@msgpackr-extract/msgpackr-extract-win32-x64": "3.0.3" + } }, "node_modules/multicast-dns": { "version": "7.2.5", "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", "dev": true, + "license": "MIT", "dependencies": { "dns-packet": "^5.2.2", "thunky": "^1.0.2" @@ -13972,6 +15837,7 @@ "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-1.0.0.tgz", "integrity": "sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==", "dev": true, + "license": "ISC", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -13987,6 +15853,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -13998,13 +15865,15 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/needle": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/needle/-/needle-3.3.1.tgz", "integrity": "sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "iconv-lite": "^0.6.3", @@ -14022,6 +15891,7 @@ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" @@ -14035,6 +15905,7 @@ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -14043,28 +15914,76 @@ "version": "2.6.2", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/netmask": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz", "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4.0" } }, - "node_modules/ngx-filesize": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/ngx-filesize/-/ngx-filesize-3.0.3.tgz", - "integrity": "sha512-qqP2p4WbbF7R+NXC9NqRQdAfWfMAYJ2Ijf4ezRCq7j3tPY6ybSP9AZ3FY1U7/95n1hmOJ2U5oY+oFb7LhHQRBw==", + "node_modules/ng2-charts": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ng2-charts/-/ng2-charts-6.0.1.tgz", + "integrity": "sha512-pO7evbvHqjiKB7zqE12tCKWQI9gmQ8DVOEaWBBLlxJabc4fLGk7o9t4jC4+Q9pJiQrTtQkugm0dIPQ4PFHUaWA==", + "license": "MIT", "dependencies": { + "lodash-es": "^4.17.15", "tslib": "^2.3.0" }, "peerDependencies": { - "@angular/common": ">= 14.2.0 < 18.0.0", - "@angular/core": ">= 14.2.0 < 18.0.0", - "filesize": ">= 6.0.0 < 10.0.0" + "@angular/cdk": ">=17.0.0", + "@angular/common": ">=17.0.0", + "@angular/core": ">=17.0.0", + "@angular/platform-browser": ">=17.0.0", + "chart.js": "^3.4.0 || ^4.0.0", + "rxjs": "^6.5.3 || ^7.4.0" + } + }, + "node_modules/ngx-build-plus": { + "version": "18.0.0", + "resolved": "https://registry.npmjs.org/ngx-build-plus/-/ngx-build-plus-18.0.0.tgz", + "integrity": "sha512-dmnD5CpwopUPoN51ysoTLkS7Csqkgbs2dNLL5QI5pIhV4MxDXNE8+75QTwy8EPvK37t8RjGCTBdOqmAp8Rpa/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@angular-devkit/build-angular": "^18.0.0", + "@schematics/angular": "^18.0.0", + "webpack-merge": "^5.0.0" + }, + "peerDependencies": { + "@angular-devkit/build-angular": "^18.0.0", + "rxjs": ">= 6.0.0" + } + }, + "node_modules/ngx-build-plus/node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true, + "license": "BSD-3-Clause", + "bin": { + "flat": "cli.js" + } + }, + "node_modules/ngx-build-plus/node_modules/webpack-merge": { + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", + "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "clone-deep": "^4.0.1", + "flat": "^5.0.2", + "wildcard": "^2.0.0" + }, + "engines": { + "node": ">=10.0.0" } }, "node_modules/nice-napi": { @@ -14073,6 +15992,7 @@ "integrity": "sha512-px/KnJAJZf5RuBGcfD+Sp2pAKq0ytz8j+1NehvgIGFkvtvFrDM3T8E4x/JJODXK9WZow8RRGrbA9QQ3hs+pDhA==", "dev": true, "hasInstallScript": true, + "license": "MIT", "optional": true, "os": [ "!win32" @@ -14082,28 +16002,38 @@ "node-gyp-build": "^4.2.2" } }, + "node_modules/nice-napi/node_modules/node-addon-api": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", + "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==", + "dev": true, + "license": "MIT", + "optional": true + }, "node_modules/no-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", "dev": true, + "license": "MIT", "dependencies": { "lower-case": "^2.0.2", "tslib": "^2.0.3" } }, "node_modules/node-addon-api": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", - "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-6.1.0.tgz", + "integrity": "sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==", "dev": true, - "optional": true + "license": "MIT" }, "node_modules/node-fetch": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", "dev": true, + "license": "MIT", "dependencies": { "whatwg-url": "^5.0.0" }, @@ -14124,15 +16054,17 @@ "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", "dev": true, + "license": "(BSD-3-Clause OR GPL-2.0)", "engines": { "node": ">= 6.13.0" } }, "node_modules/node-gyp": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-10.1.0.tgz", - "integrity": "sha512-B4J5M1cABxPc5PwfjhbV5hoy2DP9p8lFXASnEN6hugXOa61416tnTZ29x9sSwAd0o99XNIcpvDDy1swAExsVKA==", + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-10.2.0.tgz", + "integrity": "sha512-sp3FonBAaFe4aYTcFdZUn2NYkbP7xroPGYvQmP4Nl5PxamznItBnNCgjrVTKrEfQynInMsJvZrdmqUnysCJ8rw==", "dev": true, + "license": "MIT", "dependencies": { "env-paths": "^2.2.0", "exponential-backoff": "^3.1.1", @@ -14140,9 +16072,9 @@ "graceful-fs": "^4.2.6", "make-fetch-happen": "^13.0.0", "nopt": "^7.0.0", - "proc-log": "^3.0.0", + "proc-log": "^4.1.0", "semver": "^7.3.5", - "tar": "^6.1.2", + "tar": "^6.2.1", "which": "^4.0.0" }, "bin": { @@ -14153,10 +16085,11 @@ } }, "node_modules/node-gyp-build": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.0.tgz", - "integrity": "sha512-u6fs2AEUljNho3EYTJNBfImO5QTo/J/1Etd+NVdCj7qWKUSN/bSLkZwhDv7I+w/MSC6qJ4cknepkAYykDdK8og==", + "version": "4.8.2", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.2.tgz", + "integrity": "sha512-IRUxE4BVsHWXkV/SFOut4qTlagw2aM8T5/vnTsmrHJvVoKueJHRc/JaFND7QDDc61kLYUJ6qlZM3sqTSyx2dTw==", "dev": true, + "license": "MIT", "optional": true, "bin": { "node-gyp-build": "bin.js", @@ -14164,24 +16097,38 @@ "node-gyp-build-test": "build-test.js" } }, - "node_modules/node-gyp/node_modules/glob": { - "version": "10.3.12", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.12.tgz", - "integrity": "sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==", + "node_modules/node-gyp-build-optional-packages": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.2.2.tgz", + "integrity": "sha512-s+w+rBWnpTMwSFbaE0UXsRlg7hU4FjekKU4eyAih5T8nJuNZT1nNsskXpxmeqSK9UzkBl6UgRlnKc8hz8IEqOw==", "dev": true, + "license": "MIT", + "dependencies": { + "detect-libc": "^2.0.1" + }, + "bin": { + "node-gyp-build-optional-packages": "bin.js", + "node-gyp-build-optional-packages-optional": "optional.js", + "node-gyp-build-optional-packages-test": "build-test.js" + } + }, + "node_modules/node-gyp/node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "dev": true, + "license": "ISC", "dependencies": { "foreground-child": "^3.1.0", - "jackspeak": "^2.3.6", - "minimatch": "^9.0.1", - "minipass": "^7.0.4", - "path-scurry": "^1.10.2" + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" }, "bin": { "glob": "dist/esm/bin.mjs" }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, "funding": { "url": "https://github.com/sponsors/isaacs" } @@ -14191,15 +16138,33 @@ "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", "dev": true, + "license": "ISC", "engines": { "node": ">=16" } }, + "node_modules/node-gyp/node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, "node_modules/node-gyp/node_modules/which": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", "dev": true, + "license": "ISC", "dependencies": { "isexe": "^3.1.1" }, @@ -14214,19 +16179,22 @@ "version": "0.4.0", "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/node-releases": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", - "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", - "dev": true + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", + "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", + "dev": true, + "license": "MIT" }, "node_modules/nopt": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-7.2.0.tgz", - "integrity": "sha512-CVDtwCdhYIvnAzFoJ6NJ6dX3oga9/HyciQDnG1vQDjSLMeKLJ4A93ZqYKDrgYSr1FBY5/hMYC+2VCi24pgpkGA==", + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-7.2.1.tgz", + "integrity": "sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w==", "dev": true, + "license": "ISC", "dependencies": { "abbrev": "^2.0.0" }, @@ -14238,13 +16206,13 @@ } }, "node_modules/normalize-package-data": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.0.tgz", - "integrity": "sha512-UL7ELRVxYBHBgYEtZCXjxuD5vPxnmvMGq0jp/dGPKKrN7tfsBh2IY7TlJ15WWwdjRWD3RJbnsygUurTK3xkPkg==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.2.tgz", + "integrity": "sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "hosted-git-info": "^7.0.0", - "is-core-module": "^2.8.1", "semver": "^7.3.5", "validate-npm-package-license": "^3.0.4" }, @@ -14257,6 +16225,7 @@ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -14266,15 +16235,17 @@ "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/npm-bundled": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-3.0.0.tgz", - "integrity": "sha512-Vq0eyEQy+elFpzsKjMss9kxqb9tG3YHg4dsyWuUENuzvSUWe1TCnW/vV9FkhvBk/brEDoDiVd+M1Btosa6ImdQ==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-3.0.1.tgz", + "integrity": "sha512-+AvaheE/ww1JEwRHOrn4WHNzOxGtVp+adrg2AeZS/7KuxGUYFuBta98wYpfHBbJp6Tg6j1NKSEVHNcfZzJHQwQ==", "dev": true, + "license": "ISC", "dependencies": { "npm-normalize-package-bin": "^3.0.0" }, @@ -14287,6 +16258,7 @@ "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-6.3.0.tgz", "integrity": "sha512-W29RiK/xtpCGqn6f3ixfRYGk+zRyr+Ew9F2E20BfXxT5/euLdA/Nm7fO7OeTGuAmTs30cpgInyJ0cYe708YTZw==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "semver": "^7.1.1" }, @@ -14299,18 +16271,20 @@ "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-3.0.1.tgz", "integrity": "sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ==", "dev": true, + "license": "ISC", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/npm-package-arg": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-11.0.1.tgz", - "integrity": "sha512-M7s1BD4NxdAvBKUPqqRW957Xwcl/4Zvo8Aj+ANrzvIPzGJZElrH7Z//rSaec2ORcND6FHHLnZeY8qgTpXDMFQQ==", + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-11.0.3.tgz", + "integrity": "sha512-sHGJy8sOC1YraBywpzQlIKBE4pBbGbiF95U6Auspzyem956E0+FtDtsx1ZxlOJkQCZ1AFXAY/yuvtFYrOxF+Bw==", "dev": true, + "license": "ISC", "dependencies": { "hosted-git-info": "^7.0.0", - "proc-log": "^3.0.0", + "proc-log": "^4.0.0", "semver": "^7.3.5", "validate-npm-package-name": "^5.0.0" }, @@ -14323,6 +16297,7 @@ "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-8.0.2.tgz", "integrity": "sha512-shYrPFIS/JLP4oQmAwDyk5HcyysKW8/JLTEA32S0Z5TzvpaeeX2yMFfoK1fjEBnCBvVyIB/Jj/GBFdm0wsgzbA==", "dev": true, + "license": "ISC", "dependencies": { "ignore-walk": "^6.0.4" }, @@ -14331,10 +16306,11 @@ } }, "node_modules/npm-pick-manifest": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-9.0.0.tgz", - "integrity": "sha512-VfvRSs/b6n9ol4Qb+bDwNGUXutpy76x6MARw/XssevE0TnctIKcmklJZM5Z7nqs5z5aW+0S63pgCNbpkUNNXBg==", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-9.1.0.tgz", + "integrity": "sha512-nkc+3pIIhqHVQr085X9d2JzPzLyjzQS96zbruppqC9aZRm/x8xx6xhI98gHtsfELP2bE+loHq8ZaHFHhe+NauA==", "dev": true, + "license": "ISC", "dependencies": { "npm-install-checks": "^6.0.0", "npm-normalize-package-bin": "^3.0.0", @@ -14346,16 +16322,17 @@ } }, "node_modules/npm-registry-fetch": { - "version": "16.2.1", - "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-16.2.1.tgz", - "integrity": "sha512-8l+7jxhim55S85fjiDGJ1rZXBWGtRLi1OSb4Z3BPLObPuIaeKRlPRiYMSHU4/81ck3t71Z+UwDDl47gcpmfQQA==", + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-17.1.0.tgz", + "integrity": "sha512-5+bKQRH0J1xG1uZ1zMNvxW0VEyoNWgJpY9UDuluPFLKDfJ9u2JmmjmTJV1srBGQOROfdBMiVvnH2Zvpbm+xkVA==", "dev": true, + "license": "ISC", "dependencies": { - "@npmcli/redact": "^1.1.0", + "@npmcli/redact": "^2.0.0", + "jsonparse": "^1.3.1", "make-fetch-happen": "^13.0.0", "minipass": "^7.0.2", "minipass-fetch": "^3.0.0", - "minipass-json-stream": "^1.0.1", "minizlib": "^2.1.2", "npm-package-arg": "^11.0.0", "proc-log": "^4.0.0" @@ -14364,20 +16341,12 @@ "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/npm-registry-fetch/node_modules/proc-log": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz", - "integrity": "sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==", - "dev": true, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, "node_modules/npm-run-path": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", "dev": true, + "license": "MIT", "dependencies": { "path-key": "^3.0.0" }, @@ -14390,6 +16359,7 @@ "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "boolbase": "^1.0.0" }, @@ -14401,21 +16371,27 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/nullthrows/-/nullthrows-1.1.1.tgz", "integrity": "sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/object-inspect": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", - "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", + "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -14425,6 +16401,7 @@ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" } @@ -14434,6 +16411,7 @@ "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.5", "define-properties": "^1.2.1", @@ -14452,6 +16430,7 @@ "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -14470,6 +16449,7 @@ "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -14484,6 +16464,7 @@ "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -14500,13 +16481,15 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/on-finished": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", "dev": true, + "license": "MIT", "dependencies": { "ee-first": "1.1.1" }, @@ -14519,6 +16502,7 @@ "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -14527,7 +16511,7 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, + "license": "ISC", "dependencies": { "wrappy": "1" } @@ -14536,7 +16520,7 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, + "license": "MIT", "dependencies": { "mimic-fn": "^2.1.0" }, @@ -14548,17 +16532,19 @@ } }, "node_modules/open": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", - "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/open/-/open-10.1.0.tgz", + "integrity": "sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw==", "dev": true, + "license": "MIT", "dependencies": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" + "default-browser": "^5.2.1", + "define-lazy-prop": "^3.0.0", + "is-inside-container": "^1.0.0", + "is-wsl": "^3.1.0" }, "engines": { - "node": ">=12" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -14568,6 +16554,7 @@ "version": "0.18.0", "resolved": "https://registry.npmjs.org/optimism/-/optimism-0.18.0.tgz", "integrity": "sha512-tGn8+REwLRNFnb9WmcY5IfpOqeX2kpaYJ1s6Ae3mn12AeydLkR3j+jSCmVQFoXqU8D41PAJ1RG1rCRNWmNZVmQ==", + "license": "MIT", "dependencies": { "@wry/caches": "^1.0.0", "@wry/context": "^0.7.0", @@ -14579,6 +16566,7 @@ "version": "0.4.3", "resolved": "https://registry.npmjs.org/@wry/trie/-/trie-0.4.3.tgz", "integrity": "sha512-I6bHwH0fSf6RqQcnnXLJKhkSXG45MFral3GxPaY4uAl0LYDZM+YDVDAiU9bYwjTuysy1S0IeecWtmq1SZA3M1w==", + "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, @@ -14591,6 +16579,7 @@ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "deep-is": "^0.1.3", @@ -14608,7 +16597,7 @@ "version": "5.4.1", "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", - "dev": true, + "license": "MIT", "dependencies": { "bl": "^4.1.0", "chalk": "^4.1.0", @@ -14631,7 +16620,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -14646,7 +16635,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -14662,7 +16651,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -14674,13 +16663,13 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "license": "MIT" }, "node_modules/ora/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -14689,7 +16678,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -14697,11 +16686,19 @@ "node": ">=8" } }, + "node_modules/ordered-binary": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/ordered-binary/-/ordered-binary-1.5.2.tgz", + "integrity": "sha512-JTo+4+4Fw7FreyAvlSLjb1BBVaxEQAacmjD3jjuyPZclpbEghTvQZbXBb2qPd2LeIMxiHwXBZUcpmG2Gl/mDEA==", + "dev": true, + "license": "MIT" + }, "node_modules/os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -14711,6 +16708,7 @@ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, + "license": "MIT", "dependencies": { "yocto-queue": "^0.1.0" }, @@ -14722,27 +16720,17 @@ } }, "node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, + "license": "MIT", + "peer": true, "dependencies": { - "p-limit": "^2.2.0" + "p-limit": "^3.0.2" }, "engines": { - "node": ">=8" - } - }, - "node_modules/p-locate/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -14753,6 +16741,7 @@ "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", "dev": true, + "license": "MIT", "dependencies": { "aggregate-error": "^3.0.0" }, @@ -14764,16 +16753,21 @@ } }, "node_modules/p-retry": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", - "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-6.2.0.tgz", + "integrity": "sha512-JA6nkq6hKyWLLasXQXUrO4z8BUZGUt/LjlJxx8Gb2+2ntodU/SS63YZ8b0LUTbQ8ZB9iwOfhEPhg4ykKnn2KsA==", "dev": true, + "license": "MIT", "dependencies": { - "@types/retry": "0.12.0", + "@types/retry": "0.12.2", + "is-network-error": "^1.0.0", "retry": "^0.13.1" }, "engines": { - "node": ">=8" + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/p-retry/node_modules/retry": { @@ -14781,6 +16775,7 @@ "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4" } @@ -14790,24 +16785,26 @@ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/pac-proxy-agent": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.0.1.tgz", - "integrity": "sha512-ASV8yU4LLKBAjqIPMbrgtaKIvxQri/yh2OpI+S6hVa9JRkUI3Y3NPFbfngDtY7oFtSMD3w31Xns89mDa3Feo5A==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.0.2.tgz", + "integrity": "sha512-BFi3vZnO9X5Qt6NRz7ZOaPja3ic0PhlsmCRYLOpN11+mWBCR6XJDqW5RF3j8jm4WGGQZtBA+bTfxYzeKW73eHg==", "dev": true, + "license": "MIT", "dependencies": { "@tootallnate/quickjs-emscripten": "^0.23.0", "agent-base": "^7.0.2", "debug": "^4.3.4", "get-uri": "^6.0.1", "http-proxy-agent": "^7.0.0", - "https-proxy-agent": "^7.0.2", - "pac-resolver": "^7.0.0", - "socks-proxy-agent": "^8.0.2" + "https-proxy-agent": "^7.0.5", + "pac-resolver": "^7.0.1", + "socks-proxy-agent": "^8.0.4" }, "engines": { "node": ">= 14" @@ -14818,6 +16815,7 @@ "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.1.tgz", "integrity": "sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==", "dev": true, + "license": "MIT", "dependencies": { "degenerator": "^5.0.0", "netmask": "^2.0.2" @@ -14826,33 +16824,39 @@ "node": ">= 14" } }, + "node_modules/package-json-from-dist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "license": "BlueOak-1.0.0" + }, "node_modules/pacote": { - "version": "17.0.6", - "resolved": "https://registry.npmjs.org/pacote/-/pacote-17.0.6.tgz", - "integrity": "sha512-cJKrW21VRE8vVTRskJo78c/RCvwJCn1f4qgfxL4w77SOWrTCRcmfkYHlHtS0gqpgjv3zhXflRtgsrUCX5xwNnQ==", + "version": "18.0.6", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-18.0.6.tgz", + "integrity": "sha512-+eK3G27SMwsB8kLIuj4h1FUhHtwiEUo21Tw8wNjmvdlpOEr613edv+8FUsTj/4F/VN5ywGE19X18N7CC2EJk6A==", "dev": true, + "license": "ISC", "dependencies": { "@npmcli/git": "^5.0.0", "@npmcli/installed-package-contents": "^2.0.1", + "@npmcli/package-json": "^5.1.0", "@npmcli/promise-spawn": "^7.0.0", - "@npmcli/run-script": "^7.0.0", + "@npmcli/run-script": "^8.0.0", "cacache": "^18.0.0", "fs-minipass": "^3.0.0", "minipass": "^7.0.2", "npm-package-arg": "^11.0.0", "npm-packlist": "^8.0.0", "npm-pick-manifest": "^9.0.0", - "npm-registry-fetch": "^16.0.0", - "proc-log": "^3.0.0", + "npm-registry-fetch": "^17.0.0", + "proc-log": "^4.0.0", "promise-retry": "^2.0.1", - "read-package-json": "^7.0.0", - "read-package-json-fast": "^3.0.0", "sigstore": "^2.2.0", "ssri": "^10.0.0", "tar": "^6.1.11" }, "bin": { - "pacote": "lib/bin.js" + "pacote": "bin/index.js" }, "engines": { "node": "^16.14.0 || >=18.0.0" @@ -14863,6 +16867,7 @@ "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", "dev": true, + "license": "MIT", "dependencies": { "dot-case": "^3.0.4", "tslib": "^2.0.3" @@ -14872,7 +16877,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, + "license": "MIT", "dependencies": { "callsites": "^3.0.0" }, @@ -14885,6 +16890,7 @@ "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", "integrity": "sha512-FwdRXKCohSVeXqwtYonZTXtbGJKrn+HNyWDYVcp5yuJlesTwNH4rsmRZ+GrKAPJ5bLpRxESMeS+Rl0VCHRvB2Q==", "dev": true, + "license": "MIT", "dependencies": { "is-absolute": "^1.0.0", "map-cache": "^0.2.0", @@ -14898,7 +16904,7 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", @@ -14916,13 +16922,14 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true + "license": "MIT" }, "node_modules/parse-node-version": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.10" } @@ -14932,6 +16939,7 @@ "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", "devOptional": true, + "license": "MIT", "dependencies": { "entities": "^4.4.0" }, @@ -14944,6 +16952,7 @@ "resolved": "https://registry.npmjs.org/parse5-html-rewriting-stream/-/parse5-html-rewriting-stream-7.0.0.tgz", "integrity": "sha512-mazCyGWkmCRWDI15Zp+UiCqMp/0dgEmkZRvhlsqqKYr4SsVm/TvnSpD9fCvqCA2zoWJcfRym846ejWBBHRiYEg==", "dev": true, + "license": "MIT", "dependencies": { "entities": "^4.3.0", "parse5": "^7.0.0", @@ -14953,11 +16962,26 @@ "url": "https://github.com/inikulin/parse5?sponsor=1" } }, + "node_modules/parse5-htmlparser2-tree-adapter": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz", + "integrity": "sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "domhandler": "^5.0.2", + "parse5": "^7.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, "node_modules/parse5-sax-parser": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/parse5-sax-parser/-/parse5-sax-parser-7.0.0.tgz", "integrity": "sha512-5A+v2SNsq8T6/mG3ahcz8ZtQ0OUFTatxPbeidoMB7tkJSGDY3tdfl4MHovtLQHkEn5CGxijNWRQHhRQ6IRpXKg==", "dev": true, + "license": "MIT", "dependencies": { "parse5": "^7.0.0" }, @@ -14970,6 +16994,7 @@ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -14979,6 +17004,7 @@ "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", "dev": true, + "license": "MIT", "dependencies": { "no-case": "^3.0.4", "tslib": "^2.0.3" @@ -14989,6 +17015,7 @@ "resolved": "https://registry.npmjs.org/path-case/-/path-case-3.0.4.tgz", "integrity": "sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==", "dev": true, + "license": "MIT", "dependencies": { "dot-case": "^3.0.4", "tslib": "^2.0.3" @@ -14999,6 +17026,7 @@ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -15008,6 +17036,7 @@ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -15016,7 +17045,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -15025,13 +17054,15 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/path-root": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", "integrity": "sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg==", "dev": true, + "license": "MIT", "dependencies": { "path-root-regex": "^0.1.0" }, @@ -15044,46 +17075,45 @@ "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", "integrity": "sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/path-scurry": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.2.tgz", - "integrity": "sha512-7xTavNy5RQXnsjANvVvMkEjvloOinkAjv/Z6Ildz9v2RinZ4SBKTWFOVRbaF8p0vpHnyjV/UwNDdKuUv6M5qcA==", - "dev": true, + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "license": "BlueOak-1.0.0", "dependencies": { "lru-cache": "^10.2.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">=16 || 14 >=14.18" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/path-scurry/node_modules/lru-cache": { - "version": "10.2.2", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", - "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==", - "dev": true, - "engines": { - "node": "14 || >=16.14" - } + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "license": "ISC" }, "node_modules/path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", - "dev": true + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz", + "integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==", + "dev": true, + "license": "MIT" }, "node_modules/path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -15092,19 +17122,21 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz", + "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==", + "license": "ISC" }, "node_modules/picomatch": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.1.tgz", - "integrity": "sha512-xUXwsxNjwTQ8K3GnT4pCJm+xq3RUPQbmkYJTP5aFIfNIvbcc/4MUxgBaaRSZJ6yGJZiGSyYlM6MzwTsRk8SYCg==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -15117,16 +17149,18 @@ "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", "dev": true, + "license": "MIT", "optional": true, "engines": { "node": ">=6" } }, "node_modules/piscina": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/piscina/-/piscina-4.4.0.tgz", - "integrity": "sha512-+AQduEJefrOApE4bV7KRmp3N2JnnyErlVqq4P/jmko4FPz9Z877BCccl/iB3FdrWSUkvbGV9Kan/KllJgat3Vg==", + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/piscina/-/piscina-4.6.1.tgz", + "integrity": "sha512-z30AwWGtQE+Apr+2WBZensP2lIvwoaMcOPkQlIEmSGMJNUvaYACylPYrQM6wSdUNJlnDVMSpLv7xTMJqlVshOA==", "dev": true, + "license": "MIT", "optionalDependencies": { "nice-napi": "^1.0.2" } @@ -15136,6 +17170,7 @@ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz", "integrity": "sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==", "dev": true, + "license": "MIT", "dependencies": { "find-up": "^6.3.0" }, @@ -15151,6 +17186,7 @@ "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", "dev": true, + "license": "MIT", "dependencies": { "locate-path": "^7.1.0", "path-exists": "^5.0.0" @@ -15167,6 +17203,7 @@ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", "dev": true, + "license": "MIT", "dependencies": { "p-locate": "^6.0.0" }, @@ -15182,6 +17219,7 @@ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", "dev": true, + "license": "MIT", "dependencies": { "yocto-queue": "^1.0.0" }, @@ -15197,6 +17235,7 @@ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", "dev": true, + "license": "MIT", "dependencies": { "p-limit": "^4.0.0" }, @@ -15212,15 +17251,17 @@ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", "dev": true, + "license": "MIT", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } }, "node_modules/pkg-dir/node_modules/yocto-queue": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", - "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.1.1.tgz", + "integrity": "sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==", "dev": true, + "license": "MIT", "engines": { "node": ">=12.20" }, @@ -15233,14 +17274,15 @@ "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" } }, "node_modules/postcss": { - "version": "8.4.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.35.tgz", - "integrity": "sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==", + "version": "8.4.41", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.41.tgz", + "integrity": "sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ==", "dev": true, "funding": [ { @@ -15256,10 +17298,11 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { "nanoid": "^3.3.7", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" + "picocolors": "^1.0.1", + "source-map-js": "^1.2.0" }, "engines": { "node": "^10 || ^12 || >=14" @@ -15270,6 +17313,7 @@ "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-8.1.1.tgz", "integrity": "sha512-0IeqyAsG6tYiDRCYKQJLAmgQr47DX6N7sFSWvQxt6AcupX8DIdmykuk/o/tx0Lze3ErGHJEp5OSRxrelC6+NdQ==", "dev": true, + "license": "MIT", "dependencies": { "cosmiconfig": "^9.0.0", "jiti": "^1.20.0", @@ -15301,6 +17345,7 @@ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", "dev": true, + "license": "MIT", "dependencies": { "env-paths": "^2.2.1", "import-fresh": "^3.3.0", @@ -15326,13 +17371,15 @@ "version": "0.2.3", "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz", "integrity": "sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/postcss-modules-extract-imports": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz", "integrity": "sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==", "dev": true, + "license": "ISC", "engines": { "node": "^10 || ^12 || >= 14" }, @@ -15345,6 +17392,7 @@ "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.5.tgz", "integrity": "sha512-6MieY7sIfTK0hYfafw1OMEG+2bg8Q1ocHCpoWLqOKj3JXlKu4G7btkmM/B7lFubYkYWmRSPLZi5chid63ZaZYw==", "dev": true, + "license": "MIT", "dependencies": { "icss-utils": "^5.0.0", "postcss-selector-parser": "^6.0.2", @@ -15362,6 +17410,7 @@ "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.0.tgz", "integrity": "sha512-oq+g1ssrsZOsx9M96c5w8laRmvEu9C3adDSjI8oTcbfkrTE8hx/zfyobUoWIxaKPO8bt6S62kxpw5GqypEw1QQ==", "dev": true, + "license": "ISC", "dependencies": { "postcss-selector-parser": "^6.0.4" }, @@ -15377,6 +17426,7 @@ "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", "dev": true, + "license": "ISC", "dependencies": { "icss-utils": "^5.0.0" }, @@ -15388,10 +17438,11 @@ } }, "node_modules/postcss-selector-parser": { - "version": "6.0.16", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.16.tgz", - "integrity": "sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==", + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", "dev": true, + "license": "MIT", "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -15404,23 +17455,26 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true, + "license": "MIT", "peer": true, "engines": { "node": ">= 0.8.0" } }, "node_modules/prettier": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.5.tgz", - "integrity": "sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz", + "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==", "dev": true, + "license": "MIT", "bin": { "prettier": "bin/prettier.cjs" }, @@ -15436,6 +17490,7 @@ "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", "dev": true, + "license": "MIT", "dependencies": { "fast-diff": "^1.1.2" }, @@ -15444,25 +17499,38 @@ } }, "node_modules/proc-log": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", - "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz", + "integrity": "sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==", "dev": true, + "license": "ISC", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6.0" + } + }, "node_modules/process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/progress": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.4.0" } @@ -15472,6 +17540,7 @@ "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", "dev": true, + "license": "MIT", "dependencies": { "asap": "~2.0.3" } @@ -15480,13 +17549,15 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/promise-retry": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", "dev": true, + "license": "MIT", "dependencies": { "err-code": "^2.0.2", "retry": "^0.12.0" @@ -15499,6 +17570,7 @@ "version": "15.8.1", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "license": "MIT", "dependencies": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", @@ -15510,6 +17582,7 @@ "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", "dev": true, + "license": "MIT", "dependencies": { "forwarded": "0.2.0", "ipaddr.js": "1.9.1" @@ -15523,6 +17596,7 @@ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.10" } @@ -15532,6 +17606,7 @@ "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.4.0.tgz", "integrity": "sha512-u0piLU+nCOHMgGjRbimiXmA9kM/L9EHh3zL81xCdp7m+Y2pHIsnmbdDoEDoAz5geaonNR6q6+yOPQs6n4T6sBQ==", "dev": true, + "license": "MIT", "dependencies": { "agent-base": "^7.0.2", "debug": "^4.3.4", @@ -15551,6 +17626,7 @@ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", "dev": true, + "license": "ISC", "engines": { "node": ">=12" } @@ -15559,20 +17635,23 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/prr": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", "dev": true, + "license": "MIT", "optional": true }, "node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz", + "integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==", "dev": true, + "license": "MIT", "dependencies": { "end-of-stream": "^1.1.0", "once": "^1.3.1" @@ -15582,69 +17661,55 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/puppeteer": { - "version": "22.7.1", - "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-22.7.1.tgz", - "integrity": "sha512-JBCBCwQ9+dyPp5haqeecgv0N0vgWFx44woUeKJaPeJT8CU3RXrd8F/tqJQbuAmcWlbMhYJSlTJkIFrwVAs6BNA==", + "version": "23.5.3", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-23.5.3.tgz", + "integrity": "sha512-FghmfBsr/UUpe48OiCg1gV3W4vVfQJKjQehbF07SjnQvEpWcvPTah1nykfGWdOQQ1ydJPIXcajzWN7fliCU3zw==", "dev": true, "hasInstallScript": true, + "license": "Apache-2.0", "dependencies": { - "@puppeteer/browsers": "2.2.3", - "cosmiconfig": "9.0.0", - "devtools-protocol": "0.0.1273771", - "puppeteer-core": "22.7.1" + "@puppeteer/browsers": "2.4.0", + "chromium-bidi": "0.8.0", + "cosmiconfig": "^9.0.0", + "devtools-protocol": "0.0.1342118", + "puppeteer-core": "23.5.3", + "typed-query-selector": "^2.12.0" }, "bin": { - "puppeteer": "lib/esm/puppeteer/node/cli.js" + "puppeteer": "lib/cjs/puppeteer/node/cli.js" }, "engines": { "node": ">=18" } }, "node_modules/puppeteer-core": { - "version": "22.7.1", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-22.7.1.tgz", - "integrity": "sha512-jD7T7yN7PWGuJmNT0TAEboA26s0VVnvbgCxqgQIF+eNQW2u71ENaV2JwzSJiCHO+e72H4Ue6AgKD9USQ8xAcOQ==", + "version": "23.5.3", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-23.5.3.tgz", + "integrity": "sha512-V58MZD/B3CwkYsqSEQlHKbavMJptF04fzhMdUpiCRCmUVhwZNwSGEPhaiZ1f8I3ABQUirg3VNhXVB6Z1ubHXtQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@puppeteer/browsers": "2.2.3", - "chromium-bidi": "0.5.19", - "debug": "4.3.4", - "devtools-protocol": "0.0.1273771", - "ws": "8.16.0" + "@puppeteer/browsers": "2.4.0", + "chromium-bidi": "0.8.0", + "debug": "^4.3.7", + "devtools-protocol": "0.0.1342118", + "typed-query-selector": "^2.12.0", + "ws": "^8.18.0" }, "engines": { "node": ">=18" } }, - "node_modules/puppeteer-core/node_modules/ws": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", - "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", - "dev": true, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, "node_modules/puppeteer/node_modules/cosmiconfig": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", "dev": true, + "license": "MIT", "dependencies": { "env-paths": "^2.2.1", "import-fresh": "^3.3.0", @@ -15666,40 +17731,24 @@ } } }, - "node_modules/pvtsutils": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/pvtsutils/-/pvtsutils-1.3.5.tgz", - "integrity": "sha512-ARvb14YB9Nm2Xi6nBq1ZX6dAM0FsJnuk+31aUp4TrcZEdKUlSqOqsxJHUPJDNE3qiIp+iUPEIeR6Je/tgV7zsA==", - "dev": true, - "dependencies": { - "tslib": "^2.6.1" - } - }, - "node_modules/pvutils": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/pvutils/-/pvutils-1.1.3.tgz", - "integrity": "sha512-pMpnA0qRdFp32b1sJl1wOJNxZLQ2cbQx+k6tjNtZ8CpvVhNqEPRgivZ2WOUev2YMajecdH7ctUPDvEe87nariQ==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, "node_modules/qjobs": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz", "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.9" } }, "node_modules/qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "side-channel": "^1.0.4" + "side-channel": "^1.0.6" }, "engines": { "node": ">=0.6" @@ -15726,19 +17775,22 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/queue-tick": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz", "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "dev": true, + "license": "MIT", "dependencies": { "safe-buffer": "^5.1.0" } @@ -15748,6 +17800,7 @@ "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -15757,6 +17810,7 @@ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", "dev": true, + "license": "MIT", "dependencies": { "bytes": "3.1.2", "http-errors": "2.0.0", @@ -15770,70 +17824,49 @@ "node_modules/react-is": { "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" - }, - "node_modules/read-package-json": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-7.0.0.tgz", - "integrity": "sha512-uL4Z10OKV4p6vbdvIXB+OzhInYtIozl/VxUBPgNkBuUi2DeRonnuspmaVAMcrkmfjKGNmRndyQAbE7/AmzGwFg==", - "dev": true, - "dependencies": { - "glob": "^10.2.2", - "json-parse-even-better-errors": "^3.0.0", - "normalize-package-data": "^6.0.0", - "npm-normalize-package-bin": "^3.0.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/read-package-json-fast": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-3.0.2.tgz", - "integrity": "sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw==", - "dev": true, - "dependencies": { - "json-parse-even-better-errors": "^3.0.0", - "npm-normalize-package-bin": "^3.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/read-package-json/node_modules/glob": { - "version": "10.3.12", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.12.tgz", - "integrity": "sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==", - "dev": true, - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.3.6", - "minimatch": "^9.0.1", - "minipass": "^7.0.4", - "path-scurry": "^1.10.2" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "license": "MIT" }, "node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz", + "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", "dev": true, + "license": "MIT", "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" }, "engines": { - "node": ">= 6" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/readable-stream/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" } }, "node_modules/readdirp": { @@ -15841,6 +17874,7 @@ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dev": true, + "license": "MIT", "dependencies": { "picomatch": "^2.2.1" }, @@ -15853,6 +17887,7 @@ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8.6" }, @@ -15864,19 +17899,22 @@ "version": "0.2.2", "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.2.2.tgz", "integrity": "sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==", - "dev": true + "dev": true, + "license": "Apache-2.0" }, "node_modules/regenerate": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/regenerate-unicode-properties": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz", - "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==", + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.0.tgz", + "integrity": "sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==", "dev": true, + "license": "MIT", "dependencies": { "regenerate": "^1.4.2" }, @@ -15888,13 +17926,15 @@ "version": "0.14.1", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/regenerator-transform": { "version": "0.15.2", "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/runtime": "^7.8.4" } @@ -15903,18 +17943,20 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.3.0.tgz", "integrity": "sha512-TVILVSz2jY5D47F4mA4MppkBrafEaiUWJO/TcZHEIuI13AqoZMkK1WMA4Om1YkYbTx+9Ki1/tSUXbceyr9saRg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/regexp.prototype.flags": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", - "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.3.tgz", + "integrity": "sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.6", + "call-bind": "^1.0.7", "define-properties": "^1.2.1", "es-errors": "^1.3.0", - "set-function-name": "^2.0.1" + "set-function-name": "^2.0.2" }, "engines": { "node": ">= 0.4" @@ -15924,15 +17966,16 @@ } }, "node_modules/regexpu-core": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", - "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.1.1.tgz", + "integrity": "sha512-k67Nb9jvwJcJmVpw0jPttR1/zVfnKf8Km0IPatrU/zJ5XeG3+Slx0xLXs9HByJSzXzrlz5EDvN6yLNMDc2qdnw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/regjsgen": "^0.8.0", "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.1.0", - "regjsparser": "^0.9.1", + "regenerate-unicode-properties": "^10.2.0", + "regjsgen": "^0.8.0", + "regjsparser": "^0.11.0", "unicode-match-property-ecmascript": "^2.0.0", "unicode-match-property-value-ecmascript": "^2.1.0" }, @@ -15940,31 +17983,44 @@ "node": ">=4" } }, - "node_modules/regjsparser": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", - "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "node_modules/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==", "dev": true, + "license": "MIT" + }, + "node_modules/regjsparser": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.11.1.tgz", + "integrity": "sha512-1DHODs4B8p/mQHU9kr+jv8+wIC9mtG4eBHxWxIq5mhjE3D5oORhCc6deRKzTjs9DcfRFmj9BHSDguZklqCGFWQ==", + "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "jsesc": "~0.5.0" + "jsesc": "~3.0.2" }, "bin": { "regjsparser": "bin/parser" } }, "node_modules/regjsparser/node_modules/jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", + "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", "dev": true, + "license": "MIT", "bin": { "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" } }, "node_modules/rehackt": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/rehackt/-/rehackt-0.1.0.tgz", "integrity": "sha512-7kRDOuLHB87D/JESKxQoRwv4DzbIdwkAGQ7p6QKGdVlY1IZheUnVhlk/4UZlNUVxdAXpyxikE3URsG067ybVzw==", + "license": "MIT", "peerDependencies": { "@types/react": "*", "react": "*" @@ -15983,6 +18039,7 @@ "resolved": "https://registry.npmjs.org/relay-runtime/-/relay-runtime-12.0.0.tgz", "integrity": "sha512-QU6JKr1tMsry22DXNy9Whsq5rmvwr3LSZiiWV/9+DFpuTWvp+WFhobWMc8TC4OjKFfNhEZy7mOiqUAn5atQtug==", "dev": true, + "license": "MIT", "dependencies": { "@babel/runtime": "^7.0.0", "fbjs": "^3.0.0", @@ -15994,6 +18051,7 @@ "resolved": "https://registry.npmjs.org/remedial/-/remedial-1.0.8.tgz", "integrity": "sha512-/62tYiOe6DzS5BqVsNpH/nkGlX45C/Sp6V+NtiN6JQNS1Viay7cWkazmRkrQrdFj2eshDe96SIQNIoMxqhzBOg==", "dev": true, + "license": "(MIT OR Apache-2.0)", "engines": { "node": "*" } @@ -16002,19 +18060,140 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/remove-trailing-spaces": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/remove-trailing-spaces/-/remove-trailing-spaces-1.0.8.tgz", "integrity": "sha512-O3vsMYfWighyFbTd8hk8VaSj9UAGENxAtX+//ugIst2RMk5e03h6RoIS+0ylsFxY1gvmPuAY/PO4It+gPEeySA==", - "dev": true + "dev": true, + "license": "MIT" + }, + "node_modules/replace-in-file": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/replace-in-file/-/replace-in-file-7.2.0.tgz", + "integrity": "sha512-CiLXVop3o8/h2Kd1PwKPPimmS9wUV0Ki6Fl8+1ITD35nB3Gl/PrW5IONpTE0AXk0z4v8WYcpEpdeZqMXvSnWpg==", + "license": "MIT", + "dependencies": { + "chalk": "^4.1.2", + "glob": "^8.1.0", + "yargs": "^17.7.2" + }, + "bin": { + "replace-in-file": "bin/cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/replace-in-file/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/replace-in-file/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/replace-in-file/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/replace-in-file/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/replace-in-file/node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/replace-in-file/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/replace-in-file/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/replace-in-file/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -16024,6 +18203,7 @@ "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -16032,19 +18212,22 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/resolve": { "version": "1.22.8", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", "dev": true, + "license": "MIT", "dependencies": { "is-core-module": "^2.13.0", "path-parse": "^1.0.7", @@ -16062,6 +18245,7 @@ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -16071,6 +18255,7 @@ "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" } @@ -16080,6 +18265,7 @@ "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-5.0.0.tgz", "integrity": "sha512-uZtduh8/8srhBoMx//5bwqjQ+rfYOUq8zC9NrMUGtjBiGTtFJM42s58/36+hTqeqINcnYe08Nj3LkK9lW4N8Xg==", "dev": true, + "license": "MIT", "dependencies": { "adjust-sourcemap-loader": "^4.0.0", "convert-source-map": "^1.7.0", @@ -16096,6 +18282,7 @@ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", "dev": true, + "license": "MIT", "dependencies": { "big.js": "^5.2.2", "emojis-list": "^3.0.0", @@ -16110,6 +18297,7 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } @@ -16118,6 +18306,7 @@ "version": "0.2.6", "resolved": "https://registry.npmjs.org/response-iterator/-/response-iterator-0.2.6.tgz", "integrity": "sha512-pVzEEzrsg23Sh053rmDUvLSkGXluZio0qu8VT6ukrYuvtjVfCbDZH9d6PGXb8HZfzdNZt8feXv/jvUzlhRgLnw==", + "license": "MIT", "engines": { "node": ">=0.8" } @@ -16126,7 +18315,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dev": true, + "license": "MIT", "dependencies": { "onetime": "^5.1.0", "signal-exit": "^3.0.2" @@ -16135,11 +18324,18 @@ "node": ">=8" } }, + "node_modules/restore-cursor/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "license": "ISC" + }, "node_modules/retry": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4" } @@ -16149,22 +18345,26 @@ "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", "dev": true, + "license": "MIT", "engines": { "iojs": ">=1.0.0", "node": ">=0.10.0" } }, "node_modules/rfdc": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.1.tgz", - "integrity": "sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg==", - "dev": true + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", + "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", + "dev": true, + "license": "MIT" }, "node_modules/rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", "dev": true, + "license": "ISC", "dependencies": { "glob": "^7.1.3" }, @@ -16176,10 +18376,11 @@ } }, "node_modules/rollup": { - "version": "4.17.2", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.17.2.tgz", - "integrity": "sha512-/9ClTJPByC0U4zNLowV1tMBe8yMEAxewtR3cUNX5BoEpGH3dQEWpJLr6CLp0fPdYRF/fzVOgvDb1zXuakwF5kQ==", + "version": "4.22.4", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.22.4.tgz", + "integrity": "sha512-vD8HJ5raRcWOyymsR6Z3o6+RzfEPCnVLMFJ6vRslO1jt4LO6dUo5Qnpg7y4RkZFM2DMe3WUirkI5c16onjrc6A==", "dev": true, + "license": "MIT", "dependencies": { "@types/estree": "1.0.5" }, @@ -16191,30 +18392,51 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.17.2", - "@rollup/rollup-android-arm64": "4.17.2", - "@rollup/rollup-darwin-arm64": "4.17.2", - "@rollup/rollup-darwin-x64": "4.17.2", - "@rollup/rollup-linux-arm-gnueabihf": "4.17.2", - "@rollup/rollup-linux-arm-musleabihf": "4.17.2", - "@rollup/rollup-linux-arm64-gnu": "4.17.2", - "@rollup/rollup-linux-arm64-musl": "4.17.2", - "@rollup/rollup-linux-powerpc64le-gnu": "4.17.2", - "@rollup/rollup-linux-riscv64-gnu": "4.17.2", - "@rollup/rollup-linux-s390x-gnu": "4.17.2", - "@rollup/rollup-linux-x64-gnu": "4.17.2", - "@rollup/rollup-linux-x64-musl": "4.17.2", - "@rollup/rollup-win32-arm64-msvc": "4.17.2", - "@rollup/rollup-win32-ia32-msvc": "4.17.2", - "@rollup/rollup-win32-x64-msvc": "4.17.2", + "@rollup/rollup-android-arm-eabi": "4.22.4", + "@rollup/rollup-android-arm64": "4.22.4", + "@rollup/rollup-darwin-arm64": "4.22.4", + "@rollup/rollup-darwin-x64": "4.22.4", + "@rollup/rollup-linux-arm-gnueabihf": "4.22.4", + "@rollup/rollup-linux-arm-musleabihf": "4.22.4", + "@rollup/rollup-linux-arm64-gnu": "4.22.4", + "@rollup/rollup-linux-arm64-musl": "4.22.4", + "@rollup/rollup-linux-powerpc64le-gnu": "4.22.4", + "@rollup/rollup-linux-riscv64-gnu": "4.22.4", + "@rollup/rollup-linux-s390x-gnu": "4.22.4", + "@rollup/rollup-linux-x64-gnu": "4.22.4", + "@rollup/rollup-linux-x64-musl": "4.22.4", + "@rollup/rollup-win32-arm64-msvc": "4.22.4", + "@rollup/rollup-win32-ia32-msvc": "4.22.4", + "@rollup/rollup-win32-x64-msvc": "4.22.4", "fsevents": "~2.3.2" } }, - "node_modules/run-async": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-3.0.0.tgz", - "integrity": "sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==", + "node_modules/rollup/node_modules/@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", "dev": true, + "license": "MIT" + }, + "node_modules/run-applescript": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.0.0.tgz", + "integrity": "sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true, + "license": "MIT", "engines": { "node": ">=0.12.0" } @@ -16238,6 +18460,7 @@ "url": "https://feross.org/support" } ], + "license": "MIT", "dependencies": { "queue-microtask": "^1.2.2" } @@ -16246,6 +18469,7 @@ "version": "7.8.1", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "license": "Apache-2.0", "dependencies": { "tslib": "^2.1.0" } @@ -16255,6 +18479,7 @@ "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "get-intrinsic": "^1.2.4", @@ -16272,7 +18497,6 @@ "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, "funding": [ { "type": "github", @@ -16286,13 +18510,15 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/safe-regex-test": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.6", "es-errors": "^1.3.0", @@ -16309,18 +18535,15 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "node_modules/safevalues": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/safevalues/-/safevalues-0.3.4.tgz", - "integrity": "sha512-LRneZZRXNgjzwG4bDQdOTSbze3fHm1EAKN/8bePxnlEZiBmkYEDggaHbuvHI9/hoqHbGfsEA7tWS9GhYHZBBsw==" + "dev": true, + "license": "MIT" }, "node_modules/sass": { - "version": "1.71.1", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.71.1.tgz", - "integrity": "sha512-wovtnV2PxzteLlfNzbgm1tFXPLoZILYAMJtvoXXkD7/+1uP41eKkIt1ypWq5/q2uT94qHjXehEYfmjKOvjL9sg==", + "version": "1.77.6", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.77.6.tgz", + "integrity": "sha512-ByXE1oLD79GVq9Ht1PeHWCPMPB8XHpBuz1r85oByKHjZY6qV6rWnQovQzXJXuQ/XyE1Oj3iPk3lo28uzaRA2/Q==", "dev": true, + "license": "MIT", "dependencies": { "chokidar": ">=3.0.0 <4.0.0", "immutable": "^4.0.0", @@ -16334,10 +18557,11 @@ } }, "node_modules/sass-loader": { - "version": "14.1.1", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-14.1.1.tgz", - "integrity": "sha512-QX8AasDg75monlybel38BZ49JP5Z+uSKfKwF2rO7S74BywaRmGQMUBw9dtkS+ekyM/QnP+NOrRYq8ABMZ9G8jw==", + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-16.0.0.tgz", + "integrity": "sha512-n13Z+3rU9A177dk4888czcVFiC8CL9dii4qpXWUg3YIIgZEvi9TCFKjOQcbK0kJM7DJu9VucrZFddvNfYCPwtw==", "dev": true, + "license": "MIT", "dependencies": { "neo-async": "^2.6.2" }, @@ -16374,16 +18598,18 @@ } }, "node_modules/sass/node_modules/immutable": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.5.tgz", - "integrity": "sha512-8eabxkth9gZatlwl5TBuJnCsoTADlL6ftEr7A4qgdaTsPyreilDSnUk57SO+jfKcNtxPa22U5KK6DSeAYhpBJw==", - "dev": true + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.7.tgz", + "integrity": "sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==", + "dev": true, + "license": "MIT" }, "node_modules/sax": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz", - "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz", + "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==", "dev": true, + "license": "ISC", "optional": true }, "node_modules/schema-utils": { @@ -16391,6 +18617,7 @@ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", "dev": true, + "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.9", "ajv": "^8.9.0", @@ -16405,23 +18632,44 @@ "url": "https://opencollective.com/webpack" } }, + "node_modules/schema-utils/node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, "node_modules/scuid": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/scuid/-/scuid-1.1.0.tgz", "integrity": "sha512-MuCAyrGZcTLfQoH2XoBlQ8C6bzwN88XT/0slOGz0pn8+gIP85BOAfYa44ZXQUTOwRwPU0QvgU+V+OSajl/59Xg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/select-hose": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/selfsigned": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz", "integrity": "sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==", "dev": true, + "license": "MIT", "dependencies": { "@types/node-forge": "^1.3.0", "node-forge": "^1" @@ -16431,13 +18679,11 @@ } }, "node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -16445,29 +18691,12 @@ "node": ">=10" } }, - "node_modules/semver/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/semver/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", + "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", "dev": true, + "license": "MIT", "dependencies": { "debug": "2.6.9", "depd": "2.0.0", @@ -16492,6 +18721,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.0.0" } @@ -16500,13 +18730,15 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/send/node_modules/mime": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", "dev": true, + "license": "MIT", "bin": { "mime": "cli.js" }, @@ -16514,17 +18746,12 @@ "node": ">=4" } }, - "node_modules/send/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, "node_modules/send/node_modules/statuses": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -16534,6 +18761,7 @@ "resolved": "https://registry.npmjs.org/sentence-case/-/sentence-case-3.0.4.tgz", "integrity": "sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==", "dev": true, + "license": "MIT", "dependencies": { "no-case": "^3.0.4", "tslib": "^2.0.3", @@ -16545,6 +18773,7 @@ "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "randombytes": "^2.1.0" } @@ -16554,6 +18783,7 @@ "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", "dev": true, + "license": "MIT", "dependencies": { "accepts": "~1.3.4", "batch": "0.6.1", @@ -16572,6 +18802,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.0.0" } @@ -16581,6 +18812,7 @@ "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -16590,6 +18822,7 @@ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", "dev": true, + "license": "MIT", "dependencies": { "depd": "~1.1.2", "inherits": "2.0.3", @@ -16604,46 +18837,62 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/serve-index/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/serve-index/node_modules/setprototypeof": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", + "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", "dev": true, + "license": "MIT", "dependencies": { - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "parseurl": "~1.3.3", - "send": "0.18.0" + "send": "0.19.0" }, "engines": { "node": ">= 0.8.0" } }, + "node_modules/serve-static/node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/set-function-length": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", "dev": true, + "license": "MIT", "dependencies": { "define-data-property": "^1.1.4", "es-errors": "^1.3.0", @@ -16661,6 +18910,7 @@ "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", "dev": true, + "license": "MIT", "dependencies": { "define-data-property": "^1.1.4", "es-errors": "^1.3.0", @@ -16675,19 +18925,22 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/shallow-clone": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", "dev": true, + "license": "MIT", "dependencies": { "kind-of": "^6.0.2" }, @@ -16699,7 +18952,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, + "license": "MIT", "dependencies": { "shebang-regex": "^3.0.0" }, @@ -16711,7 +18964,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -16721,6 +18974,7 @@ "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -16730,6 +18984,7 @@ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "es-errors": "^1.3.0", @@ -16744,29 +18999,37 @@ } }, "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } }, "node_modules/signedsource": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/signedsource/-/signedsource-1.0.0.tgz", "integrity": "sha512-6+eerH9fEnNmi/hyM1DXcRK3pWdoMQtlkQ+ns0ntzunjKqp5i3sKCc80ym8Fib3iaYhdJUOPdhlJWj1tvge2Ww==", - "dev": true + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/sigstore": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/sigstore/-/sigstore-2.3.0.tgz", - "integrity": "sha512-q+o8L2ebiWD1AxD17eglf1pFrl9jtW7FHa0ygqY6EKvibK8JHyq9Z26v9MZXeDiw+RbfOJ9j2v70M10Hd6E06A==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/sigstore/-/sigstore-2.3.1.tgz", + "integrity": "sha512-8G+/XDU8wNsJOQS5ysDVO0Etg9/2uA5gR9l4ZwijjlwxBcrU6RPfwi2+jJmbP+Ap1Hlp/nVAaEO4Fj22/SL2gQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@sigstore/bundle": "^2.3.1", + "@sigstore/bundle": "^2.3.2", "@sigstore/core": "^1.0.0", - "@sigstore/protobuf-specs": "^0.3.1", - "@sigstore/sign": "^2.3.0", - "@sigstore/tuf": "^2.3.1", - "@sigstore/verify": "^1.2.0" + "@sigstore/protobuf-specs": "^0.3.2", + "@sigstore/sign": "^2.3.2", + "@sigstore/tuf": "^2.3.4", + "@sigstore/verify": "^1.2.1" }, "engines": { "node": "^16.14.0 || >=18.0.0" @@ -16777,62 +19040,47 @@ "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/slice-ansi": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", - "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", + "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" + "ansi-styles": "^6.0.0", + "is-fullwidth-code-point": "^4.0.0" }, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" } }, "node_modules/slice-ansi/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=12" }, "funding": { "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/slice-ansi/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/slice-ansi/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, "node_modules/smart-buffer": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 6.0.0", "npm": ">= 3.0.0" @@ -16843,22 +19091,24 @@ "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz", "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==", "dev": true, + "license": "MIT", "dependencies": { "dot-case": "^3.0.4", "tslib": "^2.0.3" } }, "node_modules/socket.io": { - "version": "4.7.5", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.7.5.tgz", - "integrity": "sha512-DmeAkF6cwM9jSfmp6Dr/5/mfMwb5Z5qRrSXLpo3Fq5SqyU8CMF15jIN4ZhfSwu35ksM1qmHZDQ/DK5XTccSTvA==", + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.8.0.tgz", + "integrity": "sha512-8U6BEgGjQOfGz3HHTYaC/L1GaxDCJ/KM0XTkJly0EhZ5U/du9uNEZy4ZgYzEzIqlx2CMm25CrCqr1ck899eLNA==", "dev": true, + "license": "MIT", "dependencies": { "accepts": "~1.3.4", "base64id": "~2.0.0", "cors": "~2.8.5", "debug": "~4.3.2", - "engine.io": "~6.5.2", + "engine.io": "~6.6.0", "socket.io-adapter": "~2.5.2", "socket.io-parser": "~4.2.4" }, @@ -16867,26 +19117,28 @@ } }, "node_modules/socket.io-adapter": { - "version": "2.5.4", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.4.tgz", - "integrity": "sha512-wDNHGXGewWAjQPt3pyeYBtpWSq9cLE5UW1ZUPL/2eGK9jtse/FpXib7epSTsz0Q0m+6sg6Y4KtcFTlah1bdOVg==", + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.5.tgz", + "integrity": "sha512-eLDQas5dzPgOWCk9GuuJC2lBqItuhKI4uxGgo9aIV7MYbk2h9Q6uULEh8WBzThoI7l+qU9Ast9fVUmkqPP9wYg==", "dev": true, + "license": "MIT", "dependencies": { "debug": "~4.3.4", - "ws": "~8.11.0" + "ws": "~8.17.1" } }, "node_modules/socket.io-adapter/node_modules/ws": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", - "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", + "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=10.0.0" }, "peerDependencies": { "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" + "utf-8-validate": ">=5.0.2" }, "peerDependenciesMeta": { "bufferutil": { @@ -16902,6 +19154,7 @@ "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz", "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==", "dev": true, + "license": "MIT", "dependencies": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.1" @@ -16915,6 +19168,7 @@ "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", "dev": true, + "license": "MIT", "dependencies": { "faye-websocket": "^0.11.3", "uuid": "^8.3.2", @@ -16926,6 +19180,7 @@ "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.3.tgz", "integrity": "sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==", "dev": true, + "license": "MIT", "dependencies": { "ip-address": "^9.0.5", "smart-buffer": "^4.2.0" @@ -16936,14 +19191,15 @@ } }, "node_modules/socks-proxy-agent": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.3.tgz", - "integrity": "sha512-VNegTZKhuGq5vSD6XNKlbqWhyt/40CgoEw8XxD6dhnm8Jq9IEa3nIa4HwnM8XOqU0CdB0BwWVXusqiFXfHB3+A==", + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.4.tgz", + "integrity": "sha512-GNAq/eg8Udq2x0eNiFkr9gRg5bA7PXEWagQdeRX4cPSG+X/8V38v637gim9bjFptMk1QWsCTr0ttrJEiXbNnRw==", "dev": true, + "license": "MIT", "dependencies": { "agent-base": "^7.1.1", "debug": "^4.3.4", - "socks": "^2.7.1" + "socks": "^2.8.3" }, "engines": { "node": ">= 14" @@ -16954,15 +19210,17 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">= 8" } }, "node_modules/source-map-js": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", - "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } @@ -16972,6 +19230,7 @@ "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-5.0.0.tgz", "integrity": "sha512-k2Dur7CbSLcAH73sBcIkV5xjPV4SzqO1NJ7+XaQl8if3VODDUj3FNchNGpqgJSKbvUfJuhVdv8K2Eu8/TNl2eA==", "dev": true, + "license": "MIT", "dependencies": { "iconv-lite": "^0.6.3", "source-map-js": "^1.0.2" @@ -16992,6 +19251,7 @@ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "dev": true, + "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" }, @@ -17004,6 +19264,7 @@ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "dev": true, + "license": "MIT", "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -17014,6 +19275,7 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } @@ -17023,6 +19285,7 @@ "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "spdx-expression-parse": "^3.0.0", "spdx-license-ids": "^3.0.0" @@ -17032,29 +19295,33 @@ "version": "2.5.0", "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", - "dev": true + "dev": true, + "license": "CC-BY-3.0" }, "node_modules/spdx-expression-parse": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", "dev": true, + "license": "MIT", "dependencies": { "spdx-exceptions": "^2.1.0", "spdx-license-ids": "^3.0.0" } }, "node_modules/spdx-license-ids": { - "version": "3.0.17", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.17.tgz", - "integrity": "sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg==", - "dev": true + "version": "3.0.20", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.20.tgz", + "integrity": "sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw==", + "dev": true, + "license": "CC0-1.0" }, "node_modules/spdy": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", "dev": true, + "license": "MIT", "dependencies": { "debug": "^4.1.0", "handle-thing": "^2.0.0", @@ -17071,6 +19338,7 @@ "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", "dev": true, + "license": "MIT", "dependencies": { "debug": "^4.1.0", "detect-node": "^2.0.4", @@ -17080,11 +19348,27 @@ "wbuf": "^1.7.3" } }, + "node_modules/spdy-transport/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/sponge-case": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/sponge-case/-/sponge-case-1.0.1.tgz", "integrity": "sha512-dblb9Et4DAtiZ5YSUZHLl4XhH4uK80GhAZrVXdN4O2P4gQ40Wa5UIOPUHlA/nFd2PLblBZWUioLMMAVrgpoYcA==", "dev": true, + "license": "MIT", "dependencies": { "tslib": "^2.0.3" } @@ -17093,13 +19377,15 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", - "dev": true + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/ssri": { - "version": "10.0.5", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.5.tgz", - "integrity": "sha512-bSf16tAFkGeRlUNDjXu8FzaMQt6g2HZJrun7mtMbIPOddxt3GLMSz5VWUWcqTJUPfLEaDIepGxv+bYQW49596A==", + "version": "10.0.6", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.6.tgz", + "integrity": "sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ==", "dev": true, + "license": "ISC", "dependencies": { "minipass": "^7.0.3" }, @@ -17112,15 +19398,40 @@ "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } }, + "node_modules/stdin-discarder": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/stdin-discarder/-/stdin-discarder-0.2.2.tgz", + "integrity": "sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/stream-read-all": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/stream-read-all/-/stream-read-all-3.0.1.tgz", + "integrity": "sha512-EWZT9XOceBPlVJRrYcykW8jyRSZYbkb/0ZK36uLEmoWVO5gxBOnntNTseNzfREsqxqdfEGQrD8SXQ3QWbBmq8A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, "node_modules/streamroller": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.1.5.tgz", "integrity": "sha512-KFxaM7XT+irxvdqSP1LGLgNWbYN7ay5owZ3r/8t77p+EtSUAfUgtl7be3xtqtOmGUl9K9YPO2ca8133RlTjvKw==", "dev": true, + "license": "MIT", "dependencies": { "date-format": "^4.0.14", "debug": "^4.3.4", @@ -17135,6 +19446,7 @@ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", "dev": true, + "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^4.0.0", @@ -17149,6 +19461,7 @@ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", "dev": true, + "license": "MIT", "optionalDependencies": { "graceful-fs": "^4.1.6" } @@ -17158,6 +19471,7 @@ "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4.0.0" } @@ -17172,13 +19486,15 @@ } }, "node_modules/streamx": { - "version": "2.16.1", - "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.16.1.tgz", - "integrity": "sha512-m9QYj6WygWyWa3H1YY69amr4nVgy61xfjys7xO7kviL5rfIEc2naf+ewFiOA+aEJD7y0JO3h2GoiUv4TDwEGzQ==", + "version": "2.20.1", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.20.1.tgz", + "integrity": "sha512-uTa0mU6WUC65iUvzKH4X9hEdvSW7rbPxPtwfWiLMSj3qTdQbAiUboZTxauKfpFuGIGa1C2BYijZ7wgdUXICJhA==", "dev": true, + "license": "MIT", "dependencies": { - "fast-fifo": "^1.1.0", - "queue-tick": "^1.0.1" + "fast-fifo": "^1.3.2", + "queue-tick": "^1.0.1", + "text-decoder": "^1.1.0" }, "optionalDependencies": { "bare-events": "^2.2.0" @@ -17188,7 +19504,7 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, + "license": "MIT", "dependencies": { "safe-buffer": "~5.2.0" } @@ -17197,13 +19513,14 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/string-env-interpolation/-/string-env-interpolation-1.0.1.tgz", "integrity": "sha512-78lwMoCcn0nNu8LszbP1UA7g55OeE4v7rCeWnM5B453rnNr4aq+5it3FEYtZrSEiMvHZOZ9Jlqb0OD0M2VInqg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, + "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -17218,7 +19535,7 @@ "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, + "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -17228,11 +19545,30 @@ "node": ">=8" } }, + "node_modules/string-width-cjs/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/string.prototype.trim": { "version": "1.2.9", "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -17251,6 +19587,7 @@ "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -17265,6 +19602,7 @@ "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -17281,7 +19619,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -17294,7 +19632,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -17307,6 +19645,7 @@ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -17316,6 +19655,7 @@ "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -17325,7 +19665,7 @@ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true, - "peer": true, + "license": "MIT", "engines": { "node": ">=8" }, @@ -17337,7 +19677,7 @@ "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^3.0.0" }, @@ -17350,6 +19690,7 @@ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -17362,6 +19703,7 @@ "resolved": "https://registry.npmjs.org/swap-case/-/swap-case-2.0.2.tgz", "integrity": "sha512-kc6S2YS/2yXbtkSMunBtKdah4VFETZ8Oh6ONSmSd9bRxhqTrtARUCBUiWXH3xVPpvR7tz2CSnkuXVE42EcGnMw==", "dev": true, + "license": "MIT", "dependencies": { "tslib": "^2.0.3" } @@ -17370,15 +19712,17 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz", "integrity": "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==", + "license": "MIT", "engines": { "node": ">=0.10" } }, "node_modules/synckit": { - "version": "0.8.8", - "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.8.tgz", - "integrity": "sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ==", + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.9.2.tgz", + "integrity": "sha512-vrozgXDQwYO72vHjUb/HnFbQx1exDjoKzqx23aXEg2a9VIg2TSFZ8FmeZpTjUCFMYw7mpX4BE2SFu8wI7asYsw==", "dev": true, + "license": "MIT", "dependencies": { "@pkgr/core": "^0.1.0", "tslib": "^2.6.2" @@ -17390,11 +19734,54 @@ "url": "https://opencollective.com/unts" } }, + "node_modules/table-layout": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-3.0.2.tgz", + "integrity": "sha512-rpyNZYRw+/C+dYkcQ3Pr+rLxW4CfHpXjPDnG7lYhdRoUcZTUt+KEsX+94RGp/aVp/MQU35JCITv2T/beY4m+hw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@75lb/deep-merge": "^1.1.1", + "array-back": "^6.2.2", + "command-line-args": "^5.2.1", + "command-line-usage": "^7.0.0", + "stream-read-all": "^3.0.1", + "typical": "^7.1.1", + "wordwrapjs": "^5.1.0" + }, + "bin": { + "table-layout": "bin/cli.js" + }, + "engines": { + "node": ">=12.17" + } + }, + "node_modules/table-layout/node_modules/array-back": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-6.2.2.tgz", + "integrity": "sha512-gUAZ7HPyb4SJczXAMUXMGAvI976JoK3qEx9v1FTmeYuJj0IBiaKttG1ydtGKdkfqWkIkouke7nG8ufGy77+Cvw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.17" + } + }, + "node_modules/table-layout/node_modules/typical": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-7.2.0.tgz", + "integrity": "sha512-W1+HdVRUl8fS3MZ9ogD51GOb46xMmhAZzR0WPw5jcgIZQJVvkddYzAl4YTU6g5w33Y1iRQLdIi2/1jhi2RNL0g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.17" + } + }, "node_modules/tapable": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -17404,6 +19791,7 @@ "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", "dev": true, + "license": "ISC", "dependencies": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", @@ -17417,10 +19805,11 @@ } }, "node_modules/tar-fs": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.5.tgz", - "integrity": "sha512-JOgGAmZyMgbqpLwct7ZV8VzkEB6pxXFBVErLtb+XCOqzc6w1xiWKI9GVd6bwk68EX7eJ4DWmfXVmq8K2ziZTGg==", + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.6.tgz", + "integrity": "sha512-iokBDQQkUyeXhgPYaZxmczGPhnhXZ0CmrqI+MOb/WFGS9DW5wnfrLgtjUJBvz50vQ3qfRwJ62QVoCFu8mPVu5w==", "dev": true, + "license": "MIT", "dependencies": { "pump": "^3.0.0", "tar-stream": "^3.1.5" @@ -17435,6 +19824,7 @@ "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz", "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==", "dev": true, + "license": "MIT", "dependencies": { "b4a": "^1.6.4", "fast-fifo": "^1.2.0", @@ -17446,6 +19836,7 @@ "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", "dev": true, + "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -17458,6 +19849,7 @@ "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, + "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -17470,6 +19862,7 @@ "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", "dev": true, + "license": "ISC", "engines": { "node": ">=8" } @@ -17479,6 +19872,7 @@ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "dev": true, + "license": "MIT", "bin": { "mkdirp": "bin/cmd.js" }, @@ -17490,13 +19884,15 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/terser": { - "version": "5.29.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.29.1.tgz", - "integrity": "sha512-lZQ/fyaIGxsbGxApKmoPTODIzELy3++mXhS5hOqaAWZjQtpq/hFHAc+rm29NND1rYRxRWKcjuARNwULNXa5RtQ==", + "version": "5.31.6", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.31.6.tgz", + "integrity": "sha512-PQ4DAriWzKj+qgehQ7LK5bQqCFNMmlhjR2PFFLuqGCpuCAauxemVBWwWOxo3UIwWQx8+Pr61Df++r76wDmkQBg==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "@jridgewell/source-map": "^0.3.3", "acorn": "^8.8.2", @@ -17515,6 +19911,7 @@ "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/trace-mapping": "^0.3.20", "jest-worker": "^27.4.5", @@ -17549,6 +19946,7 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -17565,6 +19963,7 @@ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", "dev": true, + "license": "MIT", "peerDependencies": { "ajv": "^6.9.1" } @@ -17573,13 +19972,15 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/terser-webpack-plugin/node_modules/schema-utils": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "dev": true, + "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", @@ -17593,40 +19994,14 @@ "url": "https://opencollective.com/webpack" } }, - "node_modules/test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "node_modules/text-decoder": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.0.tgz", + "integrity": "sha512-n1yg1mOj9DNpk3NeZOx7T6jchTbyJS3i3cucbNN6FcdPriMZx7NsgrGpWWdWZZGxD7ES1XB+3uoqHMgOKaN+fg==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/test-exclude/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/test-exclude/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" + "b4a": "^1.6.4" } }, "node_modules/text-table": { @@ -17634,25 +20009,42 @@ "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true, + "license": "MIT", "peer": true }, + "node_modules/thingies": { + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/thingies/-/thingies-1.21.0.tgz", + "integrity": "sha512-hsqsJsFMsV+aD4s3CWKk85ep/3I9XzYV/IXaSouJMYIoDlgyi11cBhsqYe9/geRfB0YIikBQg6raRaM+nIMP9g==", + "dev": true, + "license": "Unlicense", + "engines": { + "node": ">=10.18" + }, + "peerDependencies": { + "tslib": "^2" + } + }, "node_modules/through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/thunky": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/title-case": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/title-case/-/title-case-3.0.3.tgz", "integrity": "sha512-e1zGYRvbffpcHIrnuqT0Dh+gEJtDaxDSoG4JAIpq4oDFyooziLBIiYQv0GBT4FUAnUop5uZ1hiIAj7oAF6sOCA==", "dev": true, + "license": "MIT", "dependencies": { "tslib": "^2.0.3" } @@ -17662,6 +20054,7 @@ "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", "dev": true, + "license": "MIT", "dependencies": { "os-tmpdir": "~1.0.2" }, @@ -17674,6 +20067,7 @@ "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -17683,6 +20077,7 @@ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, + "license": "MIT", "dependencies": { "is-number": "^7.0.0" }, @@ -17695,6 +20090,7 @@ "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.6" } @@ -17703,13 +20099,32 @@ "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "dev": true + "dev": true, + "license": "MIT" + }, + "node_modules/tree-dump": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/tree-dump/-/tree-dump-1.0.2.tgz", + "integrity": "sha512-dpev9ABuLWdEubk+cIaI9cHwRNNDjkBBLXTwI4UCUFdQ5xXKqNXoK4FEciw/vxf+NQ7Cb7sGUyeUtORvHIdRXQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } }, "node_modules/tree-kill": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", "dev": true, + "license": "MIT", "bin": { "tree-kill": "cli.js" } @@ -17719,6 +20134,7 @@ "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=16" }, @@ -17730,6 +20146,7 @@ "version": "0.10.3", "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.10.3.tgz", "integrity": "sha512-uivwYcQaxAucv1CzRp2n/QdYPo4ILf9VXgH19zEIjFx2EJufV16P0JtJVpYHy89DItG6Kwj2oIUjrcK5au+4tQ==", + "license": "MIT", "dependencies": { "tslib": "^2.1.0" }, @@ -17738,16 +20155,18 @@ } }, "node_modules/ts-log": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/ts-log/-/ts-log-2.2.5.tgz", - "integrity": "sha512-PGcnJoTBnVGy6yYNFxWVNkdcAuAMstvutN9MgDJIV6L0oG8fB+ZNNy1T+wJzah8RPGor1mZuPQkVfXNDpy9eHA==", - "dev": true + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/ts-log/-/ts-log-2.2.7.tgz", + "integrity": "sha512-320x5Ggei84AxzlXp91QkIGSw5wgaLT6GeAH0KsqDmRZdVWW2OiSeVvElVoatk3f7nicwXlElXsoFkARiGE2yg==", + "dev": true, + "license": "MIT" }, "node_modules/tsconfig-paths": { "version": "3.15.0", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", "dev": true, + "license": "MIT", "dependencies": { "@types/json5": "^0.0.29", "json5": "^1.0.2", @@ -17760,6 +20179,7 @@ "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", "dev": true, + "license": "MIT", "dependencies": { "minimist": "^1.2.0" }, @@ -17768,19 +20188,21 @@ } }, "node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "license": "0BSD" }, "node_modules/tuf-js": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tuf-js/-/tuf-js-2.2.0.tgz", - "integrity": "sha512-ZSDngmP1z6zw+FIkIBjvOp/II/mIub/O7Pp12j1WNsiCpg5R5wAc//i555bBQsE44O94btLt0xM/Zr2LQjwdCg==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tuf-js/-/tuf-js-2.2.1.tgz", + "integrity": "sha512-GwIJau9XaA8nLVbUXsN3IlFi7WmQ48gBUrl3FTkkL/XLu/POhBzfmX9hd33FNMX1qAsfl6ozO1iMmW9NC8YniA==", "dev": true, + "license": "MIT", "dependencies": { - "@tufjs/models": "2.0.0", + "@tufjs/models": "2.0.1", "debug": "^4.3.4", - "make-fetch-happen": "^13.0.0" + "make-fetch-happen": "^13.0.1" }, "engines": { "node": "^16.14.0 || >=18.0.0" @@ -17791,6 +20213,7 @@ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "prelude-ls": "^1.2.1" @@ -17804,6 +20227,7 @@ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -17816,6 +20240,7 @@ "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", "dev": true, + "license": "MIT", "dependencies": { "media-typer": "0.3.0", "mime-types": "~2.1.24" @@ -17829,6 +20254,7 @@ "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "es-errors": "^1.3.0", @@ -17843,6 +20269,7 @@ "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "for-each": "^0.3.3", @@ -17862,6 +20289,7 @@ "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", "dev": true, + "license": "MIT", "dependencies": { "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.7", @@ -17882,6 +20310,7 @@ "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "for-each": "^0.3.3", @@ -17901,13 +20330,22 @@ "version": "1.0.9", "resolved": "https://registry.npmjs.org/typed-assert/-/typed-assert-1.0.9.tgz", "integrity": "sha512-KNNZtayBCtmnNmbo5mG47p1XsCyrx6iVqomjcZnec/1Y5GGARaxPs6r49RnSPeUP3YjNYiU9sQHAtY4BBvnZwg==", - "dev": true + "dev": true, + "license": "MIT" + }, + "node_modules/typed-query-selector": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/typed-query-selector/-/typed-query-selector-2.12.0.tgz", + "integrity": "sha512-SbklCd1F0EiZOyPiW192rrHZzZ5sBijB6xM+cpmrwDqObvdtunOHHIk9fCGsoK5JVIYXoyEp4iEdE3upFH3PAg==", + "dev": true, + "license": "MIT" }, "node_modules/typescript": { - "version": "5.4.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", - "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", - "dev": true, + "version": "5.5.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz", + "integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==", + "devOptional": true, + "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -17916,10 +20354,20 @@ "node": ">=14.17" } }, + "node_modules/typical": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz", + "integrity": "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/ua-parser-js": { - "version": "1.0.37", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.37.tgz", - "integrity": "sha512-bhTyI94tZofjo+Dn8SN6Zv8nBDvyXTymAdM3LDI/0IboIUwTu1rEhW7v2TfiVsoYWgkQ4kOVqnI8APUFbIQIFQ==", + "version": "1.0.39", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.39.tgz", + "integrity": "sha512-k24RCVWlEcjkdOxYmVJgeD/0a1TiSpqLg+ZalVGV9lsnr4yqu0w7tX/x2xX6G4zpkgQnRf89lxuZ1wsbjXM8lw==", "dev": true, "funding": [ { @@ -17935,6 +20383,10 @@ "url": "https://github.com/sponsors/faisalman" } ], + "license": "MIT", + "bin": { + "ua-parser-js": "script/cli.js" + }, "engines": { "node": "*" } @@ -17944,6 +20396,7 @@ "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "has-bigints": "^1.0.2", @@ -17959,6 +20412,7 @@ "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", "dev": true, + "license": "MIT", "dependencies": { "buffer": "^5.2.1", "through": "^2.3.8" @@ -17969,30 +20423,24 @@ "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", "integrity": "sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/undici": { - "version": "6.11.1", - "resolved": "https://registry.npmjs.org/undici/-/undici-6.11.1.tgz", - "integrity": "sha512-KyhzaLJnV1qa3BSHdj4AZ2ndqI0QWPxYzaIOio0WzcEJB9gvuysprJSLtpvc2D9mhR9jPDUk7xlJlZbH2KR5iw==", - "dev": true, - "engines": { - "node": ">=18.0" - } - }, "node_modules/undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", - "dev": true + "version": "6.19.8", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", + "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", + "dev": true, + "license": "MIT" }, "node_modules/unicode-canonical-property-names-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", - "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz", + "integrity": "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -18002,6 +20450,7 @@ "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", "dev": true, + "license": "MIT", "dependencies": { "unicode-canonical-property-names-ecmascript": "^2.0.0", "unicode-property-aliases-ecmascript": "^2.0.0" @@ -18011,10 +20460,11 @@ } }, "node_modules/unicode-match-property-value-ecmascript": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", - "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.0.tgz", + "integrity": "sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -18024,15 +20474,30 @@ "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } }, + "node_modules/unicorn-magic": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz", + "integrity": "sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/unique-filename": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", "dev": true, + "license": "ISC", "dependencies": { "unique-slug": "^4.0.0" }, @@ -18045,6 +20510,7 @@ "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", "dev": true, + "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4" }, @@ -18056,7 +20522,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "dev": true, + "license": "MIT", "engines": { "node": ">= 10.0.0" } @@ -18066,6 +20532,7 @@ "resolved": "https://registry.npmjs.org/unixify/-/unixify-1.0.0.tgz", "integrity": "sha512-6bc58dPYhCMHHuwxldQxO3RRNZ4eCogZ/st++0+fcC1nr0jiGUtAdBJ2qzmLQWSxbtz42pWt4QQMiZ9HvZf5cg==", "dev": true, + "license": "MIT", "dependencies": { "normalize-path": "^2.1.1" }, @@ -18078,6 +20545,7 @@ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", "dev": true, + "license": "MIT", "dependencies": { "remove-trailing-separator": "^1.0.1" }, @@ -18090,14 +20558,15 @@ "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } }, "node_modules/update-browserslist-db": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", - "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz", + "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==", "dev": true, "funding": [ { @@ -18113,9 +20582,10 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" + "escalade": "^3.2.0", + "picocolors": "^1.1.0" }, "bin": { "update-browserslist-db": "cli.js" @@ -18129,6 +20599,7 @@ "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-2.0.2.tgz", "integrity": "sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==", "dev": true, + "license": "MIT", "dependencies": { "tslib": "^2.0.3" } @@ -18138,6 +20609,7 @@ "resolved": "https://registry.npmjs.org/upper-case-first/-/upper-case-first-2.0.2.tgz", "integrity": "sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==", "dev": true, + "license": "MIT", "dependencies": { "tslib": "^2.0.3" } @@ -18147,6 +20619,7 @@ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "punycode": "^2.1.0" } @@ -18156,27 +20629,30 @@ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/urlpattern-polyfill": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-8.0.2.tgz", - "integrity": "sha512-Qp95D4TPJl1kC9SKigDcqgyM2VDVO4RiJc2d4qe5GrYm+zbIQCWWKAFaJNQ4BhdFeDGwBmAxqJBwWSJDb9T3BQ==", - "dev": true + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-10.0.0.tgz", + "integrity": "sha512-H/A06tKD7sS1O1X2SshBVeA5FLycRpjqiBeqGKmBwBDBy28EnRjORxTNe269KSSr5un5qyWi1iL61wLxpd+ZOg==", + "dev": true, + "license": "MIT" }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true + "license": "MIT" }, "node_modules/utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4.0" } @@ -18186,6 +20662,7 @@ "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", "dev": true, + "license": "MIT", "bin": { "uuid": "dist/bin/uuid" } @@ -18195,19 +20672,18 @@ "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", "dev": true, + "license": "Apache-2.0", "dependencies": { "spdx-correct": "^3.0.0", "spdx-expression-parse": "^3.0.0" } }, "node_modules/validate-npm-package-name": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.0.tgz", - "integrity": "sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.1.tgz", + "integrity": "sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==", "dev": true, - "dependencies": { - "builtins": "^5.0.0" - }, + "license": "ISC", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -18217,6 +20693,7 @@ "resolved": "https://registry.npmjs.org/value-or-promise/-/value-or-promise-1.0.12.tgz", "integrity": "sha512-Z6Uz+TYwEqE7ZN50gwn+1LCVo9ZVrpxRPOhOLnncYkY1ZzOYtrX8Fwf/rFktZ8R5mJms6EZf5TqNOMeZmnPq9Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" } @@ -18226,19 +20703,21 @@ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } }, "node_modules/vite": { - "version": "5.1.7", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.1.7.tgz", - "integrity": "sha512-sgnEEFTZYMui/sTlH1/XEnVNHMujOahPLGMxn1+5sIT45Xjng1Ec1K78jRP15dSmVgg5WBin9yO81j3o9OxofA==", + "version": "5.4.6", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.6.tgz", + "integrity": "sha512-IeL5f8OO5nylsgzd9tq4qD2QqI0k2CQLGrWD0rCN0EQJZpBK5vJAx0I+GDkMOXxQX/OfFHMuLIx6ddAxGX/k+Q==", "dev": true, + "license": "MIT", "dependencies": { - "esbuild": "^0.19.3", - "postcss": "^8.4.35", - "rollup": "^4.2.0" + "esbuild": "^0.21.3", + "postcss": "^8.4.43", + "rollup": "^4.20.0" }, "bin": { "vite": "bin/vite.js" @@ -18257,6 +20736,7 @@ "less": "*", "lightningcss": "^1.21.0", "sass": "*", + "sass-embedded": "*", "stylus": "*", "sugarss": "*", "terser": "^5.4.0" @@ -18274,6 +20754,9 @@ "sass": { "optional": true }, + "sass-embedded": { + "optional": true + }, "stylus": { "optional": true }, @@ -18286,13 +20769,14 @@ } }, "node_modules/vite/node_modules/@esbuild/aix-ppc64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz", - "integrity": "sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", "cpu": [ "ppc64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "aix" @@ -18302,13 +20786,14 @@ } }, "node_modules/vite/node_modules/@esbuild/android-arm": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.12.tgz", - "integrity": "sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" @@ -18318,13 +20803,14 @@ } }, "node_modules/vite/node_modules/@esbuild/android-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz", - "integrity": "sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" @@ -18334,13 +20820,14 @@ } }, "node_modules/vite/node_modules/@esbuild/android-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.12.tgz", - "integrity": "sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" @@ -18350,13 +20837,14 @@ } }, "node_modules/vite/node_modules/@esbuild/darwin-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz", - "integrity": "sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -18366,13 +20854,14 @@ } }, "node_modules/vite/node_modules/@esbuild/darwin-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz", - "integrity": "sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -18382,13 +20871,14 @@ } }, "node_modules/vite/node_modules/@esbuild/freebsd-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz", - "integrity": "sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "freebsd" @@ -18398,13 +20888,14 @@ } }, "node_modules/vite/node_modules/@esbuild/freebsd-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz", - "integrity": "sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "freebsd" @@ -18414,13 +20905,14 @@ } }, "node_modules/vite/node_modules/@esbuild/linux-arm": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz", - "integrity": "sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -18430,13 +20922,14 @@ } }, "node_modules/vite/node_modules/@esbuild/linux-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz", - "integrity": "sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -18446,13 +20939,14 @@ } }, "node_modules/vite/node_modules/@esbuild/linux-ia32": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz", - "integrity": "sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", "cpu": [ "ia32" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -18462,13 +20956,14 @@ } }, "node_modules/vite/node_modules/@esbuild/linux-loong64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz", - "integrity": "sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", "cpu": [ "loong64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -18478,13 +20973,14 @@ } }, "node_modules/vite/node_modules/@esbuild/linux-mips64el": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz", - "integrity": "sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", "cpu": [ "mips64el" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -18494,13 +20990,14 @@ } }, "node_modules/vite/node_modules/@esbuild/linux-ppc64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz", - "integrity": "sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", "cpu": [ "ppc64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -18510,13 +21007,14 @@ } }, "node_modules/vite/node_modules/@esbuild/linux-riscv64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz", - "integrity": "sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", "cpu": [ "riscv64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -18526,13 +21024,14 @@ } }, "node_modules/vite/node_modules/@esbuild/linux-s390x": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz", - "integrity": "sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", "cpu": [ "s390x" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -18542,13 +21041,14 @@ } }, "node_modules/vite/node_modules/@esbuild/linux-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz", - "integrity": "sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -18558,13 +21058,14 @@ } }, "node_modules/vite/node_modules/@esbuild/netbsd-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz", - "integrity": "sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "netbsd" @@ -18574,13 +21075,14 @@ } }, "node_modules/vite/node_modules/@esbuild/openbsd-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz", - "integrity": "sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "openbsd" @@ -18590,13 +21092,14 @@ } }, "node_modules/vite/node_modules/@esbuild/sunos-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz", - "integrity": "sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "sunos" @@ -18606,13 +21109,14 @@ } }, "node_modules/vite/node_modules/@esbuild/win32-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz", - "integrity": "sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -18622,13 +21126,14 @@ } }, "node_modules/vite/node_modules/@esbuild/win32-ia32": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz", - "integrity": "sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", "cpu": [ "ia32" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -18638,13 +21143,14 @@ } }, "node_modules/vite/node_modules/@esbuild/win32-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz", - "integrity": "sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -18654,11 +21160,12 @@ } }, "node_modules/vite/node_modules/esbuild": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.12.tgz", - "integrity": "sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", "dev": true, "hasInstallScript": true, + "license": "MIT", "bin": { "esbuild": "bin/esbuild" }, @@ -18666,29 +21173,58 @@ "node": ">=12" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.19.12", - "@esbuild/android-arm": "0.19.12", - "@esbuild/android-arm64": "0.19.12", - "@esbuild/android-x64": "0.19.12", - "@esbuild/darwin-arm64": "0.19.12", - "@esbuild/darwin-x64": "0.19.12", - "@esbuild/freebsd-arm64": "0.19.12", - "@esbuild/freebsd-x64": "0.19.12", - "@esbuild/linux-arm": "0.19.12", - "@esbuild/linux-arm64": "0.19.12", - "@esbuild/linux-ia32": "0.19.12", - "@esbuild/linux-loong64": "0.19.12", - "@esbuild/linux-mips64el": "0.19.12", - "@esbuild/linux-ppc64": "0.19.12", - "@esbuild/linux-riscv64": "0.19.12", - "@esbuild/linux-s390x": "0.19.12", - "@esbuild/linux-x64": "0.19.12", - "@esbuild/netbsd-x64": "0.19.12", - "@esbuild/openbsd-x64": "0.19.12", - "@esbuild/sunos-x64": "0.19.12", - "@esbuild/win32-arm64": "0.19.12", - "@esbuild/win32-ia32": "0.19.12", - "@esbuild/win32-x64": "0.19.12" + "@esbuild/aix-ppc64": "0.21.5", + "@esbuild/android-arm": "0.21.5", + "@esbuild/android-arm64": "0.21.5", + "@esbuild/android-x64": "0.21.5", + "@esbuild/darwin-arm64": "0.21.5", + "@esbuild/darwin-x64": "0.21.5", + "@esbuild/freebsd-arm64": "0.21.5", + "@esbuild/freebsd-x64": "0.21.5", + "@esbuild/linux-arm": "0.21.5", + "@esbuild/linux-arm64": "0.21.5", + "@esbuild/linux-ia32": "0.21.5", + "@esbuild/linux-loong64": "0.21.5", + "@esbuild/linux-mips64el": "0.21.5", + "@esbuild/linux-ppc64": "0.21.5", + "@esbuild/linux-riscv64": "0.21.5", + "@esbuild/linux-s390x": "0.21.5", + "@esbuild/linux-x64": "0.21.5", + "@esbuild/netbsd-x64": "0.21.5", + "@esbuild/openbsd-x64": "0.21.5", + "@esbuild/sunos-x64": "0.21.5", + "@esbuild/win32-arm64": "0.21.5", + "@esbuild/win32-ia32": "0.21.5", + "@esbuild/win32-x64": "0.21.5" + } + }, + "node_modules/vite/node_modules/postcss": { + "version": "8.4.47", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.47.tgz", + "integrity": "sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.1.0", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" } }, "node_modules/void-elements": { @@ -18696,15 +21232,17 @@ "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", "integrity": "sha512-qZKX4RnBzH2ugr8Lxa7x+0V6XD9Sb/ouARtiasEQCHB1EVU4NXtmHsDDrx1dO4ne5fc3J6EW05BP1Dl0z0iung==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/watchpack": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", - "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.1.tgz", + "integrity": "sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg==", "dev": true, + "license": "MIT", "dependencies": { "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.1.2" @@ -18718,6 +21256,7 @@ "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", "dev": true, + "license": "MIT", "dependencies": { "minimalistic-assert": "^1.0.0" } @@ -18726,60 +21265,46 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", - "dev": true, + "license": "MIT", "dependencies": { "defaults": "^1.0.3" } }, - "node_modules/web-streams-polyfill": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz", - "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==", + "node_modules/weak-lru-cache": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/weak-lru-cache/-/weak-lru-cache-1.2.2.tgz", + "integrity": "sha512-DEAoo25RfSYMuTGc9vPJzZcZullwIqRDSI9LOy+fkCJPi6hykCnfKaXTuPBDuXAUcqHXyOgFtHNp/kB2FjYHbw==", "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/webcrypto-core": { - "version": "1.7.9", - "resolved": "https://registry.npmjs.org/webcrypto-core/-/webcrypto-core-1.7.9.tgz", - "integrity": "sha512-FE+a4PPkOmBbgNDIyRmcHhgXn+2ClRl3JzJdDu/P4+B8y81LqKe6RAsI9b3lAOHe1T1BMkSjsRHTYRikImZnVA==", - "dev": true, - "dependencies": { - "@peculiar/asn1-schema": "^2.3.8", - "@peculiar/json-schema": "^1.1.12", - "asn1js": "^3.0.1", - "pvtsutils": "^1.3.5", - "tslib": "^2.6.2" - } + "license": "MIT" }, "node_modules/webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "dev": true + "dev": true, + "license": "BSD-2-Clause" }, "node_modules/webpack": { - "version": "5.90.3", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.90.3.tgz", - "integrity": "sha512-h6uDYlWCctQRuXBs1oYpVe6sFcWedl0dpcVaTf/YF67J9bKvwJajFulMVSYKHrksMB3I/pIagRzDxwxkebuzKA==", + "version": "5.94.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.94.0.tgz", + "integrity": "sha512-KcsGn50VT+06JH/iunZJedYGUJS5FGjow8wb9c0v5n1Om8O1g4L6LjtfxwlXIATopoQu+vOXXa7gYisWxCoPyg==", "dev": true, + "license": "MIT", "dependencies": { - "@types/eslint-scope": "^3.7.3", "@types/estree": "^1.0.5", - "@webassemblyjs/ast": "^1.11.5", - "@webassemblyjs/wasm-edit": "^1.11.5", - "@webassemblyjs/wasm-parser": "^1.11.5", + "@webassemblyjs/ast": "^1.12.1", + "@webassemblyjs/wasm-edit": "^1.12.1", + "@webassemblyjs/wasm-parser": "^1.12.1", "acorn": "^8.7.1", - "acorn-import-assertions": "^1.9.0", + "acorn-import-attributes": "^1.9.5", "browserslist": "^4.21.10", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.15.0", + "enhanced-resolve": "^5.17.1", "es-module-lexer": "^1.2.1", "eslint-scope": "5.1.1", "events": "^3.2.0", "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.9", + "graceful-fs": "^4.2.11", "json-parse-even-better-errors": "^2.3.1", "loader-runner": "^4.2.0", "mime-types": "^2.1.27", @@ -18787,7 +21312,7 @@ "schema-utils": "^3.2.0", "tapable": "^2.1.1", "terser-webpack-plugin": "^5.3.10", - "watchpack": "^2.4.0", + "watchpack": "^2.4.1", "webpack-sources": "^3.2.3" }, "bin": { @@ -18807,19 +21332,21 @@ } }, "node_modules/webpack-dev-middleware": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-6.1.2.tgz", - "integrity": "sha512-Wu+EHmX326YPYUpQLKmKbTyZZJIB8/n6R09pTmB03kJmnMsVPTo9COzHZFr01txwaCAuZvfBJE4ZCHRcKs5JaQ==", + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-7.4.2.tgz", + "integrity": "sha512-xOO8n6eggxnwYpy1NlzUKpvrjfJTvae5/D6WOK0S2LSo7vjmo5gCM1DbLUmFqrMTJP+W/0YZNctm7jasWvLuBA==", "dev": true, + "license": "MIT", "dependencies": { "colorette": "^2.0.10", - "memfs": "^3.4.12", + "memfs": "^4.6.0", "mime-types": "^2.1.31", + "on-finished": "^2.4.1", "range-parser": "^1.2.1", "schema-utils": "^4.0.0" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 18.12.0" }, "funding": { "type": "opencollective", @@ -18835,54 +21362,55 @@ } }, "node_modules/webpack-dev-server": { - "version": "4.15.1", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.1.tgz", - "integrity": "sha512-5hbAst3h3C3L8w6W4P96L5vaV0PxSmJhxZvWKYIdgxOQm8pNZ5dEOmmSLBVpP85ReeyRt6AS1QJNyo/oFFPeVA==", + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-5.0.4.tgz", + "integrity": "sha512-dljXhUgx3HqKP2d8J/fUMvhxGhzjeNVarDLcbO/EWMSgRizDkxHQDZQaLFL5VJY9tRBj2Gz+rvCEYYvhbqPHNA==", "dev": true, + "license": "MIT", "dependencies": { - "@types/bonjour": "^3.5.9", - "@types/connect-history-api-fallback": "^1.3.5", - "@types/express": "^4.17.13", - "@types/serve-index": "^1.9.1", - "@types/serve-static": "^1.13.10", - "@types/sockjs": "^0.3.33", - "@types/ws": "^8.5.5", + "@types/bonjour": "^3.5.13", + "@types/connect-history-api-fallback": "^1.5.4", + "@types/express": "^4.17.21", + "@types/serve-index": "^1.9.4", + "@types/serve-static": "^1.15.5", + "@types/sockjs": "^0.3.36", + "@types/ws": "^8.5.10", "ansi-html-community": "^0.0.8", - "bonjour-service": "^1.0.11", - "chokidar": "^3.5.3", + "bonjour-service": "^1.2.1", + "chokidar": "^3.6.0", "colorette": "^2.0.10", "compression": "^1.7.4", "connect-history-api-fallback": "^2.0.0", "default-gateway": "^6.0.3", "express": "^4.17.3", "graceful-fs": "^4.2.6", - "html-entities": "^2.3.2", + "html-entities": "^2.4.0", "http-proxy-middleware": "^2.0.3", - "ipaddr.js": "^2.0.1", - "launch-editor": "^2.6.0", - "open": "^8.0.9", - "p-retry": "^4.5.0", - "rimraf": "^3.0.2", - "schema-utils": "^4.0.0", - "selfsigned": "^2.1.1", + "ipaddr.js": "^2.1.0", + "launch-editor": "^2.6.1", + "open": "^10.0.3", + "p-retry": "^6.2.0", + "rimraf": "^5.0.5", + "schema-utils": "^4.2.0", + "selfsigned": "^2.4.1", "serve-index": "^1.9.1", "sockjs": "^0.3.24", "spdy": "^4.0.2", - "webpack-dev-middleware": "^5.3.1", - "ws": "^8.13.0" + "webpack-dev-middleware": "^7.1.0", + "ws": "^8.16.0" }, "bin": { "webpack-dev-server": "bin/webpack-dev-server.js" }, "engines": { - "node": ">= 12.13.0" + "node": ">= 18.12.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/webpack" }, "peerDependencies": { - "webpack": "^4.37.0 || ^5.0.0" + "webpack": "^5.0.0" }, "peerDependenciesMeta": { "webpack": { @@ -18893,41 +21421,107 @@ } } }, - "node_modules/webpack-dev-server/node_modules/webpack-dev-middleware": { - "version": "5.3.4", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.4.tgz", - "integrity": "sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q==", + "node_modules/webpack-dev-server/node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", "dev": true, + "license": "ISC", "dependencies": { - "colorette": "^2.0.10", - "memfs": "^3.4.3", - "mime-types": "^2.1.31", - "range-parser": "^1.2.1", - "schema-utils": "^4.0.0" + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" }, - "engines": { - "node": ">= 12.13.0" + "bin": { + "glob": "dist/esm/bin.mjs" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/webpack-dev-server/node_modules/http-proxy-middleware": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.7.tgz", + "integrity": "sha512-fgVY8AV7qU7z/MmXJ/rxwbrtQH4jBQ9m7kp3llF0liB7glmFeVZFBepQb32T3y8n8k2+AEYuMPCpinYW+/CuRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" }, "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" + "@types/express": "^4.17.13" + }, + "peerDependenciesMeta": { + "@types/express": { + "optional": true + } + } + }, + "node_modules/webpack-dev-server/node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/webpack-dev-server/node_modules/rimraf": { + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.10.tgz", + "integrity": "sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "glob": "^10.3.7" + }, + "bin": { + "rimraf": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/webpack-merge": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", - "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-6.0.1.tgz", + "integrity": "sha512-hXXvrjtx2PLYx4qruKl+kyRSLc52V+cCvMxRjmKwoA+CBbbF5GfIBtR6kCvl0fYGqTUPKB+1ktVmTHqMOzgCBg==", "dev": true, + "license": "MIT", "dependencies": { "clone-deep": "^4.0.1", "flat": "^5.0.2", - "wildcard": "^2.0.0" + "wildcard": "^2.0.1" }, "engines": { - "node": ">=10.0.0" + "node": ">=18.0.0" + } + }, + "node_modules/webpack-merge/node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true, + "license": "BSD-3-Clause", + "bin": { + "flat": "cli.js" } }, "node_modules/webpack-sources": { @@ -18935,6 +21529,7 @@ "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", "dev": true, + "license": "MIT", "engines": { "node": ">=10.13.0" } @@ -18944,6 +21539,7 @@ "resolved": "https://registry.npmjs.org/webpack-subresource-integrity/-/webpack-subresource-integrity-5.1.0.tgz", "integrity": "sha512-sacXoX+xd8r4WKsy9MvH/q/vBtEHr86cpImXwyg74pFIpERKt6FmB8cXpeuh0ZLgclOlHI4Wcll7+R5L02xk9Q==", "dev": true, + "license": "MIT", "dependencies": { "typed-assert": "^1.0.8" }, @@ -18965,6 +21561,7 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -18981,6 +21578,7 @@ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", "dev": true, + "license": "MIT", "peerDependencies": { "ajv": "^6.9.1" } @@ -18990,6 +21588,7 @@ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" @@ -19003,6 +21602,7 @@ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } @@ -19011,19 +21611,22 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/webpack/node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/webpack/node_modules/schema-utils": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "dev": true, + "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", @@ -19042,6 +21645,7 @@ "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", "dev": true, + "license": "Apache-2.0", "dependencies": { "http-parser-js": ">=0.5.1", "safe-buffer": ">=5.1.0", @@ -19056,6 +21660,7 @@ "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=0.8.0" } @@ -19065,6 +21670,7 @@ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", "dev": true, + "license": "MIT", "dependencies": { "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" @@ -19074,7 +21680,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, + "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -19090,6 +21696,7 @@ "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", "dev": true, + "license": "MIT", "dependencies": { "is-bigint": "^1.0.1", "is-boolean-object": "^1.1.0", @@ -19105,13 +21712,15 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/which-typed-array": { "version": "1.1.15", "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", "dev": true, + "license": "MIT", "dependencies": { "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.7", @@ -19130,23 +21739,36 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/word-wrap": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", "dev": true, + "license": "MIT", "peer": true, "engines": { "node": ">=0.10.0" } }, + "node_modules/wordwrapjs": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-5.1.0.tgz", + "integrity": "sha512-JNjcULU2e4KJwUNv6CHgI46UvDGitb6dGryHajXTDiLgg1/RiGoPSDw4kZfYnwGtEXf2ZMeIewDQgFGzkCB2Sg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.17" + } + }, "node_modules/wrap-ansi": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -19161,7 +21783,7 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -19178,7 +21800,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -19193,7 +21815,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -19205,13 +21827,14 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "license": "MIT" }, "node_modules/wrap-ansi/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -19227,6 +21850,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -19238,19 +21862,21 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true + "license": "ISC" }, "node_modules/ws": { - "version": "8.17.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.0.tgz", - "integrity": "sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow==", + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", + "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", "dev": true, + "license": "MIT", "engines": { "node": ">=10.0.0" }, @@ -19271,7 +21897,7 @@ "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, + "license": "ISC", "engines": { "node": ">=10" } @@ -19280,13 +21906,15 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/yaml": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.4.2.tgz", - "integrity": "sha512-B3VqDZ+JAg1nZpaEmWtTXUlBneoGx6CPM9b0TENK6aoSu5t73dItudwdgmi6tHlIZZId4dZ9skcAQ2UbcyAeVA==", + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.5.1.tgz", + "integrity": "sha512-bLQOjaX/ADgQ20isPJRvF0iRUHIxVhYvr53Of7wGcWlO2jvtUlH5m87DsmulFVxRpNLOnI4tB6p/oh8D7kpn9Q==", "dev": true, + "license": "ISC", "bin": { "yaml": "bin.mjs" }, @@ -19298,13 +21926,14 @@ "version": "0.0.43", "resolved": "https://registry.npmjs.org/yaml-ast-parser/-/yaml-ast-parser-0.0.43.tgz", "integrity": "sha512-2PTINUwsRqSd+s8XxKaJWQlUuEMHJQyEuh2edBbW8KNJz0SJPwUSD2zRWqezFEdN7IzAgeuYHFUCF7o8zRdZ0A==", - "dev": true + "dev": true, + "license": "Apache-2.0" }, "node_modules/yargs": { "version": "17.7.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", - "dev": true, + "license": "MIT", "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", @@ -19322,7 +21951,7 @@ "version": "21.1.1", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true, + "license": "ISC", "engines": { "node": ">=12" } @@ -19332,6 +21961,7 @@ "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", "dev": true, + "license": "MIT", "dependencies": { "buffer-crc32": "~0.2.3", "fd-slicer": "~1.1.0" @@ -19342,6 +21972,7 @@ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -19349,35 +21980,49 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/yoctocolors-cjs": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yoctocolors-cjs/-/yoctocolors-cjs-2.1.2.tgz", + "integrity": "sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/zen-observable": { "version": "0.8.15", "resolved": "https://registry.npmjs.org/zen-observable/-/zen-observable-0.8.15.tgz", - "integrity": "sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ==" + "integrity": "sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ==", + "license": "MIT" }, "node_modules/zen-observable-ts": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/zen-observable-ts/-/zen-observable-ts-1.2.5.tgz", "integrity": "sha512-QZWQekv6iB72Naeake9hS1KxHlotfRpe+WGNbNx5/ta+R3DNjVO2bswf63gXlWDcs+EMd7XY8HfVQyP1X6T4Zg==", + "license": "MIT", "dependencies": { "zen-observable": "0.8.15" } }, "node_modules/zod": { - "version": "3.22.4", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.22.4.tgz", - "integrity": "sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==", + "version": "3.23.8", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.23.8.tgz", + "integrity": "sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" } }, "node_modules/zone.js": { - "version": "0.14.4", - "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.14.4.tgz", - "integrity": "sha512-NtTUvIlNELez7Q1DzKVIFZBzNb646boQMgpATo9z3Ftuu/gWvzxCW7jdjcUDoRGxRikrhVHB/zLXh1hxeJawvw==", - "dependencies": { - "tslib": "^2.3.0" - } + "version": "0.14.10", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.14.10.tgz", + "integrity": "sha512-YGAhaO7J5ywOXW6InXNlLmfU194F8lVgu7bRntUF3TiG8Y3nBK0x1UJJuHUP/e8IyihkjCYqhCScpSwnlaSRkQ==", + "license": "MIT" } } } diff --git a/webui/package.json b/webui/package.json index af874f2..8c06404 100644 --- a/webui/package.json +++ b/webui/package.json @@ -4,68 +4,78 @@ "scripts": { "ng": "ng", "start": "ng serve", - "build": "ng build", + "build": "ng build --configuration embedded", "watch": "ng build --watch --configuration development", "prettier:check": "prettier --check .", "prettier:fix": "prettier --write .", - "eslint:check": "eslint --ext .ts .", + "eslint:check": "eslint .", "eslint:fix": "npm run eslint:check -- --fix", - "lint": "npm run eslint:check && npm run prettier:check", - "lint:fix": "npm run eslint:fix && npm run prettier:fix", + "lint": "npm run eslint:check", + "lint:fix": "npm run eslint:fix", "test": "ng test --no-watch --no-progress", "test:watch": "ng test", - "graphql:codegen": "graphql-codegen -c ./src/app/graphql/codegen.ts" + "graphql:codegen": "graphql-codegen -c ./src/app/graphql/codegen.ts", + "i18n:extract": "transloco-keys-manager extract", + "i18n:find": "transloco-keys-manager find" }, "private": true, "dependencies": { - "@angular/animations": "^17.3.6", - "@angular/cdk": "^17.3.6", - "@angular/common": "^17.3.6", - "@angular/compiler": "^17.3.6", - "@angular/core": "^17.3.6", - "@angular/forms": "^17.3.6", - "@angular/material": "^17.3.6", - "@angular/platform-browser": "^17.3.6", - "@angular/platform-browser-dynamic": "^17.3.6", - "@angular/router": "^17.3.6", - "@apollo/client": "^3.10.1", - "@fontsource/material-icons": "^5.0.18", - "@fontsource/material-icons-outlined": "^5.0.12", - "@fontsource/material-symbols-outlined": "^5.0.30", - "@fontsource/roboto": "^5.0.13", - "apollo-angular": "^7.0.0", - "filesize": "^9.0.11", - "graphql": "^16.8.1", - "ngx-filesize": "^3.0.3", - "rxjs": "^7.8.1", - "tslib": "^2.6.2", - "zone.js": "^0.14.4" + "@angular/animations": "^18.2.8", + "@angular/cdk": "^18.0.2", + "@angular/common": "^18.2.8", + "@angular/compiler": "^18.2.8", + "@angular/core": "^18.2.8", + "@angular/forms": "^18.2.8", + "@angular/material": "^18.2.8", + "@angular/platform-browser": "^18.2.8", + "@angular/platform-browser-dynamic": "^18.2.8", + "@angular/router": "^18.2.8", + "@apollo/client": "^3.11.8", + "@fontsource/material-icons": "^5.1.0", + "@fontsource/material-icons-outlined": "^5.1.0", + "@fontsource/material-symbols-outlined": "^5.1.1", + "@fontsource/roboto": "^5.1.0", + "@jsverse/transloco": "^7.5.0", + "apollo-angular": "^7.2.0", + "chart.js": "^4.4.4", + "date-fns": "^4.1.0", + "filesize": "^10.1.6", + "graphql": "^16.9.0", + "ng2-charts": "^6.0.1", + "rxjs": "~7.8.1", + "tslib": "^2.6.3", + "zone.js": "~0.14.10" }, "devDependencies": { - "@angular-devkit/build-angular": "^17.3.6", - "@angular/cli": "^17.3.6", - "@angular/compiler-cli": "^17.3.6", - "@graphql-codegen/add": "^5.0.2", - "@graphql-codegen/cli": "^5.0.2", - "@graphql-codegen/typescript": "^4.0.6", + "@angular-devkit/build-angular": "^18.2.8", + "@angular/cli": "^18.2.8", + "@angular/compiler-cli": "^18.2.8", + "@eslint/compat": "^1.2.0", + "@eslint/eslintrc": "^3.1.0", + "@eslint/js": "^9.12.0", + "@graphql-codegen/add": "^5.0.3", + "@graphql-codegen/cli": "^5.0.3", + "@graphql-codegen/typescript": "^4.1.0", "@graphql-codegen/typescript-apollo-angular": "^4.0.0", - "@graphql-codegen/typescript-operations": "^4.2.0", - "@types/jasmine": "^5.1.4", - "@typescript-eslint/eslint-plugin": "^7.8.0", - "@typescript-eslint/parser": "^7.8.0", + "@graphql-codegen/typescript-operations": "^4.3.0", + "@jsverse/transloco-keys-manager": "^5.1.0", + "@types/jasmine": "~5.1.4", + "@typescript-eslint/eslint-plugin": "^8.8.1", + "@typescript-eslint/parser": "^8.8.1", "eslint-config-prettier": "^9.1.0", - "eslint-import-resolver-typescript": "^3.6.1", - "eslint-plugin-import": "^2.29.1", - "eslint-plugin-prettier": "^5.1.3", - "eslint-plugin-sonarjs": "^0.25.1", - "jasmine-core": "^5.1.2", - "karma": "^6.4.3", - "karma-chrome-launcher": "^3.2.0", - "karma-coverage": "^2.2.1", - "karma-jasmine": "^5.1.0", - "karma-jasmine-html-reporter": "^2.1.0", - "prettier": "^3.2.5", - "puppeteer": "^22.7.1", - "typescript": "^5.4.5" + "eslint-import-resolver-typescript": "^3.6.3", + "eslint-plugin-import": "^2.31.0", + "eslint-plugin-prettier": "^5.2.1", + "globals": "^15.11.0", + "jasmine-core": "~5.3.0", + "karma": "~6.4.4", + "karma-chrome-launcher": "~3.2.0", + "karma-coverage": "~2.2.1", + "karma-jasmine": "~5.1.0", + "karma-jasmine-html-reporter": "~2.1.0", + "ngx-build-plus": "^18.0.0", + "prettier": "^3.3.3", + "puppeteer": "^23.5.3", + "typescript": "~5.5.4" } } diff --git a/webui/public/binary.svg b/webui/public/binary.svg new file mode 100644 index 0000000..bc8fb92 --- /dev/null +++ b/webui/public/binary.svg @@ -0,0 +1,11 @@ + + + + + + + + + + diff --git a/webui/public/external-link.svg b/webui/public/external-link.svg new file mode 100644 index 0000000..1a7bca2 --- /dev/null +++ b/webui/public/external-link.svg @@ -0,0 +1,11 @@ + + + diff --git a/webui/src/favicon.png b/webui/public/favicon.png similarity index 100% rename from webui/src/favicon.png rename to webui/public/favicon.png diff --git a/webui/src/assets/magnet.svg b/webui/public/magnet.svg similarity index 67% rename from webui/src/assets/magnet.svg rename to webui/public/magnet.svg index f3eed8a..4ae3e61 100644 --- a/webui/src/assets/magnet.svg +++ b/webui/public/magnet.svg @@ -1,4 +1,4 @@ - + diff --git a/webui/public/queue.svg b/webui/public/queue.svg new file mode 100644 index 0000000..fa43e06 --- /dev/null +++ b/webui/public/queue.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/webui/src/app/app-routing.module.ts b/webui/src/app/app-routing.module.ts deleted file mode 100644 index f618252..0000000 --- a/webui/src/app/app-routing.module.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { NgModule } from "@angular/core"; -import { RouterModule, Routes } from "@angular/router"; - -const routes: Routes = []; - -@NgModule({ - imports: [RouterModule.forRoot(routes)], - exports: [RouterModule], -}) -export class AppRoutingModule {} diff --git a/webui/src/app/app.component.html b/webui/src/app/app.component.html index 2a7b586..5dd358d 100644 --- a/webui/src/app/app.component.html +++ b/webui/src/app/app.component.html @@ -1,40 +1,3 @@ -

- - - bitmagnet - - - favoriteSponsor - - - bitmagnet.io - bitmagnet on Discord - bitmagnet on GitHub - bitmagnet on OpenCollective - - -

- - + + + diff --git a/webui/src/app/app.component.scss b/webui/src/app/app.component.scss index d606c00..e69de29 100644 --- a/webui/src/app/app.component.scss +++ b/webui/src/app/app.component.scss @@ -1,29 +0,0 @@ -@use "sass:map"; -@use "@angular/material" as mat; -@import "./app.variables"; - -.spacer { - display: inline-flex; - flex: 1 1 auto; -} - -svg .fill { - fill: mat.get-color-from-palette($primary-palette, 500); -} - -// Why do we need to hack away like this to use the core color palettes with the core components?! -::ng-deep .mat-mdc-snack-bar-container.snack-bar-error > div { - background-color: mat.get-color-from-palette($warn-palette, 500); - color: #fff; - .mdc-button__label { - color: #fff; - } -} - -::ng-deep .button-sponsor.mat-mdc-outlined-button:not(:disabled) { - margin-right: 10px; - border-color: #fff; - &:hover { - background-color: mat.get-color-from-palette($accent-palette, 500); - } -} diff --git a/webui/src/app/app.component.spec.ts b/webui/src/app/app.component.spec.ts index a010083..2aa9051 100644 --- a/webui/src/app/app.component.spec.ts +++ b/webui/src/app/app.component.spec.ts @@ -1,15 +1,15 @@ import { TestBed } from "@angular/core/testing"; -import { RouterTestingModule } from "@angular/router/testing"; +import { TranslocoModule } from "@jsverse/transloco"; import { AppComponent } from "./app.component"; -import { AppModule } from "./app.module"; +import { appConfig } from "./app.config"; describe("AppComponent", () => { - beforeEach(() => - TestBed.configureTestingModule({ - imports: [RouterTestingModule, AppModule], - declarations: [AppComponent], - }), - ); + beforeEach(async () => { + await TestBed.configureTestingModule({ + ...appConfig, + imports: [AppComponent, TranslocoModule], + }).compileComponents(); + }); it("should create the app", () => { const fixture = TestBed.createComponent(AppComponent); @@ -17,7 +17,7 @@ describe("AppComponent", () => { expect(app).toBeTruthy(); }); - it(`should have as title 'bitmagnet'`, () => { + it(`should have the 'bitmagnet' title`, () => { const fixture = TestBed.createComponent(AppComponent); const app = fixture.componentInstance; expect(app.title).toEqual("bitmagnet"); diff --git a/webui/src/app/app.component.ts b/webui/src/app/app.component.ts index 1e2973e..653bad3 100644 --- a/webui/src/app/app.component.ts +++ b/webui/src/app/app.component.ts @@ -1,10 +1,20 @@ import { Component } from "@angular/core"; +import { RouterOutlet } from "@angular/router"; +import { MatIconRegistry } from "@angular/material/icon"; +import { DomSanitizer } from "@angular/platform-browser"; +import { LayoutComponent } from "./layout/layout.component"; +import { initializeIcons } from "./app.icons"; @Component({ selector: "app-root", + standalone: true, + imports: [RouterOutlet, LayoutComponent], templateUrl: "./app.component.html", - styleUrls: ["./app.component.scss"], + styleUrl: "./app.component.scss", }) export class AppComponent { title = "bitmagnet"; + constructor(iconRegistry: MatIconRegistry, domSanitizer: DomSanitizer) { + initializeIcons(iconRegistry, domSanitizer); + } } diff --git a/webui/src/app/app.config.ts b/webui/src/app/app.config.ts new file mode 100644 index 0000000..2dbb4f9 --- /dev/null +++ b/webui/src/app/app.config.ts @@ -0,0 +1,91 @@ +import { ApplicationConfig, provideZoneChangeDetection } from "@angular/core"; +import { provideRouter, withComponentInputBinding } from "@angular/router"; + +import { provideAnimationsAsync } from "@angular/platform-browser/animations/async"; +import { + provideHttpClient, + withInterceptorsFromDi, +} from "@angular/common/http"; +import { provideTransloco } from "@jsverse/transloco"; +import { provideCharts, withDefaultRegisterables } from "ng2-charts"; +import { routes } from "./app.routes"; +import { TranslocoImportLoader } from "./i18n/transloco.loader"; + +export const appConfig: ApplicationConfig = { + providers: [ + provideZoneChangeDetection({ eventCoalescing: true }), + provideRouter(routes, withComponentInputBinding()), + provideAnimationsAsync("animations"), + provideHttpClient(withInterceptorsFromDi()), + provideHttpClient(), + provideTransloco({ + config: { + availableLangs: [ + { + id: "ar", + label: "العربية", + }, + { + id: "de", + label: "Deutsch", + }, + { + id: "en", + label: "English", + }, + { + id: "es", + label: "Español", + }, + { + id: "fr", + label: "Français", + }, + { + id: "hi", + label: "हिन्दी", + }, + { + id: "ja", + label: "日本語", + }, + { + id: "nl", + label: "Nederlands", + }, + { + id: "pt", + label: "Português", + }, + { + id: "ru", + label: "Русский", + }, + { + id: "tr", + label: "Türkçe", + }, + { + id: "uk", + label: "Українська", + }, + { + id: "zh", + label: "中文", + }, + ], + defaultLang: "en", + fallbackLang: "en", + missingHandler: { + // It will use the first language set in the `fallbackLang` property + useFallbackTranslation: true, + }, + // Remove this option if your application doesn't support changing language in runtime. + reRenderOnLangChange: true, + prodMode: false, + }, + loader: TranslocoImportLoader, + }), + provideCharts(withDefaultRegisterables()), + ], +}; diff --git a/webui/src/app/app.icons.ts b/webui/src/app/app.icons.ts new file mode 100644 index 0000000..0b8cfec --- /dev/null +++ b/webui/src/app/app.icons.ts @@ -0,0 +1,28 @@ +import { MatIconRegistry } from "@angular/material/icon"; +import { DomSanitizer } from "@angular/platform-browser"; + +export const initializeIcons = ( + iconRegistry: MatIconRegistry, + domSanitizer: DomSanitizer, +) => + iconRegistry + .setDefaultFontSetClass( + "material-icons-outlined", + "material-symbols-outlined", + ) + .addSvgIcon( + "magnet", + domSanitizer.bypassSecurityTrustResourceUrl("magnet.svg"), + ) + .addSvgIcon( + "external-link", + domSanitizer.bypassSecurityTrustResourceUrl("external-link.svg"), + ) + .addSvgIcon( + "binary", + domSanitizer.bypassSecurityTrustResourceUrl("binary.svg"), + ) + .addSvgIcon( + "queue", + domSanitizer.bypassSecurityTrustResourceUrl("queue.svg"), + ); diff --git a/webui/src/app/app.module.ts b/webui/src/app/app.module.ts index f5c9ef8..e69285b 100644 --- a/webui/src/app/app.module.ts +++ b/webui/src/app/app.module.ts @@ -1,50 +1,61 @@ +import { ClipboardModule } from "@angular/cdk/clipboard"; import { NgModule } from "@angular/core"; -import { BrowserModule, DomSanitizer } from "@angular/platform-browser"; - -import { HttpClientModule } from "@angular/common/http"; -import { BrowserAnimationsModule } from "@angular/platform-browser/animations"; -import { MatIconModule, MatIconRegistry } from "@angular/material/icon"; +import { CommonModule } from "@angular/common"; +import { ReactiveFormsModule } from "@angular/forms"; +import { MatAutocompleteModule } from "@angular/material/autocomplete"; import { MatButtonModule } from "@angular/material/button"; -import { MatToolbarModule } from "@angular/material/toolbar"; -import { MatGridListModule } from "@angular/material/grid-list"; -import { MatMenuModule } from "@angular/material/menu"; +import { MatCardModule } from "@angular/material/card"; import { MatChipsModule } from "@angular/material/chips"; -import { AppRoutingModule } from "./app-routing.module"; -import { AppComponent } from "./app.component"; +import { MatCheckboxModule } from "@angular/material/checkbox"; +import { MatDialogModule } from "@angular/material/dialog"; +import { MatDividerModule } from "@angular/material/divider"; +import { MatExpansionModule } from "@angular/material/expansion"; +import { MatFormFieldModule } from "@angular/material/form-field"; +import { MatGridListModule } from "@angular/material/grid-list"; +import { MatIconModule } from "@angular/material/icon"; +import { MatInputModule } from "@angular/material/input"; +import { MatMenuModule } from "@angular/material/menu"; +import { MatProgressBarModule } from "@angular/material/progress-bar"; +import { MatProgressSpinnerModule } from "@angular/material/progress-spinner"; +import { MatToolbarModule } from "@angular/material/toolbar"; +import { MatTooltipModule } from "@angular/material/tooltip"; +import { MatSelectModule } from "@angular/material/select"; +import { MatSidenavModule } from "@angular/material/sidenav"; +import { MatTableModule } from "@angular/material/table"; +import { MatTabsModule } from "@angular/material/tabs"; +import { RouterModule } from "@angular/router"; +import { TranslocoModule } from "@jsverse/transloco"; import { GraphQLModule } from "./graphql/graphql.module"; -import { SearchModule } from "./search/search.module"; -import { AppErrorsService } from "./app-errors.service"; -import { StatusModule } from "./status/status.module"; @NgModule({ - declarations: [AppComponent], - imports: [ - AppRoutingModule, - BrowserAnimationsModule, - BrowserModule, + exports: [ + ClipboardModule, + CommonModule, GraphQLModule, - MatChipsModule, - HttpClientModule, + MatAutocompleteModule, MatButtonModule, + MatCardModule, + MatCheckboxModule, + MatChipsModule, + MatDialogModule, + MatDividerModule, + MatExpansionModule, + MatFormFieldModule, MatGridListModule, MatIconModule, + MatInputModule, MatMenuModule, + MatProgressBarModule, + MatProgressSpinnerModule, + MatSelectModule, + MatSidenavModule, + MatTableModule, + MatTabsModule, MatToolbarModule, - SearchModule, - StatusModule, + MatTooltipModule, + ReactiveFormsModule, + RouterModule, + TranslocoModule, ], - providers: [AppErrorsService], - bootstrap: [AppComponent], }) -export class AppModule { - constructor(iconRegistry: MatIconRegistry, domSanitizer: DomSanitizer) { - iconRegistry.setDefaultFontSetClass( - "material-icons-outlined", - "material-symbols-outlined", - ); - iconRegistry.addSvgIcon( - "magnet", - domSanitizer.bypassSecurityTrustResourceUrl("assets/magnet.svg"), - ); - } -} +export class AppModule {} diff --git a/webui/src/app/app.routes.ts b/webui/src/app/app.routes.ts new file mode 100644 index 0000000..417467f --- /dev/null +++ b/webui/src/app/app.routes.ts @@ -0,0 +1,83 @@ +import { Routes } from "@angular/router"; + +export const routes: Routes = [ + { + path: "", + pathMatch: "full", + redirectTo: "torrents", + }, + { + path: "torrents", + loadComponent: () => + import("./torrents/torrents.component").then((c) => c.TorrentsComponent), + children: [ + { + path: "", + loadComponent: () => + import("./torrents/torrents-search.component").then( + (c) => c.TorrentsSearchComponent, + ), + }, + { + path: "permalink/:infoHash", + loadComponent: () => + import("./torrents/torrent-permalink.component").then( + (c) => c.TorrentPermalinkComponent, + ), + }, + ], + }, + { + path: "dashboard", + loadComponent: () => + import("./dashboard/dashboard.component").then( + (c) => c.DashboardComponent, + ), + children: [ + { + path: "", + loadComponent: () => + import("./dashboard/dashboard-home.component").then( + (c) => c.DashboardHomeComponent, + ), + }, + { + path: "queues", + loadComponent: () => + import("./dashboard/queue/queue-dashboard.component").then( + (c) => c.QueueDashboardComponent, + ), + children: [ + { + path: "visualize", + loadComponent: () => + import("./dashboard/queue/queue-visualize.component").then( + (c) => c.QueueVisualizeComponent, + ), + }, + { + path: "jobs", + loadComponent: () => + import("./dashboard/queue/queue-jobs.component").then( + (c) => c.QueueJobsComponent, + ), + }, + { + path: "admin", + loadComponent: () => + import("./dashboard/queue/queue-admin.component").then( + (c) => c.QueueAdminComponent, + ), + }, + ], + }, + { + path: "torrents", + loadComponent: () => + import("./dashboard/torrents/torrents-dashboard.component").then( + (c) => c.TorrentsDashboardComponent, + ), + }, + ], + }, +]; diff --git a/webui/src/app/app.variables.scss b/webui/src/app/app.variables.scss deleted file mode 100644 index fefb17d..0000000 --- a/webui/src/app/app.variables.scss +++ /dev/null @@ -1,24 +0,0 @@ -@use "sass:map"; -@use "@angular/material" as mat; - -$primary: mat.define-palette(mat.$indigo-palette); -$accent: mat.define-palette(mat.$pink-palette); -$warn: mat.define-palette(mat.$red-palette); - -$theme: mat.define-light-theme( - ( - color: ( - primary: $primary, - accent: $accent, - warn: $warn, - ), - ) -); - -$color-config: mat.get-color-config($theme); -$primary-palette: map.get($color-config, "primary"); -$accent-palette: map.get($color-config, "accent"); -$warn-palette: map.get($color-config, "warn"); -$is-dark-theme: map.get($color-config, "is-dark"); - -$color-config: mat.get-color-config($theme); diff --git a/webui/src/app/browser-storage/browser-storage.service.ts b/webui/src/app/browser-storage/browser-storage.service.ts new file mode 100644 index 0000000..18b4766 --- /dev/null +++ b/webui/src/app/browser-storage/browser-storage.service.ts @@ -0,0 +1,27 @@ +import { Inject, Injectable, InjectionToken } from "@angular/core"; + +export const BROWSER_STORAGE = new InjectionToken("Browser Storage", { + providedIn: "root", + factory: () => localStorage, +}); + +@Injectable({ providedIn: "root" }) +export class BrowserStorageService { + constructor(@Inject(BROWSER_STORAGE) public storage: Storage) {} + + get(key: string) { + return this.storage.getItem(key); + } + + set(key: string, value: string) { + this.storage.setItem(key, value); + } + + remove(key: string) { + this.storage.removeItem(key); + } + + clear() { + this.storage.clear(); + } +} diff --git a/webui/src/app/charting/chart.component.html b/webui/src/app/charting/chart.component.html new file mode 100644 index 0000000..2fb6860 --- /dev/null +++ b/webui/src/app/charting/chart.component.html @@ -0,0 +1,9 @@ + + diff --git a/webui/src/app/status/version/version.component.scss b/webui/src/app/charting/chart.component.scss similarity index 100% rename from webui/src/app/status/version/version.component.scss rename to webui/src/app/charting/chart.component.scss diff --git a/webui/src/app/charting/chart.component.spec.ts b/webui/src/app/charting/chart.component.spec.ts new file mode 100644 index 0000000..757031f --- /dev/null +++ b/webui/src/app/charting/chart.component.spec.ts @@ -0,0 +1,26 @@ +import { ComponentFixture, TestBed } from "@angular/core/testing"; + +import { appConfig } from "../app.config"; +import { QueueChartAdapterTotals } from "../dashboard/queue/queue-chart-adapter.totals"; +import { Result } from "../dashboard/queue/queue-metrics.types"; +import { ChartComponent } from "./chart.component"; + +describe("QueueComponent", () => { + let component: ChartComponent; + let fixture: ComponentFixture>; + + beforeEach(async () => { + await TestBed.configureTestingModule(appConfig).compileComponents(); + + fixture = TestBed.createComponent(ChartComponent); + component = fixture.componentInstance; + TestBed.runInInjectionContext(() => { + component.adapter = new QueueChartAdapterTotals(); + }); + fixture.detectChanges(); + }); + + it("should create", () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/webui/src/app/charting/chart.component.ts b/webui/src/app/charting/chart.component.ts new file mode 100644 index 0000000..864fb65 --- /dev/null +++ b/webui/src/app/charting/chart.component.ts @@ -0,0 +1,48 @@ +import { Component, inject, Input, OnInit } from "@angular/core"; +import { BaseChartDirective } from "ng2-charts"; +import { ChartConfiguration, ChartType } from "chart.js"; +import { Observable } from "rxjs"; +import { TranslocoService } from "@jsverse/transloco"; +import { ThemeInfoService } from "../themes/theme-info.service"; +import { ChartAdapter } from "./types"; + +@Component({ + selector: "app-chart", + standalone: true, + imports: [BaseChartDirective], + templateUrl: "./chart.component.html", + styleUrl: "./chart.component.scss", +}) +export class ChartComponent + implements OnInit +{ + private themeInfo = inject(ThemeInfoService); + private transloco = inject(TranslocoService); + + @Input() $data: Observable = new Observable(); + @Input() adapter: ChartAdapter; + @Input() width: number = 500; + @Input() height: number = 500; + + chartConfig: ChartConfiguration; + + private data: Data; + + ngOnInit() { + this.updateChart(); + this.$data.subscribe((data) => { + this.data = data; + this.updateChart(); + }); + this.themeInfo.info$.subscribe(() => { + this.updateChart(); + }); + this.transloco.langChanges$.subscribe(() => { + this.updateChart(); + }); + } + + private updateChart() { + this.chartConfig = this.adapter.create(this.data) as ChartConfiguration; + } +} diff --git a/webui/src/app/charting/types.ts b/webui/src/app/charting/types.ts new file mode 100644 index 0000000..0752da3 --- /dev/null +++ b/webui/src/app/charting/types.ts @@ -0,0 +1,18 @@ +import { ChartConfiguration, ChartType } from "chart.js"; +import { ThemeColors } from "../themes/theme-types"; + +export type ChartDependencies = { + colors: ThemeColors; +}; + +export type ChartConfigFactory< + Data = unknown, + Type extends ChartType = ChartType, +> = (data: Data | undefined) => ChartConfiguration; + +export interface ChartAdapter< + Data = unknown, + Type extends ChartType = ChartType, +> { + create: ChartConfigFactory; +} diff --git a/webui/src/app/dashboard/_dashboard-component.theme.scss b/webui/src/app/dashboard/_dashboard-component.theme.scss new file mode 100644 index 0000000..486a705 --- /dev/null +++ b/webui/src/app/dashboard/_dashboard-component.theme.scss @@ -0,0 +1,23 @@ +@use "@angular/material" as mat; + +@mixin theme($theme) { + app-dashboard { + mat-drawer nav { + a { + --mdc-text-button-label-text-color: mat.get-theme-color( + $theme, + secondary, + 40 + ); + &.active { + color: mat.get-theme-color($theme, secondary, 80); + @if mat.get-theme-type($theme) == dark { + background-color: rgba(#fff, 0.1); + } @else { + background-color: rgba(#000, 0.1); + } + } + } + } + } +} diff --git a/webui/src/app/dashboard/dashboard-home.component.html b/webui/src/app/dashboard/dashboard-home.component.html new file mode 100644 index 0000000..5e07eea --- /dev/null +++ b/webui/src/app/dashboard/dashboard-home.component.html @@ -0,0 +1,19 @@ + + + + +

dashboard{{ t("routes.dashboard") }}

+
+
+ + +
+ + + + + +
+
+
+
diff --git a/webui/src/app/dashboard/dashboard-home.component.scss b/webui/src/app/dashboard/dashboard-home.component.scss new file mode 100644 index 0000000..6ba67dd --- /dev/null +++ b/webui/src/app/dashboard/dashboard-home.component.scss @@ -0,0 +1,28 @@ +.grid-container { + margin: 20px; +} + +.more-button { + position: absolute; + top: 5px; + right: 10px; +} + +app-health-card { + width: 100%; + height: 100%; + mat-card { + height: 100%; + } +} + +mat-grid-tile mat-card { + width: 100%; +} + +mat-toolbar h2 mat-icon { + position: relative; + top: 3px; + margin-right: 14px; + margin-left: 32px; +} diff --git a/webui/src/app/dashboard/dashboard-home.component.spec.ts b/webui/src/app/dashboard/dashboard-home.component.spec.ts new file mode 100644 index 0000000..cd0d0bc --- /dev/null +++ b/webui/src/app/dashboard/dashboard-home.component.spec.ts @@ -0,0 +1,23 @@ +import { waitForAsync, ComponentFixture, TestBed } from "@angular/core/testing"; + +import { appConfig } from "../app.config"; +import { DashboardHomeComponent } from "./dashboard-home.component"; + +describe("DashboardComponent", () => { + let component: DashboardHomeComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(async () => { + await TestBed.configureTestingModule(appConfig).compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(DashboardHomeComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it("should compile", () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/webui/src/app/dashboard/dashboard-home.component.ts b/webui/src/app/dashboard/dashboard-home.component.ts new file mode 100644 index 0000000..2a570a9 --- /dev/null +++ b/webui/src/app/dashboard/dashboard-home.component.ts @@ -0,0 +1,12 @@ +import { Component } from "@angular/core"; +import { HealthModule } from "../health/health.module"; +import { AppModule } from "../app.module"; + +@Component({ + selector: "app-dashboard", + templateUrl: "./dashboard-home.component.html", + styleUrl: "./dashboard-home.component.scss", + standalone: true, + imports: [AppModule, HealthModule], +}) +export class DashboardHomeComponent {} diff --git a/webui/src/app/dashboard/dashboard.component.html b/webui/src/app/dashboard/dashboard.component.html new file mode 100644 index 0000000..bcbf8f2 --- /dev/null +++ b/webui/src/app/dashboard/dashboard.component.html @@ -0,0 +1,69 @@ + + + + + + +
+ +
+ +
+
+
diff --git a/webui/src/app/dashboard/dashboard.component.scss b/webui/src/app/dashboard/dashboard.component.scss new file mode 100644 index 0000000..185751b --- /dev/null +++ b/webui/src/app/dashboard/dashboard.component.scss @@ -0,0 +1,30 @@ +mat-drawer nav { + padding-top: 12px; + --mat-text-button-icon-spacing: 14px; + ul { + list-style-type: none; + padding-left: 0; + a { + width: 100%; + font-size: var(--mat-expansion-container-text-size); + justify-content: flex-start; + padding-left: 20px; + } + li { + margin-bottom: 6px; + } + } +} + +mat-drawer-content { + .button-container-toggle-drawer { + position: absolute; + left: 20px; + top: 28px; + z-index: 100; + } +} + +.drawer { + width: 220px; +} diff --git a/webui/src/app/dashboard/dashboard.component.spec.ts b/webui/src/app/dashboard/dashboard.component.spec.ts new file mode 100644 index 0000000..71fbc05 --- /dev/null +++ b/webui/src/app/dashboard/dashboard.component.spec.ts @@ -0,0 +1,29 @@ +import { ComponentFixture, TestBed } from "@angular/core/testing"; + +import { DomSanitizer } from "@angular/platform-browser"; +import { MatIconRegistry } from "@angular/material/icon"; +import { appConfig } from "../app.config"; +import { DashboardComponent } from "./dashboard.component"; + +describe("DashboardComponent", () => { + let component: DashboardComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule(appConfig).compileComponents(); + + fixture = TestBed.createComponent(DashboardComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + TestBed.inject(MatIconRegistry).addSvgIcon( + "queue", + TestBed.inject(DomSanitizer).bypassSecurityTrustResourceUrl( + "/fake/icon.svg", + ), + ); + }); + + it("should create", () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/webui/src/app/dashboard/dashboard.component.ts b/webui/src/app/dashboard/dashboard.component.ts new file mode 100644 index 0000000..b8ce84c --- /dev/null +++ b/webui/src/app/dashboard/dashboard.component.ts @@ -0,0 +1,22 @@ +import { Component, inject } from "@angular/core"; +import { BreakpointsService } from "../layout/breakpoints.service"; +import { TorrentsTableComponent } from "../torrents/torrents-table.component"; +import { TorrentsBulkActionsComponent } from "../torrents/torrents-bulk-actions.component"; +import { PaginatorComponent } from "../paginator/paginator.component"; +import { AppModule } from "../app.module"; + +@Component({ + selector: "app-dashboard", + standalone: true, + imports: [ + AppModule, + PaginatorComponent, + TorrentsBulkActionsComponent, + TorrentsTableComponent, + ], + templateUrl: "./dashboard.component.html", + styleUrl: "./dashboard.component.scss", +}) +export class DashboardComponent { + breakpoints = inject(BreakpointsService); +} diff --git a/webui/src/app/dashboard/queue/_queue-visualize-component.theme.scss b/webui/src/app/dashboard/queue/_queue-visualize-component.theme.scss new file mode 100644 index 0000000..981129f --- /dev/null +++ b/webui/src/app/dashboard/queue/_queue-visualize-component.theme.scss @@ -0,0 +1,14 @@ +@use "@angular/material" as mat; + +@mixin theme($theme) { + app-queue-visualize { + button.selected { + @if mat.get-theme-type($theme) == dark { + background-color: mat.get-theme-color($theme, primary, 10); + } @else { + background-color: mat.get-theme-color($theme, secondary, 95); + color: mat.get-theme-color($theme, secondary, 40); + } + } + } +} diff --git a/webui/src/app/dashboard/queue/queue-admin.component.html b/webui/src/app/dashboard/queue/queue-admin.component.html new file mode 100644 index 0000000..1ff73ab --- /dev/null +++ b/webui/src/app/dashboard/queue/queue-admin.component.html @@ -0,0 +1,18 @@ + + + + + + + diff --git a/webui/src/app/dashboard/queue/queue-admin.component.scss b/webui/src/app/dashboard/queue/queue-admin.component.scss new file mode 100644 index 0000000..42cde66 --- /dev/null +++ b/webui/src/app/dashboard/queue/queue-admin.component.scss @@ -0,0 +1,7 @@ +ul { + list-style-type: none; + padding-left: 0; + li { + margin-bottom: 6px; + } +} diff --git a/webui/src/app/dashboard/queue/queue-admin.component.spec.ts b/webui/src/app/dashboard/queue/queue-admin.component.spec.ts new file mode 100644 index 0000000..8ed908d --- /dev/null +++ b/webui/src/app/dashboard/queue/queue-admin.component.spec.ts @@ -0,0 +1,21 @@ +import { ComponentFixture, TestBed } from "@angular/core/testing"; + +import { appConfig } from "../../app.config"; +import { QueueAdminComponent } from "./queue-admin.component"; + +describe("QueueAdminComponent", () => { + let component: QueueAdminComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule(appConfig).compileComponents(); + + fixture = TestBed.createComponent(QueueAdminComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it("should create", () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/webui/src/app/dashboard/queue/queue-admin.component.ts b/webui/src/app/dashboard/queue/queue-admin.component.ts new file mode 100644 index 0000000..1088444 --- /dev/null +++ b/webui/src/app/dashboard/queue/queue-admin.component.ts @@ -0,0 +1,24 @@ +import { Component, inject } from "@angular/core"; +import { MatDialog } from "@angular/material/dialog"; +import { AppModule } from "../../app.module"; +import { QueueEnqueueReprocessTorrentsBatchDialogComponent } from "./queue-enqueue-reprocess-torrents-batch-dialog.component"; +import { QueuePurgeJobsDialogComponent } from "./queue-purge-jobs-dialog.component"; + +@Component({ + selector: "app-queue-admin", + standalone: true, + imports: [AppModule], + templateUrl: "./queue-admin.component.html", + styleUrl: "./queue-admin.component.scss", +}) +export class QueueAdminComponent { + readonly dialog = inject(MatDialog); + + openDialogPurgeJobs() { + this.dialog.open(QueuePurgeJobsDialogComponent); + } + + openDialogEnqueueReprocessTorrentsBatch() { + this.dialog.open(QueueEnqueueReprocessTorrentsBatchDialogComponent); + } +} diff --git a/webui/src/app/dashboard/queue/queue-chart-adapter.timeline.ts b/webui/src/app/dashboard/queue/queue-chart-adapter.timeline.ts new file mode 100644 index 0000000..69b71af --- /dev/null +++ b/webui/src/app/dashboard/queue/queue-chart-adapter.timeline.ts @@ -0,0 +1,249 @@ +import { ChartConfiguration } from "chart.js"; +import { inject, Injectable } from "@angular/core"; +import { TranslocoService } from "@jsverse/transloco"; +import { format as formatDate } from "date-fns/format"; +import { ChartAdapter } from "../../charting/types"; +import { ThemeBaseColor } from "../../themes/theme-types"; +import { createThemeColor } from "../../themes/theme-utils"; +import { ThemeInfoService } from "../../themes/theme-info.service"; +import { resolveDateLocale } from "../../dates/dates.locales"; +import { formatDuration } from "../../dates/dates.utils"; +import { normalizeBucket } from "./queue-metrics.controller"; +import { + durationSeconds, + eventNames, + timeframeLengths, +} from "./queue.constants"; +import { BucketParams, EventName, Result } from "./queue-metrics.types"; + +const eventColors: Record = { + created: "primary", + processed: "success", + failed: "error", +}; + +@Injectable({ providedIn: "root" }) +export class QueueChartAdapterTimeline implements ChartAdapter { + private themeInfo = inject(ThemeInfoService); + private transloco = inject(TranslocoService); + + create(result?: Result): ChartConfiguration<"line"> { + const { colors } = this.themeInfo.info; + const labels = Array(); + const datasets: ChartConfiguration<"line">["data"]["datasets"] = []; + if (result) { + const nonEmptyQueues = result.queues.filter((q) => !q.isEmpty); + const nonEmptyBuckets = Array.from( + new Set( + nonEmptyQueues.flatMap((q) => + q.events ? [q.events.earliestBucket, q.events.latestBucket] : [], + ), + ), + ).sort(); + const now = new Date(); + const minBucket = + result.params.buckets.timeframe === "all" + ? nonEmptyBuckets[0] + : Math.min( + nonEmptyBuckets[0], + normalizeBucket( + now.getTime() - + 1000 * timeframeLengths[result.params.buckets.timeframe], + result.params.buckets, + ).index, + ); + const maxBucket = Math.max( + nonEmptyBuckets[nonEmptyBuckets.length - 1], + normalizeBucket(now, result.params.buckets).index, + ); + if (nonEmptyBuckets.length) { + for (let i = minBucket; i <= maxBucket; i++) { + labels.push(this.formatBucketKey(result.params.buckets, i)); + } + const relevantEvents = eventNames.filter( + (n) => (result.params.event ?? n) === n, + ); + for (const queue of nonEmptyQueues) { + for (const event of relevantEvents) { + const series = Array(); + for (let i = minBucket; i <= maxBucket; i++) { + series.push( + queue.events?.eventBuckets?.[event]?.entries?.[`${i}`]?.count ?? + 0, + ); + } + datasets.push({ + yAxisID: "yCount", + label: + queue.queue + + ": " + + this.transloco.translate("dashboard.queues." + event), + data: series, + borderColor: colors[createThemeColor(eventColors[event], 50)], + pointBackgroundColor: + colors[createThemeColor(eventColors[event], 20)], + pointBorderColor: + colors[createThemeColor(eventColors[event], 80)], + pointHoverBackgroundColor: + colors[createThemeColor(eventColors[event], 40)], + pointHoverBorderColor: + colors[createThemeColor(eventColors[event], 60)], + }); + } + const latencyEvents = (["processed", "failed"] as const).filter((e) => + relevantEvents.includes(e), + ); + if (latencyEvents.length) { + const latencySeries = Array(); + for (let i = minBucket; i <= maxBucket; i++) { + const result = (["processed", "failed"] as const) + .filter((e) => relevantEvents.includes(e)) + .reduce<[number, number] | null>((acc, next) => { + const entry = + queue.events?.eventBuckets?.[next]?.entries?.[`${i}`]; + if (!entry?.count) { + return acc; + } + return [ + (acc?.[0] ?? 0) + entry.latency, + (acc?.[1] ?? 0) + entry.count, + ]; + }, null); + latencySeries.push(result ? result[0] / result[1] : null); + } + datasets.push({ + yAxisID: "yLatency", + label: + queue.queue + + ": " + + this.transloco.translate("dashboard.queues.latency"), + data: latencySeries, + // fill: 'origin', + // backgroundColor: 'rgba(148,159,177,0.2)', + borderColor: colors["tertiary-50"], + // pointBackgroundColor: 'rgba(148,159,177,1)', + // pointBorderColor: '#fff', + pointHoverBackgroundColor: colors["tertiary-80"], + pointHoverBorderColor: colors["tertiary-20"], + }); + } + } + } + } + return { + type: "line", + options: { + animation: false, + elements: { + line: { + tension: 0.5, + }, + }, + scales: { + yCount: { + position: "left", + ticks: { + callback: (v) => + parseInt(v as string).toLocaleString( + this.transloco.getActiveLang(), + ), + }, + }, + yLatency: { + position: "right", + ticks: { + callback: this.formatDuration.bind(this), + }, + }, + // x: { + // ticks: { + // stepSize: 5 + // } + // } + // y1: { + // position: 'right', + // grid: { + // color: 'rgba(255,0,0,0.3)', + // }, + // ticks: { + // color: 'red', + // }, + // }, + }, + plugins: { + legend: { + display: true, + }, + decimation: { + enabled: true, + }, + // datalabels: { + // anchor: 'end', + // align: 'end', + // }, + }, + }, + data: { + labels, + datasets, + }, + }; + } + + private formatBucketKey(params: BucketParams, key: number): string { + let formatStr: string; + switch (params.duration) { + case "day": + formatStr = "d LLL"; + break; + case "hour": + formatStr = "d LLL H:00"; + break; + case "minute": + formatStr = "H:mm"; + break; + } + return formatDate( + 1000 * durationSeconds[params.duration] * params.multiplier * key, + formatStr, + { + locale: resolveDateLocale(this.transloco.getActiveLang()), + }, + ); + } + + private formatDuration(d: number | string): string { + if (typeof d === "string") { + d = parseInt(d); + } + if (d === 0) { + return "0"; + } + let seconds = d; + let minutes = 0; + let hours = 0; + let days = 0; + if (seconds >= 60) { + minutes = Math.floor(seconds / 60); + seconds = seconds % 60; + if (minutes >= 5) { + seconds = 0; + if (minutes >= 60) { + hours = Math.floor(minutes / 60); + minutes = minutes % 60; + if (hours >= 5) { + minutes = 0; + if (hours >= 24) { + days = Math.floor(hours / 24); + hours = hours % 24; + } + } + } + } + } + return formatDuration( + { days, hours, minutes, seconds }, + this.transloco.getActiveLang(), + ); + } +} diff --git a/webui/src/app/dashboard/queue/queue-chart-adapter.totals.ts b/webui/src/app/dashboard/queue/queue-chart-adapter.totals.ts new file mode 100644 index 0000000..5d16167 --- /dev/null +++ b/webui/src/app/dashboard/queue/queue-chart-adapter.totals.ts @@ -0,0 +1,92 @@ +import { ChartConfiguration } from "chart.js"; +import { inject, Injectable } from "@angular/core"; +import { TranslocoService } from "@jsverse/transloco"; +import { ChartAdapter } from "../../charting/types"; +import * as generated from "../../graphql/generated"; +import { ThemeBaseColor } from "../../themes/theme-types"; +import { QueueJobStatus } from "../../graphql/generated"; +import { createThemeColor } from "../../themes/theme-utils"; +import { ThemeInfoService } from "../../themes/theme-info.service"; +import { statusNames } from "./queue.constants"; +import { Result } from "./queue-metrics.types"; + +const statusColors: Record = { + pending: "primary", + processed: "success", + failed: "error", + retry: "caution", +}; + +@Injectable({ providedIn: "root" }) +export class QueueChartAdapterTotals implements ChartAdapter { + private themeInfo = inject(ThemeInfoService); + private transloco = inject(TranslocoService); + + create(result?: Result): ChartConfiguration<"bar"> { + const { colors } = this.themeInfo.info; + const labels = Array(); + const datasets: ChartConfiguration<"bar">["data"]["datasets"] = []; + if (result) { + const bucketKeys = Array.from( + new Set( + result.queues.flatMap((q) => + q.events ? [q.events.earliestBucket, q.events.latestBucket] : [], + ), + ), + ).sort(); + if (bucketKeys.length) { + const nonEmptyQueues = result.queues.filter((q) => !q.isEmpty); + labels.push(...nonEmptyQueues.map((q) => q.queue)); + const statuses = Array(); + switch (result.params.event) { + case "created": + statuses.push("pending"); + break; + case "processed": + statuses.push("processed"); + break; + case "failed": + statuses.push("retry", "failed"); + break; + default: + statuses.push(...statusNames); + break; + } + datasets.push( + ...statuses.map((status) => ({ + label: this.transloco.translate("dashboard.queues." + status), + data: nonEmptyQueues.map((q) => q.statusCounts[status]), + backgroundColor: colors[createThemeColor(statusColors[status], 50)], + })), + ); + } + } + return { + type: "bar", + options: { + animation: false, + scales: { + x: { + ticks: { + callback: (v) => + parseInt(v as string).toLocaleString( + this.transloco.getActiveLang(), + ), + }, + }, + y: {}, + }, + indexAxis: "y", + plugins: { + legend: { + display: true, + }, + }, + }, + data: { + labels, + datasets, + }, + }; + } +} diff --git a/webui/src/app/dashboard/queue/queue-dashboard.component.html b/webui/src/app/dashboard/queue/queue-dashboard.component.html new file mode 100644 index 0000000..eb68995 --- /dev/null +++ b/webui/src/app/dashboard/queue/queue-dashboard.component.html @@ -0,0 +1,44 @@ + + + + + + + + + + + + + diff --git a/webui/src/app/dashboard/queue/queue-dashboard.component.scss b/webui/src/app/dashboard/queue/queue-dashboard.component.scss new file mode 100644 index 0000000..3322289 --- /dev/null +++ b/webui/src/app/dashboard/queue/queue-dashboard.component.scss @@ -0,0 +1,24 @@ +mat-card-header { + flex-wrap: wrap; + h2 { + font-size: 18px; + margin: 0 60px 0 48px; + height: 48px; + line-height: 48px; + mat-icon { + position: relative; + top: 6px; + margin-right: 14px; + line-height: 1.25rem; + } + } + nav { + flex: 0 0 100%; + a { + margin-top: 2px; + mat-icon { + margin-right: 12px; + } + } + } +} diff --git a/webui/src/app/dashboard/queue/queue-dashboard.component.spec.ts b/webui/src/app/dashboard/queue/queue-dashboard.component.spec.ts new file mode 100644 index 0000000..6b0fdc3 --- /dev/null +++ b/webui/src/app/dashboard/queue/queue-dashboard.component.spec.ts @@ -0,0 +1,29 @@ +import { ComponentFixture, TestBed } from "@angular/core/testing"; + +import { MatIconRegistry } from "@angular/material/icon"; +import { DomSanitizer } from "@angular/platform-browser"; +import { appConfig } from "../../app.config"; +import { QueueDashboardComponent } from "./queue-dashboard.component"; + +describe("QueueCardComponent", () => { + let component: QueueDashboardComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule(appConfig).compileComponents(); + + fixture = TestBed.createComponent(QueueDashboardComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + TestBed.inject(MatIconRegistry).addSvgIcon( + "queue", + TestBed.inject(DomSanitizer).bypassSecurityTrustResourceUrl( + "/fake/icon.svg", + ), + ); + }); + + it("should create", () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/webui/src/app/dashboard/queue/queue-dashboard.component.ts b/webui/src/app/dashboard/queue/queue-dashboard.component.ts new file mode 100644 index 0000000..fd8ac4b --- /dev/null +++ b/webui/src/app/dashboard/queue/queue-dashboard.component.ts @@ -0,0 +1,48 @@ +import { Component, inject, OnDestroy, OnInit } from "@angular/core"; +import { ActivatedRoute, EventType, Router } from "@angular/router"; +import { EMPTY, Subscription } from "rxjs"; +import { AppModule } from "../../app.module"; + +@Component({ + selector: "app-queue-dashboard", + standalone: true, + imports: [AppModule], + templateUrl: "./queue-dashboard.component.html", + styleUrl: "./queue-dashboard.component.scss", +}) +export class QueueDashboardComponent implements OnInit, OnDestroy { + private route = inject(ActivatedRoute); + private router = inject(Router); + private subscriptions = new Array(); + + ngOnInit() { + this.subscriptions.push( + this.route.url.subscribe(() => { + if (!this.route.firstChild) { + this.redirectVisualize(); + } + return EMPTY; + }), + this.router.events.subscribe((event) => { + if ( + event.type === EventType.NavigationEnd && + event.urlAfterRedirects === "/dashboard/queue" + ) { + this.redirectVisualize(); + } + return EMPTY; + }), + ); + } + + private redirectVisualize(): void { + void this.router.navigate(["visualize"], { + relativeTo: this.route, + }); + } + + ngOnDestroy() { + this.subscriptions.forEach((subscription) => subscription.unsubscribe()); + this.subscriptions = new Array(); + } +} diff --git a/webui/src/app/dashboard/queue/queue-enqueue-reprocess-torrents-batch-dialog.component.html b/webui/src/app/dashboard/queue/queue-enqueue-reprocess-torrents-batch-dialog.component.html new file mode 100644 index 0000000..d0ac69d --- /dev/null +++ b/webui/src/app/dashboard/queue/queue-enqueue-reprocess-torrents-batch-dialog.component.html @@ -0,0 +1,62 @@ + + +

+ {{ t("dashboard.queues.enqueue_torrent_processing_batch") }} +

+ + @if (stage === "PENDING") { +
+ {{ + t("dashboard.queues.match_content_by_local_search") + }} + {{ + t("dashboard.queues.match_content_by_external_api_search") + }} + {{ t("dashboard.queues.force_rematch") }} + {{ + t("dashboard.queues.process_orphaned_torrents_only") + }} +
+ } @else if (stage === "REQUESTING") { + + } @else if (stage === "DONE") { +

{{ t("dashboard.queues.jobs_enqueued") }}

+ } +
+ + + + +
+
diff --git a/webui/src/app/dashboard/queue/queue-enqueue-reprocess-torrents-batch-dialog.component.scss b/webui/src/app/dashboard/queue/queue-enqueue-reprocess-torrents-batch-dialog.component.scss new file mode 100644 index 0000000..8dfdc79 --- /dev/null +++ b/webui/src/app/dashboard/queue/queue-enqueue-reprocess-torrents-batch-dialog.component.scss @@ -0,0 +1,9 @@ +mat-dialog-content { + min-height: 240px; + overflow: visible; +} + +mat-grid-tile mat-card { + width: 100%; + height: 100%; +} diff --git a/webui/src/app/dashboard/queue/queue-enqueue-reprocess-torrents-batch-dialog.component.spec.ts b/webui/src/app/dashboard/queue/queue-enqueue-reprocess-torrents-batch-dialog.component.spec.ts new file mode 100644 index 0000000..9bd8bc8 --- /dev/null +++ b/webui/src/app/dashboard/queue/queue-enqueue-reprocess-torrents-batch-dialog.component.spec.ts @@ -0,0 +1,29 @@ +import { ComponentFixture, TestBed } from "@angular/core/testing"; + +import { MatDialogRef } from "@angular/material/dialog"; +import { appConfig } from "../../app.config"; +import { QueueEnqueueReprocessTorrentsBatchDialogComponent } from "./queue-enqueue-reprocess-torrents-batch-dialog.component"; + +describe("QueueEnqueueReprocessTorrentsBatchDialogComponent", () => { + let component: QueueEnqueueReprocessTorrentsBatchDialogComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + providers: [ + ...appConfig.providers, + { provide: MatDialogRef, useValue: {} }, + ], + }).compileComponents(); + + fixture = TestBed.createComponent( + QueueEnqueueReprocessTorrentsBatchDialogComponent, + ); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it("should create", () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/webui/src/app/dashboard/queue/queue-enqueue-reprocess-torrents-batch-dialog.component.ts b/webui/src/app/dashboard/queue/queue-enqueue-reprocess-torrents-batch-dialog.component.ts new file mode 100644 index 0000000..2e36cce --- /dev/null +++ b/webui/src/app/dashboard/queue/queue-enqueue-reprocess-torrents-batch-dialog.component.ts @@ -0,0 +1,59 @@ +import { Component, Inject, inject } from "@angular/core"; +import { Apollo } from "apollo-angular"; +import { MAT_DIALOG_DATA, MatDialogRef } from "@angular/material/dialog"; +import * as generated from "../../graphql/generated"; +import { AppModule } from "../../app.module"; +import { availableQueueNames, statusNames } from "./queue.constants"; +import { QueuePurgeJobsDialogComponent } from "./queue-purge-jobs-dialog.component"; + +@Component({ + selector: "app-queue-enqueue-reprocess-torrents-batch-dialog", + standalone: true, + imports: [AppModule], + templateUrl: "./queue-enqueue-reprocess-torrents-batch-dialog.component.html", + styleUrl: "./queue-enqueue-reprocess-torrents-batch-dialog.component.scss", +}) +export class QueueEnqueueReprocessTorrentsBatchDialogComponent { + apollo = inject(Apollo); + readonly dialogRef = inject(MatDialogRef); + + protected readonly availableQueueNames = availableQueueNames; + protected readonly statusNames = statusNames; + + protected stage: "PENDING" | "REQUESTING" | "DONE" = "PENDING"; + + @Inject(MAT_DIALOG_DATA) public data: { onEnqueued?: () => void }; + + apisDisabled = true; + localSearchDisabled = true; + classifierRematch = false; + contentTypes?: Array; + orphans = false; + + handleEnqueue() { + if (this.stage !== "PENDING") { + return; + } + this.stage = "REQUESTING"; + this.apollo + .mutate< + generated.QueueEnqueueReprocessTorrentsBatchMutation, + generated.QueueEnqueueReprocessTorrentsBatchMutationVariables + >({ + mutation: generated.QueueEnqueueReprocessTorrentsBatchDocument, + variables: { + input: { + apisDisabled: this.apisDisabled, + localSearchDisabled: this.localSearchDisabled, + classifierRematch: this.classifierRematch, + contentTypes: this.contentTypes, + orphans: this.orphans ? true : undefined, + }, + }, + }) + .subscribe(() => { + this.stage = "DONE"; + this.data.onEnqueued?.(); + }); + } +} diff --git a/webui/src/app/dashboard/queue/queue-jobs-table.component.html b/webui/src/app/dashboard/queue/queue-jobs-table.component.html new file mode 100644 index 0000000..c05eaff --- /dev/null +++ b/webui/src/app/dashboard/queue/queue-jobs-table.component.html @@ -0,0 +1,163 @@ + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ID + {{ item(i).id }} + + {{ t("dashboard.queues.queue") }} + + {{ item(i).queue }} + + {{ t("dashboard.queues.priority") }} + + {{ item(i).priority | number }} + + {{ t("general.status") }} + + {{ item(i).status }} + {{ t("general.error") }} + @if (i.error) { + {{ (item(i).error | slice: 0 : 20) + "..." }} + } + + {{ t("dashboard.queues.created_at") }} + + {{ item(i).createdAt | timeAgo }} + + {{ t("dashboard.queues.ran_at") }} + + @if (i.ranAt; as ranAt) { + {{ ranAt | timeAgo }} + } + +
+

+ ID: {{ item(i).id }} +

+
+ {{ t("dashboard.queues.payload") }}: +
+
{{ beautifyPayload(item(i).payload) }}
+ @if (item(i).error; as error) { +
+ {{ t("general.error") }}: +
+
{{ error }}
+ } +
+
+
diff --git a/webui/src/app/dashboard/queue/queue-jobs-table.component.scss b/webui/src/app/dashboard/queue/queue-jobs-table.component.scss new file mode 100644 index 0000000..bcc3780 --- /dev/null +++ b/webui/src/app/dashboard/queue/queue-jobs-table.component.scss @@ -0,0 +1,46 @@ +.item-detail { + > :first-child { + padding-top: 20px; + } + > :last-child { + margin-bottom: 20px; + } +} + +tr:not(.expanded-detail-row) td { + cursor: pointer; +} + +tr.expanded-detail-row { + height: 0; + h5 { + margin: 0; + padding-top: 8px; + } + p { + margin: 0; + padding-top: 8px; + padding-bottom: 4px; + } + span.copy { + cursor: crosshair; + text-decoration: underline; + text-decoration-style: dotted; + } +} + +pre { + opacity: 0; + max-height: 200px; + max-width: 100px; + overflow: scroll; + background: rgba(#777, 0.2); + padding: 10px; +} + +.expanded-detail-row.expanded { + pre { + opacity: 1; + max-width: 1200px; + } +} diff --git a/webui/src/app/dashboard/queue/queue-jobs-table.component.spec.ts b/webui/src/app/dashboard/queue/queue-jobs-table.component.spec.ts new file mode 100644 index 0000000..3e2e7f6 --- /dev/null +++ b/webui/src/app/dashboard/queue/queue-jobs-table.component.spec.ts @@ -0,0 +1,37 @@ +import { ComponentFixture, TestBed } from "@angular/core/testing"; + +import { inject } from "@angular/core"; +import { Apollo } from "apollo-angular"; +import { Observable } from "rxjs"; +import { ErrorsService } from "../../errors/errors.service"; +import { appConfig } from "../../app.config"; +import { AppModule } from "../../app.module"; +import { QueueJobsDatasource } from "./queue-jobs.datasource"; +import { QueueJobsTableComponent } from "./queue-jobs-table.component"; + +describe("QueueJobsTableComponent", () => { + let component: QueueJobsTableComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + ...appConfig, + imports: [AppModule], + }).compileComponents(); + + fixture = TestBed.createComponent(QueueJobsTableComponent); + component = fixture.componentInstance; + TestBed.runInInjectionContext(() => { + component.dataSource = new QueueJobsDatasource( + inject(Apollo), + inject(ErrorsService), + new Observable(), + ); + }); + fixture.detectChanges(); + }); + + it("should create", () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/webui/src/app/dashboard/queue/queue-jobs-table.component.ts b/webui/src/app/dashboard/queue/queue-jobs-table.component.ts new file mode 100644 index 0000000..8788be3 --- /dev/null +++ b/webui/src/app/dashboard/queue/queue-jobs-table.component.ts @@ -0,0 +1,113 @@ +import { + Component, + EventEmitter, + inject, + Input, + OnInit, + Output, +} from "@angular/core"; +import { SelectionModel } from "@angular/cdk/collections"; +import { TranslocoService } from "@jsverse/transloco"; +import { BehaviorSubject } from "rxjs"; +import { + animate, + state, + style, + transition, + trigger, +} from "@angular/animations"; +import { TimeAgoPipe } from "../../pipes/time-ago.pipe"; +import * as generated from "../../graphql/generated"; +import { AppModule } from "../../app.module"; +import { QueueJobsDatasource } from "./queue-jobs.datasource"; + +@Component({ + selector: "app-queue-jobs-table", + standalone: true, + imports: [AppModule, TimeAgoPipe], + templateUrl: "./queue-jobs-table.component.html", + styleUrl: "./queue-jobs-table.component.scss", + animations: [ + trigger("detailExpand", [ + state("collapsed,void", style({ height: "0px", minHeight: "0" })), + state("expanded", style({ height: "*" })), + transition( + "expanded <=> collapsed", + animate("225ms cubic-bezier(0.4, 0.0, 0.2, 1)"), + ), + ]), + ], +}) +export class QueueJobsTableComponent implements OnInit { + protected transloco = inject(TranslocoService); + + @Input() dataSource: QueueJobsDatasource; + @Input() selection: SelectionModel; + @Input() displayedColumns = allColumns; + + @Output() updated = new EventEmitter(); + + expandedId = new BehaviorSubject(null); + + items = Array(); + + ngOnInit() { + this.dataSource.items$.subscribe((items) => { + this.items = items; + if (items.length) { + const expandedId = this.expandedId.getValue(); + if (expandedId && !items.some(({ id }) => id === expandedId)) { + this.expandedId.next(null); + } + } + }); + } + + /** Whether the number of selected elements matches the total number of rows. */ + isAllSelected() { + return this.items.every((i) => this.selection.isSelected(i.id)); + } + + /** Selects all rows if they are not all selected; otherwise clear selection. */ + toggleAllRows() { + if (this.isAllSelected()) { + this.selection.clear(); + return; + } + this.selection.select(...this.items.map((i) => i.id)); + } + + toggleQueueJobId(id: string) { + if (this.expandedId.getValue() === id) { + this.expandedId.next(null); + } else { + this.expandedId.next(id); + } + } + + /** + * Workaround for untyped table cell definitions + */ + item(item: generated.QueueJob): generated.QueueJob { + return item; + } + + beautifyPayload(payload: string): string { + try { + return JSON.stringify(JSON.parse(payload), null, 2); + //eslint-disable-next-line @typescript-eslint/no-unused-vars + } catch (e) { + return payload; + } + } +} + +const allColumns = [ + "id", + "queue", + "priority", + "status", + "error", + "createdAt", + "ranAt", +]; diff --git a/webui/src/app/dashboard/queue/queue-jobs.component.html b/webui/src/app/dashboard/queue/queue-jobs.component.html new file mode 100644 index 0000000..6da6c8c --- /dev/null +++ b/webui/src/app/dashboard/queue/queue-jobs.component.html @@ -0,0 +1,115 @@ + + + + @for (facet of facets$ | async; track facet.key) { + + + + {{ t("facets." + facet.key) }} + + + @if (facet.filter?.length) { + + @for (agg of facet.aggregations; track agg.value) { + + {{ agg.label }} + {{ agg.count | number }} + + } + + } @else { + + @for (agg of facet.aggregations; track agg.value) { + + {{ agg.label }} + {{ agg.count | number }} + + } + + } + + } + + +
+
+ +
+
+ + {{ t("torrents.order_by") }} + + @for (option of orderByOptions; track option.field) { + + {{ t("dashboard.queues." + option.field) }} + + } + + + +
+
+ +
+
+ + +
+
+
diff --git a/webui/src/app/dashboard/queue/queue-jobs.component.scss b/webui/src/app/dashboard/queue/queue-jobs.component.scss new file mode 100644 index 0000000..edfe6b7 --- /dev/null +++ b/webui/src/app/dashboard/queue/queue-jobs.component.scss @@ -0,0 +1,47 @@ +.drawer { + width: 220px; +} + +//.button-toggle-drawer { +// position: absolute; +// left: 5px; +// top: 6px; +//} + +.query-form { + padding-top: 20px; + padding-bottom: 10px; + position: relative; + clear: both; + display: flex; + flex-wrap: wrap; + .form-field-container { + display: inline-flex; + flex-direction: column; + position: relative; + margin-left: 20px; + padding-bottom: 20px; + button { + top: 8px; + } + &.form-field-container-order-by { + padding-right: 40px; + button { + position: absolute; + right: 0; + } + } + &.button-container-toggle-drawer { + margin-left: 5px; + } + } + .button-container-toggle-direction { + margin-left: 4px; + } +} + +app-paginator { + float: right; + padding-top: 14px; + padding-bottom: 20px; +} diff --git a/webui/src/app/dashboard/queue/queue-jobs.component.spec.ts b/webui/src/app/dashboard/queue/queue-jobs.component.spec.ts new file mode 100644 index 0000000..41f382b --- /dev/null +++ b/webui/src/app/dashboard/queue/queue-jobs.component.spec.ts @@ -0,0 +1,21 @@ +import { ComponentFixture, TestBed } from "@angular/core/testing"; + +import { appConfig } from "../../app.config"; +import { QueueJobsComponent } from "./queue-jobs.component"; + +describe("QueueJobsComponent", () => { + let component: QueueJobsComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule(appConfig).compileComponents(); + + fixture = TestBed.createComponent(QueueJobsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it("should create", () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/webui/src/app/dashboard/queue/queue-jobs.component.ts b/webui/src/app/dashboard/queue/queue-jobs.component.ts new file mode 100644 index 0000000..b345482 --- /dev/null +++ b/webui/src/app/dashboard/queue/queue-jobs.component.ts @@ -0,0 +1,66 @@ +import { Component, inject } from "@angular/core"; +import { Apollo } from "apollo-angular"; +import { TranslocoService } from "@jsverse/transloco"; +import { SelectionModel } from "@angular/cdk/collections"; +import { combineLatestWith, Observable } from "rxjs"; +import { map } from "rxjs/operators"; +import { PaginatorComponent } from "../../paginator/paginator.component"; +import { BreakpointsService } from "../../layout/breakpoints.service"; +import { ErrorsService } from "../../errors/errors.service"; +import { AppModule } from "../../app.module"; +import { QueueJobsTableComponent } from "./queue-jobs-table.component"; +import { QueueJobsDatasource } from "./queue-jobs.datasource"; +import { + FacetInfo, + facets, + orderByOptions, + QueueJobsController, + QueueJobsControls, +} from "./queue-jobs.controller"; + +@Component({ + selector: "app-queue-jobs", + standalone: true, + imports: [AppModule, PaginatorComponent, QueueJobsTableComponent], + templateUrl: "./queue-jobs.component.html", + styleUrl: "./queue-jobs.component.scss", +}) +export class QueueJobsComponent { + private apollo = inject(Apollo); + private errorsService = inject(ErrorsService); + protected breakpoints = inject(BreakpointsService); + protected transloco = inject(TranslocoService); + protected controller = new QueueJobsController(); + protected dataSource = new QueueJobsDatasource( + this.apollo, + this.errorsService, + this.controller.variables$, + ); + // eslint-disable-next-line @typescript-eslint/no-explicit-any + facets$: Observable[]>; + protected controls: QueueJobsControls; + selection = new SelectionModel(); + + constructor() { + this.facets$ = this.controller.controls$.pipe( + combineLatestWith(this.dataSource.result$), + map(([controls, result]) => + facets.map((f) => ({ + ...f, + ...f.extractInput(controls.facets), + aggregations: f + .extractAggregations(result.aggregations) + .map((agg) => ({ + ...agg, + label: f.resolveLabel(agg, this.transloco), + })), + })), + ), + ); + this.controller.controls$.subscribe((ctrl) => { + this.controls = ctrl; + }); + } + + protected readonly orderByOptions = orderByOptions; +} diff --git a/webui/src/app/dashboard/queue/queue-jobs.controller.ts b/webui/src/app/dashboard/queue/queue-jobs.controller.ts new file mode 100644 index 0000000..3789597 --- /dev/null +++ b/webui/src/app/dashboard/queue/queue-jobs.controller.ts @@ -0,0 +1,234 @@ +import { BehaviorSubject, debounceTime, Observable } from "rxjs"; +import { TranslocoService } from "@jsverse/transloco"; +import * as generated from "../../graphql/generated"; +import { PageEvent } from "../../paginator/paginator.types"; + +export class QueueJobsController { + private controlsSubject: BehaviorSubject; + controls$: Observable; + + private variablesSubject: BehaviorSubject; + variables$: Observable; + + constructor(ctrl: QueueJobsControls = initialControls) { + this.controlsSubject = new BehaviorSubject(ctrl); + this.controls$ = this.controlsSubject.asObservable(); + this.variablesSubject = new BehaviorSubject(controlsToQueryVariables(ctrl)); + this.variables$ = this.variablesSubject.asObservable(); + this.controls$.pipe(debounceTime(100)).subscribe((ctrl) => { + const currentParams = this.variablesSubject.getValue(); + const nextParams = controlsToQueryVariables(ctrl); + if (JSON.stringify(currentParams) !== JSON.stringify(nextParams)) { + this.variablesSubject.next(nextParams); + } + }); + } + + update(fn: (c: QueueJobsControls) => QueueJobsControls) { + const ctrl = this.controlsSubject.getValue(); + const next = fn(ctrl); + if (JSON.stringify(ctrl) !== JSON.stringify(next)) { + this.controlsSubject.next(next); + } + } + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + activateFilter(def: FacetDefinition, filter: string) { + this.update((ctrl) => { + const input = def.extractInput(ctrl.facets); + return { + ...ctrl, + page: 1, + facets: def.patchInput(ctrl.facets, { + ...input, + filter: Array.from( + new Set([...((input.filter as unknown[]) ?? []), filter]), + ).sort(), + }), + }; + }); + } + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + deactivateFilter(def: FacetDefinition, filter: string) { + this.update((ctrl) => { + const input = def.extractInput(ctrl.facets); + const nextFilter: string[] | undefined = input.filter?.filter( + (value) => value !== filter, + ); + return { + ...ctrl, + page: 1, + facets: def.patchInput(ctrl.facets, { + ...input, + filter: nextFilter?.length ? nextFilter : undefined, + }), + }; + }); + } + + selectOrderBy(field: generated.QueueJobsOrderByField) { + const orderBy = { + field, + descending: + orderByOptions.find((option) => option.field === field)?.descending ?? + false, + }; + this.update((ctrl) => ({ + ...ctrl, + orderBy, + page: 1, + })); + } + + toggleOrderByDirection() { + this.update((ctrl) => ({ + ...ctrl, + orderBy: { + ...ctrl.orderBy, + descending: !ctrl.orderBy.descending, + }, + page: 1, + })); + } + + handlePageEvent(event: PageEvent) { + this.update((ctrl) => ({ + ...ctrl, + limit: event.pageSize, + page: event.page, + })); + } +} + +const controlsToQueryVariables = ( + ctrl: QueueJobsControls, +): generated.QueueJobsQueryVariables => ({ + input: { + limit: ctrl.limit, + page: ctrl.page, + totalCount: true, + orderBy: [ + ctrl.orderBy, + ...(ctrl.orderBy.field !== "created_at" + ? [ + { + field: "created_at" as const, + descending: ctrl.orderBy.descending, + }, + ] + : []), + ], + queues: ctrl.queues, + statuses: ctrl.statuses, + facets: { + queue: { + aggregate: true, + filter: ctrl.facets.queue.filter, + }, + status: { + aggregate: true, + filter: ctrl.facets.status.filter, + }, + }, + }, +}); + +type OrderBySelection = { + field: generated.QueueJobsOrderByField; + descending: boolean; +}; + +export const orderByOptions: OrderBySelection[] = [ + { + field: "created_at", + descending: true, + }, + { + field: "ran_at", + descending: true, + }, + { + field: "priority", + descending: false, + }, +]; + +export type QueueJobsControls = { + limit: number; + page: number; + queues?: string[]; + statuses?: generated.QueueJobStatus[]; + orderBy: OrderBySelection; + facets: { + queue: FacetInput; + status: FacetInput; + }; +}; + +const initialControls: QueueJobsControls = { + limit: 20, + page: 1, + orderBy: { + field: "ran_at", + descending: true, + }, + facets: { + queue: {}, + status: {}, + }, +}; + +type FacetInput = { + filter?: TValue[]; +}; + +export type Agg = { + value: T; + label: string; + count: number; +}; + +export type FacetDefinition = { + key: string; + extractInput: (facets: QueueJobsControls["facets"]) => FacetInput; + patchInput: ( + facets: QueueJobsControls["facets"], + // eslint-disable-next-line @typescript-eslint/no-explicit-any + input: FacetInput, + ) => QueueJobsControls["facets"]; + extractAggregations: ( + aggs: generated.QueueJobsQueryResult["aggregations"], + ) => Array>; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + resolveLabel: (agg: Agg, t: TranslocoService) => string; +}; + +export const queueFacet: FacetDefinition = { + key: "queue", + extractInput: (f) => f.queue, + patchInput: (f, i) => ({ + ...f, + queue: i, + }), + extractAggregations: (aggs) => aggs.queue ?? [], + resolveLabel: (agg) => agg.label, +}; + +export const statusFacet: FacetDefinition = { + key: "status", + extractInput: (f) => f.status, + patchInput: (f, i) => ({ + ...f, + status: i, + }), + extractAggregations: (aggs) => aggs.status ?? [], + resolveLabel: (agg, t) => t.translate("dashboard.queues." + agg.label), +}; + +export const facets = [queueFacet, statusFacet]; + +export type FacetInfo = FacetDefinition & { + filter?: Array; + aggregations: Array>; +}; diff --git a/webui/src/app/dashboard/queue/queue-jobs.datasource.ts b/webui/src/app/dashboard/queue/queue-jobs.datasource.ts new file mode 100644 index 0000000..d8af9ea --- /dev/null +++ b/webui/src/app/dashboard/queue/queue-jobs.datasource.ts @@ -0,0 +1,99 @@ +import { Apollo } from "apollo-angular"; +import { + BehaviorSubject, + catchError, + EMPTY, + Observable, + Subscription, +} from "rxjs"; +import { CollectionViewer, DataSource } from "@angular/cdk/collections"; +import { map } from "rxjs/operators"; +import * as generated from "../../graphql/generated"; +import { ErrorsService } from "../../errors/errors.service"; + +const emptyResult = { + items: [], + hasNextPage: false, + totalCount: 0, + aggregations: { + queue: [], + status: [], + }, +}; + +export class QueueJobsDatasource implements DataSource { + private currentRequest = new BehaviorSubject(0); + private currentSubscription?: Subscription; + + private loadingSubject = new BehaviorSubject(false); + public loading$ = this.loadingSubject.asObservable(); + + public result: generated.QueueJobsQueryResult = emptyResult; + private resultSubject = new BehaviorSubject( + this.result, + ); + public result$ = this.resultSubject.asObservable(); + + public items$ = this.resultSubject.pipe(map((result) => result.items)); + + private variables?: generated.QueueJobsQueryVariables; + + constructor( + private apollo: Apollo, + private errorsService: ErrorsService, + queryVariables: Observable, + ) { + queryVariables.subscribe((variables: generated.QueueJobsQueryVariables) => { + this.variables = variables; + this.loadResult(variables); + }); + this.resultSubject.subscribe((result) => { + this.result = result; + }); + } + + connect({}: CollectionViewer): Observable { + return this.items$; + } + + disconnect(): void { + this.resultSubject.complete(); + } + + refresh() { + if (this.variables) { + this.loadResult(this.variables); + } + } + + private loadResult(variables: generated.QueueJobsQueryVariables): void { + if (this.currentSubscription) { + this.currentSubscription.unsubscribe(); + this.currentSubscription = undefined; + } + this.loadingSubject.next(true); + const currentRequest = this.currentRequest.getValue() + 1; + this.currentRequest.next(currentRequest); + const result = this.apollo + .query({ + query: generated.QueueJobsDocument, + variables, + fetchPolicy: "no-cache", + }) + .pipe(map((r) => r.data.queue.jobs)) + .pipe( + catchError((err: Error) => { + this.errorsService.addError( + `Error loading item results: ${err.message}`, + ); + return EMPTY; + }), + ); + this.currentSubscription = result.subscribe((r) => { + if (currentRequest === this.currentRequest.getValue()) { + this.loadingSubject.next(false); + this.resultSubject.next(r); + } + }); + } +} diff --git a/webui/src/app/dashboard/queue/queue-metrics.controller.ts b/webui/src/app/dashboard/queue/queue-metrics.controller.ts new file mode 100644 index 0000000..30a9774 --- /dev/null +++ b/webui/src/app/dashboard/queue/queue-metrics.controller.ts @@ -0,0 +1,503 @@ +import { + BehaviorSubject, + catchError, + debounceTime, + EMPTY, + Observable, +} from "rxjs"; +import { Apollo } from "apollo-angular"; +import { map } from "rxjs/operators"; +import * as generated from "../../graphql/generated"; +import { ErrorsService } from "../../errors/errors.service"; +import { durationToSeconds, parseDuration } from "../../dates/parse-duration"; +import { + autoRefreshIntervals, + durationSeconds, + emptyParams, + emptyResult, + emptyStatusCounts, + timeframeLengths, +} from "./queue.constants"; +import { + BucketParams, + EventName, + EventBucket, + EventBucketEntries, + EventBuckets, + Params, + QueueEvents, + Result, + StatusCounts, + TimeframeName, + AutoRefreshInterval, + BucketSpan, +} from "./queue-metrics.types"; + +export class QueueMetricsController { + private paramsSubject: BehaviorSubject; + public params$: Observable; + private variablesSubject: BehaviorSubject; + private rawResultSubject = new BehaviorSubject({ + queue: { + metrics: { + buckets: [], + }, + }, + }); + private resultSubject = new BehaviorSubject(emptyResult); + public result$ = this.resultSubject.asObservable(); + private loadingSubject = new BehaviorSubject(false); + + private refreshTimeout?: number; + + constructor( + private apollo: Apollo, + initParams: Params = emptyParams, + private errorsService: ErrorsService, + ) { + this.paramsSubject = new BehaviorSubject(initParams); + this.params$ = this.paramsSubject.asObservable(); + this.variablesSubject = + new BehaviorSubject( + createVariables(initParams), + ); + this.paramsSubject.pipe(debounceTime(50)).subscribe((params) => { + const variables = this.variablesSubject.getValue(); + const nextVariables = createVariables(params); + if (JSON.stringify(variables) !== JSON.stringify(nextVariables)) { + this.variablesSubject.next(nextVariables); + } else { + this.resultSubject.next( + createResult(params, this.rawResultSubject.getValue()), + ); + } + }); + this.variablesSubject + .pipe(debounceTime(50)) + .subscribe((variables) => this.request(variables)); + this.rawResultSubject.subscribe((rawResult) => { + const params = this.paramsSubject.getValue(); + this.resultSubject.next(createResult(params, rawResult)); + this.setInterval(params.autoRefresh); + }); + } + + private setInterval(interval?: AutoRefreshInterval) { + clearTimeout(this.refreshTimeout); + const delay = autoRefreshIntervals[interval ?? this.params.autoRefresh]; + if (delay) { + this.refreshTimeout = setTimeout(() => { + this.refresh(); + }, delay * 1000); + } + } + + get params(): Params { + return this.paramsSubject.getValue(); + } + + get bucketDuration(): generated.MetricsBucketDuration { + const d = this.params.buckets.duration; + if (d === "AUTO") { + return "hour"; + } + return d; + } + + get bucketMultiplier(): number { + return ( + this.resultSubject.getValue().params.buckets.multiplier ?? + this.params.buckets.multiplier + ); + } + + get loading(): boolean { + return this.loadingSubject.getValue(); + } + + setTimeframe(timeframe: TimeframeName) { + this.updateParams((p) => ({ + ...p, + buckets: { + ...p.buckets, + timeframe, + }, + })); + } + + setQueue(queue: string | null) { + this.updateParams((p) => ({ + ...p, + queue: queue ?? undefined, + })); + } + + setBucketDuration( + duration: generated.MetricsBucketDuration, + multiplier?: number, + ) { + this.updateParams((p) => ({ + ...p, + buckets: { + ...p.buckets, + duration, + multiplier: multiplier ?? "AUTO", + }, + })); + } + + setBucketMultiplier(multiplier: number | "AUTO") { + this.updateParams((p) => ({ + ...p, + buckets: { + ...p.buckets, + multiplier, + }, + })); + } + + setEvent(event: EventName | null) { + this.updateParams((p) => ({ + ...p, + event: event ?? undefined, + })); + } + + setAutoRefreshInterval(autoRefreshInterval: AutoRefreshInterval) { + this.updateParams((p) => ({ + ...p, + autoRefresh: autoRefreshInterval, + })); + } + + private updateParams(fn: (p: Params) => Params) { + this.paramsSubject.next(fn(this.params)); + } + + refresh() { + this.variablesSubject.next(this.variablesSubject.getValue()); + } + + private request(variables: generated.QueueMetricsQueryVariables) { + clearTimeout(this.refreshTimeout); + this.loadingSubject.next(true); + return this.apollo + .query( + { + query: generated.QueueMetricsDocument, + variables, + fetchPolicy: "no-cache", + }, + ) + .pipe( + map((r) => { + if (r) { + this.loadingSubject.next(false); + this.rawResultSubject.next(r.data); + } + }), + ) + .pipe( + catchError((err: Error) => { + this.errorsService.addError( + `Failed to load queue metrics: ${err.message}`, + ); + this.loadingSubject.next(false); + this.setInterval(); + return EMPTY; + }), + ) + .subscribe(); + } +} + +const createVariables = ( + params: Params, +): generated.QueueMetricsQueryVariables => ({ + input: { + bucketDuration: + params.buckets.duration === "AUTO" ? "hour" : params.buckets.duration, + queues: params.queue ? [params.queue] : undefined, + startTime: + params.buckets.timeframe === "all" + ? undefined + : new Date( + new Date().getTime() - + 1000 * timeframeLengths[params.buckets.timeframe], + ).toISOString(), + }, +}); + +const fromEntries = ( + entries: Array<[K, V]>, +): Partial> => + Object.fromEntries(entries) as Partial>; + +const createResult = ( + params: Params, + rawResult: generated.QueueMetricsQuery, +): Result => { + const { bucketParams, earliestBucket, latestBucket } = createBucketParams( + params, + rawResult, + ); + const queues = Object.entries( + rawResult.queue.metrics.buckets.reduce< + Record< + string, + [StatusCounts, Partial>] + > + >((acc, next) => { + if (next.queue !== (params.queue ?? next.queue)) { + return acc; + } + let createdAt: NormalizedBucket | undefined; + let ranAt: NormalizedBucket | undefined; + if (params.event ?? "created" === "created") { + createdAt = normalizeBucket(next.createdAtBucket, bucketParams); + if (earliestBucket && earliestBucket.index > createdAt.index) { + createdAt = undefined; + } + } + if (next.ranAtBucket && params.event !== "created") { + ranAt = normalizeBucket(next.ranAtBucket, bucketParams); + if ( + ranAt && + (latestBucket.index < ranAt.index || + (earliestBucket && earliestBucket.index > ranAt.index)) + ) { + ranAt = undefined; + } + } + if ( + next.queue !== params.queue && + !createdAt && + (!ranAt || next.status === "pending") + ) { + return acc; + } + const [currentStatusCounts, currentEventBuckets] = acc[next.queue] ?? [ + emptyStatusCounts, + [], + ]; + const currentLatency = next.latency + ? durationToSeconds(parseDuration(next.latency)) + : undefined; + return { + ...acc, + [next.queue]: [ + (next.status === "pending" ? createdAt : ranAt) + ? { + ...currentStatusCounts, + [next.status]: next.count + currentStatusCounts[next.status], + } + : currentStatusCounts, + { + created: createdAt + ? { + ...currentEventBuckets.created, + [createdAt.key]: { + count: + next.count + + (currentEventBuckets.created?.[createdAt.key]?.count ?? + 0), + latency: 0, + startTime: createdAt.start, + }, + } + : currentEventBuckets.created, + processed: + ranAt && + next.status === "processed" && + (params.event ?? "processed" === "processed") + ? { + ...currentEventBuckets.processed, + [ranAt.key]: { + count: + next.count + + (currentEventBuckets.processed?.[ranAt.key]?.count ?? + 0), + latency: + (currentEventBuckets.processed?.[ranAt.key]?.latency ?? + 0) + (currentLatency ?? 0), + startTime: ranAt.start, + }, + } + : currentEventBuckets.processed, + failed: + ranAt && + next.status === "failed" && + (params.event ?? "failed" === "failed") + ? { + ...currentEventBuckets.failed, + [ranAt.key]: { + count: + next.count + + (currentEventBuckets.failed?.[ranAt.key]?.count ?? 0), + latency: + (currentEventBuckets.failed?.[ranAt.key]?.latency ?? + 0) + (currentLatency ?? 0), + startTime: ranAt.start, + }, + } + : currentEventBuckets.failed, + }, + ], + }; + }, {}), + ).map(([queue, [statusCounts, eventBuckets]]) => { + let events: QueueEvents | undefined; + // const bucketKeys = Object.keys(eventBuckets).sort() + if (Object.keys(eventBuckets).length) { + const bucketDates = Array(); + const buckets: EventBuckets = fromEntries( + Array("created", "processed", "failed").flatMap< + [EventName, EventBucket] + >((event): [EventName, EventBucket][] => { + const entries = fromEntries( + Object.entries(eventBuckets[event] ?? {}) + .filter(([, v]) => v?.count) + .sort(([a], [b]) => (parseInt(a) < parseInt(b) ? 1 : -1)), + ); + const keys = Object.keys(entries); + if (!keys.length) { + return []; + } + const earliestBucket = parseInt(keys[0]); + const latestBucket = parseInt(keys[keys.length - 1]); + bucketDates.push(earliestBucket, latestBucket); + return [ + [ + event, + { + earliestBucket, + latestBucket, + entries, + }, + ], + ]; + }), + ); + bucketDates.sort(); + events = { + bucketDuration: bucketParams.duration, + earliestBucket: bucketDates[0], + latestBucket: bucketDates[bucketDates.length - 1], + eventBuckets: buckets, + }; + } + return { + queue, + statusCounts, + events, + isEmpty: !events?.eventBuckets, + }; + }); + let bucketSpan: BucketSpan | undefined; + const earliestFoundBucket = queues + .flatMap((q) => (q.events ? [q.events.earliestBucket] : [])) + .sort()[0]; + const latestFoundBucket = queues + .flatMap((q) => (q.events ? [q.events.latestBucket] : [])) + .sort() + .reverse()[0]; + if (earliestFoundBucket && latestFoundBucket) { + bucketSpan = { + earliestBucket: earliestFoundBucket, + latestBucket: latestFoundBucket, + }; + } + return { + params: { + ...params, + buckets: bucketParams, + }, + queues, + bucketSpan, + }; +}; + +const createBucketParams = ( + params: Params, + rawResult: generated.QueueMetricsQuery, +): { + bucketParams: BucketParams; + earliestBucket: NormalizedBucket | undefined; + latestBucket: NormalizedBucket; +} => { + const duration = + params.buckets.duration === "AUTO" ? "hour" : params.buckets.duration; + let multiplier = + params.buckets.multiplier === "AUTO" ? 1 : params.buckets.multiplier; + const timeframe = params.buckets.timeframe; + const now = new Date(); + const nowBucket = normalizeBucket(now, { duration, multiplier }); + const startBucket = + timeframe === "all" + ? undefined + : normalizeBucket(now.getTime() - 1000 * timeframeLengths[timeframe], { + duration, + multiplier, + }); + const allBuckets = [ + ...(startBucket ? [startBucket] : []), + ...rawResult.queue.metrics.buckets.flatMap((b) => [ + normalizeBucket(b.createdAtBucket, { duration, multiplier }), + ...(b.ranAtBucket + ? [normalizeBucket(b.ranAtBucket, { duration, multiplier })] + : []), + ]), + nowBucket, + ] + .filter((b) => !startBucket || b.index >= startBucket.index) + .sort((a, b) => a.index - b.index); + const minBucket = allBuckets[0]; + const maxBucket = allBuckets[allBuckets.length - 1]; + if (params.buckets.multiplier === "AUTO") { + const targetSpan = 20; + const span = maxBucket.index - minBucket.index; + multiplier = Math.min( + 60, + Math.max(Math.floor(span / (targetSpan * 5)) * 5, 1), + ); + } + return { + bucketParams: { + duration, + multiplier, + timeframe, + }, + earliestBucket: + timeframe === "all" + ? undefined + : normalizeBucket(now.getTime() - 1000 * timeframeLengths[timeframe], { + duration, + multiplier, + }), + latestBucket: normalizeBucket( + Math.max(now.getTime(), maxBucket.start.getTime()), + { duration, multiplier }, + ), + }; +}; + +type NormalizedBucket = { + key: string; + index: number; + start: Date; +}; + +export const normalizeBucket = ( + rawDate: string | number | Date, + params: Pick, "duration" | "multiplier">, +): NormalizedBucket => { + const date = new Date(rawDate); + const msMultiplier = + 1000 * durationSeconds[params.duration] * params.multiplier; + const baseNumber = Math.floor(date.getTime() / msMultiplier); + return { + key: `${baseNumber}`, + index: baseNumber, + start: new Date(baseNumber * msMultiplier), + }; +}; diff --git a/webui/src/app/dashboard/queue/queue-metrics.types.ts b/webui/src/app/dashboard/queue/queue-metrics.types.ts new file mode 100644 index 0000000..0ce5a93 --- /dev/null +++ b/webui/src/app/dashboard/queue/queue-metrics.types.ts @@ -0,0 +1,68 @@ +import * as generated from "../../graphql/generated"; +import { + autoRefreshIntervalNames, + eventNames, + timeframeNames, +} from "./queue.constants"; + +export type TimeframeName = (typeof timeframeNames)[number]; + +export type BucketParams<_withAuto extends boolean = boolean> = { + duration: _withAuto extends true + ? "AUTO" | generated.MetricsBucketDuration + : generated.MetricsBucketDuration; + multiplier: _withAuto extends true ? "AUTO" | number : number; + timeframe: TimeframeName; +}; + +export type AutoRefreshInterval = (typeof autoRefreshIntervalNames)[number]; + +export type StatusCounts = Record; + +export type EventName = (typeof eventNames)[number]; + +export type Params<_withAuto extends boolean = boolean> = { + buckets: BucketParams<_withAuto>; + queue?: string; + event?: EventName; + autoRefresh: AutoRefreshInterval; +}; + +export type EventBucketEntry = { + startTime: Date; + count: number; + latency: number; +}; + +export type EventBucketEntries = Partial>; + +export type BucketSpan = { + earliestBucket: number; + latestBucket: number; +}; + +export type EventBucket = BucketSpan & { + entries: EventBucketEntries; +}; + +export type EventBuckets = Partial>; + +export type QueueEvents = BucketSpan & { + bucketDuration: generated.MetricsBucketDuration; + eventBuckets: EventBuckets; +}; + +export type QueueSummary = { + queue: string; + isEmpty: IsEmpty; + statusCounts: StatusCounts; + events: IsEmpty extends false ? QueueEvents : undefined; +}; + +export type Result = { + params: Params; + // earliestBucket: number; + // latestBucket: number; + bucketSpan?: BucketSpan; + queues: QueueSummary[]; +}; diff --git a/webui/src/app/dashboard/queue/queue-purge-jobs-dialog.component.html b/webui/src/app/dashboard/queue/queue-purge-jobs-dialog.component.html new file mode 100644 index 0000000..32016ff --- /dev/null +++ b/webui/src/app/dashboard/queue/queue-purge-jobs-dialog.component.html @@ -0,0 +1,64 @@ + + +

Purge Queue Jobs

+ + @if (stage === "PENDING") { +
+

{{ t("dashboard.queues.queues") }}:

+ {{ t("general.all") }} + @for (queue of availableQueueNames; track queue) { + {{ queue }} + } +
+
+

Statuses:

+ All + @for (status of statusNames; track status) { + {{ status }} + } +
+ } @else if (stage === "REQUESTING") { + + } @else if (stage === "DONE") { + @if (error) { +

{{ t("general.error") }}: {{ error.message }}

+ } @else { +

{{ t("dashboard.queues.queue_purged") }}

+ } + } +
+ + + + +
+
diff --git a/webui/src/app/dashboard/queue/queue-purge-jobs-dialog.component.scss b/webui/src/app/dashboard/queue/queue-purge-jobs-dialog.component.scss new file mode 100644 index 0000000..8dfdc79 --- /dev/null +++ b/webui/src/app/dashboard/queue/queue-purge-jobs-dialog.component.scss @@ -0,0 +1,9 @@ +mat-dialog-content { + min-height: 240px; + overflow: visible; +} + +mat-grid-tile mat-card { + width: 100%; + height: 100%; +} diff --git a/webui/src/app/dashboard/queue/queue-purge-jobs-dialog.component.spec.ts b/webui/src/app/dashboard/queue/queue-purge-jobs-dialog.component.spec.ts new file mode 100644 index 0000000..b809e49 --- /dev/null +++ b/webui/src/app/dashboard/queue/queue-purge-jobs-dialog.component.spec.ts @@ -0,0 +1,27 @@ +import { ComponentFixture, TestBed } from "@angular/core/testing"; + +import { MatDialogRef } from "@angular/material/dialog"; +import { appConfig } from "../../app.config"; +import { QueuePurgeJobsDialogComponent } from "./queue-purge-jobs-dialog.component"; + +describe("QueuePurgeJobsDialogComponent", () => { + let component: QueuePurgeJobsDialogComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + providers: [ + ...appConfig.providers, + { provide: MatDialogRef, useValue: {} }, + ], + }).compileComponents(); + + fixture = TestBed.createComponent(QueuePurgeJobsDialogComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it("should create", () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/webui/src/app/dashboard/queue/queue-purge-jobs-dialog.component.ts b/webui/src/app/dashboard/queue/queue-purge-jobs-dialog.component.ts new file mode 100644 index 0000000..d1911ed --- /dev/null +++ b/webui/src/app/dashboard/queue/queue-purge-jobs-dialog.component.ts @@ -0,0 +1,121 @@ +import { Component, Inject, inject } from "@angular/core"; +import { Apollo } from "apollo-angular"; +import { MatCheckboxChange } from "@angular/material/checkbox"; +import { MAT_DIALOG_DATA, MatDialogRef } from "@angular/material/dialog"; +import { map } from "rxjs/operators"; +import { catchError, EMPTY } from "rxjs"; +import * as generated from "../../graphql/generated"; +import { GraphQLModule } from "../../graphql/graphql.module"; +import { AppModule } from "../../app.module"; +import { availableQueueNames, statusNames } from "./queue.constants"; + +@Component({ + selector: "app-queue-purge-jobs-dialog", + standalone: true, + imports: [AppModule, GraphQLModule], + templateUrl: "./queue-purge-jobs-dialog.component.html", + styleUrl: "./queue-purge-jobs-dialog.component.scss", +}) +export class QueuePurgeJobsDialogComponent { + apollo = inject(Apollo); + readonly dialogRef = inject(MatDialogRef); + + queues?: string[]; + statuses?: generated.QueueJobStatus[]; + + protected readonly availableQueueNames = availableQueueNames; + protected readonly statusNames = statusNames; + + protected stage: "PENDING" | "REQUESTING" | "DONE" = "PENDING"; + + @Inject(MAT_DIALOG_DATA) public data: { onPurged?: () => void }; + + protected error?: Error; + + handleQueueEvent(event: MatCheckboxChange) { + if (event.source.value === "_all") { + this.queues = undefined; + return; + } + if (event.checked) { + let queues = this.queues ?? []; + if (!queues.includes(event.source.value as generated.QueueJobStatus)) { + queues = [...queues, event.source.value]; + } + if (queues.length === this.availableQueueNames.length) { + event.source.checked = false; + this.queues = undefined; + } else { + this.queues = queues; + } + } else { + const queues = this.queues?.filter((q) => q !== event.source.value); + if (!queues?.length) { + this.queues = undefined; + } else { + this.queues = queues; + } + } + } + + handleStatusEvent(event: MatCheckboxChange) { + if (event.source.value === "_all") { + this.statuses = undefined; + return; + } + if (event.checked) { + let statuses = this.statuses ?? []; + if (!statuses.includes(event.source.value as generated.QueueJobStatus)) { + statuses = [ + ...statuses, + event.source.value as generated.QueueJobStatus, + ]; + } + if (statuses.length === this.statusNames.length) { + event.source.checked = false; + this.statuses = undefined; + } else { + this.statuses = statuses; + } + } else { + const statuses = this.statuses?.filter((s) => s !== event.source.value); + if (!statuses?.length) { + this.statuses = undefined; + } else { + this.statuses = statuses; + } + } + } + + handlePurgeJobs() { + if (this.stage !== "PENDING") { + return; + } + this.stage = "REQUESTING"; + this.apollo + .mutate< + generated.QueuePurgeJobsMutation, + generated.QueuePurgeJobsMutationVariables + >({ + mutation: generated.QueuePurgeJobsDocument, + variables: { + input: { + queues: this.queues, + statuses: this.statuses, + }, + }, + }) + .pipe( + catchError((err: Error) => { + this.stage = "DONE"; + this.error = err; + return EMPTY; + }), + map(() => { + this.stage = "DONE"; + this.data.onPurged?.(); + }), + ) + .subscribe(); + } +} diff --git a/webui/src/app/dashboard/queue/queue-visualize.component.html b/webui/src/app/dashboard/queue/queue-visualize.component.html new file mode 100644 index 0000000..603c00b --- /dev/null +++ b/webui/src/app/dashboard/queue/queue-visualize.component.html @@ -0,0 +1,482 @@ + + + + + + + +

{{ t("dashboard.metrics.timeframe") }}

+
+ + + + @for (name of timeframeNames; track name) { + {{ + t("dashboard.interval." + name) + }} + } + + +
+ + + + +
+
+
+
+ + + +

+ {{ t("dashboard.metrics.resolution") }} +

+
+ + + + + + + @for (name of resolutionNames; track name) { + {{ + t("dashboard.interval." + name + "s") + }} + } + + +
+ + + + + + +
+
+
+
+ + + + +

{{ t("dashboard.queues.queue") }}

+
+
+ + + + {{ t("general.all") }} + @for (queue of availableQueueNames; track queue) { + {{ queue }} + } + + +
+ + @for (queue of availableQueueNames; track queue) { + + } +
+
+
+
+ + + + +

{{ t("dashboard.metrics.event") }}

+
+
+ + + + All + @for (event of eventNames; track event) { + {{ + t("dashboard.event." + event) + }} + } + + +
+ + + + +
+
+
+
+ + + + +

{{ t("general.refresh") }}

+
+
+ + + + @for (name of autoRefreshIntervalNames; track name) { + {{ + t("dashboard.interval." + name) + }} + } + + +
+ +
+
+
+
+
+
+ +
+ + + + + +

{{ t("dashboard.queues.total_counts_by_status") }}

+
+
+ + + +
+
+ + + + +

{{ t("dashboard.metrics.throughput") }}

+
+
+ + + +
+
+
+
+
+
diff --git a/webui/src/app/dashboard/queue/queue-visualize.component.scss b/webui/src/app/dashboard/queue/queue-visualize.component.scss new file mode 100644 index 0000000..765120a --- /dev/null +++ b/webui/src/app/dashboard/queue/queue-visualize.component.scss @@ -0,0 +1,55 @@ +.actions { + width: 210px; + padding-top: 12px; + --mdc-icon-button-state-layer-size: 32px; + mat-icon { + font-size: 22px; + } + button { + margin-right: 0; + } +} + +.progress-bar-container { + width: 100%; + height: 10px; +} + +mat-grid-tile mat-card { + width: 100%; + mat-card-content { + min-width: 190px; + } + h4 { + margin-bottom: 16px; + font-size: 18px; + } +} + +mat-form-field { + width: 186px; +} + +.form-resolution { + .actions { + margin-left: -2px; + } + .form-input-multiplier { + width: 60px; + margin-right: 10px; + + input::-webkit-outer-spin-button, + input::-webkit-inner-spin-button { + /* display: none; <- Crashes Chrome on hover */ + -webkit-appearance: none; + margin: 0; /* <-- Apparently some margin are still there even though it's hidden */ + } + + input[type="number"] { + -moz-appearance: textfield; /* Firefox */ + } + } + .form-select-duration { + width: 116px; + } +} diff --git a/webui/src/app/dashboard/queue/queue-visualize.component.ts b/webui/src/app/dashboard/queue/queue-visualize.component.ts new file mode 100644 index 0000000..6710773 --- /dev/null +++ b/webui/src/app/dashboard/queue/queue-visualize.component.ts @@ -0,0 +1,78 @@ +import { Component, inject, OnDestroy, OnInit } from "@angular/core"; +import { Apollo } from "apollo-angular"; +import { GraphQLModule } from "../../graphql/graphql.module"; +import { ChartComponent } from "../../charting/chart.component"; +import { BreakpointsService } from "../../layout/breakpoints.service"; +import { ErrorsService } from "../../errors/errors.service"; +import { AppModule } from "../../app.module"; +import { + autoRefreshIntervalNames, + availableQueueNames, + eventNames, + resolutionNames, + timeframeNames, +} from "./queue.constants"; +import { QueueModule } from "./queue.module"; +import { QueueChartAdapterTotals } from "./queue-chart-adapter.totals"; +import { QueueMetricsController } from "./queue-metrics.controller"; +import { QueueChartAdapterTimeline } from "./queue-chart-adapter.timeline"; + +@Component({ + selector: "app-queue-visualize", + standalone: true, + templateUrl: "./queue-visualize.component.html", + styleUrl: "./queue-visualize.component.scss", + imports: [AppModule, ChartComponent, GraphQLModule, QueueModule], +}) +export class QueueVisualizeComponent implements OnInit, OnDestroy { + breakpoints = inject(BreakpointsService); + private apollo = inject(Apollo); + queueMetricsController = new QueueMetricsController( + this.apollo, + { + buckets: { + duration: "AUTO", + multiplier: "AUTO", + timeframe: "all", + }, + autoRefresh: "seconds_30", + }, + inject(ErrorsService), + ); + protected readonly timeline = inject(QueueChartAdapterTimeline); + protected readonly totals = inject(QueueChartAdapterTotals); + + protected readonly resolutionNames = resolutionNames; + protected readonly timeframeNames = timeframeNames; + protected readonly availableQueueNames = availableQueueNames; + protected readonly autoRefreshIntervalNames = autoRefreshIntervalNames; + + ngOnInit() { + this.queueMetricsController.result$.subscribe((result) => { + // change the default settings to more sensible ones if there is <12 hours of data to show + if ( + this.queueMetricsController.params.buckets.timeframe === "all" && + this.queueMetricsController.params.buckets.duration === "AUTO" && + result.params.buckets.duration === "hour" + ) { + const span = result.bucketSpan; + if (span && span.latestBucket - span.earliestBucket < 12) { + this.queueMetricsController.setBucketDuration("minute"); + } + } + }); + } + + ngOnDestroy() { + this.queueMetricsController.setAutoRefreshInterval("off"); + } + + protected readonly eventNames = eventNames; + + handleMultiplierEvent(event: Event) { + const value = (event.currentTarget as HTMLInputElement).value; + this.queueMetricsController.setBucketMultiplier( + /^\d+$/.test(value) ? parseInt(value) : "AUTO", + ); + } +} diff --git a/webui/src/app/dashboard/queue/queue.constants.ts b/webui/src/app/dashboard/queue/queue.constants.ts new file mode 100644 index 0000000..50fa649 --- /dev/null +++ b/webui/src/app/dashboard/queue/queue.constants.ts @@ -0,0 +1,87 @@ +import * as generated from "../../graphql/generated"; +import { + BucketParams, + Params, + Result, + StatusCounts, +} from "./queue-metrics.types"; + +export const emptyStatusCounts: StatusCounts = { + pending: 0, + failed: 0, + retry: 0, + processed: 0, +}; + +export const defaultBucketParams: BucketParams = { + duration: "hour", + multiplier: 1, + timeframe: "all", +}; + +export const resolutionNames = ["day", "hour", "minute"] as const; + +export const durationSeconds: Record = + { + minute: 60, + hour: 60 * 60, + day: 60 * 60 * 24, + }; + +export const emptyParams: Params = { + buckets: defaultBucketParams, + autoRefresh: "off", +}; + +export const emptyResult: Result = { + params: emptyParams, + queues: [], +}; + +export const eventNames = ["created", "processed", "failed"] as const; + +export const statusNames = ["pending", "processed", "retry", "failed"] as const; + +export const timeframeNames = [ + "minutes_15", + "minutes_30", + "hours_1", + "hours_6", + "hours_12", + "days_1", + "weeks_1", + "all", +] as const; + +export const timeframeLengths: Record<(typeof timeframeNames)[number], number> = + { + minutes_15: 60 * 15, + minutes_30: 60 * 30, + hours_1: 60 * 60, + hours_6: 60 * 60 * 6, + hours_12: 60 * 60 * 12, + days_1: 60 * 60 * 24, + weeks_1: 60 * 60 * 24 * 7, + all: Infinity, + }; + +export const availableQueueNames = ["process_torrent", "process_torrent_batch"]; + +export const autoRefreshIntervalNames = [ + "off", + "seconds_10", + "seconds_30", + "minutes_1", + "minutes_5", +] as const; + +export const autoRefreshIntervals: Record< + (typeof autoRefreshIntervalNames)[number], + number | null +> = { + off: null, + seconds_10: 10, + seconds_30: 30, + minutes_1: 60, + minutes_5: 60 * 5, +}; diff --git a/webui/src/app/dashboard/queue/queue.module.ts b/webui/src/app/dashboard/queue/queue.module.ts new file mode 100644 index 0000000..18483cf --- /dev/null +++ b/webui/src/app/dashboard/queue/queue.module.ts @@ -0,0 +1,40 @@ +import { NgModule } from "@angular/core"; +import { TranslocoDirective } from "@jsverse/transloco"; +import { MatIcon } from "@angular/material/icon"; +import { MatTooltip } from "@angular/material/tooltip"; +import { AsyncPipe } from "@angular/common"; +import { MatDialogClose, MatDialogModule } from "@angular/material/dialog"; +import { MatButton, MatIconButton } from "@angular/material/button"; +import { + MatCard, + MatCardContent, + MatCardHeader, + MatCardTitle, +} from "@angular/material/card"; +import { MatGridTile } from "@angular/material/grid-list"; +import { MatMenu, MatMenuItem } from "@angular/material/menu"; +import { GraphQLModule } from "../../graphql/graphql.module"; +import { ChartComponent } from "../../charting/chart.component"; + +@NgModule({ + imports: [ + GraphQLModule, + TranslocoDirective, + MatIcon, + MatTooltip, + AsyncPipe, + MatDialogModule, + MatButton, + MatDialogClose, + MatIconButton, + MatCard, + MatCardContent, + MatCardHeader, + MatCardTitle, + MatGridTile, + MatMenu, + MatMenuItem, + ChartComponent, + ], +}) +export class QueueModule {} diff --git a/webui/src/app/dashboard/torrents/torrent-chart-adapter.timeline.ts b/webui/src/app/dashboard/torrents/torrent-chart-adapter.timeline.ts new file mode 100644 index 0000000..d681f06 --- /dev/null +++ b/webui/src/app/dashboard/torrents/torrent-chart-adapter.timeline.ts @@ -0,0 +1,147 @@ +import { ChartConfiguration } from "chart.js"; +import { inject, Injectable } from "@angular/core"; +import { TranslocoService } from "@jsverse/transloco"; +import { format as formatDate } from "date-fns/format"; +import { ChartAdapter } from "../../charting/types"; +import { ThemeBaseColor } from "../../themes/theme-types"; +import { createThemeColor } from "../../themes/theme-utils"; +import { ThemeInfoService } from "../../themes/theme-info.service"; +import { resolveDateLocale } from "../../dates/dates.locales"; +import { + durationSeconds, + eventNames, + timeframeLengths, +} from "./torrent-metrics.constants"; +import { BucketParams, EventName, Result } from "./torrent-metrics.types"; +import { normalizeBucket } from "./torrent-metrics.utils"; + +const eventColors: Record = { + created: "primary", + updated: "secondary", +}; + +@Injectable({ providedIn: "root" }) +export class TorrentChartAdapterTimeline + implements ChartAdapter +{ + private themeInfo = inject(ThemeInfoService); + private transloco = inject(TranslocoService); + + create(result?: Result): ChartConfiguration<"line"> { + const { colors } = this.themeInfo.info; + const labels = Array(); + const datasets: ChartConfiguration<"line">["data"]["datasets"] = []; + if (result) { + const nonEmptySources = result.sourceSummaries.filter((q) => !q.isEmpty); + const nonEmptyBuckets = Array.from( + new Set( + nonEmptySources.flatMap((q) => + q.events ? [q.events.earliestBucket, q.events.latestBucket] : [], + ), + ), + ).sort(); + const now = new Date(); + const minBucket = Math.min( + nonEmptyBuckets[0], + normalizeBucket( + now.getTime() - + 1000 * timeframeLengths[result.params.buckets.timeframe], + result.params.buckets, + ).index, + ); + const maxBucket = Math.max( + nonEmptyBuckets[nonEmptyBuckets.length - 1], + normalizeBucket(now, result.params.buckets).index, + ); + if (nonEmptyBuckets.length) { + for (let i = minBucket; i <= maxBucket; i++) { + labels.push(this.formatBucketKey(result.params.buckets, i)); + } + const relevantEvents = eventNames.filter( + (n) => (result.params.event ?? n) === n, + ); + for (const source of nonEmptySources) { + for (const event of relevantEvents) { + const series = Array(); + for (let i = minBucket; i <= maxBucket; i++) { + series.push( + source.events?.eventBuckets?.[event]?.entries?.[`${i}`] + ?.count ?? 0, + ); + } + datasets.push({ + yAxisID: "yCount", + label: [source.source, event].join("/"), + data: series, + borderColor: colors[createThemeColor(eventColors[event], 50)], + pointBackgroundColor: + colors[createThemeColor(eventColors[event], 20)], + pointBorderColor: + colors[createThemeColor(eventColors[event], 80)], + pointHoverBackgroundColor: + colors[createThemeColor(eventColors[event], 40)], + pointHoverBorderColor: + colors[createThemeColor(eventColors[event], 60)], + }); + } + } + } + } + return { + type: "line", + options: { + animation: false, + elements: { + line: { + tension: 0.5, + }, + }, + scales: { + yCount: { + position: "left", + ticks: { + callback: (v) => + parseInt(v as string).toLocaleString( + this.transloco.getActiveLang(), + ), + }, + }, + }, + plugins: { + legend: { + display: true, + }, + decimation: { + enabled: true, + }, + }, + }, + data: { + labels, + datasets, + }, + }; + } + + private formatBucketKey(params: BucketParams, key: number): string { + let formatStr: string; + switch (params.duration) { + case "day": + formatStr = "d LLL"; + break; + case "hour": + formatStr = "d LLL H:00"; + break; + case "minute": + formatStr = "H:mm"; + break; + } + return formatDate( + 1000 * durationSeconds[params.duration] * params.multiplier * key, + formatStr, + { + locale: resolveDateLocale(this.transloco.getActiveLang()), + }, + ); + } +} diff --git a/webui/src/app/dashboard/torrents/torrent-metrics.component.html b/webui/src/app/dashboard/torrents/torrent-metrics.component.html new file mode 100644 index 0000000..417efd2 --- /dev/null +++ b/webui/src/app/dashboard/torrents/torrent-metrics.component.html @@ -0,0 +1,459 @@ + + + + + + + +

{{ t("dashboard.metrics.timeframe") }}

+
+ + + + @for (name of timeframeNames; track name) { + {{ + t("dashboard.interval." + name) + }} + } + + +
+ + + + +
+
+
+
+ + + +

+ {{ t("dashboard.metrics.resolution") }} +

+
+ + + + + + + @for (name of resolutionNames; track name) { + {{ + t("dashboard.interval." + name + "s") + }} + } + + +
+ + + + + + +
+
+
+
+ + + + +

{{ t("torrents.source") }}

+
+
+ + + + All + @for ( + source of (torrentMetricsController.result$ | async) + ?.availableSources; + track source.key + ) { + {{ + source.name + }} + } + + +
+ + @for (source of ["dht"]; track source) { + + } +
+
+
+
+ + + + +

{{ t("dashboard.metrics.event") }}

+
+
+ + + + All + @for (event of eventNames; track event) { + {{ + t("dashboard.event." + event) + }} + } + + +
+ + + +
+
+
+
+ + + + +

{{ t("general.refresh") }}

+
+
+ + + + @for (name of autoRefreshIntervalNames; track name) { + {{ + t("dashboard.interval." + name) + }} + } + + +
+ +
+
+
+
+
+
+ +
+ + + + + +

{{ t("dashboard.metrics.throughput") }}

+
+
+ + + +
+
+ +
+
+
+
diff --git a/webui/src/app/dashboard/torrents/torrent-metrics.component.scss b/webui/src/app/dashboard/torrents/torrent-metrics.component.scss new file mode 100644 index 0000000..765120a --- /dev/null +++ b/webui/src/app/dashboard/torrents/torrent-metrics.component.scss @@ -0,0 +1,55 @@ +.actions { + width: 210px; + padding-top: 12px; + --mdc-icon-button-state-layer-size: 32px; + mat-icon { + font-size: 22px; + } + button { + margin-right: 0; + } +} + +.progress-bar-container { + width: 100%; + height: 10px; +} + +mat-grid-tile mat-card { + width: 100%; + mat-card-content { + min-width: 190px; + } + h4 { + margin-bottom: 16px; + font-size: 18px; + } +} + +mat-form-field { + width: 186px; +} + +.form-resolution { + .actions { + margin-left: -2px; + } + .form-input-multiplier { + width: 60px; + margin-right: 10px; + + input::-webkit-outer-spin-button, + input::-webkit-inner-spin-button { + /* display: none; <- Crashes Chrome on hover */ + -webkit-appearance: none; + margin: 0; /* <-- Apparently some margin are still there even though it's hidden */ + } + + input[type="number"] { + -moz-appearance: textfield; /* Firefox */ + } + } + .form-select-duration { + width: 116px; + } +} diff --git a/webui/src/app/dashboard/torrents/torrent-metrics.component.ts b/webui/src/app/dashboard/torrents/torrent-metrics.component.ts new file mode 100644 index 0000000..be0b5b1 --- /dev/null +++ b/webui/src/app/dashboard/torrents/torrent-metrics.component.ts @@ -0,0 +1,54 @@ +import { Component, inject, OnDestroy } from "@angular/core"; +import { Apollo } from "apollo-angular"; +import { GraphQLModule } from "../../graphql/graphql.module"; +import { ChartComponent } from "../../charting/chart.component"; +import { BreakpointsService } from "../../layout/breakpoints.service"; +import { ErrorsService } from "../../errors/errors.service"; +import { AppModule } from "../../app.module"; +import { + autoRefreshIntervalNames, + defaultBucketParams, + eventNames, + resolutionNames, + timeframeNames, +} from "./torrent-metrics.constants"; +import { TorrentMetricsController } from "./torrent-metrics.controller"; +import { TorrentChartAdapterTimeline } from "./torrent-chart-adapter.timeline"; + +@Component({ + selector: "app-torrent-metrics", + standalone: true, + templateUrl: "./torrent-metrics.component.html", + styleUrl: "./torrent-metrics.component.scss", + imports: [AppModule, ChartComponent, GraphQLModule], +}) +export class TorrentMetricsComponent implements OnDestroy { + breakpoints = inject(BreakpointsService); + private apollo = inject(Apollo); + torrentMetricsController = new TorrentMetricsController( + this.apollo, + { + buckets: defaultBucketParams, + autoRefresh: "seconds_30", + }, + inject(ErrorsService), + ); + protected readonly timeline = inject(TorrentChartAdapterTimeline); + + protected readonly resolutionNames = resolutionNames; + protected readonly timeframeNames = timeframeNames; + protected readonly autoRefreshIntervalNames = autoRefreshIntervalNames; + + ngOnDestroy() { + this.torrentMetricsController.setAutoRefreshInterval("off"); + } + + protected readonly eventNames = eventNames; + + handleMultiplierEvent(event: Event) { + const value = (event.currentTarget as HTMLInputElement).value; + this.torrentMetricsController.setBucketMultiplier( + /^\d+$/.test(value) ? parseInt(value) : "AUTO", + ); + } +} diff --git a/webui/src/app/dashboard/torrents/torrent-metrics.constants.ts b/webui/src/app/dashboard/torrents/torrent-metrics.constants.ts new file mode 100644 index 0000000..d15dd3a --- /dev/null +++ b/webui/src/app/dashboard/torrents/torrent-metrics.constants.ts @@ -0,0 +1,83 @@ +import * as generated from "../../graphql/generated"; +import { BucketParams, Params, Result } from "./torrent-metrics.types"; +import { createResult } from "./torrent-metrics.utils"; + +export const defaultBucketParams: BucketParams = { + duration: "minute", + multiplier: 1, + timeframe: "hours_1", +}; + +export const resolutionNames = ["day", "hour", "minute"] as const; + +export const durationSeconds: Record = + { + minute: 60, + hour: 60 * 60, + day: 60 * 60 * 24, + }; + +export const emptyParams: Params = { + buckets: defaultBucketParams, + autoRefresh: "off", +}; + +export const emptyRawResult: generated.TorrentMetricsQuery = { + torrent: { + metrics: { + buckets: [], + }, + listSources: { + sources: [ + { + key: "dht", + name: "DHT", + }, + ], + }, + }, +}; + +export const eventNames = ["created", "updated"] as const; + +export const timeframeNames = [ + "minutes_15", + "minutes_30", + "hours_1", + "hours_6", + "hours_12", + "days_1", + "weeks_1", +] as const; + +export const timeframeLengths: Record<(typeof timeframeNames)[number], number> = + { + minutes_15: 60 * 15, + minutes_30: 60 * 30, + hours_1: 60 * 60, + hours_6: 60 * 60 * 6, + hours_12: 60 * 60 * 12, + days_1: 60 * 60 * 24, + weeks_1: 60 * 60 * 24 * 7, + }; + +export const autoRefreshIntervalNames = [ + "off", + "seconds_10", + "seconds_30", + "minutes_1", + "minutes_5", +] as const; + +export const autoRefreshIntervals: Record< + (typeof autoRefreshIntervalNames)[number], + number | null +> = { + off: null, + seconds_10: 10, + seconds_30: 30, + minutes_1: 60, + minutes_5: 60 * 5, +}; + +export const emptyResult: Result = createResult(emptyParams, emptyRawResult); diff --git a/webui/src/app/dashboard/torrents/torrent-metrics.controller.ts b/webui/src/app/dashboard/torrents/torrent-metrics.controller.ts new file mode 100644 index 0000000..e869f4a --- /dev/null +++ b/webui/src/app/dashboard/torrents/torrent-metrics.controller.ts @@ -0,0 +1,214 @@ +import { + BehaviorSubject, + catchError, + debounceTime, + EMPTY, + Observable, +} from "rxjs"; +import { Apollo } from "apollo-angular"; +import { map } from "rxjs/operators"; +import * as generated from "../../graphql/generated"; +import { ErrorsService } from "../../errors/errors.service"; +import { + autoRefreshIntervals, + emptyParams, + emptyRawResult, + emptyResult, + timeframeLengths, +} from "./torrent-metrics.constants"; +import { + EventName, + Params, + Result, + TimeframeName, + AutoRefreshInterval, +} from "./torrent-metrics.types"; +import { createResult } from "./torrent-metrics.utils"; + +export class TorrentMetricsController { + private paramsSubject: BehaviorSubject; + public params$: Observable; + private variablesSubject: BehaviorSubject; + private rawResultSubject = new BehaviorSubject( + emptyRawResult, + ); + private resultSubject = new BehaviorSubject(emptyResult); + public result$ = this.resultSubject.asObservable(); + private loadingSubject = new BehaviorSubject(false); + + private refreshTimeout?: number; + + constructor( + private apollo: Apollo, + initParams: Params = emptyParams, + private errorsService: ErrorsService, + ) { + this.paramsSubject = new BehaviorSubject(initParams); + this.params$ = this.paramsSubject.asObservable(); + this.variablesSubject = + new BehaviorSubject( + createVariables(initParams), + ); + this.paramsSubject.pipe(debounceTime(50)).subscribe((params) => { + const variables = this.variablesSubject.getValue(); + const nextVariables = createVariables(params); + if (JSON.stringify(variables) !== JSON.stringify(nextVariables)) { + this.variablesSubject.next(nextVariables); + } else { + this.resultSubject.next( + createResult(params, this.rawResultSubject.getValue()), + ); + } + }); + this.variablesSubject + .pipe(debounceTime(50)) + .subscribe((variables) => this.request(variables)); + this.rawResultSubject.subscribe((rawResult) => { + const params = this.paramsSubject.getValue(); + this.resultSubject.next(createResult(params, rawResult)); + this.setInterval(params.autoRefresh); + }); + } + + private setInterval(interval?: AutoRefreshInterval) { + clearTimeout(this.refreshTimeout); + const delay = autoRefreshIntervals[interval ?? this.params.autoRefresh]; + if (delay) { + this.refreshTimeout = setTimeout(() => { + this.refresh(); + }, delay * 1000); + } + } + + get params(): Params { + return this.paramsSubject.getValue(); + } + + get bucketDuration(): generated.MetricsBucketDuration { + const d = this.params.buckets.duration; + if (d === "AUTO") { + return "hour"; + } + return d; + } + + get bucketMultiplier(): number { + return ( + this.resultSubject.getValue().params.buckets.multiplier ?? + this.params.buckets.multiplier + ); + } + + get loading(): boolean { + return this.loadingSubject.getValue(); + } + + setTimeframe(timeframe: TimeframeName) { + this.updateParams((p) => ({ + ...p, + buckets: { + ...p.buckets, + timeframe, + }, + })); + } + + setSource(source: string | null) { + this.updateParams((p) => ({ + ...p, + source: source ?? undefined, + })); + } + + setBucketDuration( + duration: generated.MetricsBucketDuration, + multiplier?: number, + ) { + this.updateParams((p) => ({ + ...p, + buckets: { + ...p.buckets, + duration, + multiplier: multiplier ?? "AUTO", + }, + })); + } + + setBucketMultiplier(multiplier: number | "AUTO") { + this.updateParams((p) => ({ + ...p, + buckets: { + ...p.buckets, + multiplier, + }, + })); + } + + setEvent(event: EventName | null) { + this.updateParams((p) => ({ + ...p, + event: event ?? undefined, + })); + } + + setAutoRefreshInterval(autoRefreshInterval: AutoRefreshInterval) { + this.updateParams((p) => ({ + ...p, + autoRefresh: autoRefreshInterval, + })); + } + + private updateParams(fn: (p: Params) => Params) { + this.paramsSubject.next(fn(this.params)); + } + + refresh() { + this.variablesSubject.next(this.variablesSubject.getValue()); + } + + private request(variables: generated.TorrentMetricsQueryVariables) { + clearTimeout(this.refreshTimeout); + this.loadingSubject.next(true); + return this.apollo + .query< + generated.TorrentMetricsQuery, + generated.TorrentMetricsQueryVariables + >({ + query: generated.TorrentMetricsDocument, + variables, + fetchPolicy: "no-cache", + }) + .pipe( + map((r) => { + if (r) { + this.loadingSubject.next(false); + this.rawResultSubject.next(r.data); + } + }), + ) + .pipe( + catchError((err: Error) => { + this.errorsService.addError( + `Failed to load torrent metrics: ${err.message}`, + ); + this.loadingSubject.next(false); + this.setInterval(); + return EMPTY; + }), + ) + .subscribe(); + } +} + +const createVariables = ( + params: Params, +): generated.TorrentMetricsQueryVariables => ({ + input: { + bucketDuration: + params.buckets.duration === "AUTO" ? "hour" : params.buckets.duration, + sources: params.source ? [params.source] : undefined, + startTime: new Date( + new Date().getTime() - 1000 * timeframeLengths[params.buckets.timeframe], + ).toISOString(), + }, +}); diff --git a/webui/src/app/dashboard/torrents/torrent-metrics.types.ts b/webui/src/app/dashboard/torrents/torrent-metrics.types.ts new file mode 100644 index 0000000..4cf9f84 --- /dev/null +++ b/webui/src/app/dashboard/torrents/torrent-metrics.types.ts @@ -0,0 +1,63 @@ +import * as generated from "../../graphql/generated"; +import { + autoRefreshIntervalNames, + eventNames, + timeframeNames, +} from "./torrent-metrics.constants"; + +export type TimeframeName = (typeof timeframeNames)[number]; + +export type BucketParams<_withAuto extends boolean = boolean> = { + duration: _withAuto extends true + ? "AUTO" | generated.MetricsBucketDuration + : generated.MetricsBucketDuration; + multiplier: _withAuto extends true ? "AUTO" | number : number; + timeframe: TimeframeName; +}; + +export type AutoRefreshInterval = (typeof autoRefreshIntervalNames)[number]; + +export type EventName = (typeof eventNames)[number]; + +export type Params<_withAuto extends boolean = boolean> = { + buckets: BucketParams<_withAuto>; + source?: string; + event?: EventName; + autoRefresh: AutoRefreshInterval; +}; + +export type EventBucketEntry = { + startTime: Date; + count: number; +}; + +export type EventBucketEntries = Partial>; + +export type BucketSpan = { + earliestBucket: number; + latestBucket: number; +}; + +export type EventBucket = BucketSpan & { + entries: EventBucketEntries; +}; + +export type EventBuckets = Partial>; + +export type TorrentEvents = BucketSpan & { + bucketDuration: generated.MetricsBucketDuration; + eventBuckets: EventBuckets; +}; + +export type SourceSummary = { + source: string; + isEmpty: IsEmpty; + events: IsEmpty extends false ? TorrentEvents : undefined; +}; + +export type Result = { + params: Params; + bucketSpan?: BucketSpan; + sourceSummaries: SourceSummary[]; + availableSources: generated.TorrentSource[]; +}; diff --git a/webui/src/app/dashboard/torrents/torrent-metrics.utils.ts b/webui/src/app/dashboard/torrents/torrent-metrics.utils.ts new file mode 100644 index 0000000..d7fdd66 --- /dev/null +++ b/webui/src/app/dashboard/torrents/torrent-metrics.utils.ts @@ -0,0 +1,229 @@ +import * as generated from "../../graphql/generated"; +import { + BucketParams, + BucketSpan, + EventBucket, + EventBucketEntries, + EventBuckets, + EventName, + Params, + Result, + TorrentEvents, +} from "./torrent-metrics.types"; +import { durationSeconds, timeframeLengths } from "./torrent-metrics.constants"; + +export const createResult = ( + params: Params, + rawResult: generated.TorrentMetricsQuery, +): Result => { + const { bucketParams, earliestBucket } = createBucketParams( + params, + rawResult, + ); + const sources = Object.entries( + rawResult.torrent.metrics.buckets.reduce< + Record>> + >((acc, next) => { + if (next.source !== (params.source ?? next.source)) { + return acc; + } + let bucket: NormalizedBucket | undefined = normalizeBucket( + next.bucket, + bucketParams, + ); + if (earliestBucket && earliestBucket.index > bucket.index) { + bucket = undefined; + } + if (!bucket) { + return acc; + } + const currentEventBuckets = acc[next.source] ?? []; + return { + ...acc, + [next.source]: { + created: !next.updated + ? { + ...currentEventBuckets.created, + [bucket.key]: { + count: + next.count + + (currentEventBuckets.created?.[bucket.key]?.count ?? 0), + startTime: bucket.start, + }, + } + : currentEventBuckets.created, + updated: next.updated + ? { + ...currentEventBuckets.updated, + [bucket.key]: { + count: + next.count + + (currentEventBuckets.updated?.[bucket.key]?.count ?? 0), + startTime: bucket.start, + }, + } + : currentEventBuckets.updated, + }, + }; + }, {}), + ).map(([source, eventBuckets]) => { + let events: TorrentEvents | undefined; + // const bucketKeys = Object.keys(eventBuckets).sort() + if (Object.keys(eventBuckets).length) { + const bucketDates = Array(); + const buckets: EventBuckets = fromEntries( + Array("created", "updated").flatMap< + [EventName, EventBucket] + >((event): [EventName, EventBucket][] => { + const entries = fromEntries( + Object.entries(eventBuckets[event] ?? {}) + .filter(([, v]) => v?.count) + .sort(([a], [b]) => (parseInt(a) < parseInt(b) ? 1 : -1)), + ); + const keys = Object.keys(entries); + if (!keys.length) { + return []; + } + const earliestBucket = parseInt(keys[0]); + const latestBucket = parseInt(keys[keys.length - 1]); + bucketDates.push(earliestBucket, latestBucket); + return [ + [ + event, + { + earliestBucket, + latestBucket, + entries, + }, + ], + ]; + }), + ); + bucketDates.sort(); + events = { + bucketDuration: bucketParams.duration, + earliestBucket: bucketDates[0], + latestBucket: bucketDates[bucketDates.length - 1], + eventBuckets: buckets, + }; + } + return { + source, + events, + isEmpty: !events?.eventBuckets, + }; + }); + let bucketSpan: BucketSpan | undefined; + const earliestFoundBucket = sources + .flatMap((q) => (q.events ? [q.events.earliestBucket] : [])) + .sort()[0]; + const latestFoundBucket = sources + .flatMap((q) => (q.events ? [q.events.latestBucket] : [])) + .sort() + .reverse()[0]; + if (earliestFoundBucket && latestFoundBucket) { + bucketSpan = { + earliestBucket: earliestFoundBucket, + latestBucket: latestFoundBucket, + }; + } + return { + params: { + ...params, + buckets: bucketParams, + }, + sourceSummaries: sources, + bucketSpan, + availableSources: rawResult.torrent.listSources.sources.map((s) => ({ + key: s.key, + name: s.name, + })), + }; +}; + +const fromEntries = ( + entries: Array<[K, V]>, +): Partial> => + Object.fromEntries(entries) as Partial>; + +const createBucketParams = ( + params: Params, + rawResult: generated.TorrentMetricsQuery, +): { + bucketParams: BucketParams; + earliestBucket: NormalizedBucket; + latestBucket: NormalizedBucket; +} => { + const duration = + params.buckets.duration === "AUTO" ? "hour" : params.buckets.duration; + let multiplier = + params.buckets.multiplier === "AUTO" ? 1 : params.buckets.multiplier; + const timeframe = params.buckets.timeframe; + const now = new Date(); + const nowBucket = normalizeBucket(now, { duration, multiplier }); + const startBucket = normalizeBucket( + now.getTime() - 1000 * timeframeLengths[timeframe], + { + duration, + multiplier, + }, + ); + const allBuckets = [ + startBucket, + ...rawResult.torrent.metrics.buckets.flatMap((b) => [ + normalizeBucket(b.bucket, { duration, multiplier }), + ]), + nowBucket, + ] + .filter((b) => b.index >= startBucket.index) + .sort((a, b) => a.index - b.index); + const minBucket = allBuckets[0]; + const maxBucket = allBuckets[allBuckets.length - 1]; + if (params.buckets.multiplier === "AUTO") { + const targetSpan = 20; + const span = maxBucket.index - minBucket.index; + multiplier = Math.min( + 60, + Math.max(Math.floor(span / (targetSpan * 5)) * 5, 1), + ); + } + return { + bucketParams: { + duration, + multiplier, + timeframe, + }, + earliestBucket: normalizeBucket( + now.getTime() - 1000 * timeframeLengths[timeframe], + { + duration, + multiplier, + }, + ), + latestBucket: normalizeBucket( + Math.max(now.getTime(), maxBucket.start.getTime()), + { duration, multiplier }, + ), + }; +}; + +type NormalizedBucket = { + key: string; + index: number; + start: Date; +}; + +export const normalizeBucket = ( + rawDate: string | number | Date, + params: Pick, "duration" | "multiplier">, +): NormalizedBucket => { + const date = new Date(rawDate); + const msMultiplier = + 1000 * durationSeconds[params.duration] * params.multiplier; + const baseNumber = Math.floor(date.getTime() / msMultiplier); + return { + key: `${baseNumber}`, + index: baseNumber, + start: new Date(baseNumber * msMultiplier), + }; +}; diff --git a/webui/src/app/dashboard/torrents/torrents-dashboard.component.html b/webui/src/app/dashboard/torrents/torrents-dashboard.component.html new file mode 100644 index 0000000..6a984c1 --- /dev/null +++ b/webui/src/app/dashboard/torrents/torrents-dashboard.component.html @@ -0,0 +1,12 @@ + + + + +

{{ t("routes.torrents") }}

+
+
+ + + +
+
diff --git a/webui/src/app/dashboard/torrents/torrents-dashboard.component.scss b/webui/src/app/dashboard/torrents/torrents-dashboard.component.scss new file mode 100644 index 0000000..3322289 --- /dev/null +++ b/webui/src/app/dashboard/torrents/torrents-dashboard.component.scss @@ -0,0 +1,24 @@ +mat-card-header { + flex-wrap: wrap; + h2 { + font-size: 18px; + margin: 0 60px 0 48px; + height: 48px; + line-height: 48px; + mat-icon { + position: relative; + top: 6px; + margin-right: 14px; + line-height: 1.25rem; + } + } + nav { + flex: 0 0 100%; + a { + margin-top: 2px; + mat-icon { + margin-right: 12px; + } + } + } +} diff --git a/webui/src/app/dashboard/torrents/torrents-dashboard.component.spec.ts b/webui/src/app/dashboard/torrents/torrents-dashboard.component.spec.ts new file mode 100644 index 0000000..f5b4719 --- /dev/null +++ b/webui/src/app/dashboard/torrents/torrents-dashboard.component.spec.ts @@ -0,0 +1,21 @@ +import { ComponentFixture, TestBed } from "@angular/core/testing"; + +import { appConfig } from "../../app.config"; +import { TorrentsDashboardComponent } from "./torrents-dashboard.component"; + +describe("QueueCardComponent", () => { + let component: TorrentsDashboardComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule(appConfig).compileComponents(); + + fixture = TestBed.createComponent(TorrentsDashboardComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it("should create", () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/webui/src/app/dashboard/torrents/torrents-dashboard.component.ts b/webui/src/app/dashboard/torrents/torrents-dashboard.component.ts new file mode 100644 index 0000000..6698523 --- /dev/null +++ b/webui/src/app/dashboard/torrents/torrents-dashboard.component.ts @@ -0,0 +1,12 @@ +import { Component } from "@angular/core"; +import { AppModule } from "../../app.module"; +import { TorrentMetricsComponent } from "./torrent-metrics.component"; + +@Component({ + selector: "app-torrents", + standalone: true, + imports: [AppModule, TorrentMetricsComponent], + templateUrl: "./torrents-dashboard.component.html", + styleUrl: "./torrents-dashboard.component.scss", +}) +export class TorrentsDashboardComponent {} diff --git a/webui/src/app/dates/dates.locales.ts b/webui/src/app/dates/dates.locales.ts new file mode 100644 index 0000000..4831906 --- /dev/null +++ b/webui/src/app/dates/dates.locales.ts @@ -0,0 +1,35 @@ +import { ar } from "date-fns/locale/ar"; +import { de } from "date-fns/locale/de"; +import { enUS as en } from "date-fns/locale/en-US"; +import { es } from "date-fns/locale/es"; +import { fr } from "date-fns/locale/fr"; +import { hi } from "date-fns/locale/hi"; +import { ja } from "date-fns/locale/ja"; +import { nl } from "date-fns/locale/nl"; +import { pt } from "date-fns/locale/pt"; +import { ru } from "date-fns/locale/ru"; +import { tr } from "date-fns/locale/tr"; +import { uk } from "date-fns/locale/uk"; +import { zhCN as zh } from "date-fns/locale/zh-CN"; +import type { Locale } from "date-fns"; + +const locales: Record = { + ar, + de, + en, + es, + fr, + hi, + ja, + nl, + pt, + ru, + tr, + uk, + zh, +}; + +export default locales; + +export const resolveDateLocale = (locale: string): Locale => + locales[locale] ?? en; diff --git a/webui/src/app/dates/dates.types.ts b/webui/src/app/dates/dates.types.ts new file mode 100644 index 0000000..3961f32 --- /dev/null +++ b/webui/src/app/dates/dates.types.ts @@ -0,0 +1 @@ +export type DateType = Date | string | number; diff --git a/webui/src/app/dates/dates.utils.ts b/webui/src/app/dates/dates.utils.ts new file mode 100644 index 0000000..041db1e --- /dev/null +++ b/webui/src/app/dates/dates.utils.ts @@ -0,0 +1,18 @@ +import { + formatDistanceToNow, + formatDuration as fnsFormatDuration, + Duration, +} from "date-fns"; +import { resolveDateLocale } from "./dates.locales"; +import { DateType } from "./dates.types"; + +export const formatTimeAgo = (date: DateType, locale: string) => + formatDistanceToNow(date, { + addSuffix: true, + locale: resolveDateLocale(locale), + }); + +export const formatDuration = (duration: Duration, locale: string) => + fnsFormatDuration(duration, { + locale: resolveDateLocale(locale), + }); diff --git a/webui/src/app/dates/parse-duration.ts b/webui/src/app/dates/parse-duration.ts new file mode 100644 index 0000000..4faa420 --- /dev/null +++ b/webui/src/app/dates/parse-duration.ts @@ -0,0 +1,127 @@ +/** + * @description A module for parsing ISO8601 durations + * Implementation copied from https://github.com/tolu/ISO8601-duration + */ + +/** + * The pattern used for parsing ISO8601 duration (PnYnMnWnDTnHnMnS). + */ +// PnYnMnWnDTnHnMnS +const numbers = "\\d+"; +const fractionalNumbers = "".concat(numbers, "(?:[\\.,]").concat(numbers, ")?"); +const datePattern = "(" + .concat(numbers, "Y)?(") + .concat(numbers, "M)?(") + .concat(numbers, "W)?(") + .concat(numbers, "D)?"); +const timePattern = "T(" + .concat(fractionalNumbers, "H)?(") + .concat(fractionalNumbers, "M)?(") + .concat(fractionalNumbers, "S)?"); +const iso8601 = "P(?:".concat(datePattern, "(?:").concat(timePattern, ")?)"); +const objMap = [ + "years", + "months", + "weeks", + "days", + "hours", + "minutes", + "seconds", +]; + +export type Duration = { + years: number; + months: number; + weeks: number; + days: number; + hours: number; + minutes: number; + seconds: number; +}; + +const defaultDuration: Duration = { + years: 0, + months: 0, + weeks: 0, + days: 0, + hours: 0, + minutes: 0, + seconds: 0, +}; + +/** + * The ISO8601 regex for matching / testing durations + */ +export const durationPattern = new RegExp(iso8601); + +/** Parse PnYnMnDTnHnMnS format to object */ +export const parseDuration = function (durationString: string): Duration { + const matches = durationString.replace(/,/g, ".").match(durationPattern); + if (!matches) { + throw new RangeError("invalid duration: ".concat(durationString)); + } + // Slice away first entry in match-array (the input string) + const slicedMatches = matches.slice(1); + if ( + slicedMatches.filter(function (v) { + return v != null; + }).length === 0 + ) { + throw new RangeError("invalid duration: ".concat(durationString)); + } + // Check only one fraction is used + if ( + slicedMatches.filter(function (v) { + return /\./.test(v || ""); + }).length > 1 + ) { + throw new RangeError("only the smallest unit can be fractional"); + } + return slicedMatches.reduce(function (prev, next, idx) { + Object.assign(prev, { [objMap[idx]]: parseFloat(next || "0") || 0 }); + return prev; + }, {}) as Duration; +}; + +/** Convert ISO8601 duration object to an end Date. */ +const end = function (durationInput: Duration, startDate?: Date): Date { + if (!startDate) { + startDate = new Date(); + } + const duration = Object.assign({}, defaultDuration, durationInput); + // Create two equal timestamps, add duration to 'then' and return time difference + const timestamp = startDate.getTime(); + const then = new Date(timestamp); + then.setFullYear(then.getFullYear() + duration.years); + then.setMonth(then.getMonth() + duration.months); + then.setDate(then.getDate() + duration.days); + // set time as milliseconds to get fractions working for minutes/hours + const hoursInMs = duration.hours * 3600 * 1000; + const minutesInMs = duration.minutes * 60 * 1000; + then.setMilliseconds( + then.getMilliseconds() + duration.seconds * 1000 + hoursInMs + minutesInMs, + ); + // Special case weeks + then.setDate(then.getDate() + duration.weeks * 7); + return then; +}; + +/** Convert ISO8601 duration object to seconds */ +export const durationToSeconds = function ( + durationInput: Duration, + startDate?: Date, +): number { + if (!startDate) { + startDate = new Date(); + } + const duration = Object.assign({}, defaultDuration, durationInput); + const timestamp = startDate.getTime(); + const now = new Date(timestamp); + const then = end(duration, now); + // Account for timezone offset between start and end date + const tzStart = startDate.getTimezoneOffset(); + const tzEnd = then.getTimezoneOffset(); + const tzOffsetSeconds = (tzStart - tzEnd) * 60; + const seconds = (then.getTime() - now.getTime()) / 1000; + return seconds + tzOffsetSeconds; +}; diff --git a/webui/src/app/app-errors.service.ts b/webui/src/app/errors/errors.service.ts similarity index 84% rename from webui/src/app/app-errors.service.ts rename to webui/src/app/errors/errors.service.ts index bd289e8..87e378c 100644 --- a/webui/src/app/app-errors.service.ts +++ b/webui/src/app/errors/errors.service.ts @@ -1,8 +1,8 @@ import { Injectable } from "@angular/core"; import { MatSnackBar } from "@angular/material/snack-bar"; -@Injectable() -export class AppErrorsService { +@Injectable({ providedIn: "root" }) +export class ErrorsService { public readonly expiry = 1000 * 10; constructor(private snackBar: MatSnackBar) {} diff --git a/webui/src/app/graphql/codegen.ts b/webui/src/app/graphql/codegen.ts index c5fb0a6..de880f4 100644 --- a/webui/src/app/graphql/codegen.ts +++ b/webui/src/app/graphql/codegen.ts @@ -24,9 +24,11 @@ const config: CodegenConfig = { enumsAsTypes: true, skipTypename: false, strictScalars: true, + // namingConvention: 'keep', scalars: { Date: "string", DateTime: "string", + Duration: "string", Hash20: "string", Void: "void", Year: "number", diff --git a/webui/src/app/graphql/generated/index.ts b/webui/src/app/graphql/generated/index.ts index 1cc8604..cdfde97 100644 --- a/webui/src/app/graphql/generated/index.ts +++ b/webui/src/app/graphql/generated/index.ts @@ -19,6 +19,7 @@ export type Scalars = { Float: { input: number; output: number; } Date: { input: string; output: string; } DateTime: { input: string; output: string; } + Duration: { input: string; output: string; } Hash20: { input: string; output: string; } Void: { input: void; output: void; } Year: { input: number; output: number; } @@ -139,6 +140,26 @@ export type GenreFacetInput = { logic?: InputMaybe; }; +export type HealthCheck = { + __typename?: 'HealthCheck'; + error?: Maybe; + key: Scalars['String']['output']; + status: HealthStatus; + timestamp: Scalars['DateTime']['output']; +}; + +export type HealthQuery = { + __typename?: 'HealthQuery'; + checks: Array; + status: HealthStatus; +}; + +export type HealthStatus = + | 'down' + | 'inactive' + | 'unknown' + | 'up'; + export type Language = | 'af' | 'ar' @@ -228,16 +249,182 @@ export type MetadataSource = { name: Scalars['String']['output']; }; +export type MetricsBucketDuration = + | 'day' + | 'hour' + | 'minute'; + export type Mutation = { __typename?: 'Mutation'; + queue: QueueMutation; torrent: TorrentMutation; }; export type Query = { __typename?: 'Query'; - system: SystemQuery; + health: HealthQuery; + queue: QueueQuery; torrent: TorrentQuery; torrentContent: TorrentContentQuery; + version: Scalars['String']['output']; + workers: WorkersQuery; +}; + +export type QueueEnqueueReprocessTorrentsBatchInput = { + apisDisabled?: InputMaybe; + batchSize?: InputMaybe; + chunkSize?: InputMaybe; + classifierRematch?: InputMaybe; + classifierWorkflow?: InputMaybe; + contentTypes?: InputMaybe>>; + localSearchDisabled?: InputMaybe; + orphans?: InputMaybe; +}; + +export type QueueJob = { + __typename?: 'QueueJob'; + createdAt: Scalars['DateTime']['output']; + error?: Maybe; + id: Scalars['ID']['output']; + maxRetries: Scalars['Int']['output']; + payload: Scalars['String']['output']; + priority: Scalars['Int']['output']; + queue: Scalars['String']['output']; + ranAt?: Maybe; + retries: Scalars['Int']['output']; + runAfter: Scalars['DateTime']['output']; + status: QueueJobStatus; +}; + +export type QueueJobQueueAgg = { + __typename?: 'QueueJobQueueAgg'; + count: Scalars['Int']['output']; + label: Scalars['String']['output']; + value: Scalars['String']['output']; +}; + +export type QueueJobQueueFacetInput = { + aggregate?: InputMaybe; + filter?: InputMaybe>; +}; + +export type QueueJobStatus = + | 'failed' + | 'pending' + | 'processed' + | 'retry'; + +export type QueueJobStatusAgg = { + __typename?: 'QueueJobStatusAgg'; + count: Scalars['Int']['output']; + label: Scalars['String']['output']; + value: QueueJobStatus; +}; + +export type QueueJobStatusFacetInput = { + aggregate?: InputMaybe; + filter?: InputMaybe>; +}; + +export type QueueJobsAggregations = { + __typename?: 'QueueJobsAggregations'; + queue?: Maybe>; + status?: Maybe>; +}; + +export type QueueJobsFacetsInput = { + queue?: InputMaybe; + status?: InputMaybe; +}; + +export type QueueJobsOrderByField = + | 'created_at' + | 'priority' + | 'ran_at'; + +export type QueueJobsOrderByInput = { + descending?: InputMaybe; + field: QueueJobsOrderByField; +}; + +export type QueueJobsQueryInput = { + facets?: InputMaybe; + hasNextPage?: InputMaybe; + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + page?: InputMaybe; + queues?: InputMaybe>; + statuses?: InputMaybe>; + totalCount?: InputMaybe; +}; + +export type QueueJobsQueryResult = { + __typename?: 'QueueJobsQueryResult'; + aggregations: QueueJobsAggregations; + hasNextPage?: Maybe; + items: Array; + totalCount: Scalars['Int']['output']; +}; + +export type QueueMetricsBucket = { + __typename?: 'QueueMetricsBucket'; + count: Scalars['Int']['output']; + createdAtBucket: Scalars['DateTime']['output']; + latency?: Maybe; + queue: Scalars['String']['output']; + ranAtBucket?: Maybe; + status: QueueJobStatus; +}; + +export type QueueMetricsQueryInput = { + bucketDuration: MetricsBucketDuration; + endTime?: InputMaybe; + queues?: InputMaybe>; + startTime?: InputMaybe; + statuses?: InputMaybe>; +}; + +export type QueueMetricsQueryResult = { + __typename?: 'QueueMetricsQueryResult'; + buckets: Array; +}; + +export type QueueMutation = { + __typename?: 'QueueMutation'; + enqueueReprocessTorrentsBatch?: Maybe; + purgeJobs?: Maybe; +}; + + +export type QueueMutationEnqueueReprocessTorrentsBatchArgs = { + input?: InputMaybe; +}; + + +export type QueueMutationPurgeJobsArgs = { + input: QueuePurgeJobsInput; +}; + +export type QueuePurgeJobsInput = { + queues?: InputMaybe>; + statuses?: InputMaybe>; +}; + +export type QueueQuery = { + __typename?: 'QueueQuery'; + jobs: QueueJobsQueryResult; + metrics: QueueMetricsQueryResult; +}; + + +export type QueueQueryJobsArgs = { + input: QueueJobsQueryInput; +}; + + +export type QueueQueryMetricsArgs = { + input: QueueMetricsQueryInput; }; export type ReleaseYearAgg = { @@ -253,17 +440,6 @@ export type ReleaseYearFacetInput = { filter?: InputMaybe>>; }; -export type SearchQueryInput = { - aggregationBudget?: InputMaybe; - cached?: InputMaybe; - /** hasNextPage if true, the search result will include the hasNextPage field, indicating if there are more results to fetch */ - hasNextPage?: InputMaybe; - limit?: InputMaybe; - offset?: InputMaybe; - queryString?: InputMaybe; - totalCount?: InputMaybe; -}; - export type Season = { __typename?: 'Season'; episodes?: Maybe>; @@ -281,11 +457,6 @@ export type SuggestedTag = { name: Scalars['String']['output']; }; -export type SystemQuery = { - __typename?: 'SystemQuery'; - version: Scalars['String']['output']; -}; - export type Torrent = { __typename?: 'Torrent'; createdAt: Scalars['DateTime']['output']; @@ -303,7 +474,7 @@ export type Torrent = { seeders?: Maybe; singleFile?: Maybe; size: Scalars['Int']['output']; - sources: Array; + sources: Array; tagNames: Array; updatedAt: Scalars['DateTime']['output']; }; @@ -358,20 +529,20 @@ export type TorrentContentFacetsInput = { videoSource?: InputMaybe; }; -export type TorrentContentOrderBy = - | 'Files' - | 'InfoHash' - | 'Leechers' - | 'Name' - | 'PublishedAt' - | 'Relevance' - | 'Seeders' - | 'Size' - | 'UpdatedAt'; +export type TorrentContentOrderByField = + | 'files_count' + | 'info_hash' + | 'leechers' + | 'name' + | 'published_at' + | 'relevance' + | 'seeders' + | 'size' + | 'updated_at'; export type TorrentContentOrderByInput = { descending?: InputMaybe; - field: TorrentContentOrderBy; + field: TorrentContentOrderByField; }; export type TorrentContentQuery = { @@ -381,9 +552,22 @@ export type TorrentContentQuery = { export type TorrentContentQuerySearchArgs = { + input: TorrentContentSearchQueryInput; +}; + +export type TorrentContentSearchQueryInput = { + aggregationBudget?: InputMaybe; + cached?: InputMaybe; facets?: InputMaybe; + /** hasNextPage if true, the search result will include the hasNextPage field, indicating if there are more results to fetch */ + hasNextPage?: InputMaybe; + infoHashes?: InputMaybe>; + limit?: InputMaybe; + offset?: InputMaybe; orderBy?: InputMaybe>; - query?: InputMaybe; + page?: InputMaybe; + queryString?: InputMaybe; + totalCount?: InputMaybe; }; export type TorrentContentSearchResult = { @@ -422,6 +606,60 @@ export type TorrentFileTypeFacetInput = { logic?: InputMaybe; }; +export type TorrentFilesOrderByField = + | 'extension' + | 'index' + | 'path' + | 'size'; + +export type TorrentFilesOrderByInput = { + descending?: InputMaybe; + field: TorrentFilesOrderByField; +}; + +export type TorrentFilesQueryInput = { + cached?: InputMaybe; + hasNextPage?: InputMaybe; + infoHashes?: InputMaybe>; + limit?: InputMaybe; + offset?: InputMaybe; + orderBy?: InputMaybe>; + page?: InputMaybe; + totalCount?: InputMaybe; +}; + +export type TorrentFilesQueryResult = { + __typename?: 'TorrentFilesQueryResult'; + hasNextPage?: Maybe; + items: Array; + totalCount: Scalars['Int']['output']; +}; + +export type TorrentListSourcesResult = { + __typename?: 'TorrentListSourcesResult'; + sources: Array; +}; + +export type TorrentMetricsBucket = { + __typename?: 'TorrentMetricsBucket'; + bucket: Scalars['DateTime']['output']; + count: Scalars['Int']['output']; + source: Scalars['String']['output']; + updated: Scalars['Boolean']['output']; +}; + +export type TorrentMetricsQueryInput = { + bucketDuration: MetricsBucketDuration; + endTime?: InputMaybe; + sources?: InputMaybe>; + startTime?: InputMaybe; +}; + +export type TorrentMetricsQueryResult = { + __typename?: 'TorrentMetricsQueryResult'; + buckets: Array; +}; + export type TorrentMutation = { __typename?: 'TorrentMutation'; delete?: Maybe; @@ -455,21 +693,31 @@ export type TorrentMutationSetTagsArgs = { export type TorrentQuery = { __typename?: 'TorrentQuery'; + files: TorrentFilesQueryResult; + listSources: TorrentListSourcesResult; + metrics: TorrentMetricsQueryResult; suggestTags: TorrentSuggestTagsResult; }; +export type TorrentQueryFilesArgs = { + input: TorrentFilesQueryInput; +}; + + +export type TorrentQueryMetricsArgs = { + input: TorrentMetricsQueryInput; +}; + + export type TorrentQuerySuggestTagsArgs = { - query?: InputMaybe; + input?: InputMaybe; }; export type TorrentSource = { __typename?: 'TorrentSource'; - importId?: Maybe; key: Scalars['String']['output']; - leechers?: Maybe; name: Scalars['String']['output']; - seeders?: Maybe; }; export type TorrentSourceAgg = { @@ -486,6 +734,15 @@ export type TorrentSourceFacetInput = { logic?: InputMaybe; }; +export type TorrentSourceInfo = { + __typename?: 'TorrentSourceInfo'; + importId?: Maybe; + key: Scalars['String']['output']; + leechers?: Maybe; + name: Scalars['String']['output']; + seeders?: Maybe; +}; + export type TorrentSuggestTagsResult = { __typename?: 'TorrentSuggestTagsResult'; suggestions: Array; @@ -574,16 +831,52 @@ export type VideoSourceFacetInput = { filter?: InputMaybe>>; }; +export type Worker = { + __typename?: 'Worker'; + key: Scalars['String']['output']; + started: Scalars['Boolean']['output']; +}; + +export type WorkersListAllQueryResult = { + __typename?: 'WorkersListAllQueryResult'; + workers: Array; +}; + +export type WorkersQuery = { + __typename?: 'WorkersQuery'; + listAll: WorkersListAllQueryResult; +}; + export type ContentFragment = { __typename?: 'Content', type: ContentType, source: string, id: string, title: string, releaseDate?: string | null, releaseYear?: number | null, overview?: string | null, runtime?: number | null, voteAverage?: number | null, voteCount?: number | null, createdAt: string, updatedAt: string, metadataSource: { __typename?: 'MetadataSource', key: string, name: string }, originalLanguage?: { __typename?: 'LanguageInfo', id: string, name: string } | null, attributes: Array<{ __typename?: 'ContentAttribute', source: string, key: string, value: string, createdAt: string, updatedAt: string, metadataSource: { __typename?: 'MetadataSource', key: string, name: string } }>, collections: Array<{ __typename?: 'ContentCollection', type: string, source: string, id: string, name: string, createdAt: string, updatedAt: string, metadataSource: { __typename?: 'MetadataSource', key: string, name: string } }>, externalLinks: Array<{ __typename?: 'ExternalLink', url: string, metadataSource: { __typename?: 'MetadataSource', key: string, name: string } }> }; -export type TorrentFragment = { __typename?: 'Torrent', infoHash: string, name: string, size: number, filesStatus: FilesStatus, filesCount?: number | null, hasFilesInfo: boolean, singleFile?: boolean | null, fileType?: FileType | null, seeders?: number | null, leechers?: number | null, tagNames: Array, magnetUri: string, createdAt: string, updatedAt: string, files?: Array<{ __typename?: 'TorrentFile', infoHash: string, index: number, path: string, size: number, fileType?: FileType | null, createdAt: string, updatedAt: string }> | null, sources: Array<{ __typename?: 'TorrentSource', key: string, name: string }> }; +export type QueueJobFragment = { __typename?: 'QueueJob', id: string, queue: string, status: QueueJobStatus, payload: string, priority: number, retries: number, maxRetries: number, runAfter: string, ranAt?: string | null, error?: string | null, createdAt: string }; -export type TorrentContentFragment = { __typename?: 'TorrentContent', id: string, infoHash: string, contentType?: ContentType | null, title: string, video3d?: Video3d | null, videoCodec?: VideoCodec | null, videoModifier?: VideoModifier | null, videoResolution?: VideoResolution | null, videoSource?: VideoSource | null, seeders?: number | null, leechers?: number | null, publishedAt: string, createdAt: string, updatedAt: string, torrent: { __typename?: 'Torrent', infoHash: string, name: string, size: number, filesStatus: FilesStatus, filesCount?: number | null, hasFilesInfo: boolean, singleFile?: boolean | null, fileType?: FileType | null, seeders?: number | null, leechers?: number | null, tagNames: Array, magnetUri: string, createdAt: string, updatedAt: string, files?: Array<{ __typename?: 'TorrentFile', infoHash: string, index: number, path: string, size: number, fileType?: FileType | null, createdAt: string, updatedAt: string }> | null, sources: Array<{ __typename?: 'TorrentSource', key: string, name: string }> }, content?: { __typename?: 'Content', type: ContentType, source: string, id: string, title: string, releaseDate?: string | null, releaseYear?: number | null, overview?: string | null, runtime?: number | null, voteAverage?: number | null, voteCount?: number | null, createdAt: string, updatedAt: string, metadataSource: { __typename?: 'MetadataSource', key: string, name: string }, originalLanguage?: { __typename?: 'LanguageInfo', id: string, name: string } | null, attributes: Array<{ __typename?: 'ContentAttribute', source: string, key: string, value: string, createdAt: string, updatedAt: string, metadataSource: { __typename?: 'MetadataSource', key: string, name: string } }>, collections: Array<{ __typename?: 'ContentCollection', type: string, source: string, id: string, name: string, createdAt: string, updatedAt: string, metadataSource: { __typename?: 'MetadataSource', key: string, name: string } }>, externalLinks: Array<{ __typename?: 'ExternalLink', url: string, metadataSource: { __typename?: 'MetadataSource', key: string, name: string } }> } | null, languages?: Array<{ __typename?: 'LanguageInfo', id: string, name: string }> | null, episodes?: { __typename?: 'Episodes', label: string, seasons: Array<{ __typename?: 'Season', season: number, episodes?: Array | null }> } | null }; +export type QueueJobsQueryResultFragment = { __typename?: 'QueueJobsQueryResult', totalCount: number, hasNextPage?: boolean | null, items: Array<{ __typename?: 'QueueJob', id: string, queue: string, status: QueueJobStatus, payload: string, priority: number, retries: number, maxRetries: number, runAfter: string, ranAt?: string | null, error?: string | null, createdAt: string }>, aggregations: { __typename?: 'QueueJobsAggregations', queue?: Array<{ __typename?: 'QueueJobQueueAgg', value: string, label: string, count: number }> | null, status?: Array<{ __typename?: 'QueueJobStatusAgg', value: QueueJobStatus, label: string, count: number }> | null } }; -export type TorrentContentSearchResultFragment = { __typename?: 'TorrentContentSearchResult', totalCount: number, totalCountIsEstimate: boolean, hasNextPage?: boolean | null, items: Array<{ __typename?: 'TorrentContent', id: string, infoHash: string, contentType?: ContentType | null, title: string, video3d?: Video3d | null, videoCodec?: VideoCodec | null, videoModifier?: VideoModifier | null, videoResolution?: VideoResolution | null, videoSource?: VideoSource | null, seeders?: number | null, leechers?: number | null, publishedAt: string, createdAt: string, updatedAt: string, torrent: { __typename?: 'Torrent', infoHash: string, name: string, size: number, filesStatus: FilesStatus, filesCount?: number | null, hasFilesInfo: boolean, singleFile?: boolean | null, fileType?: FileType | null, seeders?: number | null, leechers?: number | null, tagNames: Array, magnetUri: string, createdAt: string, updatedAt: string, files?: Array<{ __typename?: 'TorrentFile', infoHash: string, index: number, path: string, size: number, fileType?: FileType | null, createdAt: string, updatedAt: string }> | null, sources: Array<{ __typename?: 'TorrentSource', key: string, name: string }> }, content?: { __typename?: 'Content', type: ContentType, source: string, id: string, title: string, releaseDate?: string | null, releaseYear?: number | null, overview?: string | null, runtime?: number | null, voteAverage?: number | null, voteCount?: number | null, createdAt: string, updatedAt: string, metadataSource: { __typename?: 'MetadataSource', key: string, name: string }, originalLanguage?: { __typename?: 'LanguageInfo', id: string, name: string } | null, attributes: Array<{ __typename?: 'ContentAttribute', source: string, key: string, value: string, createdAt: string, updatedAt: string, metadataSource: { __typename?: 'MetadataSource', key: string, name: string } }>, collections: Array<{ __typename?: 'ContentCollection', type: string, source: string, id: string, name: string, createdAt: string, updatedAt: string, metadataSource: { __typename?: 'MetadataSource', key: string, name: string } }>, externalLinks: Array<{ __typename?: 'ExternalLink', url: string, metadataSource: { __typename?: 'MetadataSource', key: string, name: string } }> } | null, languages?: Array<{ __typename?: 'LanguageInfo', id: string, name: string }> | null, episodes?: { __typename?: 'Episodes', label: string, seasons: Array<{ __typename?: 'Season', season: number, episodes?: Array | null }> } | null }>, aggregations: { __typename?: 'TorrentContentAggregations', contentType?: Array<{ __typename?: 'ContentTypeAgg', value?: ContentType | null, label: string, count: number, isEstimate: boolean }> | null, torrentSource?: Array<{ __typename?: 'TorrentSourceAgg', value: string, label: string, count: number, isEstimate: boolean }> | null, torrentTag?: Array<{ __typename?: 'TorrentTagAgg', value: string, label: string, count: number, isEstimate: boolean }> | null, torrentFileType?: Array<{ __typename?: 'TorrentFileTypeAgg', value: FileType, label: string, count: number, isEstimate: boolean }> | null, language?: Array<{ __typename?: 'LanguageAgg', value: Language, label: string, count: number, isEstimate: boolean }> | null, genre?: Array<{ __typename?: 'GenreAgg', value: string, label: string, count: number, isEstimate: boolean }> | null, releaseYear?: Array<{ __typename?: 'ReleaseYearAgg', value?: number | null, label: string, count: number, isEstimate: boolean }> | null, videoResolution?: Array<{ __typename?: 'VideoResolutionAgg', value?: VideoResolution | null, label: string, count: number, isEstimate: boolean }> | null, videoSource?: Array<{ __typename?: 'VideoSourceAgg', value?: VideoSource | null, label: string, count: number, isEstimate: boolean }> | null } }; +export type TorrentFragment = { __typename?: 'Torrent', infoHash: string, name: string, size: number, filesStatus: FilesStatus, filesCount?: number | null, hasFilesInfo: boolean, singleFile?: boolean | null, fileType?: FileType | null, seeders?: number | null, leechers?: number | null, tagNames: Array, magnetUri: string, createdAt: string, updatedAt: string, sources: Array<{ __typename?: 'TorrentSourceInfo', key: string, name: string }> }; + +export type TorrentContentFragment = { __typename?: 'TorrentContent', id: string, infoHash: string, contentType?: ContentType | null, title: string, video3d?: Video3d | null, videoCodec?: VideoCodec | null, videoModifier?: VideoModifier | null, videoResolution?: VideoResolution | null, videoSource?: VideoSource | null, seeders?: number | null, leechers?: number | null, publishedAt: string, createdAt: string, updatedAt: string, torrent: { __typename?: 'Torrent', infoHash: string, name: string, size: number, filesStatus: FilesStatus, filesCount?: number | null, hasFilesInfo: boolean, singleFile?: boolean | null, fileType?: FileType | null, seeders?: number | null, leechers?: number | null, tagNames: Array, magnetUri: string, createdAt: string, updatedAt: string, sources: Array<{ __typename?: 'TorrentSourceInfo', key: string, name: string }> }, content?: { __typename?: 'Content', type: ContentType, source: string, id: string, title: string, releaseDate?: string | null, releaseYear?: number | null, overview?: string | null, runtime?: number | null, voteAverage?: number | null, voteCount?: number | null, createdAt: string, updatedAt: string, metadataSource: { __typename?: 'MetadataSource', key: string, name: string }, originalLanguage?: { __typename?: 'LanguageInfo', id: string, name: string } | null, attributes: Array<{ __typename?: 'ContentAttribute', source: string, key: string, value: string, createdAt: string, updatedAt: string, metadataSource: { __typename?: 'MetadataSource', key: string, name: string } }>, collections: Array<{ __typename?: 'ContentCollection', type: string, source: string, id: string, name: string, createdAt: string, updatedAt: string, metadataSource: { __typename?: 'MetadataSource', key: string, name: string } }>, externalLinks: Array<{ __typename?: 'ExternalLink', url: string, metadataSource: { __typename?: 'MetadataSource', key: string, name: string } }> } | null, languages?: Array<{ __typename?: 'LanguageInfo', id: string, name: string }> | null, episodes?: { __typename?: 'Episodes', label: string, seasons: Array<{ __typename?: 'Season', season: number, episodes?: Array | null }> } | null }; + +export type TorrentContentSearchResultFragment = { __typename?: 'TorrentContentSearchResult', totalCount: number, totalCountIsEstimate: boolean, hasNextPage?: boolean | null, items: Array<{ __typename?: 'TorrentContent', id: string, infoHash: string, contentType?: ContentType | null, title: string, video3d?: Video3d | null, videoCodec?: VideoCodec | null, videoModifier?: VideoModifier | null, videoResolution?: VideoResolution | null, videoSource?: VideoSource | null, seeders?: number | null, leechers?: number | null, publishedAt: string, createdAt: string, updatedAt: string, torrent: { __typename?: 'Torrent', infoHash: string, name: string, size: number, filesStatus: FilesStatus, filesCount?: number | null, hasFilesInfo: boolean, singleFile?: boolean | null, fileType?: FileType | null, seeders?: number | null, leechers?: number | null, tagNames: Array, magnetUri: string, createdAt: string, updatedAt: string, sources: Array<{ __typename?: 'TorrentSourceInfo', key: string, name: string }> }, content?: { __typename?: 'Content', type: ContentType, source: string, id: string, title: string, releaseDate?: string | null, releaseYear?: number | null, overview?: string | null, runtime?: number | null, voteAverage?: number | null, voteCount?: number | null, createdAt: string, updatedAt: string, metadataSource: { __typename?: 'MetadataSource', key: string, name: string }, originalLanguage?: { __typename?: 'LanguageInfo', id: string, name: string } | null, attributes: Array<{ __typename?: 'ContentAttribute', source: string, key: string, value: string, createdAt: string, updatedAt: string, metadataSource: { __typename?: 'MetadataSource', key: string, name: string } }>, collections: Array<{ __typename?: 'ContentCollection', type: string, source: string, id: string, name: string, createdAt: string, updatedAt: string, metadataSource: { __typename?: 'MetadataSource', key: string, name: string } }>, externalLinks: Array<{ __typename?: 'ExternalLink', url: string, metadataSource: { __typename?: 'MetadataSource', key: string, name: string } }> } | null, languages?: Array<{ __typename?: 'LanguageInfo', id: string, name: string }> | null, episodes?: { __typename?: 'Episodes', label: string, seasons: Array<{ __typename?: 'Season', season: number, episodes?: Array | null }> } | null }>, aggregations: { __typename?: 'TorrentContentAggregations', contentType?: Array<{ __typename?: 'ContentTypeAgg', value?: ContentType | null, label: string, count: number, isEstimate: boolean }> | null, torrentSource?: Array<{ __typename?: 'TorrentSourceAgg', value: string, label: string, count: number, isEstimate: boolean }> | null, torrentTag?: Array<{ __typename?: 'TorrentTagAgg', value: string, label: string, count: number, isEstimate: boolean }> | null, torrentFileType?: Array<{ __typename?: 'TorrentFileTypeAgg', value: FileType, label: string, count: number, isEstimate: boolean }> | null, language?: Array<{ __typename?: 'LanguageAgg', value: Language, label: string, count: number, isEstimate: boolean }> | null, genre?: Array<{ __typename?: 'GenreAgg', value: string, label: string, count: number, isEstimate: boolean }> | null, releaseYear?: Array<{ __typename?: 'ReleaseYearAgg', value?: number | null, label: string, count: number, isEstimate: boolean }> | null, videoResolution?: Array<{ __typename?: 'VideoResolutionAgg', value?: VideoResolution | null, label: string, count: number, isEstimate: boolean }> | null, videoSource?: Array<{ __typename?: 'VideoSourceAgg', value?: VideoSource | null, label: string, count: number, isEstimate: boolean }> | null } }; export type TorrentFileFragment = { __typename?: 'TorrentFile', infoHash: string, index: number, path: string, size: number, fileType?: FileType | null, createdAt: string, updatedAt: string }; +export type TorrentFilesQueryResultFragment = { __typename?: 'TorrentFilesQueryResult', totalCount: number, hasNextPage?: boolean | null, items: Array<{ __typename?: 'TorrentFile', infoHash: string, index: number, path: string, size: number, fileType?: FileType | null, createdAt: string, updatedAt: string }> }; + +export type QueueEnqueueReprocessTorrentsBatchMutationVariables = Exact<{ + input: QueueEnqueueReprocessTorrentsBatchInput; +}>; + + +export type QueueEnqueueReprocessTorrentsBatchMutation = { __typename?: 'Mutation', queue: { __typename?: 'QueueMutation', enqueueReprocessTorrentsBatch?: void | null } }; + +export type QueuePurgeJobsMutationVariables = Exact<{ + input: QueuePurgeJobsInput; +}>; + + +export type QueuePurgeJobsMutation = { __typename?: 'Mutation', queue: { __typename?: 'QueueMutation', purgeJobs?: void | null } }; + export type TorrentDeleteMutationVariables = Exact<{ infoHashes: Array | Scalars['Hash20']['input']; }>; @@ -615,38 +908,94 @@ export type TorrentSetTagsMutationVariables = Exact<{ export type TorrentSetTagsMutation = { __typename?: 'Mutation', torrent: { __typename?: 'TorrentMutation', setTags?: void | null } }; -export type SystemQueryQueryVariables = Exact<{ [key: string]: never; }>; +export type HealthCheckQueryVariables = Exact<{ [key: string]: never; }>; -export type SystemQueryQuery = { __typename?: 'Query', system: { __typename?: 'SystemQuery', version: string } }; +export type HealthCheckQuery = { __typename?: 'Query', health: { __typename?: 'HealthQuery', status: HealthStatus, checks: Array<{ __typename?: 'HealthCheck', key: string, status: HealthStatus, timestamp: string, error?: string | null }> }, workers: { __typename?: 'WorkersQuery', listAll: { __typename?: 'WorkersListAllQueryResult', workers: Array<{ __typename?: 'Worker', key: string, started: boolean }> } } }; -export type TorrentContentSearchQueryVariables = Exact<{ - query?: InputMaybe; - facets?: InputMaybe; - orderBy?: InputMaybe | TorrentContentOrderByInput>; +export type QueueJobsQueryVariables = Exact<{ + input: QueueJobsQueryInput; }>; -export type TorrentContentSearchQuery = { __typename?: 'Query', torrentContent: { __typename?: 'TorrentContentQuery', search: { __typename?: 'TorrentContentSearchResult', totalCount: number, totalCountIsEstimate: boolean, hasNextPage?: boolean | null, items: Array<{ __typename?: 'TorrentContent', id: string, infoHash: string, contentType?: ContentType | null, title: string, video3d?: Video3d | null, videoCodec?: VideoCodec | null, videoModifier?: VideoModifier | null, videoResolution?: VideoResolution | null, videoSource?: VideoSource | null, seeders?: number | null, leechers?: number | null, publishedAt: string, createdAt: string, updatedAt: string, torrent: { __typename?: 'Torrent', infoHash: string, name: string, size: number, filesStatus: FilesStatus, filesCount?: number | null, hasFilesInfo: boolean, singleFile?: boolean | null, fileType?: FileType | null, seeders?: number | null, leechers?: number | null, tagNames: Array, magnetUri: string, createdAt: string, updatedAt: string, files?: Array<{ __typename?: 'TorrentFile', infoHash: string, index: number, path: string, size: number, fileType?: FileType | null, createdAt: string, updatedAt: string }> | null, sources: Array<{ __typename?: 'TorrentSource', key: string, name: string }> }, content?: { __typename?: 'Content', type: ContentType, source: string, id: string, title: string, releaseDate?: string | null, releaseYear?: number | null, overview?: string | null, runtime?: number | null, voteAverage?: number | null, voteCount?: number | null, createdAt: string, updatedAt: string, metadataSource: { __typename?: 'MetadataSource', key: string, name: string }, originalLanguage?: { __typename?: 'LanguageInfo', id: string, name: string } | null, attributes: Array<{ __typename?: 'ContentAttribute', source: string, key: string, value: string, createdAt: string, updatedAt: string, metadataSource: { __typename?: 'MetadataSource', key: string, name: string } }>, collections: Array<{ __typename?: 'ContentCollection', type: string, source: string, id: string, name: string, createdAt: string, updatedAt: string, metadataSource: { __typename?: 'MetadataSource', key: string, name: string } }>, externalLinks: Array<{ __typename?: 'ExternalLink', url: string, metadataSource: { __typename?: 'MetadataSource', key: string, name: string } }> } | null, languages?: Array<{ __typename?: 'LanguageInfo', id: string, name: string }> | null, episodes?: { __typename?: 'Episodes', label: string, seasons: Array<{ __typename?: 'Season', season: number, episodes?: Array | null }> } | null }>, aggregations: { __typename?: 'TorrentContentAggregations', contentType?: Array<{ __typename?: 'ContentTypeAgg', value?: ContentType | null, label: string, count: number, isEstimate: boolean }> | null, torrentSource?: Array<{ __typename?: 'TorrentSourceAgg', value: string, label: string, count: number, isEstimate: boolean }> | null, torrentTag?: Array<{ __typename?: 'TorrentTagAgg', value: string, label: string, count: number, isEstimate: boolean }> | null, torrentFileType?: Array<{ __typename?: 'TorrentFileTypeAgg', value: FileType, label: string, count: number, isEstimate: boolean }> | null, language?: Array<{ __typename?: 'LanguageAgg', value: Language, label: string, count: number, isEstimate: boolean }> | null, genre?: Array<{ __typename?: 'GenreAgg', value: string, label: string, count: number, isEstimate: boolean }> | null, releaseYear?: Array<{ __typename?: 'ReleaseYearAgg', value?: number | null, label: string, count: number, isEstimate: boolean }> | null, videoResolution?: Array<{ __typename?: 'VideoResolutionAgg', value?: VideoResolution | null, label: string, count: number, isEstimate: boolean }> | null, videoSource?: Array<{ __typename?: 'VideoSourceAgg', value?: VideoSource | null, label: string, count: number, isEstimate: boolean }> | null } } } }; +export type QueueJobsQuery = { __typename?: 'Query', queue: { __typename?: 'QueueQuery', jobs: { __typename?: 'QueueJobsQueryResult', totalCount: number, hasNextPage?: boolean | null, items: Array<{ __typename?: 'QueueJob', id: string, queue: string, status: QueueJobStatus, payload: string, priority: number, retries: number, maxRetries: number, runAfter: string, ranAt?: string | null, error?: string | null, createdAt: string }>, aggregations: { __typename?: 'QueueJobsAggregations', queue?: Array<{ __typename?: 'QueueJobQueueAgg', value: string, label: string, count: number }> | null, status?: Array<{ __typename?: 'QueueJobStatusAgg', value: QueueJobStatus, label: string, count: number }> | null } } } }; + +export type QueueMetricsQueryVariables = Exact<{ + input: QueueMetricsQueryInput; +}>; + + +export type QueueMetricsQuery = { __typename?: 'Query', queue: { __typename?: 'QueueQuery', metrics: { __typename?: 'QueueMetricsQueryResult', buckets: Array<{ __typename?: 'QueueMetricsBucket', queue: string, status: QueueJobStatus, createdAtBucket: string, ranAtBucket?: string | null, count: number, latency?: string | null }> } } }; + +export type TorrentContentSearchQueryVariables = Exact<{ + input: TorrentContentSearchQueryInput; +}>; + + +export type TorrentContentSearchQuery = { __typename?: 'Query', torrentContent: { __typename?: 'TorrentContentQuery', search: { __typename?: 'TorrentContentSearchResult', totalCount: number, totalCountIsEstimate: boolean, hasNextPage?: boolean | null, items: Array<{ __typename?: 'TorrentContent', id: string, infoHash: string, contentType?: ContentType | null, title: string, video3d?: Video3d | null, videoCodec?: VideoCodec | null, videoModifier?: VideoModifier | null, videoResolution?: VideoResolution | null, videoSource?: VideoSource | null, seeders?: number | null, leechers?: number | null, publishedAt: string, createdAt: string, updatedAt: string, torrent: { __typename?: 'Torrent', infoHash: string, name: string, size: number, filesStatus: FilesStatus, filesCount?: number | null, hasFilesInfo: boolean, singleFile?: boolean | null, fileType?: FileType | null, seeders?: number | null, leechers?: number | null, tagNames: Array, magnetUri: string, createdAt: string, updatedAt: string, sources: Array<{ __typename?: 'TorrentSourceInfo', key: string, name: string }> }, content?: { __typename?: 'Content', type: ContentType, source: string, id: string, title: string, releaseDate?: string | null, releaseYear?: number | null, overview?: string | null, runtime?: number | null, voteAverage?: number | null, voteCount?: number | null, createdAt: string, updatedAt: string, metadataSource: { __typename?: 'MetadataSource', key: string, name: string }, originalLanguage?: { __typename?: 'LanguageInfo', id: string, name: string } | null, attributes: Array<{ __typename?: 'ContentAttribute', source: string, key: string, value: string, createdAt: string, updatedAt: string, metadataSource: { __typename?: 'MetadataSource', key: string, name: string } }>, collections: Array<{ __typename?: 'ContentCollection', type: string, source: string, id: string, name: string, createdAt: string, updatedAt: string, metadataSource: { __typename?: 'MetadataSource', key: string, name: string } }>, externalLinks: Array<{ __typename?: 'ExternalLink', url: string, metadataSource: { __typename?: 'MetadataSource', key: string, name: string } }> } | null, languages?: Array<{ __typename?: 'LanguageInfo', id: string, name: string }> | null, episodes?: { __typename?: 'Episodes', label: string, seasons: Array<{ __typename?: 'Season', season: number, episodes?: Array | null }> } | null }>, aggregations: { __typename?: 'TorrentContentAggregations', contentType?: Array<{ __typename?: 'ContentTypeAgg', value?: ContentType | null, label: string, count: number, isEstimate: boolean }> | null, torrentSource?: Array<{ __typename?: 'TorrentSourceAgg', value: string, label: string, count: number, isEstimate: boolean }> | null, torrentTag?: Array<{ __typename?: 'TorrentTagAgg', value: string, label: string, count: number, isEstimate: boolean }> | null, torrentFileType?: Array<{ __typename?: 'TorrentFileTypeAgg', value: FileType, label: string, count: number, isEstimate: boolean }> | null, language?: Array<{ __typename?: 'LanguageAgg', value: Language, label: string, count: number, isEstimate: boolean }> | null, genre?: Array<{ __typename?: 'GenreAgg', value: string, label: string, count: number, isEstimate: boolean }> | null, releaseYear?: Array<{ __typename?: 'ReleaseYearAgg', value?: number | null, label: string, count: number, isEstimate: boolean }> | null, videoResolution?: Array<{ __typename?: 'VideoResolutionAgg', value?: VideoResolution | null, label: string, count: number, isEstimate: boolean }> | null, videoSource?: Array<{ __typename?: 'VideoSourceAgg', value?: VideoSource | null, label: string, count: number, isEstimate: boolean }> | null } } } }; + +export type TorrentFilesQueryVariables = Exact<{ + input: TorrentFilesQueryInput; +}>; + + +export type TorrentFilesQuery = { __typename?: 'Query', torrent: { __typename?: 'TorrentQuery', files: { __typename?: 'TorrentFilesQueryResult', totalCount: number, hasNextPage?: boolean | null, items: Array<{ __typename?: 'TorrentFile', infoHash: string, index: number, path: string, size: number, fileType?: FileType | null, createdAt: string, updatedAt: string }> } } }; + +export type TorrentMetricsQueryVariables = Exact<{ + input: TorrentMetricsQueryInput; +}>; + + +export type TorrentMetricsQuery = { __typename?: 'Query', torrent: { __typename?: 'TorrentQuery', metrics: { __typename?: 'TorrentMetricsQueryResult', buckets: Array<{ __typename?: 'TorrentMetricsBucket', source: string, updated: boolean, bucket: string, count: number }> }, listSources: { __typename?: 'TorrentListSourcesResult', sources: Array<{ __typename?: 'TorrentSource', key: string, name: string }> } } }; export type TorrentSuggestTagsQueryVariables = Exact<{ - query: SuggestTagsQueryInput; + input: SuggestTagsQueryInput; }>; export type TorrentSuggestTagsQuery = { __typename?: 'Query', torrent: { __typename?: 'TorrentQuery', suggestTags: { __typename?: 'TorrentSuggestTagsResult', suggestions: Array<{ __typename?: 'SuggestedTag', name: string, count: number }> } } }; -export const TorrentFileFragmentDoc = gql` - fragment TorrentFile on TorrentFile { - infoHash - index - path - size - fileType +export type VersionQueryVariables = Exact<{ [key: string]: never; }>; + + +export type VersionQuery = { __typename?: 'Query', version: string }; + +export const QueueJobFragmentDoc = gql` + fragment QueueJob on QueueJob { + id + queue + status + payload + priority + retries + maxRetries + runAfter + ranAt + error createdAt - updatedAt } `; +export const QueueJobsQueryResultFragmentDoc = gql` + fragment QueueJobsQueryResult on QueueJobsQueryResult { + items { + ...QueueJob + } + totalCount + hasNextPage + aggregations { + queue { + value + label + count + } + status { + value + label + count + } + } +} + ${QueueJobFragmentDoc}`; export const TorrentFragmentDoc = gql` fragment Torrent on Torrent { infoHash @@ -657,9 +1006,6 @@ export const TorrentFragmentDoc = gql` hasFilesInfo singleFile fileType - files { - ...TorrentFile - } sources { key name @@ -671,7 +1017,7 @@ export const TorrentFragmentDoc = gql` createdAt updatedAt } - ${TorrentFileFragmentDoc}`; + `; export const ContentFragmentDoc = gql` fragment Content on Content { type @@ -828,6 +1174,62 @@ export const TorrentContentSearchResultFragmentDoc = gql` } } ${TorrentContentFragmentDoc}`; +export const TorrentFileFragmentDoc = gql` + fragment TorrentFile on TorrentFile { + infoHash + index + path + size + fileType + createdAt + updatedAt +} + `; +export const TorrentFilesQueryResultFragmentDoc = gql` + fragment TorrentFilesQueryResult on TorrentFilesQueryResult { + items { + ...TorrentFile + } + totalCount + hasNextPage +} + ${TorrentFileFragmentDoc}`; +export const QueueEnqueueReprocessTorrentsBatchDocument = gql` + mutation QueueEnqueueReprocessTorrentsBatch($input: QueueEnqueueReprocessTorrentsBatchInput!) { + queue { + enqueueReprocessTorrentsBatch(input: $input) + } +} + `; + + @Injectable({ + providedIn: 'root' + }) + export class QueueEnqueueReprocessTorrentsBatchGQL extends Apollo.Mutation { + override document = QueueEnqueueReprocessTorrentsBatchDocument; + + constructor(apollo: Apollo.Apollo) { + super(apollo); + } + } +export const QueuePurgeJobsDocument = gql` + mutation QueuePurgeJobs($input: QueuePurgeJobsInput!) { + queue { + purgeJobs(input: $input) + } +} + `; + + @Injectable({ + providedIn: 'root' + }) + export class QueuePurgeJobsGQL extends Apollo.Mutation { + override document = QueuePurgeJobsDocument; + + constructor(apollo: Apollo.Apollo) { + super(apollo); + } + } export const TorrentDeleteDocument = gql` mutation TorrentDelete($infoHashes: [Hash20!]!) { torrent { @@ -900,10 +1302,24 @@ export const TorrentSetTagsDocument = gql` super(apollo); } } -export const SystemQueryDocument = gql` - query SystemQuery { - system { - version +export const HealthCheckDocument = gql` + query HealthCheck { + health { + status + checks { + key + status + timestamp + error + } + } + workers { + listAll { + workers { + key + started + } + } } } `; @@ -911,17 +1327,64 @@ export const SystemQueryDocument = gql` @Injectable({ providedIn: 'root' }) - export class SystemQueryGQL extends Apollo.Query { - override document = SystemQueryDocument; + export class HealthCheckGQL extends Apollo.Query { + override document = HealthCheckDocument; + + constructor(apollo: Apollo.Apollo) { + super(apollo); + } + } +export const QueueJobsDocument = gql` + query QueueJobs($input: QueueJobsQueryInput!) { + queue { + jobs(input: $input) { + ...QueueJobsQueryResult + } + } +} + ${QueueJobsQueryResultFragmentDoc}`; + + @Injectable({ + providedIn: 'root' + }) + export class QueueJobsGQL extends Apollo.Query { + override document = QueueJobsDocument; + + constructor(apollo: Apollo.Apollo) { + super(apollo); + } + } +export const QueueMetricsDocument = gql` + query QueueMetrics($input: QueueMetricsQueryInput!) { + queue { + metrics(input: $input) { + buckets { + queue + status + createdAtBucket + ranAtBucket + count + latency + } + } + } +} + `; + + @Injectable({ + providedIn: 'root' + }) + export class QueueMetricsGQL extends Apollo.Query { + override document = QueueMetricsDocument; constructor(apollo: Apollo.Apollo) { super(apollo); } } export const TorrentContentSearchDocument = gql` - query TorrentContentSearch($query: SearchQueryInput, $facets: TorrentContentFacetsInput, $orderBy: [TorrentContentOrderByInput!]) { + query TorrentContentSearch($input: TorrentContentSearchQueryInput!) { torrentContent { - search(query: $query, facets: $facets, orderBy: $orderBy) { + search(input: $input) { ...TorrentContentSearchResult } } @@ -938,10 +1401,61 @@ export const TorrentContentSearchDocument = gql` super(apollo); } } -export const TorrentSuggestTagsDocument = gql` - query TorrentSuggestTags($query: SuggestTagsQueryInput!) { +export const TorrentFilesDocument = gql` + query TorrentFiles($input: TorrentFilesQueryInput!) { torrent { - suggestTags(query: $query) { + files(input: $input) { + ...TorrentFilesQueryResult + } + } +} + ${TorrentFilesQueryResultFragmentDoc}`; + + @Injectable({ + providedIn: 'root' + }) + export class TorrentFilesGQL extends Apollo.Query { + override document = TorrentFilesDocument; + + constructor(apollo: Apollo.Apollo) { + super(apollo); + } + } +export const TorrentMetricsDocument = gql` + query TorrentMetrics($input: TorrentMetricsQueryInput!) { + torrent { + metrics(input: $input) { + buckets { + source + updated + bucket + count + } + } + listSources { + sources { + key + name + } + } + } +} + `; + + @Injectable({ + providedIn: 'root' + }) + export class TorrentMetricsGQL extends Apollo.Query { + override document = TorrentMetricsDocument; + + constructor(apollo: Apollo.Apollo) { + super(apollo); + } + } +export const TorrentSuggestTagsDocument = gql` + query TorrentSuggestTags($input: SuggestTagsQueryInput!) { + torrent { + suggestTags(input: $input) { suggestions { name count @@ -957,6 +1471,22 @@ export const TorrentSuggestTagsDocument = gql` export class TorrentSuggestTagsGQL extends Apollo.Query { override document = TorrentSuggestTagsDocument; + constructor(apollo: Apollo.Apollo) { + super(apollo); + } + } +export const VersionDocument = gql` + query Version { + version +} + `; + + @Injectable({ + providedIn: 'root' + }) + export class VersionGQL extends Apollo.Query { + override document = VersionDocument; + constructor(apollo: Apollo.Apollo) { super(apollo); } diff --git a/webui/src/app/graphql/graphql.service.ts b/webui/src/app/graphql/graphql.service.ts index 1408eb3..46a2027 100644 --- a/webui/src/app/graphql/graphql.service.ts +++ b/webui/src/app/graphql/graphql.service.ts @@ -7,21 +7,6 @@ import * as generated from "./generated"; export class GraphQLService { constructor(private readonly apollo: Apollo) {} - torrentContentSearch( - input: generated.TorrentContentSearchQueryVariables, - ): Observable { - return this.apollo - .query< - generated.TorrentContentSearchQuery, - generated.TorrentContentSearchQueryVariables - >({ - query: generated.TorrentContentSearchDocument, - variables: input, - fetchPolicy, - }) - .pipe(map((r) => r.data.torrentContent.search)); - } - torrentDelete( input: generated.TorrentDeleteMutationVariables, ): Observable { @@ -96,15 +81,6 @@ export class GraphQLService { }) .pipe(map((r) => r.data.torrent.suggestTags)); } - - systemQuery(): Observable { - return this.apollo - .query({ - query: generated.SystemQueryDocument, - fetchPolicy, - }) - .pipe(map((r) => r.data.system)); - } } const fetchPolicy = "no-cache"; diff --git a/webui/src/app/health/_health-widget-component.theme.scss b/webui/src/app/health/_health-widget-component.theme.scss new file mode 100644 index 0000000..3710f39 --- /dev/null +++ b/webui/src/app/health/_health-widget-component.theme.scss @@ -0,0 +1,10 @@ +@use "@angular/material" as mat; + +@mixin theme($theme) { + .health-icon-down, + .health-icon-error { + mat-icon { + color: mat.get-theme-color($theme, error, 80); + } + } +} diff --git a/webui/src/app/health/health-card.component.html b/webui/src/app/health/health-card.component.html new file mode 100644 index 0000000..98babf7 --- /dev/null +++ b/webui/src/app/health/health-card.component.html @@ -0,0 +1,22 @@ + + + + +

+ {{ health.result.icon }} + {{ + t("health.bitmagnet_is_status", { + status: t( + "health.statuses." + + (health.result.error ? "down" : health.result.status) + ) + }) + }} +

+
+
+ + + +
+
diff --git a/webui/src/app/health/health-card.component.scss b/webui/src/app/health/health-card.component.scss new file mode 100644 index 0000000..b852740 --- /dev/null +++ b/webui/src/app/health/health-card.component.scss @@ -0,0 +1,16 @@ +.dashboard-card-health { + position: absolute; + top: 15px; + left: 15px; + right: 15px; + bottom: 15px; + h3 { + margin-top: 0; + mat-icon { + position: relative; + top: 3px; + margin-left: 4px; + margin-right: 6px; + } + } +} diff --git a/webui/src/app/health/health-card.component.ts b/webui/src/app/health/health-card.component.ts new file mode 100644 index 0000000..46ddf0c --- /dev/null +++ b/webui/src/app/health/health-card.component.ts @@ -0,0 +1,12 @@ +import { Component, inject } from "@angular/core"; +import { HealthService } from "./health.service"; + +@Component({ + selector: "app-health-card", + standalone: false, + templateUrl: "./health-card.component.html", + styleUrl: "./health-card.component.scss", +}) +export class HealthCardComponent { + health = inject(HealthService); +} diff --git a/webui/src/app/health/health-summary.component.html b/webui/src/app/health/health-summary.component.html new file mode 100644 index 0000000..326f4fc --- /dev/null +++ b/webui/src/app/health/health-summary.component.html @@ -0,0 +1,52 @@ + + @if (health.result.error) { +

{{ t("health.check_failed_with_error") }}: {{ health.result.error }}

+ } @else { + + + + + + + @if (health.result.status === "down") { + + } + + + + @for (check of health.result.checks; track check.key) { + + + + + @if (health.result.status === "down") { + + } + + } + @for (worker of health.result.workers; track worker.key) { + + + + + @if (health.result.status === "down") { + + } + + } + +
{{ t("health.component") }}{{ t("general.status") }}{{ t("general.error") }}
+ {{ check.icon }} + {{ t("health.components." + check.key) }}{{ t("health.statuses." + check.status) }}{{ check.error }}
+ {{ worker.icon }} + + {{ t("health.worker") }}: {{ t("health.workers." + worker.key) }} + + {{ + t( + "health.statuses." + (worker.started ? "started" : "inactive") + ) + }} +
+ } +
diff --git a/webui/src/app/health/health-summary.component.scss b/webui/src/app/health/health-summary.component.scss new file mode 100644 index 0000000..34d2904 --- /dev/null +++ b/webui/src/app/health/health-summary.component.scss @@ -0,0 +1,9 @@ +.table-health { + th, + td { + padding-right: 20px; + } + th { + text-align: left; + } +} diff --git a/webui/src/app/health/health-summary.component.ts b/webui/src/app/health/health-summary.component.ts new file mode 100644 index 0000000..a395e32 --- /dev/null +++ b/webui/src/app/health/health-summary.component.ts @@ -0,0 +1,12 @@ +import { Component, inject } from "@angular/core"; +import { HealthService } from "./health.service"; + +@Component({ + selector: "app-health-summary", + standalone: false, + templateUrl: "./health-summary.component.html", + styleUrl: "./health-summary.component.scss", +}) +export class HealthSummaryComponent { + health = inject(HealthService); +} diff --git a/webui/src/app/health/health-widget.component.html b/webui/src/app/health/health-widget.component.html new file mode 100644 index 0000000..486a356 --- /dev/null +++ b/webui/src/app/health/health-widget.component.html @@ -0,0 +1,35 @@ + + + +

+ {{ t("health.summary") }}: + {{ + t("health.bitmagnet_is_status", { + status: t( + "health.statuses." + + (health.result.error ? "down" : health.result.status) + ) + }) + }} +

+ + + + + + +
+
diff --git a/webui/src/assets/.gitkeep b/webui/src/app/health/health-widget.component.scss similarity index 100% rename from webui/src/assets/.gitkeep rename to webui/src/app/health/health-widget.component.scss diff --git a/webui/src/app/health/health-widget.component.spec.ts b/webui/src/app/health/health-widget.component.spec.ts new file mode 100644 index 0000000..cac88ee --- /dev/null +++ b/webui/src/app/health/health-widget.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from "@angular/core/testing"; + +import { appConfig } from "../app.config"; +import { HealthWidgetComponent } from "./health-widget.component"; +import { HealthModule } from "./health.module"; + +describe("HealthComponent", () => { + let component: HealthWidgetComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + ...appConfig, + imports: [HealthModule], + }).compileComponents(); + + fixture = TestBed.createComponent(HealthWidgetComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it("should create", () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/webui/src/app/health/health-widget.component.ts b/webui/src/app/health/health-widget.component.ts new file mode 100644 index 0000000..197a26d --- /dev/null +++ b/webui/src/app/health/health-widget.component.ts @@ -0,0 +1,14 @@ +import { Component, inject } from "@angular/core"; +import { MatDialog } from "@angular/material/dialog"; +import { HealthService } from "./health.service"; + +@Component({ + selector: "app-health-widget", + standalone: false, + templateUrl: "./health-widget.component.html", + styleUrl: "./health-widget.component.scss", +}) +export class HealthWidgetComponent { + health = inject(HealthService); + dialog = inject(MatDialog); +} diff --git a/webui/src/app/health/health.module.ts b/webui/src/app/health/health.module.ts new file mode 100644 index 0000000..5ad0720 --- /dev/null +++ b/webui/src/app/health/health.module.ts @@ -0,0 +1,49 @@ +import { NgModule } from "@angular/core"; +import { TranslocoDirective } from "@jsverse/transloco"; +import { MatIcon } from "@angular/material/icon"; +import { MatTooltip } from "@angular/material/tooltip"; +import { AsyncPipe } from "@angular/common"; +import { MatDialogClose, MatDialogModule } from "@angular/material/dialog"; +import { MatButton, MatIconButton } from "@angular/material/button"; +import { + MatCard, + MatCardContent, + MatCardHeader, + MatCardTitle, +} from "@angular/material/card"; +import { MatGridTile } from "@angular/material/grid-list"; +import { MatMenu, MatMenuItem } from "@angular/material/menu"; +import { GraphQLModule } from "../graphql/graphql.module"; +import { HealthCardComponent } from "./health-card.component"; +import { HealthSummaryComponent } from "./health-summary.component"; +import { HealthWidgetComponent } from "./health-widget.component"; +import { HealthService } from "./health.service"; + +@NgModule({ + imports: [ + GraphQLModule, + TranslocoDirective, + MatIcon, + MatTooltip, + AsyncPipe, + MatDialogModule, + MatButton, + MatDialogClose, + MatIconButton, + MatCard, + MatCardContent, + MatCardHeader, + MatCardTitle, + MatGridTile, + MatMenu, + MatMenuItem, + ], + declarations: [ + HealthCardComponent, + HealthSummaryComponent, + HealthWidgetComponent, + ], + providers: [HealthService], + exports: [HealthCardComponent, HealthSummaryComponent, HealthWidgetComponent], +}) +export class HealthModule {} diff --git a/webui/src/app/health/health.service.ts b/webui/src/app/health/health.service.ts new file mode 100644 index 0000000..427620e --- /dev/null +++ b/webui/src/app/health/health.service.ts @@ -0,0 +1,108 @@ +import { inject } from "@angular/core"; +import { Apollo } from "apollo-angular"; +import { BehaviorSubject, map } from "rxjs"; +import * as generated from "../graphql/generated"; + +export type HealthStatus = + | generated.HealthStatus + | "started" + | "error" + | "degraded"; + +const icons: Record = { + error: "error", + degraded: "warning", + down: "warning", + unknown: "pending", + inactive: "circle", + up: "check_circle", + started: "play_circle", +}; + +type Check = generated.HealthCheck & { + icon: string; +}; + +type Worker = generated.Worker & { + icon: string; +}; + +type Result = { + status: HealthStatus; + checks: Check[]; + workers: Worker[]; + error: Error | null; + icon: string; +}; + +const initialResult: Result = { + status: "unknown", + checks: [], + icon: icons.unknown, + workers: [], + error: null, +}; + +const pollInterval = 10000; + +export class HealthService { + private apollo = inject(Apollo); + + private resultSubject = new BehaviorSubject(initialResult); + + result$ = this.resultSubject.asObservable(); + + result = initialResult; + + constructor() { + this.watchQuery(); + this.result$.subscribe((result) => { + this.result = result; + }); + } + + private watchQuery() { + this.apollo + .watchQuery< + generated.HealthCheckQuery, + generated.HealthCheckQueryVariables + >({ + query: generated.HealthCheckDocument, + fetchPolicy: "no-cache", + pollInterval, + }) + .valueChanges.pipe( + map( + (r): Result => ({ + status: + r.data.health.status === "down" + ? "degraded" + : r.data.health.status, + checks: r.data.health.checks.map((c) => ({ + ...c, + icon: icons[c.status], + })), + workers: r.data.workers.listAll.workers.map((w) => ({ + ...w, + icon: icons[w.started ? "started" : "inactive"], + })), + icon: icons[r.data.health.status], + error: null, + }), + ), + ) + .subscribe({ + next: (result) => this.resultSubject.next(result), + error: (error: Error) => { + this.resultSubject.next({ + status: "error", + checks: [], + workers: [], + error, + icon: icons.error, + }); + setTimeout(this.watchQuery.bind(this), pollInterval); + }, + }); + } +} diff --git a/webui/src/app/i18n/translate-manager.service.ts b/webui/src/app/i18n/translate-manager.service.ts new file mode 100644 index 0000000..0ae2569 --- /dev/null +++ b/webui/src/app/i18n/translate-manager.service.ts @@ -0,0 +1,36 @@ +import { inject, Injectable } from "@angular/core"; +import { LangDefinition, TranslocoService } from "@jsverse/transloco"; +import { BrowserStorageService } from "../browser-storage/browser-storage.service"; + +const LOCAL_STORAGE_KEY = "bitmagnet-language"; + +@Injectable({ providedIn: "root" }) +export class TranslateManager { + transloco = inject(TranslocoService); + private browserStorage = inject(BrowserStorageService); + + availableLanguages = this.transloco.getAvailableLangs() as LangDefinition[]; + + constructor() { + this.transloco.setActiveLang(this.getPreferredLanguage()); + } + + getPreferredLanguage(): string { + return this.getStoredLanguage() ?? this.getAutoLanguage(); + } + + getStoredLanguage(): string | undefined { + const value = this.browserStorage.get(LOCAL_STORAGE_KEY); + return value && this.transloco.isLang(value) ? value : undefined; + } + + getAutoLanguage(): string { + const navLang = navigator?.language?.split("-")?.[0]; + return this.transloco.isLang(navLang) ? navLang : "en"; + } + + setLanguage(lang: string) { + this.transloco.setActiveLang(lang); + this.browserStorage.set(LOCAL_STORAGE_KEY, lang); + } +} diff --git a/webui/src/app/i18n/translations.ts b/webui/src/app/i18n/translations.ts new file mode 100644 index 0000000..983f871 --- /dev/null +++ b/webui/src/app/i18n/translations.ts @@ -0,0 +1,29 @@ +import ar from "./translations/ar.json"; +import de from "./translations/de.json"; +import en from "./translations/en.json"; +import es from "./translations/es.json"; +import fr from "./translations/fr.json"; +import hi from "./translations/hi.json"; +import ja from "./translations/ja.json"; +import nl from "./translations/nl.json"; +import pt from "./translations/pt.json"; +import ru from "./translations/ru.json"; +import tr from "./translations/tr.json"; +import uk from "./translations/uk.json"; +import zh from "./translations/zh.json"; + +export default { + ar, + de, + en, + es, + fr, + hi, + ja, + nl, + pt, + ru, + tr, + uk, + zh, +}; diff --git a/webui/src/app/i18n/translations/ar.json b/webui/src/app/i18n/translations/ar.json new file mode 100644 index 0000000..840677f --- /dev/null +++ b/webui/src/app/i18n/translations/ar.json @@ -0,0 +1,297 @@ +{ + "content_types": { + "plural": { + "all": "الكل", + "audiobook": "الكتب الصوتية", + "comic": "القصص المصورة", + "ebook": "الكتب الإلكترونية", + "movie": "الأفلام", + "music": "الموسيقى", + "null": "غير معروف", + "software": "البرمجيات", + "tv_show": "برامج التلفاز", + "xxx": "الإباحية" + }, + "singular": { + "audiobook": "كتاب صوتي", + "comic": "قصة مصورة", + "ebook": "كتاب إلكتروني", + "movie": "فيلم", + "music": "موسيقى", + "null": "غير معروف", + "software": "برمجيات", + "tv_show": "برنامج تلفزيوني", + "xxx": "الإباحية" + } + }, + "dashboard": { + "event": { + "created": "تم الإنشاء", + "failed": "فشل", + "processed": "تمت المعالجة", + "updated": "تم التحديث" + }, + "interval": { + "all": "الكل", + "days": "يوم", + "days_1": "يوم واحد", + "hours": "ساعة", + "hours_1": "ساعة واحدة", + "hours_12": "12 ساعة", + "hours_6": "6 ساعة", + "minutes": "دقيقة", + "minutes_1": "1 دقيقة", + "minutes_15": "15 دقائق", + "minutes_30": "30 دقائق", + "minutes_5": "5 دقائق", + "off": "إيقاف", + "seconds_10": "10 ثواني", + "seconds_30": "30 ثانية", + "weeks_1": "1 أسبوع" + }, + "metrics": { + "event": "حدث", + "resolution": "الدقة", + "throughput": "معدل النقل", + "timeframe": "الإطار الزمني" + }, + "queues": { + "created": "تم الإنشاء", + "created_at": "تم الإنشاء في", + "enqueue_jobs": "إدراج الوظائف في الطابور", + "enqueue_torrent_processing_batch": "إدراج دفعة معالجة التورنت في الطابور", + "failed": "فشل", + "force_rematch": "فرض إعادة المطابقة للمحتوى المطابق بالفعل", + "jobs_enqueued": "الوظائف المدرجة في الطابور", + "latency": "التأخير", + "match_content_by_external_api_search": "مطابقة المحتوى من خلال البحث في API الخارجية", + "match_content_by_local_search": "مطابقة المحتوى من خلال البحث المحلي", + "payload": "الحمولة", + "pending": "قيد الانتظار", + "priority": "الأولوية", + "process_orphaned_torrents_only": "معالجة التورنت اليتيم فقط", + "processed": "تمت المعالجة", + "purge_jobs": "تنظيف الوظائف", + "purge_queue_jobs": "تنظيف وظائف الطابور", + "queue": "الطابور", + "queue_purged": "تم تنظيف الطابور", + "queues": "الطوابير", + "ran_at": "تم التشغيل في", + "retry": "إعادة المحاولة", + "total_counts_by_status": "إجمالي العد حسب الحالة" + } + }, + "facets": { + "content_type": "نوع المحتوى", + "file_type": "نوع الملف", + "genre": "النوع", + "language": "اللغة", + "queue": "الطابور", + "status": "الحالة", + "torrent_source": "مصدر التورنت", + "torrent_tag": "علامة التورنت", + "video_resolution": "دقة الفيديو", + "video_source": "مصدر الفيديو" + }, + "file_types": { + "archive": "أرشيف", + "audio": "صوت", + "data": "بيانات", + "document": "وثيقة", + "image": "صورة", + "software": "برمجيات", + "subtitles": "ترجمات", + "unknown": "غير معروف", + "video": "فيديو" + }, + "general": { + "all": "الكل", + "dismiss": "رفض", + "error": "خطأ", + "none": "لا شيء", + "refresh": "تحديث", + "status": "الحالة" + }, + "health": { + "bitmagnet_is_status": "bitmagnet هو {{status}}", + "check_failed_with_error": "فشل التحقق مع خطأ", + "component": "مكون", + "components": { + "dht": "DHT", + "postgres": "Postgres", + "tmdb": "TMDB" + }, + "dismiss": "رفض", + "error": "خطأ", + "status": "الحالة", + "statuses": { + "degraded": "متدهور", + "down": "معطل", + "error": "خطأ", + "inactive": "غير نشط", + "started": "بدأ", + "unknown": "معلق", + "up": "نشط" + }, + "summary": "ملخص الصحة", + "worker": "عامل", + "workers": { + "dht_crawler": "زاحف DHT", + "http_server": "خادم HTTP", + "queue_server": "خادم الطابور" + } + }, + "languages": { + "af": "الأفريكانية", + "ar": "العربية", + "az": "الأذربيجانية", + "be": "البيلاروسية", + "bg": "البلغارية", + "bs": "البوسنية", + "ca": "الكاتالانية", + "ce": "الشيشانية", + "co": "الكورسيكية", + "cs": "التشيكية", + "cy": "الويلزية", + "da": "الدانماركية", + "de": "الألمانية", + "el": "اليونانية", + "en": "الإنجليزية", + "es": "الإسبانية", + "et": "الإستونية", + "eu": "الباسكية", + "fa": "الفارسية", + "fi": "الفنلندية", + "fr": "الفرنسية", + "he": "العبرية", + "hi": "الهندية", + "hr": "الكرواتية", + "hu": "الهنغارية", + "hy": "الأرمنية", + "id": "الإندونيسية", + "is": "الأيسلندية", + "it": "الإيطالية", + "ja": "اليابانية", + "ka": "الجورجية", + "ko": "الكورية", + "ku": "الكردية", + "lt": "الليتوانية", + "lv": "اللاتفية", + "mi": "الماورية", + "mk": "المقدونية", + "ml": "المالايالامية", + "mn": "المنغولية", + "ms": "الملايوية", + "mt": "المالطية", + "nl": "الهولندية", + "no": "النرويجية", + "pl": "البولندية", + "pt": "البرتغالية", + "ro": "الرومانية", + "ru": "الروسية", + "sa": "السنسكريتية", + "sk": "السلوفاكية", + "sl": "السلوفينية", + "sm": "الساموية", + "so": "الصومالية", + "sr": "الصربية", + "sv": "السويدية", + "ta": "التاميلية", + "th": "التايلاندية", + "tr": "التركية", + "uk": "الأوكرانية", + "vi": "الفيتنامية", + "yi": "اليديشية", + "zh": "الصينية", + "zu": "الزولو" + }, + "layout": { + "bitmagnet_on_service": "bitmagnet على {{service}}", + "change_theme": "تغيير السمة", + "external_links": "روابط خارجية", + "sponsor": "الراعي", + "support_bitmagnet": "دعم bitmagnet", + "translate": "ترجمة" + }, + "paginator": { + "first_page": "الصفحة الأولى", + "items_per_page": "العناصر لكل صفحة", + "last_page": "الصفحة الأخيرة", + "next_page": "الصفحة التالية", + "previous_page": "الصفحة السابقة", + "x_to_y": "{{x}} إلى {{y}}", + "x_to_y_of_y": "__مفقود__", + "x_to_y_of_z": "{{x}} إلى {{y}} من {{z}}" + }, + "routes": { + "admin": "المسؤول", + "dashboard": "لوحة التحكم", + "home": "الصفحة الرئيسية", + "jobs": "الوظائف", + "queues": "الطوابير", + "torrents": "التورنت", + "visualize": "تصور" + }, + "torrents": { + "clear_search": "مسح البحث", + "copy": "نسخ", + "copy_to_clipboard": "نسخ إلى الحافظة", + "delete": "حذف", + "delete_action_cannot_be_undone": "لا يمكن التراجع عن هذا الإجراء", + "delete_are_you_sure": "هل أنت متأكد أنك تريد حذف هذا التورنت؟", + "deselect_all": "إلغاء تحديد الكل", + "edit_tags": "تحرير العلامات", + "episodes": "الحلقات", + "external_links": "روابط خارجية", + "file_index": "فهرس الملفات", + "file_path": "مسار الملف", + "file_size": "حجم الملف", + "file_type": "نوع الملف", + "files": "الملفات", + "files_count_n": "{{count}} ملفات", + "files_no_info": "لا توجد معلومات عن الملفات", + "files_single": "ملف واحد", + "genres": "الأنواع", + "info_hash": "تجزئة المعلومات", + "info_hashes": "تجزئات المعلومات", + "languages": "اللغات", + "leechers": "المستفيدون", + "magnet": "مغناطيس", + "magnet_links": "روابط مغناطيسية", + "new_tag": "علامة جديدة", + "order_by": "ترتيب حسب", + "order_direction_toggle": "تبديل الاتجاه", + "ordering": { + "files_count": "عدد الملفات", + "info_hash": "تجزئة المعلومات", + "leechers": "المستفيدون", + "name": "الاسم", + "published_at": "نشر في", + "relevance": "الصلة", + "seeders": "المزارعون", + "size": "الحجم", + "updated_at": "تم التحديث في" + }, + "original_release_date": "تاريخ الإصدار الأصلي", + "permalink": "رابط دائم", + "poster": "ملصق", + "published": "منشور", + "rating": "التقييم", + "refresh": "تحديث النتائج", + "s_l": "S / L", + "search": "بحث", + "seeders": "الباذرون", + "select_all": "تحديد الكل", + "showing_x_of_y_files": "عرض {{x}} من {{y}} ملفات", + "size": "الحجم", + "source": "مصدر التورنت", + "summary": "الملخص", + "title": "العنوان", + "toggle_drawer": "تبديل الدرج", + "votes_count_n": "{{count}} أصوات" + }, + "version": { + "bitmagnet_version": "إصدار bitmagnet {{version}}", + "unknown": "غير معروف" + } +} \ No newline at end of file diff --git a/webui/src/app/i18n/translations/de.json b/webui/src/app/i18n/translations/de.json new file mode 100644 index 0000000..2c4eee4 --- /dev/null +++ b/webui/src/app/i18n/translations/de.json @@ -0,0 +1,297 @@ +{ + "content_types": { + "plural": { + "all": "Alle", + "audiobook": "Hörbücher", + "comic": "Comics", + "ebook": "E-Bücher", + "movie": "Filme", + "music": "Musik", + "null": "Unbekannt", + "software": "Software", + "tv_show": "TV-Shows", + "xxx": "XXX" + }, + "singular": { + "audiobook": "Hörbuch", + "comic": "Comic", + "ebook": "E-Buch", + "movie": "Film", + "music": "Musik", + "null": "Unbekannt", + "software": "Software", + "tv_show": "TV-Show", + "xxx": "XXX" + } + }, + "dashboard": { + "event": { + "created": "Erstellt", + "failed": "Fehlgeschlagen", + "processed": "Verarbeitet", + "updated": "Aktualisiert" + }, + "interval": { + "all": "Alle", + "days": "Tage", + "days_1": "1 Tag", + "hours": "Stunden", + "hours_1": "1 Stunde", + "hours_12": "12 Stunden", + "hours_6": "6 Stunden", + "minutes": "Minuten", + "minutes_1": "1 Minute", + "minutes_15": "15 Minuten", + "minutes_30": "30 Minuten", + "minutes_5": "5 Minuten", + "off": "Aus", + "seconds_10": "10 Sekunden", + "seconds_30": "30 Sekunden", + "weeks_1": "1 Woche" + }, + "metrics": { + "event": "Ereignis", + "resolution": "Auflösung", + "throughput": "Durchsatz", + "timeframe": "Zeitrahmen" + }, + "queues": { + "created": "Erstellt", + "created_at": "Erstellt am", + "enqueue_jobs": "Jobs einreihen", + "enqueue_torrent_processing_batch": "Torrent-Verarbeitungsbatch einreihen", + "failed": "Fehlgeschlagen", + "force_rematch": "Erneutes Zuordnen von bereits zugeordneten Inhalten erzwingen", + "jobs_enqueued": "Jobs eingereiht", + "latency": "Latenz", + "match_content_by_external_api_search": "Inhalte durch externe API-Suche zuordnen", + "match_content_by_local_search": "Inhalte durch lokale Suche zuordnen", + "payload": "Nutzlast", + "pending": "Ausstehend", + "priority": "Priorität", + "process_orphaned_torrents_only": "Nur verwaiste Torrents verarbeiten", + "processed": "Verarbeitet", + "purge_jobs": "Jobs bereinigen", + "purge_queue_jobs": "Warteschlangen-Jobs bereinigen", + "queue": "Warteschlange", + "queue_purged": "Warteschlange bereinigt", + "queues": "Warteschlangen", + "ran_at": "Ausgeführt am", + "retry": "Erneut versuchen", + "total_counts_by_status": "Gesamtanzahl nach Status" + } + }, + "facets": { + "content_type": "Inhaltstyp", + "file_type": "Dateityp", + "genre": "Genre", + "language": "Sprache", + "queue": "Warteschlange", + "status": "Status", + "torrent_source": "Torrent-Quelle", + "torrent_tag": "Torrent-Tag", + "video_resolution": "Videoauflösung", + "video_source": "Videoquelle" + }, + "file_types": { + "archive": "Archiv", + "audio": "Audio", + "data": "Daten", + "document": "Dokument", + "image": "Bild", + "software": "Software", + "subtitles": "Untertitel", + "unknown": "Unbekannt", + "video": "Video" + }, + "general": { + "all": "Alle", + "dismiss": "Verwerfen", + "error": "Fehler", + "none": "Keine", + "refresh": "Aktualisieren", + "status": "Status" + }, + "health": { + "bitmagnet_is_status": "bitmagnet ist {{status}}", + "check_failed_with_error": "Überprüfung mit Fehler fehlgeschlagen", + "component": "Komponente", + "components": { + "dht": "DHT", + "postgres": "Postgres", + "tmdb": "TMDB" + }, + "dismiss": "Verwerfen", + "error": "Fehler", + "status": "Status", + "statuses": { + "degraded": "Verschlechtert", + "down": "Aus", + "error": "Fehler", + "inactive": "Inaktiv", + "started": "Gestartet", + "unknown": "Ausstehend", + "up": "An" + }, + "summary": "Gesundheitsübersicht", + "worker": "Arbeiter", + "workers": { + "dht_crawler": "DHT-Crawler", + "http_server": "HTTP-Server", + "queue_server": "Warteschlangen-Server" + } + }, + "languages": { + "af": "Afrikaans", + "ar": "Arabisch", + "az": "Aserbaidschanisch", + "be": "Weißrussisch", + "bg": "Bulgarisch", + "bs": "Bosnisch", + "ca": "Katalanisch", + "ce": "Tschetschenisch", + "co": "Korsisch", + "cs": "Tschechisch", + "cy": "Walisisch", + "da": "Dänisch", + "de": "Deutsch", + "el": "Griechisch", + "en": "Englisch", + "es": "Spanisch", + "et": "Estnisch", + "eu": "Baskisch", + "fa": "Persisch", + "fi": "Finnisch", + "fr": "Französisch", + "he": "Hebräisch", + "hi": "Hindi", + "hr": "Kroatisch", + "hu": "Ungarisch", + "hy": "Armenisch", + "id": "Indonesisch", + "is": "Isländisch", + "it": "Italienisch", + "ja": "Japanisch", + "ka": "Georgisch", + "ko": "Koreanisch", + "ku": "Kurdisch", + "lt": "Litauisch", + "lv": "Lettisch", + "mi": "Maori", + "mk": "Mazedonisch", + "ml": "Malayalam", + "mn": "Mongolisch", + "ms": "Malaiisch", + "mt": "Maltesisch", + "nl": "Niederländisch", + "no": "Norwegisch", + "pl": "Polnisch", + "pt": "Portugiesisch", + "ro": "Rumänisch", + "ru": "Russisch", + "sa": "Sanskrit", + "sk": "Slowakisch", + "sl": "Slowenisch", + "sm": "Samoanisch", + "so": "Somalisch", + "sr": "Serbisch", + "sv": "Schwedisch", + "ta": "Tamil", + "th": "Thai", + "tr": "Türkisch", + "uk": "Ukrainisch", + "vi": "Vietnamesisch", + "yi": "Jiddisch", + "zh": "Chinesisch", + "zu": "Zulu" + }, + "layout": { + "bitmagnet_on_service": "bitmagnet auf {{service}}", + "change_theme": "Thema ändern", + "external_links": "Externe Links", + "sponsor": "Sponsor", + "support_bitmagnet": "bitmagnet unterstützen", + "translate": "Übersetzen" + }, + "paginator": { + "first_page": "Erste Seite", + "items_per_page": "Artikel pro Seite", + "last_page": "Letzte Seite", + "next_page": "Nächste Seite", + "previous_page": "Vorherige Seite", + "x_to_y": "{{x}} bis {{y}}", + "x_to_y_of_y": "__fehlend__", + "x_to_y_of_z": "{{x}} bis {{y}} von {{z}}" + }, + "routes": { + "admin": "Admin", + "dashboard": "Dashboard", + "home": "Startseite", + "jobs": "Aufgaben", + "queues": "Warteschlangen", + "torrents": "Torrents", + "visualize": "Visualisieren" + }, + "torrents": { + "clear_search": "Suche löschen", + "copy": "Kopieren", + "copy_to_clipboard": "In die Zwischenablage kopieren", + "delete": "Löschen", + "delete_action_cannot_be_undone": "Diese Aktion kann nicht rückgängig gemacht werden", + "delete_are_you_sure": "Sind Sie sicher, dass Sie diesen Torrent löschen möchten?", + "deselect_all": "Alle abwählen", + "edit_tags": "Tags bearbeiten", + "episodes": "Episoden", + "external_links": "Externe Links", + "file_index": "Dateiindex", + "file_path": "Dateipfad", + "file_size": "Dateigröße", + "file_type": "Dateityp", + "files": "Dateien", + "files_count_n": "{{count}} Dateien", + "files_no_info": "Keine Dateiinformationen verfügbar", + "files_single": "Einzelne Datei", + "genres": "Genres", + "info_hash": "Info-Hash", + "info_hashes": "Info-Hashes", + "languages": "Sprachen", + "leechers": "Leechers", + "magnet": "Magnet", + "magnet_links": "Magnet-Links", + "new_tag": "Neuer Tag", + "order_by": "Sortieren nach", + "order_direction_toggle": "Richtung umschalten", + "ordering": { + "files_count": "Dateienanzahl", + "info_hash": "Info-Hash", + "leechers": "Leechers", + "name": "Name", + "published_at": "Veröffentlicht am", + "relevance": "Relevanz", + "seeders": "Seeders", + "size": "Größe", + "updated_at": "Aktualisiert am" + }, + "original_release_date": "Originales Veröffentlichungsdatum", + "permalink": "Permalink", + "poster": "Poster", + "published": "Veröffentlicht", + "rating": "Bewertung", + "refresh": "Ergebnisse aktualisieren", + "s_l": "S / L", + "search": "Suche", + "seeders": "Seeders", + "select_all": "Alle auswählen", + "showing_x_of_y_files": "{{x}} von {{y}} Dateien anzeigen", + "size": "Größe", + "source": "Torrent-Quelle", + "summary": "Zusammenfassung", + "title": "Titel", + "toggle_drawer": "Schublade umschalten", + "votes_count_n": "{{count}} Stimmen" + }, + "version": { + "bitmagnet_version": "bitmagnet Version {{version}}", + "unknown": "unbekannt" + } +} \ No newline at end of file diff --git a/webui/src/app/i18n/translations/en.json b/webui/src/app/i18n/translations/en.json new file mode 100644 index 0000000..2688ac3 --- /dev/null +++ b/webui/src/app/i18n/translations/en.json @@ -0,0 +1,297 @@ +{ + "content_types": { + "plural": { + "all": "All", + "audiobook": "Audiobooks", + "comic": "Comics", + "ebook": "E-Books", + "movie": "Movies", + "music": "Music", + "null": "Unknown", + "software": "Software", + "tv_show": "TV Shows", + "xxx": "XXX" + }, + "singular": { + "audiobook": "Audiobook", + "comic": "Comic", + "ebook": "E-Book", + "movie": "Movie", + "music": "Music", + "null": "Unknown", + "software": "Software", + "tv_show": "TV Show", + "xxx": "XXX" + } + }, + "dashboard": { + "event": { + "created": "Created", + "failed": "Failed", + "processed": "Processed", + "updated": "Updated" + }, + "interval": { + "all": "All", + "days": "Days", + "days_1": "1 day", + "hours": "Hours", + "hours_1": "1 hour", + "hours_12": "12 hours", + "hours_6": "6 hours", + "minutes": "Minutes", + "minutes_1": "1 minute", + "minutes_15": "15 minutes", + "minutes_30": "30 minutes", + "minutes_5": "5 minutes", + "off": "Off", + "seconds_10": "10 seconds", + "seconds_30": "30 seconds", + "weeks_1": "1 week" + }, + "metrics": { + "event": "Event", + "resolution": "Resolution", + "throughput": "Throughput", + "timeframe": "Timeframe" + }, + "queues": { + "created": "Created", + "created_at": "Created at", + "enqueue_jobs": "Enqueue jobs", + "enqueue_torrent_processing_batch": "Enqueue Torrent Processing Batch", + "failed": "Failed", + "force_rematch": "Force rematch of already matched content", + "jobs_enqueued": "Jobs enqueued", + "latency": "Latency", + "match_content_by_external_api_search": "Match content by external API search", + "match_content_by_local_search": "Match content by local search", + "payload": "Payload", + "pending": "Pending", + "priority": "Priority", + "process_orphaned_torrents_only": "Process orphaned torrents only", + "processed": "Processed", + "purge_jobs": "Purge jobs", + "purge_queue_jobs": "Purge queue jobs", + "queue": "Queue", + "queue_purged": "Queue purged", + "queues": "Queues", + "ran_at": "Ran at", + "retry": "Retry", + "total_counts_by_status": "Total counts by status" + } + }, + "facets": { + "content_type": "Content Type", + "file_type": "File Type", + "genre": "Genre", + "language": "Language", + "queue": "Queue", + "status": "Status", + "torrent_source": "Torrent Source", + "torrent_tag": "Torrent Tag", + "video_resolution": "Video Resolution", + "video_source": "Video Source" + }, + "file_types": { + "archive": "Archive", + "audio": "Audio", + "data": "Data", + "document": "Document", + "image": "Image", + "software": "Software", + "subtitles": "Subtitles", + "unknown": "Unknown", + "video": "Video" + }, + "general": { + "all": "All", + "dismiss": "Dismiss", + "error": "Error", + "none": "None", + "refresh": "Refresh", + "status": "Status" + }, + "health": { + "bitmagnet_is_status": "bitmagnet is {{status}}", + "check_failed_with_error": "Check failed with error", + "component": "Component", + "components": { + "dht": "DHT", + "postgres": "Postgres", + "tmdb": "TMDB" + }, + "dismiss": "Dismiss", + "error": "Error", + "status": "Status", + "statuses": { + "degraded": "Degraded", + "down": "Down", + "error": "Error", + "inactive": "Inactive", + "started": "Started", + "unknown": "Pending", + "up": "Up" + }, + "summary": "Health summary", + "worker": "Worker", + "workers": { + "dht_crawler": "DHT crawler", + "http_server": "HTTP server", + "queue_server": "Queue server" + } + }, + "languages": { + "af": "Afrikaans", + "ar": "Arabic", + "az": "Azerbaijani", + "be": "Belarusian", + "bg": "Bulgarian", + "bs": "Bosnian", + "ca": "Catalan", + "ce": "Chechen", + "co": "Corsican", + "cs": "Czech", + "cy": "Welsh", + "da": "Danish", + "de": "German", + "el": "Greek", + "en": "English", + "es": "Spanish", + "et": "Estonian", + "eu": "Basque", + "fa": "Persian", + "fi": "Finnish", + "fr": "French", + "he": "Hebrew", + "hi": "Hindi", + "hr": "Croatian", + "hu": "Hungarian", + "hy": "Armenian", + "id": "Indonesian", + "is": "Icelandic", + "it": "Italian", + "ja": "Japanese", + "ka": "Georgian", + "ko": "Korean", + "ku": "Kurdish", + "lt": "Lithuanian", + "lv": "Latvian", + "mi": "Maori", + "mk": "Macedonian", + "ml": "Malayalam", + "mn": "Mongolian", + "ms": "Malay", + "mt": "Maltese", + "nl": "Dutch", + "no": "Norwegian", + "pl": "Polish", + "pt": "Portuguese", + "ro": "Romanian", + "ru": "Russian", + "sa": "Sanskrit", + "sk": "Slovak", + "sl": "Slovenian", + "sm": "Samoan", + "so": "Somali", + "sr": "Serbian", + "sv": "Swedish", + "ta": "Tamil", + "th": "Thai", + "tr": "Turkish", + "uk": "Ukrainian", + "vi": "Vietnamese", + "yi": "Yiddish", + "zh": "Chinese", + "zu": "Zulu" + }, + "layout": { + "bitmagnet_on_service": "bitmagnet on {{service}}", + "change_theme": "Change theme", + "external_links": "External links", + "sponsor": "Sponsor", + "support_bitmagnet": "Support bitmagnet", + "translate": "Translate" + }, + "paginator": { + "first_page": "First page", + "items_per_page": "Items per page", + "last_page": "Last page", + "next_page": "Next page", + "previous_page": "Previous page", + "x_to_y": "{{x}} to {{y}}", + "x_to_y_of_y": "__missing__", + "x_to_y_of_z": "{{x}} to {{y}} of {{z}}" + }, + "routes": { + "admin": "Admin", + "dashboard": "Dashboard", + "home": "Home", + "jobs": "Jobs", + "queues": "Queues", + "torrents": "Torrents", + "visualize": "Visualize" + }, + "torrents": { + "clear_search": "Clear Search", + "copy": "Copy", + "copy_to_clipboard": "Copy to clipboard", + "delete": "Delete", + "delete_action_cannot_be_undone": "This action cannot be undone", + "delete_are_you_sure": "Are you sure you want to delete this torrent?", + "deselect_all": "Deselect All", + "edit_tags": "Edit tags", + "episodes": "Episodes", + "external_links": "External links", + "file_index": "File index", + "file_path": "File path", + "file_size": "File size", + "file_type": "File type", + "files": "Files", + "files_count_n": "{{count}} files", + "files_no_info": "No files information available", + "files_single": "Single file", + "genres": "Genres", + "info_hash": "Info hash", + "info_hashes": "Info hashes", + "languages": "Languages", + "leechers": "Leechers", + "magnet": "Magnet", + "magnet_links": "Magnet links", + "new_tag": "New tag", + "order_by": "Order by", + "order_direction_toggle": "Toggle direction", + "ordering": { + "files_count": "Files count", + "info_hash": "Info hash", + "leechers": "Leechers", + "name": "Name", + "published_at": "Published at", + "relevance": "Relevance", + "seeders": "Seeders", + "size": "Size", + "updated_at": "Updated at" + }, + "original_release_date": "Original release date", + "permalink": "Permalink", + "poster": "Poster", + "published": "Published", + "rating": "Rating", + "refresh": "Refresh results", + "s_l": "S / L", + "search": "Search", + "seeders": "Seeders", + "select_all": "Select All", + "showing_x_of_y_files": "Showing {{x}} of {{y}} files", + "size": "Size", + "source": "Torrent Source", + "summary": "Summary", + "title": "Title", + "toggle_drawer": "Toggle Drawer", + "votes_count_n": "{{count}} votes" + }, + "version": { + "bitmagnet_version": "bitmagnet version {{version}}", + "unknown": "unknown" + } +} \ No newline at end of file diff --git a/webui/src/app/i18n/translations/es.json b/webui/src/app/i18n/translations/es.json new file mode 100644 index 0000000..adf5838 --- /dev/null +++ b/webui/src/app/i18n/translations/es.json @@ -0,0 +1,297 @@ +{ + "content_types": { + "plural": { + "all": "Todos", + "audiobook": "Audiolibros", + "comic": "Cómics", + "ebook": "E-Libros", + "movie": "Películas", + "music": "Música", + "null": "Desconocido", + "software": "Software", + "tv_show": "Programas de TV", + "xxx": "XXX" + }, + "singular": { + "audiobook": "Audiolibro", + "comic": "Cómic", + "ebook": "E-Libro", + "movie": "Película", + "music": "Música", + "null": "Desconocido", + "software": "Software", + "tv_show": "Programa de TV", + "xxx": "XXX" + } + }, + "dashboard": { + "event": { + "created": "Creado", + "failed": "Fallido", + "processed": "Procesado", + "updated": "Actualizado" + }, + "interval": { + "all": "Todos", + "days": "Días", + "days_1": "1 día", + "hours": "Horas", + "hours_1": "1 hora", + "hours_12": "12 horas", + "hours_6": "6 horas", + "minutes": "Minutos", + "minutes_1": "1 minuto", + "minutes_15": "15 minutos", + "minutes_30": "30 minutos", + "minutes_5": "5 minutos", + "off": "Apagado", + "seconds_10": "10 segundos", + "seconds_30": "30 segundos", + "weeks_1": "1 semana" + }, + "metrics": { + "event": "Evento", + "resolution": "Resolución", + "throughput": "Rendimiento", + "timeframe": "Periodo de tiempo" + }, + "queues": { + "created": "Creado", + "created_at": "Creado en", + "enqueue_jobs": "Encolar trabajos", + "enqueue_torrent_processing_batch": "Encolar lote de procesamiento de torrents", + "failed": "Fallido", + "force_rematch": "Forzar nueva coincidencia de contenido ya coincidente", + "jobs_enqueued": "Trabajos encolados", + "latency": "Latencia", + "match_content_by_external_api_search": "Coincidir contenido por búsqueda de API externa", + "match_content_by_local_search": "Coincidir contenido por búsqueda local", + "payload": "Carga útil", + "pending": "Pendiente", + "priority": "Prioridad", + "process_orphaned_torrents_only": "Procesar solo torrents huérfanos", + "processed": "Procesado", + "purge_jobs": "Purgar trabajos", + "purge_queue_jobs": "Purgar trabajos de la cola", + "queue": "Cola", + "queue_purged": "Cola purgada", + "queues": "Colas", + "ran_at": "Ejecutado en", + "retry": "Reintentar", + "total_counts_by_status": "Recuento total por estado" + } + }, + "facets": { + "content_type": "Tipo de contenido", + "file_type": "Tipo de archivo", + "genre": "Género", + "language": "Idioma", + "queue": "Cola", + "status": "Estado", + "torrent_source": "Fuente del torrent", + "torrent_tag": "Etiqueta del torrent", + "video_resolution": "Resolución de video", + "video_source": "Fuente de video" + }, + "file_types": { + "archive": "Archivo", + "audio": "Audio", + "data": "Datos", + "document": "Documento", + "image": "Imagen", + "software": "Software", + "subtitles": "Subtítulos", + "unknown": "Desconocido", + "video": "Video" + }, + "general": { + "all": "Todos", + "dismiss": "Descartar", + "error": "Error", + "none": "Ninguno", + "refresh": "Actualizar", + "status": "Estado" + }, + "health": { + "bitmagnet_is_status": "bitmagnet está {{status}}", + "check_failed_with_error": "La verificación falló con error", + "component": "Componente", + "components": { + "dht": "DHT", + "postgres": "Postgres", + "tmdb": "TMDB" + }, + "dismiss": "Descartar", + "error": "Error", + "status": "Estado", + "statuses": { + "degraded": "Degradado", + "down": "Caído", + "error": "Error", + "inactive": "Inactivo", + "started": "Iniciado", + "unknown": "Pendiente", + "up": "Activo" + }, + "summary": "Resumen de salud", + "worker": "Trabajador", + "workers": { + "dht_crawler": "Rastreador DHT", + "http_server": "Servidor HTTP", + "queue_server": "Servidor de colas" + } + }, + "languages": { + "af": "Afrikáans", + "ar": "Árabe", + "az": "Azerbaiyano", + "be": "Bielorruso", + "bg": "Búlgaro", + "bs": "Bosnio", + "ca": "Catalán", + "ce": "Checheno", + "co": "Corso", + "cs": "Checo", + "cy": "Galés", + "da": "Danés", + "de": "Alemán", + "el": "Griego", + "en": "Inglés", + "es": "Español", + "et": "Estonio", + "eu": "Vasco", + "fa": "Persa", + "fi": "Finlandés", + "fr": "Francés", + "he": "Hebreo", + "hi": "Hindi", + "hr": "Croata", + "hu": "Húngaro", + "hy": "Armenio", + "id": "Indonesio", + "is": "Islandés", + "it": "Italiano", + "ja": "Japonés", + "ka": "Georgiano", + "ko": "Coreano", + "ku": "Kurdo", + "lt": "Lituano", + "lv": "Letón", + "mi": "Maorí", + "mk": "Macedonio", + "ml": "Malayalam", + "mn": "Mongol", + "ms": "Malayo", + "mt": "Maltés", + "nl": "Neerlandés", + "no": "Noruego", + "pl": "Polaco", + "pt": "Portugués", + "ro": "Rumano", + "ru": "Ruso", + "sa": "Sánscrito", + "sk": "Eslovaco", + "sl": "Esloveno", + "sm": "Samoano", + "so": "Somalí", + "sr": "Serbio", + "sv": "Sueco", + "ta": "Tamil", + "th": "Tailandés", + "tr": "Turco", + "uk": "Ucraniano", + "vi": "Vietnamita", + "yi": "Yidis", + "zh": "Chino", + "zu": "Zulú" + }, + "layout": { + "bitmagnet_on_service": "bitmagnet en {{service}}", + "change_theme": "Cambiar tema", + "external_links": "Enlaces externos", + "sponsor": "Patrocinador", + "support_bitmagnet": "Apoyar bitmagnet", + "translate": "Traducir" + }, + "paginator": { + "first_page": "Primera página", + "items_per_page": "Elementos por página", + "last_page": "Última página", + "next_page": "Página siguiente", + "previous_page": "Página anterior", + "x_to_y": "{{x}} a {{y}}", + "x_to_y_of_y": "__faltante__", + "x_to_y_of_z": "{{x}} a {{y}} de {{z}}" + }, + "routes": { + "admin": "Admin", + "dashboard": "Tablero", + "home": "Inicio", + "jobs": "Trabajos", + "queues": "Colas", + "torrents": "Torrents", + "visualize": "Visualizar" + }, + "torrents": { + "clear_search": "Borrar búsqueda", + "copy": "Copiar", + "copy_to_clipboard": "Copiar al portapapeles", + "delete": "Eliminar", + "delete_action_cannot_be_undone": "Esta acción no se puede deshacer", + "delete_are_you_sure": "¿Está seguro de que desea eliminar este torrent?", + "deselect_all": "Deseleccionar todo", + "edit_tags": "Editar etiquetas", + "episodes": "Episodios", + "external_links": "Enlaces externos", + "file_index": "Índice de archivos", + "file_path": "Ruta del archivo", + "file_size": "Tamaño del archivo", + "file_type": "Tipo de archivo", + "files": "Archivos", + "files_count_n": "{{count}} archivos", + "files_no_info": "No hay información de archivos disponible", + "files_single": "Archivo único", + "genres": "Géneros", + "info_hash": "Hash de información", + "info_hashes": "Hashes de información", + "languages": "Idiomas", + "leechers": "Leechers", + "magnet": "Magnet", + "magnet_links": "Enlaces Magnet", + "new_tag": "Nueva etiqueta", + "order_by": "Ordenar por", + "order_direction_toggle": "Alternar dirección", + "ordering": { + "files_count": "Recuento de archivos", + "info_hash": "Hash de información", + "leechers": "Leechers", + "name": "Nombre", + "published_at": "Publicado en", + "relevance": "Relevancia", + "seeders": "Seeders", + "size": "Tamaño", + "updated_at": "Actualizado en" + }, + "original_release_date": "Fecha de lanzamiento original", + "permalink": "Enlace permanente", + "poster": "Póster", + "published": "Publicado", + "rating": "Calificación", + "refresh": "Actualizar resultados", + "s_l": "S / L", + "search": "Buscar", + "seeders": "Seeders", + "select_all": "Seleccionar todo", + "showing_x_of_y_files": "Mostrando {{x}} de {{y}} archivos", + "size": "Tamaño", + "source": "Fuente del torrent", + "summary": "Resumen", + "title": "Título", + "toggle_drawer": "Alternar cajón", + "votes_count_n": "{{count}} votos" + }, + "version": { + "bitmagnet_version": "versión de bitmagnet {{version}}", + "unknown": "desconocido" + } +} \ No newline at end of file diff --git a/webui/src/app/i18n/translations/fr.json b/webui/src/app/i18n/translations/fr.json new file mode 100644 index 0000000..00f640d --- /dev/null +++ b/webui/src/app/i18n/translations/fr.json @@ -0,0 +1,297 @@ +{ + "content_types": { + "plural": { + "all": "Tous", + "audiobook": "Livres audio", + "comic": "Bandes dessinées", + "ebook": "E-livres", + "movie": "Films", + "music": "Musique", + "null": "Inconnu", + "software": "Logiciels", + "tv_show": "Séries TV", + "xxx": "XXX" + }, + "singular": { + "audiobook": "Livre audio", + "comic": "Bande dessinée", + "ebook": "E-livre", + "movie": "Film", + "music": "Musique", + "null": "Inconnu", + "software": "Logiciel", + "tv_show": "Série TV", + "xxx": "XXX" + } + }, + "dashboard": { + "event": { + "created": "Créé", + "failed": "Échoué", + "processed": "Traité", + "updated": "Mis à jour" + }, + "interval": { + "all": "Tous", + "days": "Jours", + "days_1": "1 jour", + "hours": "Heures", + "hours_1": "1 heure", + "hours_12": "12 heures", + "hours_6": "6 heures", + "minutes": "Minutes", + "minutes_1": "1 minute", + "minutes_15": "15 minutes", + "minutes_30": "30 minutes", + "minutes_5": "5 minutes", + "off": "Désactivé", + "seconds_10": "10 secondes", + "seconds_30": "30 secondes", + "weeks_1": "1 semaine" + }, + "metrics": { + "event": "Événement", + "resolution": "Résolution", + "throughput": "Débit", + "timeframe": "Période" + }, + "queues": { + "created": "Créé", + "created_at": "Créé à", + "enqueue_jobs": "Enfilez les tâches", + "enqueue_torrent_processing_batch": "Enfilez le traitement des torrents", + "failed": "Échoué", + "force_rematch": "Forcer le rematch du contenu déjà apparié", + "jobs_enqueued": "Tâches enfilées", + "latency": "Latence", + "match_content_by_external_api_search": "Apparier le contenu par recherche API externe", + "match_content_by_local_search": "Apparier le contenu par recherche locale", + "payload": "Charge utile", + "pending": "En attente", + "priority": "Priorité", + "process_orphaned_torrents_only": "Traiter uniquement les torrents orphelins", + "processed": "Traité", + "purge_jobs": "Purger les tâches", + "purge_queue_jobs": "Purger les tâches de la file d'attente", + "queue": "File d'attente", + "queue_purged": "File d'attente purgée", + "queues": "Files d'attente", + "ran_at": "Exécuté à", + "retry": "Réessayer", + "total_counts_by_status": "Totaux par statut" + } + }, + "facets": { + "content_type": "Type de contenu", + "file_type": "Type de fichier", + "genre": "Genre", + "language": "Langue", + "queue": "File d'attente", + "status": "Statut", + "torrent_source": "Source du torrent", + "torrent_tag": "Tag du torrent", + "video_resolution": "Résolution vidéo", + "video_source": "Source vidéo" + }, + "file_types": { + "archive": "Archive", + "audio": "Audio", + "data": "Données", + "document": "Document", + "image": "Image", + "software": "Logiciel", + "subtitles": "Sous-titres", + "unknown": "Inconnu", + "video": "Vidéo" + }, + "general": { + "all": "Tous", + "dismiss": "Rejeter", + "error": "Erreur", + "none": "Aucun", + "refresh": "Rafraîchir", + "status": "Statut" + }, + "health": { + "bitmagnet_is_status": "bitmagnet est {{status}}", + "check_failed_with_error": "Vérification échouée avec erreur", + "component": "Composant", + "components": { + "dht": "DHT", + "postgres": "Postgres", + "tmdb": "TMDB" + }, + "dismiss": "Rejeter", + "error": "Erreur", + "status": "Statut", + "statuses": { + "degraded": "Dégradé", + "down": "Hors ligne", + "error": "Erreur", + "inactive": "Inactif", + "started": "Démarré", + "unknown": "En attente", + "up": "En ligne" + }, + "summary": "Résumé de la santé", + "worker": "Travailleur", + "workers": { + "dht_crawler": "Explorateur DHT", + "http_server": "Serveur HTTP", + "queue_server": "Serveur de file d'attente" + } + }, + "languages": { + "af": "Afrikaans", + "ar": "Arabe", + "az": "Azerbaïdjanais", + "be": "Biélorusse", + "bg": "Bulgare", + "bs": "Bosniaque", + "ca": "Catalan", + "ce": "Tchétchène", + "co": "Corse", + "cs": "Tchèque", + "cy": "Gallois", + "da": "Danois", + "de": "Allemand", + "el": "Grec", + "en": "Anglais", + "es": "Espagnol", + "et": "Estonien", + "eu": "Basque", + "fa": "Persan", + "fi": "Finnois", + "fr": "Français", + "he": "Hébreu", + "hi": "Hindi", + "hr": "Croate", + "hu": "Hongrois", + "hy": "Arménien", + "id": "Indonésien", + "is": "Islandais", + "it": "Italien", + "ja": "Japonais", + "ka": "Géorgien", + "ko": "Coréen", + "ku": "Kurde", + "lt": "Lituanien", + "lv": "Letton", + "mi": "Maori", + "mk": "Macédonien", + "ml": "Malayalam", + "mn": "Mongol", + "ms": "Malais", + "mt": "Maltais", + "nl": "Néerlandais", + "no": "Norvégien", + "pl": "Polonais", + "pt": "Portugais", + "ro": "Roumain", + "ru": "Russe", + "sa": "Sanskrit", + "sk": "Slovaque", + "sl": "Slovène", + "sm": "Samoan", + "so": "Somali", + "sr": "Serbe", + "sv": "Suédois", + "ta": "Tamoul", + "th": "Thaï", + "tr": "Turc", + "uk": "Ukrainien", + "vi": "Vietnamien", + "yi": "Yiddish", + "zh": "Chinois", + "zu": "Zoulou" + }, + "layout": { + "bitmagnet_on_service": "bitmagnet sur {{service}}", + "change_theme": "Changer de thème", + "external_links": "Liens externes", + "sponsor": "Sponsor", + "support_bitmagnet": "Soutenir bitmagnet", + "translate": "Traduire" + }, + "paginator": { + "first_page": "Première page", + "items_per_page": "Articles par page", + "last_page": "Dernière page", + "next_page": "Page suivante", + "previous_page": "Page précédente", + "x_to_y": "{{x}} à {{y}}", + "x_to_y_of_y": "__manquant__", + "x_to_y_of_z": "{{x}} à {{y}} de {{z}}" + }, + "routes": { + "admin": "Admin", + "dashboard": "Tableau de bord", + "home": "Accueil", + "jobs": "Tâches", + "queues": "Files d'attente", + "torrents": "Torrents", + "visualize": "Visualiser" + }, + "torrents": { + "clear_search": "Effacer la recherche", + "copy": "Copier", + "copy_to_clipboard": "Copier dans le presse-papiers", + "delete": "Supprimer", + "delete_action_cannot_be_undone": "Cette action ne peut pas être annulée", + "delete_are_you_sure": "Êtes-vous sûr de vouloir supprimer ce torrent?", + "deselect_all": "Tout désélectionner", + "edit_tags": "Modifier les tags", + "episodes": "Épisodes", + "external_links": "Liens externes", + "file_index": "Index de fichier", + "file_path": "Chemin de fichier", + "file_size": "Taille de fichier", + "file_type": "Type de fichier", + "files": "Fichiers", + "files_count_n": "{{count}} fichiers", + "files_no_info": "Aucune information sur les fichiers disponible", + "files_single": "Fichier unique", + "genres": "Genres", + "info_hash": "Hash d'info", + "info_hashes": "Hashes d'info", + "languages": "Langues", + "leechers": "Leechers", + "magnet": "Magnet", + "magnet_links": "Liens Magnet", + "new_tag": "Nouveau tag", + "order_by": "Trier par", + "order_direction_toggle": "Basculer la direction", + "ordering": { + "files_count": "Nombre de fichiers", + "info_hash": "Hash d'info", + "leechers": "Leechers", + "name": "Nom", + "published_at": "Publié à", + "relevance": "Pertinence", + "seeders": "Seeders", + "size": "Taille", + "updated_at": "Mis à jour à" + }, + "original_release_date": "Date de sortie originale", + "permalink": "Permalien", + "poster": "Affiche", + "published": "Publié", + "rating": "Évaluation", + "refresh": "Rafraîchir les résultats", + "s_l": "S / L", + "search": "Rechercher", + "seeders": "Seeders", + "select_all": "Tout sélectionner", + "showing_x_of_y_files": "Affichage de {{x}} sur {{y}} fichiers", + "size": "Taille", + "source": "Source du torrent", + "summary": "Résumé", + "title": "Titre", + "toggle_drawer": "Basculer le tiroir", + "votes_count_n": "{{count}} votes" + }, + "version": { + "bitmagnet_version": "version bitmagnet {{version}}", + "unknown": "inconnu" + } +} \ No newline at end of file diff --git a/webui/src/app/i18n/translations/hi.json b/webui/src/app/i18n/translations/hi.json new file mode 100644 index 0000000..95bc486 --- /dev/null +++ b/webui/src/app/i18n/translations/hi.json @@ -0,0 +1,296 @@ +{ + "content_types": { + "plural": { + "all": "सभी", + "audiobook": "ऑडियोबुक्स", + "comic": "कॉमिक्स", + "ebook": "ई-बुक्स", + "movie": "फ़िल्में", + "music": "संगीत", + "null": "अज्ञात", + "software": "सॉफ़्टवेयर", + "tv_show": "टीवी शो", + "xxx": "XXX" + }, + "singular": { + "audiobook": "ऑडियोबुक", + "comic": "कॉमिक", + "ebook": "ई-बुक", + "movie": "फ़िल्म", + "music": "संगीत", + "null": "अज्ञात", + "software": "सॉफ़्टवेयर", + "tv_show": "टीवी शो", + "xxx": "XXX" + } + }, + "dashboard": { + "event": { + "created": "बनाया गया", + "failed": "असफल", + "processed": "प्रसंस्कृत", + "updated": "अपडेट किया गया" + }, + "interval": { + "all": "सभी", + "days": "दिन", + "days_1": "1 दिन", + "hours": "घंटे", + "hours_1": "1 घंटा", + "hours_12": "12 घंटे", + "hours_6": "6 घंटे", + "minutes": "मिनट", + "minutes_1": "1 मिनट", + "minutes_15": "15 मिनट", + "minutes_30": "30 मिनट", + "minutes_5": "5 मिनट", + "off": "बंद", + "seconds_10": "10 सेकंड", + "seconds_30": "30 सेकंड", + "weeks_1": "1 सप्ताह" + }, + "metrics": { + "event": "घटना", + "resolution": "रिज़ॉल्यूशन", + "throughput": "थ्रूपुट", + "timeframe": "समय सीमा" + }, + "queues": { + "created": "बनाया गया", + "created_at": "बनाया गया समय", + "enqueue_jobs": "जॉब्स को कतार में लगाएं", + "enqueue_torrent_processing_batch": "टोरेंट प्रोसेसिंग बैच कतार में लगाएं", + "failed": "असफल", + "force_rematch": "पहले से मेल खाई सामग्री को फिर से मिलाएं", + "jobs_enqueued": "जॉब्स कतार में लगाई गईं", + "latency": "लेटेंसी", + "match_content_by_external_api_search": "बाहरी API खोज से सामग्री का मिलान करें", + "match_content_by_local_search": "स्थानीय खोज से सामग्री का मिलान करें", + "payload": "पेलोड", + "pending": "बकाया", + "priority": "प्राथमिकता", + "process_orphaned_torrents_only": "केवल अनाथ टोरेंट्स को प्रोसेस करें", + "processed": "प्रसंस्कृत", + "purge_jobs": "जॉब्स को साफ़ करें", + "purge_queue_jobs": "कतार के जॉब्स को साफ़ करें", + "queue": "कतार", + "queue_purged": "कतार को साफ़ किया गया", + "queues": "कतारें", + "ran_at": "चलाया गया समय", + "retry": "पुनः प्रयास करें", + "total_counts_by_status": "स्थिति द्वारा कुल गणना" + } + }, + "facets": { + "content_type": "सामग्री प्रकार", + "file_type": "फ़ाइल प्रकार", + "genre": "शैली", + "language": "भाषा", + "queue": "कतार", + "status": "स्थिति", + "torrent_source": "टोरेंट स्रोत", + "torrent_tag": "टोरेंट टैग", + "video_resolution": "वीडियो रिज़ॉल्यूशन", + "video_source": "वीडियो स्रोत" + }, + "file_types": { + "archive": "आर्काइव", + "audio": "ऑडियो", + "data": "डेटा", + "document": "दस्तावेज़", + "image": "छवि", + "software": "सॉफ़्टवेयर", + "subtitles": "उपशीर्षक", + "unknown": "अज्ञात", + "video": "वीडियो" + }, + "general": { + "all": "सभी", + "dismiss": "खारिज करें", + "error": "त्रुटि", + "none": "कोई नहीं", + "refresh": "ताज़ा करें", + "status": "स्थिति" + }, + "health": { + "bitmagnet_is_status": "bitmagnet {{status}} है", + "check_failed_with_error": "त्रुटि के साथ जांच विफल", + "component": "घटक", + "components": { + "dht": "DHT", + "postgres": "Postgres", + "tmdb": "TMDB" + }, + "dismiss": "खारिज करें", + "error": "त्रुटि", + "status": "स्थिति", + "statuses": { + "degraded": "क्षीण", + "down": "बंद", + "error": "त्रुटि", + "inactive": "निष्क्रिय", + "started": "शुरू किया गया", + "unknown": "लंबित", + "up": "चालू" + }, + "summary": "स्वास्थ्य सारांश", + "worker": "कार्यकर्ता", + "workers": { + "dht_crawler": "DHT क्रॉलर", + "http_server": "HTTP सर्वर", + "queue_server": "कतार सर्वर" + } + }, + "languages": { + "af": "अफ्रीकी", + "ar": "अरबी", + "az": "अज़ेरी", + "be": "बेलारूसी", + "bg": "बुल्गारियाई", + "bs": "बोस्नियाई", + "ca": "कैटलन", + "ce": "चेचेन", + "co": "कोर्सिकन", + "cs": "चेक", + "cy": "वेल्श", + "da": "डेनिश", + "de": "जर्मन", + "el": "ग्रीक", + "en": "अंग्रेजी", + "es": "स्पैनिश", + "et": "एस्तोनियाई", + "eu": "बास्क", + "fa": "फारसी", + "fi": "फ़िनिश", + "fr": "फ्रेंच", + "he": "हिब्रू", + "hi": "हिंदी", + "hr": "क्रोएशियाई", + "hu": "हंगेरियन", + "hy": "आर्मेनियाई", + "id": "इंडोनेशियाई", + "is": "आइसलैंडिक", + "it": "इतालवी", + "ja": "जापानी", + "ka": "जॉर्जियाई", + "ko": "कोरियाई", + "ku": "कुर्दी", + "lt": "लिथुआनियाई", + "lv": "लातवियाई", + "mi": "माओरी", + "mk": "मैसिडोनियाई", + "ml": "मलयालम", + "mn": "मंगोलियाई", + "ms": "मलय", + "mt": "माल्टीज़", + "nl": "डच", + "no": "नॉर्वेजियन", + "pl": "पोलिश", + "pt": "पुर्तगाली", + "ro": "रोमानियाई", + "ru": "रूसी", + "sa": "संस्कृत", + "sk": "स्लोवाक", + "sl": "स्लोवेनियाई", + "sm": "सामोन", + "so": "सोमाली", + "sr": "सर्बियाई", + "sv": "स्वीडिश", + "ta": "तमिल", + "th": "थाई", + "tr": "तुर्की", + "uk": "यूक्रेनी", + "vi": "वियतनामी", + "yi": "यिद्दिश", + "zh": "चीनी", + "zu": "ज़ुलु" + }, + "layout": { + "bitmagnet_on_service": "{{service}} पर bitmagnet", + "change_theme": "थीम बदलें", + "external_links": "बाहरी लिंक", + "sponsor": "प्रायोजक", + "support_bitmagnet": "bitmagnet को समर्थन दें", + "translate": "अनुवाद करें" + }, + "paginator": { + "first_page": "पहला पृष्ठ", + "items_per_page": "प्रति पृष्ठ आइटम", + "last_page": "अंतिम पृष्ठ", + "next_page": "अगला पृष्ठ", + "previous_page": "पिछला पृष्ठ", + "x_to_y": "{{x}} से {{y}} तक", + "x_to_y_of_z": "{{x}} से {{y}} तक {{z}} में" + }, + "routes": { + "admin": "प्रशासक", + "dashboard": "डैशबोर्ड", + "home": "होम", + "jobs": "नौकरियां", + "queues": "कतारें", + "torrents": "टोरेंट्स", + "visualize": "दृश्य करें" + }, + "torrents": { + "clear_search": "खोज साफ़ करें", + "copy": "कॉपी करें", + "copy_to_clipboard": "क्लिपबोर्ड में कॉपी करें", + "delete": "हटाएं", + "delete_action_cannot_be_undone": "यह क्रिया पूर्ववत नहीं की जा सकती", + "delete_are_you_sure": "क्या आप वाकई इस टोरेंट को हटाना चाहते हैं?", + "deselect_all": "सभी को अचयनित करें", + "edit_tags": "टैग संपादित करें", + "episodes": "एपिसोड्स", + "external_links": "बाहरी लिंक", + "file_index": "फ़ाइल सूचकांक", + "file_path": "फ़ाइल पथ", + "file_size": "फ़ाइल आकार", + "file_type": "फ़ाइल प्रकार", + "files": "फ़ाइलें", + "files_count_n": "{{count}} फ़ाइलें", + "files_no_info": "कोई फ़ाइल जानकारी उपलब्ध नहीं है", + "files_single": "एकल फ़ाइल", + "genres": "शैलियाँ", + "info_hash": "सूचना हैश", + "info_hashes": "सूचना हैशेज", + "languages": "भाषाएँ", + "leechers": "लीचर्स", + "magnet": "मैग्नेट", + "magnet_links": "मैग्नेट लिंक", + "new_tag": "नया टैग", + "order_by": "क्रमबद्ध करें", + "order_direction_toggle": "दिशा बदलें", + "ordering": { + "files_count": "फ़ाइलों की संख्या", + "info_hash": "सूचना हैश", + "leechers": "लीचर्स", + "name": "नाम", + "published_at": "प्रकाशित समय", + "relevance": "प्रासंगिकता", + "seeders": "सीडर्स", + "size": "आकार", + "updated_at": "अपडेट समय" + }, + "original_release_date": "मूल रिलीज़ तिथि", + "permalink": "स्थायी लिंक", + "poster": "पोस्टर", + "published": "प्रकाशित", + "rating": "रेटिंग", + "refresh": "परिणाम ताज़ा करें", + "s_l": "S / L", + "search": "खोज", + "seeders": "सीडर्स", + "select_all": "सभी का चयन करें", + "showing_x_of_y_files": "{{x}} में से {{y}} फ़ाइलें दिखा रहा है", + "size": "आकार", + "source": "टोरेंट स्रोत", + "summary": "सारांश", + "title": "शीर्षक", + "toggle_drawer": "ड्रॉअर बदलें", + "votes_count_n": "{{count}} वोट" + }, + "version": { + "bitmagnet_version": "bitmagnet संस्करण {{version}}", + "unknown": "अज्ञात" + } +} \ No newline at end of file diff --git a/webui/src/app/i18n/translations/ja.json b/webui/src/app/i18n/translations/ja.json new file mode 100644 index 0000000..fc4c595 --- /dev/null +++ b/webui/src/app/i18n/translations/ja.json @@ -0,0 +1,296 @@ +{ + "content_types": { + "plural": { + "all": "すべて", + "audiobook": "オーディオブック", + "comic": "コミック", + "ebook": "電子書籍", + "movie": "映画", + "music": "音楽", + "null": "不明", + "software": "ソフトウェア", + "tv_show": "テレビ番組", + "xxx": "ポルノ" + }, + "singular": { + "audiobook": "オーディオブック", + "comic": "コミック", + "ebook": "電子書籍", + "movie": "映画", + "music": "音楽", + "null": "不明", + "software": "ソフトウェア", + "tv_show": "テレビ番組", + "xxx": "ポルノ" + } + }, + "dashboard": { + "event": { + "created": "作成済み", + "failed": "失敗", + "processed": "処理済み", + "updated": "更新済み" + }, + "interval": { + "all": "すべて", + "days": "日", + "days_1": "1日", + "hours": "時間", + "hours_1": "1時間", + "hours_12": "12時間", + "hours_6": "6時間", + "minutes": "分", + "minutes_1": "1分", + "minutes_15": "15分", + "minutes_30": "30分", + "minutes_5": "5分", + "off": "オフ", + "seconds_10": "10秒", + "seconds_30": "30秒", + "weeks_1": "1週間" + }, + "metrics": { + "event": "イベント", + "resolution": "解像度", + "throughput": "スループット", + "timeframe": "期間" + }, + "queues": { + "created": "作成済み", + "created_at": "作成日時", + "enqueue_jobs": "ジョブをキューに入れる", + "enqueue_torrent_processing_batch": "トレント処理バッチをキューに入れる", + "failed": "失敗", + "force_rematch": "既に一致したコンテンツを強制的に再一致させる", + "jobs_enqueued": "キューに追加されたジョブ", + "latency": "レイテンシ", + "match_content_by_external_api_search": "外部API検索でコンテンツを一致させる", + "match_content_by_local_search": "ローカル検索でコンテンツを一致させる", + "payload": "ペイロード", + "pending": "保留中", + "priority": "優先順位", + "process_orphaned_torrents_only": "孤立したトレントのみ処理する", + "processed": "処理済み", + "purge_jobs": "ジョブを削除", + "purge_queue_jobs": "キュー内のジョブを削除", + "queue": "キュー", + "queue_purged": "キューがクリアされました", + "queues": "キュー", + "ran_at": "実行時刻", + "retry": "再試行", + "total_counts_by_status": "ステータスごとの総数" + } + }, + "facets": { + "content_type": "コンテンツタイプ", + "file_type": "ファイルタイプ", + "genre": "ジャンル", + "language": "言語", + "queue": "キュー", + "status": "ステータス", + "torrent_source": "トレントソース", + "torrent_tag": "トレントタグ", + "video_resolution": "ビデオ解像度", + "video_source": "ビデオソース" + }, + "file_types": { + "archive": "アーカイブ", + "audio": "オーディオ", + "data": "データ", + "document": "ドキュメント", + "image": "画像", + "software": "ソフトウェア", + "subtitles": "字幕", + "unknown": "不明", + "video": "ビデオ" + }, + "general": { + "all": "すべて", + "dismiss": "閉じる", + "error": "エラー", + "none": "なし", + "refresh": "更新", + "status": "ステータス" + }, + "health": { + "bitmagnet_is_status": "bitmagnetは{{status}}です", + "check_failed_with_error": "エラーでチェックに失敗しました", + "component": "コンポーネント", + "components": { + "dht": "DHT", + "postgres": "Postgres", + "tmdb": "TMDB" + }, + "dismiss": "閉じる", + "error": "エラー", + "status": "ステータス", + "statuses": { + "degraded": "低下", + "down": "停止", + "error": "エラー", + "inactive": "非アクティブ", + "started": "開始", + "unknown": "保留中", + "up": "稼働中" + }, + "summary": "健康状態の概要", + "worker": "ワーカー", + "workers": { + "dht_crawler": "DHTクローラー", + "http_server": "HTTPサーバー", + "queue_server": "キューサーバー" + } + }, + "languages": { + "af": "アフリカーンス語", + "ar": "アラビア語", + "az": "アゼルバイジャン語", + "be": "ベラルーシ語", + "bg": "ブルガリア語", + "bs": "ボスニア語", + "ca": "カタルーニャ語", + "ce": "チェチェン語", + "co": "コルシカ語", + "cs": "チェコ語", + "cy": "ウェールズ語", + "da": "デンマーク語", + "de": "ドイツ語", + "el": "ギリシャ語", + "en": "英語", + "es": "スペイン語", + "et": "エストニア語", + "eu": "バスク語", + "fa": "ペルシャ語", + "fi": "フィンランド語", + "fr": "フランス語", + "he": "ヘブライ語", + "hi": "ヒンディー語", + "hr": "クロアチア語", + "hu": "ハンガリー語", + "hy": "アルメニア語", + "id": "インドネシア語", + "is": "アイスランド語", + "it": "イタリア語", + "ja": "日本語", + "ka": "グルジア語", + "ko": "韓国語", + "ku": "クルド語", + "lt": "リトアニア語", + "lv": "ラトビア語", + "mi": "マオリ語", + "mk": "マケドニア語", + "ml": "マラヤーラム語", + "mn": "モンゴル語", + "ms": "マレー語", + "mt": "マルタ語", + "nl": "オランダ語", + "no": "ノルウェー語", + "pl": "ポーランド語", + "pt": "ポルトガル語", + "ro": "ルーマニア語", + "ru": "ロシア語", + "sa": "サンスクリット", + "sk": "スロバキア語", + "sl": "スロベニア語", + "sm": "サモア語", + "so": "ソマリ語", + "sr": "セルビア語", + "sv": "スウェーデン語", + "ta": "タミル語", + "th": "タイ語", + "tr": "トルコ語", + "uk": "ウクライナ語", + "vi": "ベトナム語", + "yi": "イディッシュ語", + "zh": "中国語", + "zu": "ズールー語" + }, + "layout": { + "bitmagnet_on_service": "{{service}}のbitmagnet", + "change_theme": "テーマを変更", + "external_links": "外部リンク", + "sponsor": "スポンサー", + "support_bitmagnet": "bitmagnetをサポート", + "translate": "翻訳する" + }, + "paginator": { + "first_page": "最初のページ", + "items_per_page": "ページあたりの項目数", + "last_page": "最後のページ", + "next_page": "次のページ", + "previous_page": "前のページ", + "x_to_y": "{{x}} から {{y}} まで", + "x_to_y_of_z": "{{x}} から {{y}} までの {{z}}" + }, + "routes": { + "admin": "管理者", + "dashboard": "ダッシュボード", + "home": "ホーム", + "jobs": "ジョブ", + "queues": "キュー", + "torrents": "トレント", + "visualize": "可視化" + }, + "torrents": { + "clear_search": "検索をクリア", + "copy": "コピー", + "copy_to_clipboard": "クリップボードにコピー", + "delete": "削除", + "delete_action_cannot_be_undone": "この操作は元に戻せません", + "delete_are_you_sure": "このトレントを削除してもよろしいですか?", + "deselect_all": "すべての選択を解除", + "edit_tags": "タグを編集", + "episodes": "エピソード", + "external_links": "外部リンク", + "file_index": "ファイルインデックス", + "file_path": "ファイルパス", + "file_size": "ファイルサイズ", + "file_type": "ファイルタイプ", + "files": "ファイル", + "files_count_n": "{{count}} 件のファイル", + "files_no_info": "ファイル情報はありません", + "files_single": "単一ファイル", + "genres": "ジャンル", + "info_hash": "情報ハッシュ", + "info_hashes": "情報ハッシュ", + "languages": "言語", + "leechers": "リーチャー", + "magnet": "マグネット", + "magnet_links": "マグネットリンク", + "new_tag": "新しいタグ", + "order_by": "並び替え", + "order_direction_toggle": "並び順を切り替え", + "ordering": { + "files_count": "ファイル数", + "info_hash": "情報ハッシュ", + "leechers": "リーチャー", + "name": "名前", + "published_at": "公開日時", + "relevance": "関連性", + "seeders": "シーダー", + "size": "サイズ", + "updated_at": "更新日時" + }, + "original_release_date": "オリジナルの発売日", + "permalink": "パーマリンク", + "poster": "ポスター", + "published": "公開済み", + "rating": "評価", + "refresh": "結果を更新", + "s_l": "S / L", + "search": "検索", + "seeders": "シーダー", + "select_all": "すべて選択", + "showing_x_of_y_files": "{{x}} 件中 {{y}} 件表示", + "size": "サイズ", + "source": "トレントソース", + "summary": "概要", + "title": "タイトル", + "toggle_drawer": "引き出しを切り替え", + "votes_count_n": "{{count}} 票" + }, + "version": { + "bitmagnet_version": "bitmagnetバージョン {{version}}", + "unknown": "不明" + } +} \ No newline at end of file diff --git a/webui/src/app/i18n/translations/nl.json b/webui/src/app/i18n/translations/nl.json new file mode 100644 index 0000000..2cc419a --- /dev/null +++ b/webui/src/app/i18n/translations/nl.json @@ -0,0 +1,296 @@ +{ + "content_types": { + "plural": { + "all": "Alle", + "audiobook": "Audioboeken", + "comic": "Strips", + "ebook": "E-Boeken", + "movie": "Films", + "music": "Muziek", + "null": "Onbekend", + "software": "Software", + "tv_show": "Tv-programma's", + "xxx": "XXX" + }, + "singular": { + "audiobook": "Audioboek", + "comic": "Strip", + "ebook": "E-Book", + "movie": "Film", + "music": "Muziek", + "null": "Onbekend", + "software": "Software", + "tv_show": "Tv-programma", + "xxx": "XXX" + } + }, + "dashboard": { + "event": { + "created": "Gemaakt", + "failed": "Mislukt", + "processed": "Verwerkt", + "updated": "Bijgewerkt" + }, + "interval": { + "all": "Alle", + "days": "Dagen", + "days_1": "1 dag", + "hours": "Uren", + "hours_1": "1 uur", + "hours_12": "12 uur", + "hours_6": "6 uur", + "minutes": "Minuten", + "minutes_1": "1 minuut", + "minutes_15": "15 minuten", + "minutes_30": "30 minuten", + "minutes_5": "5 minuten", + "off": "Uit", + "seconds_10": "10 seconden", + "seconds_30": "30 seconden", + "weeks_1": "1 week" + }, + "metrics": { + "event": "Gebeurtenis", + "resolution": "Resolutie", + "throughput": "Doorvoer", + "timeframe": "Tijdsperiode" + }, + "queues": { + "created": "Gemaakt", + "created_at": "Gemaakt op", + "enqueue_jobs": "Voeg taken toe aan wachtrij", + "enqueue_torrent_processing_batch": "Torrentverwerkingsbatch toevoegen", + "failed": "Mislukt", + "force_rematch": "Forceer nieuwe match van al gematchte inhoud", + "jobs_enqueued": "Taken in wachtrij gezet", + "latency": "Latentie", + "match_content_by_external_api_search": "Match inhoud via externe API-zoekopdracht", + "match_content_by_local_search": "Match inhoud via lokale zoekopdracht", + "payload": "Inhoud", + "pending": "In afwachting", + "priority": "Prioriteit", + "process_orphaned_torrents_only": "Verwerk alleen verweesde torrents", + "processed": "Verwerkt", + "purge_jobs": "Wis taken", + "purge_queue_jobs": "Wis wachtrijtaken", + "queue": "Wachtrij", + "queue_purged": "Wachtrij gewist", + "queues": "Wachtrijen", + "ran_at": "Uitgevoerd op", + "retry": "Opnieuw proberen", + "total_counts_by_status": "Totaal aantal per status" + } + }, + "facets": { + "content_type": "Inhoudstype", + "file_type": "Bestandstype", + "genre": "Genre", + "language": "Taal", + "queue": "Wachtrij", + "status": "Status", + "torrent_source": "Torrentbron", + "torrent_tag": "Torrenttag", + "video_resolution": "Videoresolutie", + "video_source": "Videobron" + }, + "file_types": { + "archive": "Archief", + "audio": "Audio", + "data": "Data", + "document": "Document", + "image": "Afbeelding", + "software": "Software", + "subtitles": "Ondertitels", + "unknown": "Onbekend", + "video": "Video" + }, + "general": { + "all": "Alle", + "dismiss": "Sluiten", + "error": "Fout", + "none": "Geen", + "refresh": "Verversen", + "status": "Status" + }, + "health": { + "bitmagnet_is_status": "bitmagnet is {{status}}", + "check_failed_with_error": "Controle mislukt met foutmelding", + "component": "Component", + "components": { + "dht": "DHT", + "postgres": "Postgres", + "tmdb": "TMDB" + }, + "dismiss": "Sluiten", + "error": "Fout", + "status": "Status", + "statuses": { + "degraded": "Verlaagd", + "down": "Niet beschikbaar", + "error": "Fout", + "inactive": "Inactief", + "started": "Gestart", + "unknown": "Onbekend", + "up": "Beschikbaar" + }, + "summary": "Gezondheidsrapport", + "worker": "Werker", + "workers": { + "dht_crawler": "DHT crawler", + "http_server": "HTTP server", + "queue_server": "Wachtrijserver" + } + }, + "languages": { + "af": "Afrikaans", + "ar": "Arabisch", + "az": "Azerbeidzjaans", + "be": "Wit-Russisch", + "bg": "Bulgaars", + "bs": "Bosnisch", + "ca": "Catalaans", + "ce": "Tsjetsjeens", + "co": "Corsicaans", + "cs": "Tsjechisch", + "cy": "Welsh", + "da": "Deens", + "de": "Duits", + "el": "Grieks", + "en": "Engels", + "es": "Spaans", + "et": "Ests", + "eu": "Baskisch", + "fa": "Perzisch", + "fi": "Fins", + "fr": "Frans", + "he": "Hebreeuws", + "hi": "Hindi", + "hr": "Kroatisch", + "hu": "Hongaars", + "hy": "Armeens", + "id": "Indonesisch", + "is": "IJslands", + "it": "Italiaans", + "ja": "Japans", + "ka": "Georgisch", + "ko": "Koreaans", + "ku": "Koerdisch", + "lt": "Litouws", + "lv": "Lets", + "mi": "Maori", + "mk": "Macedonisch", + "ml": "Malayalam", + "mn": "Mongools", + "ms": "Maleis", + "mt": "Maltees", + "nl": "Nederlands", + "no": "Noors", + "pl": "Pools", + "pt": "Portugees", + "ro": "Roemeens", + "ru": "Russisch", + "sa": "Sanskriet", + "sk": "Slowaaks", + "sl": "Sloveens", + "sm": "Samoaans", + "so": "Somalisch", + "sr": "Servisch", + "sv": "Zweeds", + "ta": "Tamil", + "th": "Thais", + "tr": "Turks", + "uk": "Oekraïens", + "vi": "Vietnamees", + "yi": "Jiddisch", + "zh": "Chinees", + "zu": "Zoeloe" + }, + "layout": { + "bitmagnet_on_service": "bitmagnet op {{service}}", + "change_theme": "Wijzig thema", + "external_links": "Externe links", + "sponsor": "Sponsor", + "support_bitmagnet": "Ondersteun bitmagnet", + "translate": "Vertalen" + }, + "paginator": { + "first_page": "Eerste pagina", + "items_per_page": "Items per pagina", + "last_page": "Laatste pagina", + "next_page": "Volgende pagina", + "previous_page": "Vorige pagina", + "x_to_y": "{{x}} tot {{y}}", + "x_to_y_of_z": "{{x}} tot {{y}} van {{z}}" + }, + "routes": { + "admin": "Beheerder", + "dashboard": "Dashboard", + "home": "Home", + "jobs": "Taken", + "queues": "Wachtrijen", + "torrents": "Torrents", + "visualize": "Visualiseren" + }, + "torrents": { + "clear_search": "Zoekopdracht wissen", + "copy": "Kopiëren", + "copy_to_clipboard": "Kopiëren naar klembord", + "delete": "Verwijderen", + "delete_action_cannot_be_undone": "Deze actie kan niet ongedaan worden gemaakt", + "delete_are_you_sure": "Weet u zeker dat u deze torrent wilt verwijderen?", + "deselect_all": "Deselecteer alles", + "edit_tags": "Tags bewerken", + "episodes": "Afleveringen", + "external_links": "Externe links", + "file_index": "Bestandsindex", + "file_path": "Bestandspad", + "file_size": "Bestandsgrootte", + "file_type": "Bestandstype", + "files": "Bestanden", + "files_count_n": "{{count}} bestanden", + "files_no_info": "Geen informatie over bestanden beschikbaar", + "files_single": "Enkel bestand", + "genres": "Genres", + "info_hash": "Info hash", + "info_hashes": "Info hashes", + "languages": "Talen", + "leechers": "Leechers", + "magnet": "Magnet", + "magnet_links": "Magnet-links", + "new_tag": "Nieuwe tag", + "order_by": "Sorteren op", + "order_direction_toggle": "Richting omkeren", + "ordering": { + "files_count": "Aantal bestanden", + "info_hash": "Info hash", + "leechers": "Leechers", + "name": "Naam", + "published_at": "Gepubliceerd op", + "relevance": "Relevantie", + "seeders": "Seeders", + "size": "Grootte", + "updated_at": "Bijgewerkt op" + }, + "original_release_date": "Oorspronkelijke releasedatum", + "permalink": "Permalink", + "poster": "Poster", + "published": "Gepubliceerd", + "rating": "Beoordeling", + "refresh": "Vernieuw resultaten", + "s_l": "S / L", + "search": "Zoeken", + "seeders": "Seeders", + "select_all": "Alles selecteren", + "showing_x_of_y_files": "{{x}} van {{y}} bestanden weergegeven", + "size": "Grootte", + "source": "Torrentbron", + "summary": "Samenvatting", + "title": "Titel", + "toggle_drawer": "Zijpaneel in-/uitschakelen", + "votes_count_n": "{{count}} stemmen" + }, + "version": { + "bitmagnet_version": "bitmagnet versie {{version}}", + "unknown": "onbekend" + } +} \ No newline at end of file diff --git a/webui/src/app/i18n/translations/pt.json b/webui/src/app/i18n/translations/pt.json new file mode 100644 index 0000000..62c8d26 --- /dev/null +++ b/webui/src/app/i18n/translations/pt.json @@ -0,0 +1,296 @@ +{ + "content_types": { + "plural": { + "all": "Todos", + "audiobook": "Audiolivros", + "comic": "Quadrinhos", + "ebook": "E-books", + "movie": "Filmes", + "music": "Música", + "null": "Desconhecido", + "software": "Software", + "tv_show": "Programas de TV", + "xxx": "XXX" + }, + "singular": { + "audiobook": "Audiolivro", + "comic": "Quadrinho", + "ebook": "E-book", + "movie": "Filme", + "music": "Música", + "null": "Desconhecido", + "software": "Software", + "tv_show": "Programa de TV", + "xxx": "XXX" + } + }, + "dashboard": { + "event": { + "created": "Criado", + "failed": "Falhou", + "processed": "Processado", + "updated": "Atualizado" + }, + "interval": { + "all": "Todos", + "days": "Dias", + "days_1": "1 dia", + "hours": "Horas", + "hours_1": "1 hora", + "hours_12": "12 horas", + "hours_6": "6 horas", + "minutes": "Minutos", + "minutes_1": "1 minuto", + "minutes_15": "15 minutos", + "minutes_30": "30 minutos", + "minutes_5": "5 minutos", + "off": "Desligado", + "seconds_10": "10 segundos", + "seconds_30": "30 segundos", + "weeks_1": "1 semana" + }, + "metrics": { + "event": "Evento", + "resolution": "Resolução", + "throughput": "Taxa de transferência", + "timeframe": "Intervalo de tempo" + }, + "queues": { + "created": "Criado", + "created_at": "Criado em", + "enqueue_jobs": "Enfileirar trabalhos", + "enqueue_torrent_processing_batch": "Enfileirar lote de processamento de torrents", + "failed": "Falhou", + "force_rematch": "Forçar nova correspondência de conteúdo já correspondido", + "jobs_enqueued": "Trabalhos enfileirados", + "latency": "Latência", + "match_content_by_external_api_search": "Correspondência de conteúdo por pesquisa de API externa", + "match_content_by_local_search": "Correspondência de conteúdo por pesquisa local", + "payload": "Carga útil", + "pending": "Pendente", + "priority": "Prioridade", + "process_orphaned_torrents_only": "Processar apenas torrents órfãos", + "processed": "Processado", + "purge_jobs": "Limpar trabalhos", + "purge_queue_jobs": "Limpar trabalhos da fila", + "queue": "Fila", + "queue_purged": "Fila limpa", + "queues": "Filas", + "ran_at": "Executado em", + "retry": "Tentar novamente", + "total_counts_by_status": "Contagens totais por status" + } + }, + "facets": { + "content_type": "Tipo de Conteúdo", + "file_type": "Tipo de Arquivo", + "genre": "Gênero", + "language": "Idioma", + "queue": "Fila", + "status": "Status", + "torrent_source": "Fonte do Torrent", + "torrent_tag": "Tag do Torrent", + "video_resolution": "Resolução de Vídeo", + "video_source": "Fonte de Vídeo" + }, + "file_types": { + "archive": "Arquivo", + "audio": "Áudio", + "data": "Dados", + "document": "Documento", + "image": "Imagem", + "software": "Software", + "subtitles": "Legendas", + "unknown": "Desconhecido", + "video": "Vídeo" + }, + "general": { + "all": "Todos", + "dismiss": "Fechar", + "error": "Erro", + "none": "Nenhum", + "refresh": "Atualizar", + "status": "Status" + }, + "health": { + "bitmagnet_is_status": "bitmagnet está {{status}}", + "check_failed_with_error": "Verificação falhou com erro", + "component": "Componente", + "components": { + "dht": "DHT", + "postgres": "Postgres", + "tmdb": "TMDB" + }, + "dismiss": "Fechar", + "error": "Erro", + "status": "Status", + "statuses": { + "degraded": "Degradado", + "down": "Fora do ar", + "error": "Erro", + "inactive": "Inativo", + "started": "Iniciado", + "unknown": "Pendente", + "up": "Funcionando" + }, + "summary": "Resumo de Saúde", + "worker": "Trabalhador", + "workers": { + "dht_crawler": "Rastreamento DHT", + "http_server": "Servidor HTTP", + "queue_server": "Servidor de Fila" + } + }, + "languages": { + "af": "Africâner", + "ar": "Árabe", + "az": "Azeri", + "be": "Bielorrusso", + "bg": "Búlgaro", + "bs": "Bósnio", + "ca": "Catalão", + "ce": "Checheno", + "co": "Corso", + "cs": "Tcheco", + "cy": "Galês", + "da": "Dinamarquês", + "de": "Alemão", + "el": "Grego", + "en": "Inglês", + "es": "Espanhol", + "et": "Estoniano", + "eu": "Basco", + "fa": "Persa", + "fi": "Finlandês", + "fr": "Francês", + "he": "Hebraico", + "hi": "Hindi", + "hr": "Croata", + "hu": "Húngaro", + "hy": "Armênio", + "id": "Indonésio", + "is": "Islandês", + "it": "Italiano", + "ja": "Japonês", + "ka": "Georgiano", + "ko": "Coreano", + "ku": "Curdo", + "lt": "Lituano", + "lv": "Letão", + "mi": "Maori", + "mk": "Macedônio", + "ml": "Malaiala", + "mn": "Mongol", + "ms": "Malaio", + "mt": "Maltês", + "nl": "Holandês", + "no": "Norueguês", + "pl": "Polonês", + "pt": "Português", + "ro": "Romeno", + "ru": "Russo", + "sa": "Sânscrito", + "sk": "Eslovaco", + "sl": "Esloveno", + "sm": "Samoano", + "so": "Somali", + "sr": "Sérvio", + "sv": "Sueco", + "ta": "Tâmil", + "th": "Tailandês", + "tr": "Turco", + "uk": "Ucraniano", + "vi": "Vietnamita", + "yi": "Iídiche", + "zh": "Chinês", + "zu": "Zulu" + }, + "layout": { + "bitmagnet_on_service": "bitmagnet em {{service}}", + "change_theme": "Alterar tema", + "external_links": "Links externos", + "sponsor": "Patrocinador", + "support_bitmagnet": "Apoiar bitmagnet", + "translate": "Traduzir" + }, + "paginator": { + "first_page": "Primeira página", + "items_per_page": "Itens por página", + "last_page": "Última página", + "next_page": "Próxima página", + "previous_page": "Página anterior", + "x_to_y": "{{x}} a {{y}}", + "x_to_y_of_z": "{{x}} a {{y}} de {{z}}" + }, + "routes": { + "admin": "Administração", + "dashboard": "Painel", + "home": "Início", + "jobs": "Tarefas", + "queues": "Filas", + "torrents": "Torrents", + "visualize": "Visualizar" + }, + "torrents": { + "clear_search": "Limpar Pesquisa", + "copy": "Copiar", + "copy_to_clipboard": "Copiar para a área de transferência", + "delete": "Excluir", + "delete_action_cannot_be_undone": "Esta ação não pode ser desfeita", + "delete_are_you_sure": "Tem certeza de que deseja excluir este torrent?", + "deselect_all": "Desmarcar todos", + "edit_tags": "Editar tags", + "episodes": "Episódios", + "external_links": "Links externos", + "file_index": "Índice de arquivo", + "file_path": "Caminho do arquivo", + "file_size": "Tamanho do arquivo", + "file_type": "Tipo de arquivo", + "files": "Arquivos", + "files_count_n": "{{count}} arquivos", + "files_no_info": "Sem informações de arquivos disponíveis", + "files_single": "Arquivo único", + "genres": "Gêneros", + "info_hash": "Hash de informação", + "info_hashes": "Hashes de informação", + "languages": "Idiomas", + "leechers": "Leechers", + "magnet": "Magnet", + "magnet_links": "Links magnet", + "new_tag": "Nova tag", + "order_by": "Ordenar por", + "order_direction_toggle": "Inverter direção", + "ordering": { + "files_count": "Contagem de arquivos", + "info_hash": "Hash de informação", + "leechers": "Leechers", + "name": "Nome", + "published_at": "Publicado em", + "relevance": "Relevância", + "seeders": "Seeders", + "size": "Tamanho", + "updated_at": "Atualizado em" + }, + "original_release_date": "Data de lançamento original", + "permalink": "Link permanente", + "poster": "Pôster", + "published": "Publicado", + "rating": "Classificação", + "refresh": "Atualizar resultados", + "s_l": "S / L", + "search": "Buscar", + "seeders": "Seeders", + "select_all": "Selecionar tudo", + "showing_x_of_y_files": "Mostrando {{x}} de {{y}} arquivos", + "size": "Tamanho", + "source": "Fonte do torrent", + "summary": "Resumo", + "title": "Título", + "toggle_drawer": "Alternar gaveta", + "votes_count_n": "{{count}} votos" + }, + "version": { + "bitmagnet_version": "Versão do bitmagnet {{version}}", + "unknown": "desconhecido" + } +} \ No newline at end of file diff --git a/webui/src/app/i18n/translations/ru.json b/webui/src/app/i18n/translations/ru.json new file mode 100644 index 0000000..cd22829 --- /dev/null +++ b/webui/src/app/i18n/translations/ru.json @@ -0,0 +1,296 @@ +{ + "content_types": { + "plural": { + "all": "Все", + "audiobook": "Аудиокниги", + "comic": "Комиксы", + "ebook": "Электронные книги", + "movie": "Фильмы", + "music": "Музыка", + "null": "Неизвестно", + "software": "Программы", + "tv_show": "Телепередачи", + "xxx": "Порно" + }, + "singular": { + "audiobook": "Аудиокнига", + "comic": "Комикс", + "ebook": "Электронная книга", + "movie": "Фильм", + "music": "Музыка", + "null": "Неизвестно", + "software": "Программа", + "tv_show": "Телепередача", + "xxx": "Порно" + } + }, + "dashboard": { + "event": { + "created": "Создано", + "failed": "Ошибка", + "processed": "Обработано", + "updated": "Обновлено" + }, + "interval": { + "all": "Все", + "days": "Дни", + "days_1": "1 день", + "hours": "Часы", + "hours_1": "1 час", + "hours_12": "12 часов", + "hours_6": "6 часов", + "minutes": "Минуты", + "minutes_1": "1 минута", + "minutes_15": "15 минут", + "minutes_30": "30 минут", + "minutes_5": "5 минут", + "off": "Отключено", + "seconds_10": "10 секунд", + "seconds_30": "30 секунд", + "weeks_1": "1 неделя" + }, + "metrics": { + "event": "Событие", + "resolution": "Разрешение", + "throughput": "Пропускная способность", + "timeframe": "Период времени" + }, + "queues": { + "created": "Создано", + "created_at": "Создано в", + "enqueue_jobs": "Добавить задания в очередь", + "enqueue_torrent_processing_batch": "Добавить партию для обработки торрентов", + "failed": "Ошибка", + "force_rematch": "Принудительное повторное сопоставление уже сопоставленного контента", + "jobs_enqueued": "Задания добавлены в очередь", + "latency": "Задержка", + "match_content_by_external_api_search": "Сопоставить контент через внешний API", + "match_content_by_local_search": "Сопоставить контент через локальный поиск", + "payload": "Данные", + "pending": "В ожидании", + "priority": "Приоритет", + "process_orphaned_torrents_only": "Обрабатывать только «осиротевшие» торренты", + "processed": "Обработано", + "purge_jobs": "Очистить задания", + "purge_queue_jobs": "Очистить задания очереди", + "queue": "Очередь", + "queue_purged": "Очередь очищена", + "queues": "Очереди", + "ran_at": "Выполнено в", + "retry": "Повторить", + "total_counts_by_status": "Общее количество по статусам" + } + }, + "facets": { + "content_type": "Тип контента", + "file_type": "Тип файла", + "genre": "Жанр", + "language": "Язык", + "queue": "Очередь", + "status": "Статус", + "torrent_source": "Источник торрента", + "torrent_tag": "Тег торрента", + "video_resolution": "Разрешение видео", + "video_source": "Источник видео" + }, + "file_types": { + "archive": "Архив", + "audio": "Аудио", + "data": "Данные", + "document": "Документ", + "image": "Изображение", + "software": "Программы", + "subtitles": "Субтитры", + "unknown": "Неизвестно", + "video": "Видео" + }, + "general": { + "all": "Все", + "dismiss": "Закрыть", + "error": "Ошибка", + "none": "Нет", + "refresh": "Обновить", + "status": "Статус" + }, + "health": { + "bitmagnet_is_status": "bitmagnet {{status}}", + "check_failed_with_error": "Проверка завершилась с ошибкой", + "component": "Компонент", + "components": { + "dht": "DHT", + "postgres": "Postgres", + "tmdb": "TMDB" + }, + "dismiss": "Закрыть", + "error": "Ошибка", + "status": "Статус", + "statuses": { + "degraded": "Снижена производительность", + "down": "Не работает", + "error": "Ошибка", + "inactive": "Неактивен", + "started": "Запущено", + "unknown": "Неизвестно", + "up": "Работает" + }, + "summary": "Сводка состояния", + "worker": "Рабочий", + "workers": { + "dht_crawler": "DHT обходчик", + "http_server": "HTTP сервер", + "queue_server": "Сервер очередей" + } + }, + "languages": { + "af": "Африкаанс", + "ar": "Арабский", + "az": "Азербайджанский", + "be": "Белорусский", + "bg": "Болгарский", + "bs": "Боснийский", + "ca": "Каталанский", + "ce": "Чеченский", + "co": "Корсиканский", + "cs": "Чешский", + "cy": "Валлийский", + "da": "Датский", + "de": "Немецкий", + "el": "Греческий", + "en": "Английский", + "es": "Испанский", + "et": "Эстонский", + "eu": "Баскский", + "fa": "Персидский", + "fi": "Финский", + "fr": "Французский", + "he": "Иврит", + "hi": "Хинди", + "hr": "Хорватский", + "hu": "Венгерский", + "hy": "Армянский", + "id": "Индонезийский", + "is": "Исландский", + "it": "Итальянский", + "ja": "Японский", + "ka": "Грузинский", + "ko": "Корейский", + "ku": "Курдский", + "lt": "Литовский", + "lv": "Латышский", + "mi": "Маори", + "mk": "Македонский", + "ml": "Малаялам", + "mn": "Монгольский", + "ms": "Малайский", + "mt": "Мальтийский", + "nl": "Нидерландский", + "no": "Норвежский", + "pl": "Польский", + "pt": "Португальский", + "ro": "Румынский", + "ru": "Русский", + "sa": "Санскрит", + "sk": "Словацкий", + "sl": "Словенский", + "sm": "Самоанский", + "so": "Сомалийский", + "sr": "Сербский", + "sv": "Шведский", + "ta": "Тамильский", + "th": "Тайский", + "tr": "Турецкий", + "uk": "Украинский", + "vi": "Вьетнамский", + "yi": "Идиш", + "zh": "Китайский", + "zu": "Зулусский" + }, + "layout": { + "bitmagnet_on_service": "bitmagnet на {{service}}", + "change_theme": "Изменить тему", + "external_links": "Внешние ссылки", + "sponsor": "Спонсор", + "support_bitmagnet": "Поддержать bitmagnet", + "translate": "Перевести" + }, + "paginator": { + "first_page": "Первая страница", + "items_per_page": "Элементов на странице", + "last_page": "Последняя страница", + "next_page": "Следующая страница", + "previous_page": "Предыдущая страница", + "x_to_y": "{{x}} до {{y}}", + "x_to_y_of_z": "{{x}} до {{y}} из {{z}}" + }, + "routes": { + "admin": "Администратор", + "dashboard": "Панель управления", + "home": "Главная", + "jobs": "Задания", + "queues": "Очереди", + "torrents": "Торренты", + "visualize": "Визуализация" + }, + "torrents": { + "clear_search": "Очистить поиск", + "copy": "Копировать", + "copy_to_clipboard": "Копировать в буфер обмена", + "delete": "Удалить", + "delete_action_cannot_be_undone": "Это действие нельзя отменить", + "delete_are_you_sure": "Вы уверены, что хотите удалить этот торрент?", + "deselect_all": "Снять выделение", + "edit_tags": "Редактировать теги", + "episodes": "Эпизоды", + "external_links": "Внешние ссылки", + "file_index": "Индекс файла", + "file_path": "Путь к файлу", + "file_size": "Размер файла", + "file_type": "Тип файла", + "files": "Файлы", + "files_count_n": "{{count}} файлов", + "files_no_info": "Информация о файлах недоступна", + "files_single": "Один файл", + "genres": "Жанры", + "info_hash": "Хэш информации", + "info_hashes": "Хэши информации", + "languages": "Языки", + "leechers": "Личеры", + "magnet": "Магнет", + "magnet_links": "Магнет ссылки", + "new_tag": "Новый тег", + "order_by": "Сортировать по", + "order_direction_toggle": "Переключить направление", + "ordering": { + "files_count": "Количество файлов", + "info_hash": "Хэш информации", + "leechers": "Личеры", + "name": "Имя", + "published_at": "Дата публикации", + "relevance": "Актуальность", + "seeders": "Сидеры", + "size": "Размер", + "updated_at": "Дата обновления" + }, + "original_release_date": "Оригинальная дата выпуска", + "permalink": "Постоянная ссылка", + "poster": "Постер", + "published": "Опубликовано", + "rating": "Рейтинг", + "refresh": "Обновить результаты", + "s_l": "S / L", + "search": "Поиск", + "seeders": "Сидеры", + "select_all": "Выбрать все", + "showing_x_of_y_files": "Показано {{x}} из {{y}} файлов", + "size": "Размер", + "source": "Источник торрента", + "summary": "Сводка", + "title": "Название", + "toggle_drawer": "Переключить панель", + "votes_count_n": "{{count}} голосов" + }, + "version": { + "bitmagnet_version": "Версия bitmagnet {{version}}", + "unknown": "неизвестно" + } +} \ No newline at end of file diff --git a/webui/src/app/i18n/translations/tr.json b/webui/src/app/i18n/translations/tr.json new file mode 100644 index 0000000..51fdece --- /dev/null +++ b/webui/src/app/i18n/translations/tr.json @@ -0,0 +1,296 @@ +{ + "content_types": { + "plural": { + "all": "Tümü", + "audiobook": "Sesli Kitaplar", + "comic": "Çizgi Romanlar", + "ebook": "E-Kitaplar", + "movie": "Filmler", + "music": "Müzik", + "null": "Bilinmiyor", + "software": "Yazılım", + "tv_show": "TV Programları", + "xxx": "XXX" + }, + "singular": { + "audiobook": "Sesli Kitap", + "comic": "Çizgi Roman", + "ebook": "E-Kitap", + "movie": "Film", + "music": "Müzik", + "null": "Bilinmiyor", + "software": "Yazılım", + "tv_show": "TV Programı", + "xxx": "XXX" + } + }, + "dashboard": { + "event": { + "created": "Oluşturuldu", + "failed": "Başarısız", + "processed": "İşlendi", + "updated": "Güncellendi" + }, + "interval": { + "all": "Tümü", + "days": "Günler", + "days_1": "1 gün", + "hours": "Saatler", + "hours_1": "1 saat", + "hours_12": "12 saat", + "hours_6": "6 saat", + "minutes": "Dakikalar", + "minutes_1": "1 dakika", + "minutes_15": "15 dakika", + "minutes_30": "30 dakika", + "minutes_5": "5 dakika", + "off": "Kapalı", + "seconds_10": "10 saniye", + "seconds_30": "30 saniye", + "weeks_1": "1 hafta" + }, + "metrics": { + "event": "Olay", + "resolution": "Çözünürlük", + "throughput": "Verim", + "timeframe": "Zaman Dilimi" + }, + "queues": { + "created": "Oluşturuldu", + "created_at": "Oluşturulma tarihi", + "enqueue_jobs": "İşleri Kuyruğa Al", + "enqueue_torrent_processing_batch": "Torrent İşleme Paketini Kuyruğa Al", + "failed": "Başarısız", + "force_rematch": "Eşleşmiş içeriği yeniden eşleştir", + "jobs_enqueued": "Kuyruğa Alınan İşler", + "latency": "Gecikme", + "match_content_by_external_api_search": "Dış API aramasıyla içeriği eşleştir", + "match_content_by_local_search": "Yerel aramayla içeriği eşleştir", + "payload": "Veri Yükü", + "pending": "Beklemede", + "priority": "Öncelik", + "process_orphaned_torrents_only": "Sadece sahipsiz torrentleri işle", + "processed": "İşlendi", + "purge_jobs": "İşleri Temizle", + "purge_queue_jobs": "Kuyruk İşlerini Temizle", + "queue": "Kuyruk", + "queue_purged": "Kuyruk Temizlendi", + "queues": "Kuyruklar", + "ran_at": "Çalıştırıldı", + "retry": "Tekrar Dene", + "total_counts_by_status": "Duruma Göre Toplam Sayılar" + } + }, + "facets": { + "content_type": "İçerik Türü", + "file_type": "Dosya Türü", + "genre": "Tür", + "language": "Dil", + "queue": "Kuyruk", + "status": "Durum", + "torrent_source": "Torrent Kaynağı", + "torrent_tag": "Torrent Etiketi", + "video_resolution": "Video Çözünürlüğü", + "video_source": "Video Kaynağı" + }, + "file_types": { + "archive": "Arşiv", + "audio": "Ses", + "data": "Veri", + "document": "Belge", + "image": "Görüntü", + "software": "Yazılım", + "subtitles": "Altyazılar", + "unknown": "Bilinmiyor", + "video": "Video" + }, + "general": { + "all": "Tümü", + "dismiss": "Kapat", + "error": "Hata", + "none": "Hiçbiri", + "refresh": "Yenile", + "status": "Durum" + }, + "health": { + "bitmagnet_is_status": "bitmagnet durumu {{status}}", + "check_failed_with_error": "Hata ile kontrol başarısız oldu", + "component": "Bileşen", + "components": { + "dht": "DHT", + "postgres": "Postgres", + "tmdb": "TMDB" + }, + "dismiss": "Kapat", + "error": "Hata", + "status": "Durum", + "statuses": { + "degraded": "Azalmış", + "down": "Kapalı", + "error": "Hata", + "inactive": "Etkin değil", + "started": "Başladı", + "unknown": "Bilinmiyor", + "up": "Çalışıyor" + }, + "summary": "Sağlık Özeti", + "worker": "İşçi", + "workers": { + "dht_crawler": "DHT tarayıcı", + "http_server": "HTTP sunucusu", + "queue_server": "Kuyruk sunucusu" + } + }, + "languages": { + "af": "Afrikanca", + "ar": "Arapça", + "az": "Azerice", + "be": "Beyaz Rusça", + "bg": "Bulgarca", + "bs": "Boşnakça", + "ca": "Katalanca", + "ce": "Çeçence", + "co": "Korsikaca", + "cs": "Çekçe", + "cy": "Galce", + "da": "Danca", + "de": "Almanca", + "el": "Yunanca", + "en": "İngilizce", + "es": "İspanyolca", + "et": "Estonca", + "eu": "Baskça", + "fa": "Farsça", + "fi": "Fince", + "fr": "Fransızca", + "he": "İbranice", + "hi": "Hintçe", + "hr": "Hırvatça", + "hu": "Macarca", + "hy": "Ermenice", + "id": "Endonezce", + "is": "İzlandaca", + "it": "İtalyanca", + "ja": "Japonca", + "ka": "Gürcüce", + "ko": "Korece", + "ku": "Kürtçe", + "lt": "Litvanca", + "lv": "Letonca", + "mi": "Maorice", + "mk": "Makedonca", + "ml": "Malayalamca", + "mn": "Moğolca", + "ms": "Malayca", + "mt": "Maltaca", + "nl": "Flemenkçe", + "no": "Norveççe", + "pl": "Lehçe", + "pt": "Portekizce", + "ro": "Romence", + "ru": "Rusça", + "sa": "Sanskritçe", + "sk": "Slovakça", + "sl": "Slovence", + "sm": "Samoaca", + "so": "Somalice", + "sr": "Sırpça", + "sv": "İsveççe", + "ta": "Tamilce", + "th": "Tayca", + "tr": "Türkçe", + "uk": "Ukraynaca", + "vi": "Vietnamca", + "yi": "Yidiş", + "zh": "Çince", + "zu": "Zuluca" + }, + "layout": { + "bitmagnet_on_service": "{{service}} üzerinde bitmagnet", + "change_theme": "Temayı Değiştir", + "external_links": "Dış Bağlantılar", + "sponsor": "Sponsor", + "support_bitmagnet": "bitmagnet'i Destekle", + "translate": "Çevir" + }, + "paginator": { + "first_page": "İlk Sayfa", + "items_per_page": "Sayfa başına öğe", + "last_page": "Son Sayfa", + "next_page": "Sonraki Sayfa", + "previous_page": "Önceki Sayfa", + "x_to_y": "{{x}} - {{y}} arası", + "x_to_y_of_z": "{{x}} ile {{y}} arası, toplam {{z}}" + }, + "routes": { + "admin": "Yönetici", + "dashboard": "Kontrol Paneli", + "home": "Ana Sayfa", + "jobs": "Görevler", + "queues": "Kuyruklar", + "torrents": "Torrentler", + "visualize": "Görselleştir" + }, + "torrents": { + "clear_search": "Aramayı Temizle", + "copy": "Kopyala", + "copy_to_clipboard": "Panoya Kopyala", + "delete": "Sil", + "delete_action_cannot_be_undone": "Bu işlem geri alınamaz", + "delete_are_you_sure": "Bu torrent'i silmek istediğinizden emin misiniz?", + "deselect_all": "Tüm Seçimleri Kaldır", + "edit_tags": "Etiketleri Düzenle", + "episodes": "Bölümler", + "external_links": "Dış Bağlantılar", + "file_index": "Dosya Dizini", + "file_path": "Dosya Yolu", + "file_size": "Dosya Boyutu", + "file_type": "Dosya Türü", + "files": "Dosyalar", + "files_count_n": "{{count}} dosya", + "files_no_info": "Dosya bilgisi mevcut değil", + "files_single": "Tek dosya", + "genres": "Türler", + "info_hash": "Bilgi hash'i", + "info_hashes": "Bilgi hash'leri", + "languages": "Diller", + "leechers": "Leechers", + "magnet": "Magnet", + "magnet_links": "Magnet Bağlantılar", + "new_tag": "Yeni etiket", + "order_by": "Sıralama ölçütü", + "order_direction_toggle": "Yönü değiştir", + "ordering": { + "files_count": "Dosya sayısı", + "info_hash": "Bilgi hash'i", + "leechers": "Leechers", + "name": "Ad", + "published_at": "Yayınlanma tarihi", + "relevance": "Alaka düzeyi", + "seeders": "Seeders", + "size": "Boyut", + "updated_at": "Güncellenme tarihi" + }, + "original_release_date": "Orijinal çıkış tarihi", + "permalink": "Kalıcı Bağlantı", + "poster": "Poster", + "published": "Yayınlandı", + "rating": "Puan", + "refresh": "Sonuçları Yenile", + "s_l": "S / L", + "search": "Ara", + "seeders": "Seeders", + "select_all": "Tümünü Seç", + "showing_x_of_y_files": "{{y}} dosyanın {{x}} tanesi gösteriliyor", + "size": "Boyut", + "source": "Torrent Kaynağı", + "summary": "Özet", + "title": "Başlık", + "toggle_drawer": "Çekmeceyi Aç/Kapat", + "votes_count_n": "{{count}} oy" + }, + "version": { + "bitmagnet_version": "bitmagnet versiyonu {{version}}", + "unknown": "bilinmiyor" + } +} \ No newline at end of file diff --git a/webui/src/app/i18n/translations/uk.json b/webui/src/app/i18n/translations/uk.json new file mode 100644 index 0000000..58e0269 --- /dev/null +++ b/webui/src/app/i18n/translations/uk.json @@ -0,0 +1,296 @@ +{ + "content_types": { + "plural": { + "all": "Усі", + "audiobook": "Аудіокниги", + "comic": "Комікси", + "ebook": "Електронні книги", + "movie": "Фільми", + "music": "Музика", + "null": "Невідомо", + "software": "Програми", + "tv_show": "Телешоу", + "xxx": "Порно" + }, + "singular": { + "audiobook": "Аудіокнига", + "comic": "Комікс", + "ebook": "Електронна книга", + "movie": "Фільм", + "music": "Музика", + "null": "Невідомо", + "software": "Програма", + "tv_show": "Телешоу", + "xxx": "Порно" + } + }, + "dashboard": { + "event": { + "created": "Створено", + "failed": "Помилка", + "processed": "Оброблено", + "updated": "Оновлено" + }, + "interval": { + "all": "Усі", + "days": "Дні", + "days_1": "1 день", + "hours": "Години", + "hours_1": "1 година", + "hours_12": "12 годин", + "hours_6": "6 годин", + "minutes": "Хвилини", + "minutes_1": "1 хвилина", + "minutes_15": "15 хвилин", + "minutes_30": "30 хвилин", + "minutes_5": "5 хвилин", + "off": "Вимкнено", + "seconds_10": "10 секунд", + "seconds_30": "30 секунд", + "weeks_1": "1 тиждень" + }, + "metrics": { + "event": "Подія", + "resolution": "Роздільна здатність", + "throughput": "Пропускна здатність", + "timeframe": "Проміжок часу" + }, + "queues": { + "created": "Створено", + "created_at": "Створено о", + "enqueue_jobs": "Додати завдання до черги", + "enqueue_torrent_processing_batch": "Додати пакет для обробки торрентів", + "failed": "Помилка", + "force_rematch": "Примусово повторно зіставити вже зіставлений контент", + "jobs_enqueued": "Завдання додано в чергу", + "latency": "Затримка", + "match_content_by_external_api_search": "Зіставити контент через зовнішній API", + "match_content_by_local_search": "Зіставити контент через локальний пошук", + "payload": "Дані", + "pending": "В очікуванні", + "priority": "Пріоритет", + "process_orphaned_torrents_only": "Обробляти лише «сиротливі» торренти", + "processed": "Оброблено", + "purge_jobs": "Очистити завдання", + "purge_queue_jobs": "Очистити завдання черги", + "queue": "Черга", + "queue_purged": "Черга очищена", + "queues": "Черги", + "ran_at": "Запущено о", + "retry": "Повторити", + "total_counts_by_status": "Загальна кількість за статусами" + } + }, + "facets": { + "content_type": "Тип контенту", + "file_type": "Тип файлу", + "genre": "Жанр", + "language": "Мова", + "queue": "Черга", + "status": "Статус", + "torrent_source": "Джерело торрента", + "torrent_tag": "Тег торрента", + "video_resolution": "Роздільна здатність відео", + "video_source": "Джерело відео" + }, + "file_types": { + "archive": "Архів", + "audio": "Аудіо", + "data": "Дані", + "document": "Документ", + "image": "Зображення", + "software": "Програми", + "subtitles": "Субтитри", + "unknown": "Невідомо", + "video": "Відео" + }, + "general": { + "all": "Усі", + "dismiss": "Закрити", + "error": "Помилка", + "none": "Немає", + "refresh": "Оновити", + "status": "Статус" + }, + "health": { + "bitmagnet_is_status": "bitmagnet {{status}}", + "check_failed_with_error": "Перевірка завершилася помилкою", + "component": "Компонент", + "components": { + "dht": "DHT", + "postgres": "Postgres", + "tmdb": "TMDB" + }, + "dismiss": "Закрити", + "error": "Помилка", + "status": "Статус", + "statuses": { + "degraded": "Знижена продуктивність", + "down": "Не працює", + "error": "Помилка", + "inactive": "Неактивний", + "started": "Запущено", + "unknown": "Очікується", + "up": "Працює" + }, + "summary": "Зведення стану", + "worker": "Працівник", + "workers": { + "dht_crawler": "DHT сканер", + "http_server": "HTTP сервер", + "queue_server": "Сервер черги" + } + }, + "languages": { + "af": "Африкаанс", + "ar": "Арабська", + "az": "Азербайджанська", + "be": "Білоруська", + "bg": "Болгарська", + "bs": "Боснійська", + "ca": "Каталонська", + "ce": "Чеченська", + "co": "Корсиканська", + "cs": "Чеська", + "cy": "Валлійська", + "da": "Данська", + "de": "Німецька", + "el": "Грецька", + "en": "Англійська", + "es": "Іспанська", + "et": "Естонська", + "eu": "Баскська", + "fa": "Перська", + "fi": "Фінська", + "fr": "Французька", + "he": "Іврит", + "hi": "Хінді", + "hr": "Хорватська", + "hu": "Угорська", + "hy": "Вірменська", + "id": "Індонезійська", + "is": "Ісландська", + "it": "Італійська", + "ja": "Японська", + "ka": "Грузинська", + "ko": "Корейська", + "ku": "Курдська", + "lt": "Литовська", + "lv": "Латиська", + "mi": "Маорі", + "mk": "Македонська", + "ml": "Малаялам", + "mn": "Монгольська", + "ms": "Малайська", + "mt": "Мальтійська", + "nl": "Нідерландська", + "no": "Норвезька", + "pl": "Польська", + "pt": "Португальська", + "ro": "Румунська", + "ru": "Російська", + "sa": "Санскрит", + "sk": "Словацька", + "sl": "Словенська", + "sm": "Самоанська", + "so": "Сомалійська", + "sr": "Сербська", + "sv": "Шведська", + "ta": "Тамільська", + "th": "Тайська", + "tr": "Турецька", + "uk": "Українська", + "vi": "В'єтнамська", + "yi": "Їдиш", + "zh": "Китайська", + "zu": "Зулуська" + }, + "layout": { + "bitmagnet_on_service": "bitmagnet на {{service}}", + "change_theme": "Змінити тему", + "external_links": "Зовнішні посилання", + "sponsor": "Спонсор", + "support_bitmagnet": "Підтримати bitmagnet", + "translate": "Перекласти" + }, + "paginator": { + "first_page": "Перша сторінка", + "items_per_page": "Елементів на сторінці", + "last_page": "Остання сторінка", + "next_page": "Наступна сторінка", + "previous_page": "Попередня сторінка", + "x_to_y": "{{x}} до {{y}}", + "x_to_y_of_z": "{{x}} до {{y}} з {{z}}" + }, + "routes": { + "admin": "Адміністратор", + "dashboard": "Панель управління", + "home": "Головна", + "jobs": "Завдання", + "queues": "Черги", + "torrents": "Торренти", + "visualize": "Візуалізувати" + }, + "torrents": { + "clear_search": "Очистити пошук", + "copy": "Копіювати", + "copy_to_clipboard": "Копіювати в буфер обміну", + "delete": "Видалити", + "delete_action_cannot_be_undone": "Цю дію не можна скасувати", + "delete_are_you_sure": "Ви впевнені, що хочете видалити цей торрент?", + "deselect_all": "Зняти виділення", + "edit_tags": "Редагувати теги", + "episodes": "Епізоди", + "external_links": "Зовнішні посилання", + "file_index": "Індекс файлу", + "file_path": "Шлях до файлу", + "file_size": "Розмір файлу", + "file_type": "Тип файлу", + "files": "Файли", + "files_count_n": "{{count}} файлів", + "files_no_info": "Інформація про файли недоступна", + "files_single": "Один файл", + "genres": "Жанри", + "info_hash": "Хеш інформації", + "info_hashes": "Хеші інформації", + "languages": "Мови", + "leechers": "Лічери", + "magnet": "Магнет", + "magnet_links": "Магнет-посилання", + "new_tag": "Новий тег", + "order_by": "Сортувати за", + "order_direction_toggle": "Змінити напрямок", + "ordering": { + "files_count": "Кількість файлів", + "info_hash": "Хеш інформації", + "leechers": "Лічери", + "name": "Назва", + "published_at": "Дата публікації", + "relevance": "Актуальність", + "seeders": "Сідери", + "size": "Розмір", + "updated_at": "Дата оновлення" + }, + "original_release_date": "Дата оригінального випуску", + "permalink": "Постійне посилання", + "poster": "Постер", + "published": "Опубліковано", + "rating": "Рейтинг", + "refresh": "Оновити результати", + "s_l": "S / L", + "search": "Пошук", + "seeders": "Сідери", + "select_all": "Вибрати всі", + "showing_x_of_y_files": "Показано {{x}} з {{y}} файлів", + "size": "Розмір", + "source": "Джерело торрента", + "summary": "Зведення", + "title": "Назва", + "toggle_drawer": "Перемкнути панель", + "votes_count_n": "{{count}} голосів" + }, + "version": { + "bitmagnet_version": "Версія bitmagnet {{version}}", + "unknown": "невідомо" + } +} \ No newline at end of file diff --git a/webui/src/app/i18n/translations/zh.json b/webui/src/app/i18n/translations/zh.json new file mode 100644 index 0000000..45d292b --- /dev/null +++ b/webui/src/app/i18n/translations/zh.json @@ -0,0 +1,297 @@ +{ + "content_types": { + "plural": { + "all": "全部", + "audiobook": "有声书", + "comic": "漫画", + "ebook": "电子书", + "movie": "电影", + "music": "音乐", + "null": "未知", + "software": "软件", + "tv_show": "电视节目", + "xxx": "色情" + }, + "singular": { + "audiobook": "有声书", + "comic": "漫画", + "ebook": "电子书", + "movie": "电影", + "music": "音乐", + "null": "未知", + "software": "软件", + "tv_show": "电视节目", + "xxx": "色情" + } + }, + "dashboard": { + "event": { + "created": "已创建", + "failed": "失败", + "processed": "已处理", + "updated": "已更新" + }, + "interval": { + "all": "全部", + "days": "天", + "days_1": "1天", + "hours": "小时", + "hours_1": "1小时", + "hours_12": "12小时", + "hours_6": "6小时", + "minutes": "分钟", + "minutes_1": "1分钟", + "minutes_15": "15分钟", + "minutes_30": "30分钟", + "minutes_5": "5分钟", + "off": "关闭", + "seconds_10": "10秒", + "seconds_30": "30秒", + "weeks_1": "1周" + }, + "metrics": { + "event": "事件", + "resolution": "分辨率", + "throughput": "吞吐量", + "timeframe": "时间范围" + }, + "queues": { + "created": "已创建", + "created_at": "创建于", + "enqueue_jobs": "加入队列的任务", + "enqueue_torrent_processing_batch": "加入队列的种子处理批次", + "failed": "失败", + "force_rematch": "强制重新匹配已匹配的内容", + "jobs_enqueued": "加入队列的任务", + "latency": "延迟", + "match_content_by_external_api_search": "通过外部API搜索匹配内容", + "match_content_by_local_search": "通过本地搜索匹配内容", + "payload": "有效载荷", + "pending": "待处理", + "priority": "优先级", + "process_orphaned_torrents_only": "仅处理孤立的种子", + "processed": "已处理", + "purge_jobs": "清除任务", + "purge_queue_jobs": "清除队列任务", + "queue": "队列", + "queue_purged": "队列已清除", + "queues": "队列", + "ran_at": "运行于", + "retry": "重试", + "total_counts_by_status": "按状态统计总数" + } + }, + "facets": { + "content_type": "内容类型", + "file_type": "文件类型", + "genre": "类型", + "language": "语言", + "queue": "队列", + "status": "状态", + "torrent_source": "种子来源", + "torrent_tag": "种子标签", + "video_resolution": "视频分辨率", + "video_source": "视频来源" + }, + "file_types": { + "archive": "档案", + "audio": "音频", + "data": "数据", + "document": "文档", + "image": "图像", + "software": "软件", + "subtitles": "字幕", + "unknown": "未知", + "video": "视频" + }, + "general": { + "all": "全部", + "dismiss": "忽略", + "error": "错误", + "none": "无", + "refresh": "刷新", + "status": "状态" + }, + "health": { + "bitmagnet_is_status": "bitmagnet是{{status}}", + "check_failed_with_error": "检查失败,错误", + "component": "组件", + "components": { + "dht": "DHT", + "postgres": "Postgres", + "tmdb": "TMDB" + }, + "dismiss": "忽略", + "error": "错误", + "status": "状态", + "statuses": { + "degraded": "降级", + "down": "关闭", + "error": "错误", + "inactive": "不活跃", + "started": "已启动", + "unknown": "未知", + "up": "运行中" + }, + "summary": "健康概述", + "worker": "工作者", + "workers": { + "dht_crawler": "DHT爬虫", + "http_server": "HTTP服务器", + "queue_server": "队列服务器" + } + }, + "languages": { + "af": "南非荷兰语", + "ar": "阿拉伯语", + "az": "阿塞拜疆语", + "be": "白俄罗斯语", + "bg": "保加利亚语", + "bs": "波斯尼亚语", + "ca": "加泰罗尼亚语", + "ce": "车臣语", + "co": "科西嘉语", + "cs": "捷克语", + "cy": "威尔士语", + "da": "丹麦语", + "de": "德语", + "el": "希腊语", + "en": "英语", + "es": "西班牙语", + "et": "爱沙尼亚语", + "eu": "巴斯克语", + "fa": "波斯语", + "fi": "芬兰语", + "fr": "法语", + "he": "希伯来语", + "hi": "印地语", + "hr": "克罗地亚语", + "hu": "匈牙利语", + "hy": "亚美尼亚语", + "id": "印度尼西亚语", + "is": "冰岛语", + "it": "意大利语", + "ja": "日语", + "ka": "格鲁吉亚语", + "ko": "韩语", + "ku": "库尔德语", + "lt": "立陶宛语", + "lv": "拉脱维亚语", + "mi": "毛利语", + "mk": "马其顿语", + "ml": "马拉雅拉姆语", + "mn": "蒙古语", + "ms": "马来语", + "mt": "马耳他语", + "nl": "荷兰语", + "no": "挪威语", + "pl": "波兰语", + "pt": "葡萄牙语", + "ro": "罗马尼亚语", + "ru": "俄语", + "sa": "梵语", + "sk": "斯洛伐克语", + "sl": "斯洛文尼亚语", + "sm": "萨摩亚语", + "so": "索马里语", + "sr": "塞尔维亚语", + "sv": "瑞典语", + "ta": "泰米尔语", + "th": "泰语", + "tr": "土耳其语", + "uk": "乌克兰语", + "vi": "越南语", + "yi": "意第绪语", + "zh": "中文", + "zu": "祖鲁语" + }, + "layout": { + "bitmagnet_on_service": "bitmagnet在{{service}}", + "change_theme": "更改主题", + "external_links": "外部链接", + "sponsor": "赞助商", + "support_bitmagnet": "支持bitmagnet", + "translate": "翻译" + }, + "paginator": { + "first_page": "第一页", + "items_per_page": "每页项目数", + "last_page": "最后一页", + "next_page": "下一页", + "previous_page": "上一页", + "x_to_y": "{{x}}到{{y}}", + "x_to_y_of_y": "__缺失__", + "x_to_y_of_z": "{{x}}到{{y}},共{{z}}" + }, + "routes": { + "admin": "管理员", + "dashboard": "仪表盘", + "home": "首页", + "jobs": "任务", + "queues": "队列", + "torrents": "种子", + "visualize": "可视化" + }, + "torrents": { + "clear_search": "清除搜索", + "copy": "复制", + "copy_to_clipboard": "复制到剪贴板", + "delete": "删除", + "delete_action_cannot_be_undone": "此操作无法撤销", + "delete_are_you_sure": "您确定要删除此种子吗?", + "deselect_all": "取消全选", + "edit_tags": "编辑标签", + "episodes": "剧集", + "external_links": "外部链接", + "file_index": "文件索引", + "file_path": "文件路径", + "file_size": "文件大小", + "file_type": "文件类型", + "files": "文件", + "files_count_n": "{{count}}个文件", + "files_no_info": "无文件信息", + "files_single": "单个文件", + "genres": "类型", + "info_hash": "信息哈希", + "info_hashes": "信息哈希", + "languages": "语言", + "leechers": "下载者", + "magnet": "磁力链接", + "magnet_links": "磁力链接", + "new_tag": "新标签", + "order_by": "排序依据", + "order_direction_toggle": "切换方向", + "ordering": { + "files_count": "文件数", + "info_hash": "信息哈希", + "leechers": "下载者", + "name": "名称", + "published_at": "发布于", + "relevance": "相关性", + "seeders": "上传者", + "size": "大小", + "updated_at": "更新于" + }, + "original_release_date": "原始发布日期", + "permalink": "永久链接", + "poster": "海报", + "published": "已发布", + "rating": "评分", + "refresh": "刷新结果", + "s_l": "S / L", + "search": "搜索", + "seeders": "上传者", + "select_all": "全选", + "showing_x_of_y_files": "显示{{x}}个,共{{y}}个文件", + "size": "大小", + "source": "种子来源", + "summary": "摘要", + "title": "标题", + "toggle_drawer": "切换抽屉", + "votes_count_n": "{{count}}票" + }, + "version": { + "bitmagnet_version": "bitmagnet版本{{version}}", + "unknown": "未知" + } +} \ No newline at end of file diff --git a/webui/src/app/i18n/transloco.extra-keys.ts b/webui/src/app/i18n/transloco.extra-keys.ts new file mode 100644 index 0000000..c949ebe --- /dev/null +++ b/webui/src/app/i18n/transloco.extra-keys.ts @@ -0,0 +1,141 @@ +/** + * Extra translation keys: + * + * t(routes.dashboard) + * t(routes.torrents) + * t(content_types.singular.movie) + * t(content_types.singular.tv_show) + * t(content_types.singular.music) + * t(content_types.singular.ebook) + * t(content_types.singular.comic) + * t(content_types.singular.audiobook) + * t(content_types.singular.software) + * t(content_types.singular.xxx) + * t(content_types.plural.null) + * t(content_types.plural.movie) + * t(content_types.plural.tv_show) + * t(content_types.plural.music) + * t(content_types.plural.ebook) + * t(content_types.plural.comic) + * t(content_types.plural.audiobook) + * t(content_types.plural.software) + * t(content_types.plural.xxx) + * t(content_types.plural.null) + * t(dashboard.interval.all) + * t(dashboard.interval.days) + * t(dashboard.interval.days_1) + * t(dashboard.interval.hours) + * t(dashboard.interval.hours_1) + * t(dashboard.interval.hours_6) + * t(dashboard.interval.hours_12) + * t(dashboard.interval.minutes) + * t(dashboard.interval.minutes_1) + * t(dashboard.interval.minutes_5) + * t(dashboard.interval.minutes_15) + * t(dashboard.interval.minutes_30) + * t(dashboard.interval.off) + * t(dashboard.interval.seconds_10) + * t(dashboard.interval.seconds_30) + * t(dashboard.interval.weeks_1) + * t(facets.content_type) + * t(facets.torrent_source) + * t(facets.torrent_tag) + * t(facets.file_type) + * t(facets.language) + * t(facets.genre) + * t(facets.video_resolution) + * t(facets.video_source) + * t(file_types.archive) + * t(file_types.audio) + * t(file_types.data) + * t(file_types.document) + * t(file_types.image) + * t(file_types.software) + * t(file_types.subtitles) + * t(file_types.unknown) + * t(file_types.video) + * t(health.components.dht) + * t(health.components.postgres) + * t(health.components.tmdb) + * t(health.workers.dht_crawler) + * t(health.workers.http_server) + * t(health.workers.queue_server) + * t(health.statuses.degraded) + * t(health.statuses.down) + * t(health.statuses.error) + * t(health.statuses.inactive) + * t(health.statuses.unknown) + * t(health.statuses.up) + * t(health.statuses.started) + * t(languages.af) + * t(languages.ar) + * t(languages.az) + * t(languages.be) + * t(languages.bg) + * t(languages.bs) + * t(languages.ca) + * t(languages.ce) + * t(languages.co) + * t(languages.cs) + * t(languages.cy) + * t(languages.da) + * t(languages.de) + * t(languages.el) + * t(languages.en) + * t(languages.es) + * t(languages.et) + * t(languages.eu) + * t(languages.fa) + * t(languages.fi) + * t(languages.fr) + * t(languages.he) + * t(languages.hi) + * t(languages.hr) + * t(languages.hu) + * t(languages.hy) + * t(languages.id) + * t(languages.is) + * t(languages.it) + * t(languages.ja) + * t(languages.ka) + * t(languages.ko) + * t(languages.ku) + * t(languages.lt) + * t(languages.lv) + * t(languages.mi) + * t(languages.mk) + * t(languages.ml) + * t(languages.mn) + * t(languages.ms) + * t(languages.mt) + * t(languages.nl) + * t(languages.no) + * t(languages.pl) + * t(languages.pt) + * t(languages.ro) + * t(languages.ru) + * t(languages.sa) + * t(languages.sk) + * t(languages.sl) + * t(languages.sm) + * t(languages.so) + * t(languages.sr) + * t(languages.sv) + * t(languages.ta) + * t(languages.th) + * t(languages.tr) + * t(languages.uk) + * t(languages.vi) + * t(languages.yi) + * t(languages.zh) + * t(languages.zu) + * t(torrents.ordering.files_count) + * t(torrents.ordering.info_hash) + * t(torrents.ordering.leechers) + * t(torrents.ordering.name) + * t(torrents.ordering.published_at) + * t(torrents.ordering.relevance) + * t(torrents.ordering.seeders) + * t(torrents.ordering.size) + * t(torrents.ordering.updated_at) + */ diff --git a/webui/src/app/i18n/transloco.loader.ts b/webui/src/app/i18n/transloco.loader.ts new file mode 100644 index 0000000..264d40c --- /dev/null +++ b/webui/src/app/i18n/transloco.loader.ts @@ -0,0 +1,29 @@ +import { Injectable } from "@angular/core"; +import { Translation, TranslocoLoader } from "@jsverse/transloco"; +import i18n from "./translations"; + +@Injectable({ providedIn: "root" }) +export class TranslocoImportLoader implements TranslocoLoader { + async getTranslation(lang: string) { + if (lang in i18n) { + const tr = i18n[lang as keyof typeof i18n] as Translation; + return stripMissing(tr); + } else { + return Promise.reject(new Error(`Translation not found: ${lang}`)); + } + } +} + +const missingValues = ["__missing__", "__fallback__"]; + +const stripMissing = (tr: Translation): Translation => + Object.fromEntries( + Object.entries(tr).flatMap(([k, v]) => { + if (typeof v === "object") { + v = stripMissing(v as Translation); + } else if (typeof v === "string" && missingValues.includes(v)) { + return []; + } + return [[k, v]]; + }), + ); diff --git a/webui/src/app/layout/_layout-component.theme.scss b/webui/src/app/layout/_layout-component.theme.scss new file mode 100644 index 0000000..a6c561d --- /dev/null +++ b/webui/src/app/layout/_layout-component.theme.scss @@ -0,0 +1,72 @@ +@use "@angular/material" as mat; + +@mixin theme($theme) { + .mat-toolbar.toolbar-header { + background-color: mat.get-theme-color($theme, primary, 40); + --mat-toolbar-container-text-color: #fff; + h1 { + cursor: default; + } + a { + color: #fff; + } + .mat-icon { + fill: #fff; + } + .mdc-button { + &.active { + color: mat.get-theme-color($theme, primary, 40); + background-color: rgba(#fff, 0.8); + cursor: default; + mat-icon { + color: mat.get-theme-color($theme, primary, 40); + fill: mat.get-theme-color($theme, primary, 40); + } + } + &:hover:not(.active) { + background-color: rgba(#fff, 0.2); + } + &.button-sponsor { + margin-left: 20px; + } + } + .mdc-icon-button { + .mat-icon { + fill: #fff; + } + &:hover { + background-color: rgba(#fff, 0.2); + } + } + } + .layout-header-menu { + a { + color: mat.get-theme-color($theme, primary, 60); + &.active { + @if mat.get-theme-type($theme) == dark { + color: mat.get-theme-color($theme, primary, 80); + background-color: rgba(#fff, 0.1); + } @else { + color: mat.get-theme-color($theme, primary, 40); + background-color: rgba(#000, 0.1); + } + } + } + } + a { + @if mat.get-theme-type($theme) == dark { + color: mat.get-theme-color($theme, secondary, 80); + } @else { + color: mat.get-theme-color($theme, secondary, 50); + } + } + tbody { + tr:not(.expanded-detail-row):hover { + @if mat.get-theme-type($theme) == dark { + background-color: rgba(#fff, 0.02); + } @else { + background-color: rgba(#000, 0.02); + } + } + } +} diff --git a/webui/src/app/layout/breakpoints.service.ts b/webui/src/app/layout/breakpoints.service.ts new file mode 100644 index 0000000..4751fdc --- /dev/null +++ b/webui/src/app/layout/breakpoints.service.ts @@ -0,0 +1,42 @@ +import { inject, Injectable } from "@angular/core"; +import { BreakpointObserver, Breakpoints } from "@angular/cdk/layout"; +import { Observable } from "rxjs"; +import { map, shareReplay } from "rxjs/operators"; + +const sizes = ["XSmall", "Small", "Medium", "Large", "XLarge"] as const; + +type Size = (typeof sizes)[number]; + +@Injectable({ providedIn: "root" }) +export class BreakpointsService { + private breakpointObserver = inject(BreakpointObserver); + + private state: Observable> = this.breakpointObserver + .observe([ + Breakpoints.XSmall, + Breakpoints.Small, + Breakpoints.Medium, + Breakpoints.Large, + Breakpoints.XLarge, + ]) + .pipe( + map((result) => result.breakpoints), + shareReplay(), + ); + + size$: Observable = this.state.pipe( + map((st) => sizes.find((s) => st[Breakpoints[s]]) ?? "Medium"), + ); + + size: Size = "Medium"; + + constructor() { + this.size$.subscribe((s) => { + this.size = s; + }); + } + + sizeAtLeast(size: Size) { + return sizes.indexOf(size) <= sizes.indexOf(this.size); + } +} diff --git a/webui/src/app/layout/layout.component.html b/webui/src/app/layout/layout.component.html new file mode 100644 index 0000000..467a8e8 --- /dev/null +++ b/webui/src/app/layout/layout.component.html @@ -0,0 +1,150 @@ + + + @if (breakpoints.sizeAtLeast("Medium")) { +

+ + + bitmagnet + + +

+ + } @else { +

+ + + +

+ + } + + + + + @for (th of themeManager.themes; track th.key) { + {{ th.dark ? "dark_mode" : "light_mode" }}{{ th.label }} + } + + + + @for (l of translateManager.availableLanguages; track l.id) { + {{ l.label }} + } + + + + bitmagnet.io + {{ + t("layout.bitmagnet_on_service", { service: "Discord" }) + }} + {{ t("layout.bitmagnet_on_service", { service: "GitHub" }) }} + {{ + t("layout.bitmagnet_on_service", { service: "OpenCollective" }) + }} + + @if (!breakpoints.sizeAtLeast("Medium")) { + favorite + } @else { + favorite{{ t("layout.sponsor") }} + } +
+
+ +
+ +
diff --git a/webui/src/app/layout/layout.component.scss b/webui/src/app/layout/layout.component.scss new file mode 100644 index 0000000..7f7ee17 --- /dev/null +++ b/webui/src/app/layout/layout.component.scss @@ -0,0 +1,59 @@ +.mat-toolbar.toolbar-header { + position: sticky; + top: 0; + z-index: 10; + --mat-toolbar-title-text-size: 22px; + --mat-toolbar-standard-height: 56px; + --mat-icon-color: #fff; + padding: 0 20px; + h1 { + margin-top: -2px; + //margin-left: 20px; + margin-right: 20px; + a { + text-decoration: none; + } + mat-icon { + position: relative; + top: 4px; + } + .name { + margin-left: 10px; + margin-right: 16px; + } + app-version { + font-size: 13px; + } + } + .mdc-button { + margin-left: 6px; + --mdc-text-button-label-text-weight: bold; + --mat-text-button-horizontal-padding: 12px; + --mdc-text-button-container-height: 30px; + } + --mdc-text-button-label-text-size: 15px; + nav { + position: absolute; + left: 340px; + top: 0; + height: 56px; + padding-top: 14px; + a { + margin-right: 10px; + } + mat-icon[data-mat-icon-name="magnet"] { + margin-top: -5px; + overflow: visible; + } + } +} + +.app-content { + z-index: 1; +} + +.layout-header-menu { + a.active { + font-weight: bold; + } +} diff --git a/webui/src/app/layout/layout.component.spec.ts b/webui/src/app/layout/layout.component.spec.ts new file mode 100644 index 0000000..dbdb472 --- /dev/null +++ b/webui/src/app/layout/layout.component.spec.ts @@ -0,0 +1,23 @@ +import { waitForAsync, ComponentFixture, TestBed } from "@angular/core/testing"; + +import { appConfig } from "../app.config"; +import { LayoutComponent } from "./layout.component"; + +describe("LayoutComponent", () => { + let component: LayoutComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(async () => { + await TestBed.configureTestingModule(appConfig).compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(LayoutComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it("should compile", () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/webui/src/app/layout/layout.component.ts b/webui/src/app/layout/layout.component.ts new file mode 100644 index 0000000..ac9151e --- /dev/null +++ b/webui/src/app/layout/layout.component.ts @@ -0,0 +1,27 @@ +import { Component, inject } from "@angular/core"; +import { Router } from "@angular/router"; +import { Title } from "@angular/platform-browser"; +import { ThemeManager } from "../themes/theme-manager.service"; +import { VersionComponent } from "../version/version.component"; +import { TranslateManager } from "../i18n/translate-manager.service"; +import { HealthModule } from "../health/health.module"; +import { HealthService } from "../health/health.service"; +import { ThemeEmitterComponent } from "../themes/theme-emitter.component"; +import { AppModule } from "../app.module"; +import { BreakpointsService } from "./breakpoints.service"; + +@Component({ + selector: "app-layout", + templateUrl: "./layout.component.html", + styleUrl: "./layout.component.scss", + standalone: true, + imports: [AppModule, HealthModule, ThemeEmitterComponent, VersionComponent], +}) +export class LayoutComponent { + themeManager = inject(ThemeManager); + translateManager = inject(TranslateManager); + breakpoints = inject(BreakpointsService); + title = inject(Title); + router = inject(Router); + health = inject(HealthService); +} diff --git a/webui/src/app/paginator/paginator.component.html b/webui/src/app/paginator/paginator.component.html index 64ca303..e7497fb 100644 --- a/webui/src/app/paginator/paginator.component.html +++ b/webui/src/app/paginator/paginator.component.html @@ -1,49 +1,71 @@ -
- - Items per page - - @for (size of pageSizes; track size) { - - {{ size }} - + +
+ + Items per page + + @for (size of pageSizes; track size) { + + {{ size }} + + } + + +

+ @if (hasTotalLength) { + {{ + t("paginator.x_to_y_of_z", { + x: (firstItemIndex | number), + y: (lastItemIndex | number), + z: (totalLength | number) + }) + }} + } @else { + {{ + t("paginator.x_to_y", { + x: (firstItemIndex | number), + y: (lastItemIndex | number) + }) + }} } - - -

- {{ firstItemIndex | number }} - {{ lastItemIndex | number - }}{{ - hasTotalLength - ? " of " + (totalIsEstimate ? "~" : "") + (totalLength | number) - : "" - }} -

-
- - - +

+
+ + + + @if (showLastPage) { + + } +
-
+
diff --git a/webui/src/app/paginator/paginator.component.scss b/webui/src/app/paginator/paginator.component.scss index 57647e4..3ba626b 100644 --- a/webui/src/app/paginator/paginator.component.scss +++ b/webui/src/app/paginator/paginator.component.scss @@ -9,7 +9,4 @@ .field-items-per-page { width: 140px; } - ::ng-deep .mat-mdc-form-field-subscript-wrapper { - display: none; - } } diff --git a/webui/src/app/paginator/paginator.component.spec.ts b/webui/src/app/paginator/paginator.component.spec.ts index b4d9327..995b9f8 100644 --- a/webui/src/app/paginator/paginator.component.spec.ts +++ b/webui/src/app/paginator/paginator.component.spec.ts @@ -1,13 +1,6 @@ import { ComponentFixture, TestBed } from "@angular/core/testing"; -import { CommonModule } from "@angular/common"; -import { MatFormFieldModule } from "@angular/material/form-field"; -import { MatOptionModule } from "@angular/material/core"; -import { MatSelectModule } from "@angular/material/select"; -import { MatButtonModule } from "@angular/material/button"; -import { MatIconModule } from "@angular/material/icon"; -import { MatTooltipModule } from "@angular/material/tooltip"; -import { NoopAnimationsModule } from "@angular/platform-browser/animations"; +import { appConfig } from "../app.config"; import { PaginatorComponent } from "./paginator.component"; describe("PaginatorComponent", () => { @@ -15,19 +8,7 @@ describe("PaginatorComponent", () => { let fixture: ComponentFixture; beforeEach(() => { - TestBed.configureTestingModule({ - declarations: [PaginatorComponent], - imports: [ - CommonModule, - MatFormFieldModule, - MatOptionModule, - MatSelectModule, - MatButtonModule, - MatIconModule, - MatTooltipModule, - NoopAnimationsModule, - ], - }); + TestBed.configureTestingModule(appConfig); fixture = TestBed.createComponent(PaginatorComponent); component = fixture.componentInstance; fixture.detectChanges(); diff --git a/webui/src/app/paginator/paginator.component.ts b/webui/src/app/paginator/paginator.component.ts index 733f7fe..34395d4 100644 --- a/webui/src/app/paginator/paginator.component.ts +++ b/webui/src/app/paginator/paginator.component.ts @@ -5,30 +5,34 @@ import { numberAttribute, Output, } from "@angular/core"; +import { AppModule } from "../app.module"; import type { PageEvent } from "./paginator.types"; @Component({ selector: "app-paginator", templateUrl: "./paginator.component.html", + standalone: true, styleUrls: ["./paginator.component.scss"], + imports: [AppModule], }) export class PaginatorComponent { - @Input({ transform: numberAttribute }) pageIndex = 0; + @Input({ transform: numberAttribute }) page = 1; @Input({ transform: numberAttribute }) pageSize = 10; @Input() pageSizes: number[] = [10, 20, 50, 100]; @Input({ transform: numberAttribute }) pageLength = 0; @Input() totalLength: number | null = null; @Input() totalIsEstimate = false; @Input() hasNextPage: boolean | null | undefined = null; + @Input() showLastPage = false; - @Output() page = new EventEmitter(); + @Output() paging = new EventEmitter(); get firstItemIndex() { - return this.pageIndex * this.pageSize + 1; + return (this.page - 1) * this.pageSize + 1; } get lastItemIndex() { - return this.pageIndex * this.pageSize + this.pageLength; + return (this.page - 1) * this.pageSize + this.pageLength; } get hasTotalLength() { @@ -36,12 +40,29 @@ export class PaginatorComponent { } get hasPreviousPage() { - return this.pageIndex > 0; + return this.page > 1; + } + + get pageCount(): number | null { + if (typeof this.totalLength !== "number") { + return null; + } + return Math.ceil(this.totalLength / this.pageSize); + } + + get actuallyHasNextPage() { + if (typeof this.hasNextPage === "boolean") { + return this.hasNextPage; + } + if (typeof this.totalLength !== "number") { + return false; + } + return this.page * this.pageSize < this.totalLength; } emitChange() { - this.page.emit({ - pageIndex: this.pageIndex, + this.paging.emit({ + page: this.page, pageSize: this.pageSize, }); } diff --git a/webui/src/app/paginator/paginator.module.ts b/webui/src/app/paginator/paginator.module.ts deleted file mode 100644 index 5411643..0000000 --- a/webui/src/app/paginator/paginator.module.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { NgModule } from "@angular/core"; -import { CommonModule } from "@angular/common"; -import { MatFormFieldModule } from "@angular/material/form-field"; -import { MatOptionModule } from "@angular/material/core"; -import { MatSelectModule } from "@angular/material/select"; -import { MatButtonModule } from "@angular/material/button"; -import { MatIconModule } from "@angular/material/icon"; -import { MatTooltipModule } from "@angular/material/tooltip"; -import { PaginatorComponent } from "./paginator.component"; - -@NgModule({ - declarations: [PaginatorComponent], - imports: [ - CommonModule, - MatFormFieldModule, - MatOptionModule, - MatSelectModule, - MatButtonModule, - MatIconModule, - MatTooltipModule, - ], - exports: [PaginatorComponent], -}) -export class PaginatorModule {} diff --git a/webui/src/app/paginator/paginator.types.ts b/webui/src/app/paginator/paginator.types.ts index 73501ec..05423ce 100644 --- a/webui/src/app/paginator/paginator.types.ts +++ b/webui/src/app/paginator/paginator.types.ts @@ -1,4 +1,4 @@ export type PageEvent = { - pageIndex: number; + page: number; pageSize: number; }; diff --git a/webui/src/app/pipes/filesize.pipe.spec.ts b/webui/src/app/pipes/filesize.pipe.spec.ts new file mode 100644 index 0000000..45c6517 --- /dev/null +++ b/webui/src/app/pipes/filesize.pipe.spec.ts @@ -0,0 +1,18 @@ +import { TestBed } from "@angular/core/testing"; +import { appConfig } from "../app.config"; +import { FilesizePipe } from "./filesize.pipe"; + +describe("FilesizePipe", () => { + let pipe: FilesizePipe; + + beforeEach(async () => { + await TestBed.configureTestingModule(appConfig).compileComponents(); + TestBed.runInInjectionContext(() => { + pipe = new FilesizePipe(); + }); + }); + + it("create an instance", () => { + expect(pipe).toBeTruthy(); + }); +}); diff --git a/webui/src/app/pipes/filesize.pipe.ts b/webui/src/app/pipes/filesize.pipe.ts new file mode 100644 index 0000000..8de35f3 --- /dev/null +++ b/webui/src/app/pipes/filesize.pipe.ts @@ -0,0 +1,16 @@ +import { inject, Pipe, PipeTransform } from "@angular/core"; +import { filesize } from "filesize"; +import { TranslocoService } from "@jsverse/transloco"; + +@Pipe({ + name: "filesize", + standalone: true, + pure: false, +}) +export class FilesizePipe implements PipeTransform { + transloco = inject(TranslocoService); + + transform(value: number): string { + return filesize(value, { locale: this.transloco.getActiveLang(), base: 2 }); + } +} diff --git a/webui/src/app/pipes/human-time.pipe.spec.ts b/webui/src/app/pipes/human-time.pipe.spec.ts deleted file mode 100644 index b260d51..0000000 --- a/webui/src/app/pipes/human-time.pipe.spec.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { HumanTimePipe } from "./human-time.pipe"; - -describe("HumanTimePipe", () => { - it("create an instance", () => { - const pipe = new HumanTimePipe(); - expect(pipe).toBeTruthy(); - }); -}); diff --git a/webui/src/app/pipes/human-time.pipe.ts b/webui/src/app/pipes/human-time.pipe.ts deleted file mode 100644 index 64d339d..0000000 --- a/webui/src/app/pipes/human-time.pipe.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { Pipe, PipeTransform } from "@angular/core"; - -@Pipe({ - name: "humanTime", - standalone: true, -}) -export class HumanTimePipe implements PipeTransform { - transform(value: Date | string): string { - if (typeof value === "string") { - value = new Date(value); - } - const seconds = Math.round((Date.now() - value.getTime()) / 1000); - const suffix = seconds < 0 ? "from now" : "ago"; - const absSeconds = Math.abs(seconds); - - const times = [ - absSeconds / 60 / 60 / 24 / 365, // years - absSeconds / 60 / 60 / 24 / 30, // months - absSeconds / 60 / 60 / 24 / 7, // weeks - absSeconds / 60 / 60 / 24, // days - absSeconds / 60 / 60, // hours - absSeconds / 60, // minutes - absSeconds, // seconds - ]; - const names = ["year", "month", "week", "day", "hour", "minute", "second"]; - - for (let i = 0; i < names.length; i++) { - const time = Math.floor(times[i]); - let name = names[i]; - if (time > 1) name += "s"; - - if (time >= 1) return time + " " + name + " " + suffix; - } - return "0 seconds " + suffix; - } -} diff --git a/webui/src/app/pipes/time-ago.pipe.spec.ts b/webui/src/app/pipes/time-ago.pipe.spec.ts new file mode 100644 index 0000000..000efc9 --- /dev/null +++ b/webui/src/app/pipes/time-ago.pipe.spec.ts @@ -0,0 +1,18 @@ +import { TestBed } from "@angular/core/testing"; +import { appConfig } from "../app.config"; +import { TimeAgoPipe } from "./time-ago.pipe"; + +describe("TimeAgoPipe", () => { + let pipe: TimeAgoPipe; + + beforeEach(async () => { + await TestBed.configureTestingModule(appConfig).compileComponents(); + TestBed.runInInjectionContext(() => { + pipe = new TimeAgoPipe(); + }); + }); + + it("create an instance", () => { + expect(pipe).toBeTruthy(); + }); +}); diff --git a/webui/src/app/pipes/time-ago.pipe.ts b/webui/src/app/pipes/time-ago.pipe.ts new file mode 100644 index 0000000..63fbb98 --- /dev/null +++ b/webui/src/app/pipes/time-ago.pipe.ts @@ -0,0 +1,17 @@ +import { inject, Pipe, PipeTransform } from "@angular/core"; +import { TranslocoService } from "@jsverse/transloco"; +import { formatTimeAgo } from "../dates/dates.utils"; +import { DateType } from "../dates/dates.types"; + +@Pipe({ + name: "timeAgo", + standalone: true, + pure: false, +}) +export class TimeAgoPipe implements PipeTransform { + transloco = inject(TranslocoService); + + transform(value: DateType): string { + return formatTimeAgo(value, this.transloco.getActiveLang()); + } +} diff --git a/webui/src/app/search/facet.ts b/webui/src/app/search/facet.ts deleted file mode 100644 index 0e353ac..0000000 --- a/webui/src/app/search/facet.ts +++ /dev/null @@ -1,104 +0,0 @@ -import { Observable } from "rxjs"; -import * as generated from "../graphql/generated"; - -export type Agg = { - count: number; - label: string; - value: FacetValue; - isEstimate: boolean; -}; - -export type GenreAgg = Agg; -export type VideoResolutionAgg = Agg; -export type VideoSourceAgg = Agg; - -export type FacetValue = - | T - | (_allowNull extends true ? null : T); - -export class Facet { - private relevantContentTypes: Set | null; - - aggregations: Agg[] = []; - - private active: boolean = false; - private selected = new Set>(); - - constructor( - public name: string, - public icon: string, - contentTypes: generated.ContentType[] | null, - obs: Observable[]>, - ) { - this.relevantContentTypes = - contentTypes === null ? null : new Set(contentTypes); - obs.subscribe((aggs) => { - this.aggregations = aggs; - }); - } - - isRelevant(contentType?: generated.ContentType | "null" | null): boolean { - return ( - this.relevantContentTypes === null || - (!!contentType && - contentType !== "null" && - this.relevantContentTypes.has(contentType)) - ); - } - - isActive(): boolean { - return this.active; - } - - isEmpty(): boolean { - return this.selected.size === 0; - } - - filterValues(): Array> | undefined { - return this.selected.size ? [...this.selected] : undefined; - } - - isSelected(value: FacetValue | undefined): boolean { - return value !== undefined && this.selected.has(value); - } - - activate() { - this.active = true; - } - - deactivate() { - this.active = false; - } - - select(value: FacetValue | undefined) { - if (value !== undefined) { - this.selected.add(value); - } - } - - deselect(value: FacetValue | undefined) { - if (value !== undefined) { - this.selected.delete(value); - } - } - - toggle(value: FacetValue | undefined) { - if (value === undefined) { - return; - } - if (this.selected.has(value)) { - this.deselect(value); - } else { - this.select(value); - } - } - - reset() { - this.selected.clear(); - } - - deactivateAndReset() { - this.deactivate(); - this.reset(); - } -} diff --git a/webui/src/app/search/search.component.html b/webui/src/app/search/search.component.html deleted file mode 100644 index d1c4550..0000000 --- a/webui/src/app/search/search.component.html +++ /dev/null @@ -1,467 +0,0 @@ - - - - - - interests Content Type - - -
- - - emergencyAll - @if (search.overallTotalCount$ | async; as count) { - {{ count.isEstimate ? "~" : "" - }}{{ count.count | number }} - } - - @for ( - t of search.contentTypes | keyvalue: originalOrder; - track t.key - ) { - @if (search.availableContentTypes.has(t.key)) { - - {{ t.value.icon }} - {{ t.value.plural }} - @if (search.contentTypeCount(t.key) | async; as agg) { - {{ agg.isEstimate ? "~" : "" - }}{{ agg.count | number }} - } - - } - } - -
-
- @for (facet of search.facets; track facet.name) { - - @if (facet.isRelevant(contentType.value)) { - - - {{ facet.icon }} - {{ facet.name }} - -
- - - {{ agg.label }} - {{ agg.isEstimate ? "~" : "" - }}{{ agg.count | number }} - - @if (!(search.loading$ | async) && !facet.aggregations.length) { - No aggregation results - } -
-
- } -
- } -
- -
-
- {{ - drawer.opened ? "arrow_circle_left" : "arrow_circle_right" - }} - - - @if (queryString.value) { - - } - - - Order By - - @for ( - option of search.orderByOptions | keyvalue: originalOrder; - track option.key - ) { - @if (option.key != "Relevance" || queryString.value) { - - {{ option.value?.label }} - - } - } - - -
- -
-
- -
-
- - - - - - - - - sell - Edit tags - - - - - - - @for (tagName of editedTags; let j = $index; track tagName) { - - {{ tagName }} - - - } - - - - @for (tagName of suggestedTags; track tagName) { - {{ tagName }} - } - - - - - - - - - - - - - - delete_forever - Delete - - - - - -

- Are you sure you want to delete the selected - torrents? -
This action cannot be undone. -

-
- - - -
-
-
- @if (selectedTabIndex > 0) { - - - close - - - } -
- - - -
- @if (search.loading$ | async) { - - } -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - Summary - {{ - search.contentTypeInfo(i.contentType)?.icon ?? "question_mark" - }} - {{ item(i).title }} - - @for (tagName of item(i).torrent.tagNames; track tagName) { - - {{ tagName }} - - } - @if (item(i).languages; as languages) { - - @for (l of languages; let j = $index; track l.id) { - - {{ j > 0 ? ", " : "" }}{{ l.name }} - - } - - } - @if (item(i).video3d?.slice(1); as video3d) { - {{ video3d }} - } - @if (item(i).videoResolution?.slice(1); as videoResolution) { - {{ videoResolution }} - } - @if (item(i).videoSource; as videoSource) { - {{ videoSource }} - } - @if (item(i).videoCodec; as videoCodec) { - {{ videoCodec }} - } - @if (item(i).videoModifier; as videoModifier) { - {{ videoModifier }} - } - - Size - {{ item(i).torrent.size | filesize }} - Published - - {{ item(i).publishedAt | humanTime }} - - - S / L - - {{ item(i).seeders ?? "?" }} / - {{ item(i).leechers ?? "?" }} - - Magnet - - - -
- -
-
- - @if (search.totalCount$ | async; as totalCount) { - - } -
-
-
diff --git a/webui/src/app/search/search.component.scss b/webui/src/app/search/search.component.scss deleted file mode 100644 index 79c8ee5..0000000 --- a/webui/src/app/search/search.component.scss +++ /dev/null @@ -1,262 +0,0 @@ -@use "../../../node_modules/@angular/material/index" as mat; -@import "../app.variables"; - -.mat-drawer-container { - min-height: 100%; -} - -.mat-drawer.mat-drawer-side { - width: 300px; - h4 { - margin-bottom: 0; - } - .panel-content-type { - mat-radio-button { - width: 100%; - display: block; - ::ng-deep { - .mdc-radio { - display: none; - } - .mdc-form-field, - label { - cursor: pointer; - display: block; - height: 40px; - } - } - mat-icon { - margin-right: 10px; - position: relative; - top: 5px; - } - } - ::ng-deep .mat-mdc-radio-checked { - label { - color: mat.get-color-from-palette($accent-palette, 500); - } - } - } - section { - margin-bottom: 10px; - mat-checkbox { - position: relative; - left: -10px; - } - &.empty { - ::ng-deep .mdc-checkbox__background { - background-color: lightgray; - border-color: lightgray; - } - } - } -} - -::ng-deep { - mat-checkbox, - mat-radio-button { - label small { - margin-left: 8px; - } - } -} - -.mat-expansion-panel-header { - .mat-icon { - overflow: visible; - margin-right: 20px; - } - white-space: nowrap; -} - -.search-form { - .toggle-drawer { - cursor: pointer; - width: 30px; - height: 30px; - font-size: 30px; - left: -10px; - margin-right: 10px; - position: relative; - top: -25px; - display: inline-block; - } - mat-form-field { - display: inline-block; - margin-right: 20px; - &.field-search-query { - width: 300px; - } - &.field-auto-refresh { - width: 130px; - } - } - .field-search-order-by { - width: 160px; - } - .button-toggle-direction, - .button-refresh { - display: inline-block; - width: 50px; - vertical-align: top; - padding-top: 5px; - margin-right: 10px; - } - .button-toggle-direction { - margin-left: -10px; - margin-right: 20px; - } - .button-refresh { - float: right; - } -} - -.mat-column-select { - padding-right: 10px; - width: 30px; -} - -.mat-column-summary { - padding-left: 0; - button { - padding-left: 0; - padding-right: 0; - } -} - -th.mat-column-summary { - padding-left: 10px; -} - -td.mat-column-summary { - vertical-align: middle; - cursor: pointer; - .title { - display: inline-block; - line-height: 30px; - word-wrap: break-word; - max-width: 900px; - } - .mat-icon { - display: inline-block; - position: relative; - top: 5px; - margin-right: 10px; - } - mat-chip-set { - display: inline-block; - margin-left: 30px; - position: relative; - top: -2px; - margin-bottom: 4px; - mat-chip { - margin: 0 10px 0 0; - } - } -} - -tr.expanded-detail-row { - height: 0; -} - -tr.mat-mdc-row.expanded { - td.mat-column-summary { - mat-icon { - color: mat.get-color-from-palette($accent-palette, 500); - } - } - td { - border-bottom: 0; - } - + .expanded-detail-row { - > td { - padding-bottom: 10px; - } - } -} - -.mat-mdc-row.summary-row { - &:hover { - .mat-mdc-cell { - background-color: whitesmoke; - } - + tr.expanded-detail-row { - background-color: whitesmoke; - } - } -} - -.mat-column-magnet { - text-align: center; - .mat-icon { - position: relative; - top: 5px; - } -} - -.item-detail { - width: 100%; - overflow: hidden; -} - -::ng-deep .mdc-tab__text-label { - mat-icon { - margin-right: 10px; - } -} - -::ng-deep div[aria-labelledby="hidden"] { - display: none; -} - -.results { - padding-top: 20px; -} - -.form-edit-tags { - width: 100%; -} - -.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled).chip-primary { - background-color: mat.get-color-from-palette($primary-palette, 100); - .mat-mdc-standard-chip:not( - .mdc-evolution-chip--disabled - ).mdc-evolution-chip__text-label { - color: #fff; - } -} - -.button-row { - .mat-mdc-button-base { - margin-left: 8px; - } -} - -.form-edit-tags { - ::ng-deep .mat-mdc-form-field-subscript-wrapper { - display: none; - } -} - -app-paginator { - float: right; - margin-top: 10px; - margin-bottom: 20px; -} - -.td-published-at abbr { - cursor: default; - text-decoration: underline; - text-decoration-style: dotted; -} - -::ng-deep .tooltip-published-at { - div { - white-space: nowrap; - max-width: 250px; - } -} - -.cdk-column-peers { - white-space: nowrap; -} diff --git a/webui/src/app/search/search.component.spec.ts b/webui/src/app/search/search.component.spec.ts deleted file mode 100644 index b9e683c..0000000 --- a/webui/src/app/search/search.component.spec.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { ComponentFixture, TestBed } from "@angular/core/testing"; -import { AppModule } from "../app.module"; -import { SearchModule } from "./search.module"; -import { SearchComponent } from "./search.component"; - -describe("SearchComponent", () => { - let component: SearchComponent; - let fixture: ComponentFixture; - - beforeEach(() => { - TestBed.configureTestingModule({ - imports: [AppModule, SearchModule], - declarations: [SearchComponent], - }); - fixture = TestBed.createComponent(SearchComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it("should create", () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/webui/src/app/search/search.component.ts b/webui/src/app/search/search.component.ts deleted file mode 100644 index 6de84aa..0000000 --- a/webui/src/app/search/search.component.ts +++ /dev/null @@ -1,292 +0,0 @@ -import { - AfterContentInit, - AfterViewInit, - ChangeDetectionStrategy, - Component, -} from "@angular/core"; -import { catchError, EMPTY, tap } from "rxjs"; -import { FormControl } from "@angular/forms"; -import { - animate, - state, - style, - transition, - trigger, -} from "@angular/animations"; -import { COMMA, ENTER } from "@angular/cdk/keycodes"; -import { SelectionModel } from "@angular/cdk/collections"; -import * as generated from "../graphql/generated"; -import { GraphQLService } from "../graphql/graphql.service"; -import { AppErrorsService } from "../app-errors.service"; -import normalizeTagInput from "../util/normalizeTagInput"; -import { SearchEngine } from "./search.engine"; - -@Component({ - selector: "app-search", - templateUrl: "./search.component.html", - styleUrls: ["./search.component.scss"], - animations: [ - trigger("detailExpand", [ - state("collapsed", style({ height: "0px", minHeight: "0" })), - state("expanded", style({ height: "*" })), - transition( - "expanded <=> collapsed", - animate("225ms cubic-bezier(0.4, 0.0, 0.2, 1)"), - ), - ]), - ], - changeDetection: ChangeDetectionStrategy.OnPush, -}) -export class SearchComponent implements AfterContentInit, AfterViewInit { - search: SearchEngine = new SearchEngine( - this.graphQLService, - this.errorsService, - ); - displayedColumns = [ - "select", - "summary", - "size", - "publishedAt", - "peers", - "magnet", - ]; - queryString = new FormControl(""); - - items = Array(); - - contentType = new FormControl( - undefined, - ); - - readonly separatorKeysCodes = [ENTER, COMMA] as const; - - expandedTorrentContentId: string | undefined; - - selectedItems = new SelectionModel(true, []); - selectedTabIndex = 0; - - newTagCtrl = new FormControl(""); - editedTags = Array(); - suggestedTags = Array(); - - constructor( - private graphQLService: GraphQLService, - private errorsService: AppErrorsService, - ) { - this.search.items$.subscribe((items) => { - this.items = items; - this.selectedItems.setSelection( - ...items.filter(({ id }) => - this.selectedItems.selected.some(({ id: itemId }) => itemId === id), - ), - ); - }); - } - - ngAfterContentInit() { - this.loadResult(); - } - - ngAfterViewInit() { - this.contentType.valueChanges.subscribe((value) => { - this.search.selectContentType(value); - }); - this.newTagCtrl.valueChanges.subscribe((value) => { - value && - this.newTagCtrl.setValue(normalizeTagInput(value), { - emitEvent: false, - }); - this.updateSuggestedTags(); - }); - this.updateSuggestedTags(); - } - - loadResult(cached = true) { - this.search.loadResult(cached); - } - - /** - * Workaround for untyped table cell definitions - */ - item(item: generated.TorrentContent): generated.TorrentContent { - return item; - } - - originalOrder(): number { - return 0; - } - - /** Whether the number of selected elements matches the total number of rows. */ - isAllSelected() { - return this.items.every((i) => this.selectedItems.isSelected(i)); - } - - /** Selects all rows if they are not all selected; otherwise clear selection. */ - toggleAllRows() { - if (this.isAllSelected()) { - this.selectedItems.clear(); - return; - } - this.selectedItems.select(...this.items); - } - - /** The label for the checkbox on the passed row */ - checkboxLabel(row?: generated.TorrentContent): string { - if (!row) { - return `${this.isAllSelected() ? "deselect" : "select"} all`; - } - return `${this.selectedItems.isSelected(row) ? "deselect" : "select"} ${ - row.torrent.name - }`; - } - - selectTab(index: number): void { - this.selectedTabIndex = index; - } - - addTag(tagName: string) { - if (!this.editedTags.includes(tagName)) { - this.editedTags.push(tagName); - } - this.newTagCtrl.reset(); - this.updateSuggestedTags(); - } - - deleteTag(tagName: string) { - this.editedTags = this.editedTags.filter((t) => t !== tagName); - this.updateSuggestedTags(); - } - - renameTag(fromTagName: string, toTagName: string) { - this.editedTags = this.editedTags.map((t) => - t === fromTagName ? toTagName : t, - ); - this.updateSuggestedTags(); - } - - putTags() { - const infoHashes = this.selectedItems.selected.map((i) => i.infoHash); - if (!infoHashes.length) { - return; - } - this.newTagCtrl.value && this.addTag(this.newTagCtrl.value); - return this.graphQLService - .torrentPutTags({ - infoHashes, - tagNames: this.editedTags, - }) - .pipe( - catchError((err: Error) => { - this.errorsService.addError(`Error putting tags: ${err.message}`); - return EMPTY; - }), - ) - .pipe( - tap(() => { - this.search.loadResult(false); - }), - ) - .subscribe(); - } - - setTags() { - const infoHashes = this.selectedItems.selected.map((i) => i.infoHash); - if (!infoHashes.length) { - return; - } - this.newTagCtrl.value && this.addTag(this.newTagCtrl.value); - return this.graphQLService - .torrentSetTags({ - infoHashes, - tagNames: this.editedTags, - }) - .pipe( - catchError((err: Error) => { - this.errorsService.addError(`Error setting tags: ${err.message}`); - return EMPTY; - }), - ) - .pipe( - tap(() => { - this.search.loadResult(false); - }), - ) - .subscribe(); - } - - deleteTags() { - const infoHashes = this.selectedItems.selected.map((i) => i.infoHash); - if (!infoHashes.length) { - return; - } - this.newTagCtrl.value && this.addTag(this.newTagCtrl.value); - return this.graphQLService - .torrentDeleteTags({ - infoHashes, - tagNames: this.editedTags, - }) - .pipe( - catchError((err: Error) => { - this.errorsService.addError(`Error deleting tags: ${err.message}`); - return EMPTY; - }), - ) - .pipe( - tap(() => { - this.search.loadResult(false); - }), - ) - .subscribe(); - } - - private updateSuggestedTags() { - return this.graphQLService - .torrentSuggestTags({ - query: { - prefix: this.newTagCtrl.value, - exclusions: this.editedTags, - }, - }) - .pipe( - tap((result) => { - this.suggestedTags.splice( - 0, - this.suggestedTags.length, - ...result.suggestions.map((t) => t.name), - ); - }), - ) - .subscribe(); - } - - selectedInfoHashes(): string[] { - return this.selectedItems.selected.map((i) => i.infoHash); - } - - deleteTorrents(infoHashes: string[]) { - this.graphQLService - .torrentDelete({ infoHashes }) - .pipe( - catchError((err: Error) => { - this.errorsService.addError( - `Error deleting torrents: ${err.message}`, - ); - return EMPTY; - }), - ) - .pipe( - tap(() => { - this.search.loadResult(false); - }), - ) - .subscribe(); - } - - toggleTorrentContentId(id: string) { - if (this.expandedTorrentContentId === id) { - this.expandedTorrentContentId = undefined; - } else { - this.expandedTorrentContentId = id; - } - } -} diff --git a/webui/src/app/search/search.engine.ts b/webui/src/app/search/search.engine.ts deleted file mode 100644 index fe7a869..0000000 --- a/webui/src/app/search/search.engine.ts +++ /dev/null @@ -1,420 +0,0 @@ -import { CollectionViewer, DataSource } from "@angular/cdk/collections"; -import { BehaviorSubject, catchError, EMPTY, map, Observable } from "rxjs"; -import * as generated from "../graphql/generated"; -import { GraphQLService } from "../graphql/graphql.service"; -import { AppErrorsService } from "../app-errors.service"; -import { PageEvent } from "../paginator/paginator.types"; -import { Facet, VideoResolutionAgg, VideoSourceAgg } from "./facet"; - -const emptyResult: generated.TorrentContentSearchResult = { - items: [], - totalCount: 0, - totalCountIsEstimate: false, - aggregations: {}, -}; - -type BudgetedCount = { - count: number; - isEstimate: boolean; -}; - -const emptyBudgetedCount = { - count: 0, - isEstimate: false, -}; - -export class SearchEngine implements DataSource { - private queryStringSubject = new BehaviorSubject(""); - - private contentTypeSubject = new BehaviorSubject< - generated.ContentType | "null" | null | undefined - >(undefined); - - orderBySubject = new BehaviorSubject({ - field: "PublishedAt", - descending: true, - }); - - orderByOptions = orderByOptions; - - private pageIndexSubject = new BehaviorSubject(0); - public pageIndex$ = this.pageIndexSubject.asObservable(); - - private pageSizeSubject = new BehaviorSubject(20); - public pageSize$ = this.pageSizeSubject.asObservable(); - - private pageLengthSubject = new BehaviorSubject(0); - public pageLength$ = this.pageLengthSubject.asObservable(); - - private itemsResultSubject = - new BehaviorSubject(emptyResult); - private aggsResultSubject = - new BehaviorSubject(emptyResult); - private loadingSubject = new BehaviorSubject(false); - private lastRequestTimeSubject = new BehaviorSubject(0); - - public items$ = this.itemsResultSubject.pipe(map((result) => result.items)); - public aggregations$ = this.aggsResultSubject.pipe( - map((result) => result.aggregations), - ); - public loading$ = this.loadingSubject.asObservable(); - public hasNextPage$ = this.itemsResultSubject.pipe( - map((result) => result.hasNextPage), - ); - - private torrentSourceFacet = new Facet( - "Torrent Source", - "mediation", - null, - this.aggregations$.pipe(map((aggs) => aggs.torrentSource ?? [])), - ); - private torrentTagFacet = new Facet( - "Torrent Tag", - "sell", - null, - this.aggregations$.pipe(map((aggs) => aggs.torrentTag ?? [])), - ); - private torrentFileTypeFacet = new Facet( - "File Type", - "file_present", - null, - this.aggregations$.pipe(map((aggs) => aggs.torrentFileType ?? [])), - ); - private languageFacet = new Facet( - "Language", - "translate", - null, - this.aggregations$.pipe(map((aggs) => aggs.language ?? [])), - ); - private genreFacet = new Facet( - "Genre", - "theater_comedy", - ["movie", "tv_show"], - this.aggregations$.pipe(map((aggs) => aggs.genre ?? [])), - ); - private videoResolutionFacet = new Facet( - "Video Resolution", - "screenshot_monitor", - ["movie", "tv_show", "xxx"], - this.aggregations$.pipe( - map((aggs) => (aggs.videoResolution ?? []) as VideoResolutionAgg[]), - ), - ); - private videoSourceFacet = new Facet( - "Video Source", - "album", - ["movie", "tv_show", "xxx"], - this.aggregations$.pipe( - map((aggs) => (aggs.videoSource ?? []) as VideoSourceAgg[]), - ), - ); - - public facets: Facet[] = [ - this.torrentSourceFacet, - this.torrentTagFacet, - this.torrentFileTypeFacet, - this.languageFacet, - this.videoResolutionFacet, - this.videoSourceFacet, - this.genreFacet, - ]; - - private overallTotalCountSubject = new BehaviorSubject( - emptyBudgetedCount, - ); - public overallTotalCount$ = this.overallTotalCountSubject.asObservable(); - - private totalCountSubject = new BehaviorSubject( - emptyBudgetedCount, - ); - public totalCount$ = this.totalCountSubject.asObservable(); - - public contentTypes = contentTypes; - public availableContentTypes = new Set(); - - constructor( - private graphQLService: GraphQLService, - private errorsService: AppErrorsService, - ) { - this.contentTypeSubject.subscribe((contentType) => { - this.facets.forEach( - (f) => f.isRelevant(contentType) || f.deactivateAndReset(), - ); - this.pageIndexSubject.next(0); - this.loadResult(); - }); - } - - connect({}: CollectionViewer): Observable { - return this.items$; - } - - disconnect(): void { - this.itemsResultSubject.complete(); - this.loadingSubject.complete(); - } - - loadResult(cached = true): void { - const requestTime = Date.now(); - this.loadingSubject.next(true); - const pageSize = this.pageSizeSubject.getValue(); - const queryString = this.queryStringSubject.getValue() || undefined; - const offset = this.pageIndexSubject.getValue() * pageSize; - const orderBy = this.orderBySubject.getValue(); - const items = this.graphQLService - .torrentContentSearch({ - query: { - queryString, - limit: pageSize, - offset, - hasNextPage: true, - cached, - totalCount: true, - }, - facets: this.facetsInput(true), - orderBy: [orderBy], - }) - .pipe( - catchError((err: Error) => { - this.errorsService.addError( - `Error loading item results: ${err.message}`, - ); - return EMPTY; - }), - ); - items.subscribe((result) => { - const lastRequestTime = this.lastRequestTimeSubject.getValue(); - if (requestTime >= lastRequestTime) { - this.itemsResultSubject.next(result); - this.aggsResultSubject.next(result); - this.loadingSubject.next(false); - this.lastRequestTimeSubject.next(requestTime); - this.pageLengthSubject.next(result.items.length); - this.totalCountSubject.next({ - count: result.totalCount, - isEstimate: result.totalCountIsEstimate, - }); - let overallTotalCount = 0; - let overallIsEstimate = false; - for (const ct of result.aggregations.contentType ?? []) { - overallTotalCount += ct.count; - overallIsEstimate = overallIsEstimate || ct.isEstimate; - this.availableContentTypes.add(ct.value ?? "null"); - } - this.overallTotalCountSubject.next({ - count: overallTotalCount, - isEstimate: overallIsEstimate, - }); - } - }); - } - - private facetsInput(aggregate: boolean): generated.TorrentContentFacetsInput { - const contentType = this.contentTypeSubject.getValue(); - return { - contentType: { - aggregate, - filter: - contentType === "null" - ? [null] - : contentType - ? [contentType] - : undefined, - }, - torrentSource: facetInput(this.torrentSourceFacet, aggregate), - torrentTag: facetInput(this.torrentTagFacet, aggregate), - torrentFileType: facetInput(this.torrentFileTypeFacet, aggregate), - language: facetInput(this.languageFacet, aggregate), - genre: facetInput(this.genreFacet, aggregate), - videoResolution: facetInput(this.videoResolutionFacet, aggregate), - videoSource: facetInput(this.videoSourceFacet, aggregate), - }; - } - - selectContentType( - contentType: generated.ContentType | "null" | null | undefined, - ) { - this.contentTypeSubject.next(contentType); - } - - setQueryString(queryString: string) { - if (this.queryStringSubject.getValue() === queryString) { - return; - } - this.queryStringSubject.next(queryString); - if (queryString) { - this.orderBySubject.next({ - field: "Relevance", - descending: true, - }); - } else { - this.orderBySubject.next({ - field: "PublishedAt", - descending: true, - }); - } - this.firstPage(); - this.loadResult(); - } - - selectOrderBy(field: generated.TorrentContentOrderBy) { - this.orderBySubject.next({ - field, - descending: this.orderByOptions[field]?.descending ?? false, - }); - this.loadResult(); - } - - toggleOrderByDirection() { - const value = this.orderBySubject.getValue(); - this.orderBySubject.next({ - field: value.field, - descending: !value.descending, - }); - this.loadResult(); - } - - firstPage() { - this.pageIndexSubject.next(0); - } - - handlePageEvent(event: PageEvent) { - this.pageIndexSubject.next(event.pageIndex); - this.pageSizeSubject.next(event.pageSize); - this.loadResult(); - } - - contentTypeCount(type: string): Observable<{ - count: number; - isEstimate: boolean; - }> { - return this.aggregations$.pipe( - map((aggs) => { - const agg = aggs.contentType?.find((a) => (a.value ?? "null") === type); - return agg ?? { count: 0, isEstimate: false }; - }), - ); - } - - contentTypeInfo(type: unknown): ContentTypeInfo | undefined { - return contentTypes[type as keyof typeof contentTypes]; - } -} - -type ContentTypeInfo = { - singular: string; - plural: string; - icon: string; -}; - -const contentTypes: Record = { - movie: { - singular: "Movie", - plural: "Movies", - icon: "movie", - }, - tv_show: { - singular: "TV Show", - plural: "TV Shows", - icon: "live_tv", - }, - music: { - singular: "Music", - plural: "Music", - icon: "music_note", - }, - ebook: { - singular: "E-Book", - plural: "E-Books", - icon: "auto_stories", - }, - comic: { - singular: "Comic", - plural: "Comics", - icon: "comic_bubble", - }, - audiobook: { - singular: "Audiobook", - plural: "Audiobooks", - icon: "mic", - }, - software: { - singular: "Software", - plural: "Software", - icon: "desktop_windows", - }, - game: { - singular: "Game", - plural: "Games", - icon: "sports_esports", - }, - xxx: { - singular: "XXX", - plural: "XXX", - icon: "18_up_rating_outline", - }, - null: { - singular: "Unknown", - plural: "Unknown", - icon: "question_mark", - }, -}; - -function facetInput( - facet: Facet, - aggregate: boolean, -) { - return facet.isActive() - ? { - aggregate, - filter: facet.filterValues(), - } - : undefined; -} - -const orderByOptions: Partial< - Record -> = { - Relevance: { - label: "Relevance", - descending: true, - }, - PublishedAt: { - label: "Published", - descending: true, - }, - UpdatedAt: { - label: "Updated", - descending: true, - }, - Size: { - label: "Size", - descending: true, - }, - Files: { - label: "Files Count", - descending: true, - }, - Seeders: { - label: "Seeders", - descending: true, - }, - Leechers: { - label: "Leechers", - descending: true, - }, - Name: { - label: "Name", - descending: false, - }, -}; - -type OrderByInfo = { - label: string; - descending: boolean; -}; - -type OrderBySelection = { - field: generated.TorrentContentOrderBy; - descending: boolean; -}; diff --git a/webui/src/app/search/search.module.ts b/webui/src/app/search/search.module.ts deleted file mode 100644 index ce385fe..0000000 --- a/webui/src/app/search/search.module.ts +++ /dev/null @@ -1,63 +0,0 @@ -import { NgModule } from "@angular/core"; -import { CommonModule, NgOptimizedImage } from "@angular/common"; -import { ReactiveFormsModule } from "@angular/forms"; -import { MatTableModule } from "@angular/material/table"; -import { MatProgressBarModule } from "@angular/material/progress-bar"; -import { MatFormFieldModule } from "@angular/material/form-field"; -import { MatInputModule } from "@angular/material/input"; -import { MatIconModule } from "@angular/material/icon"; -import { MatButtonModule } from "@angular/material/button"; -import { NgxFilesizeModule } from "ngx-filesize"; -import { MatSidenavModule } from "@angular/material/sidenav"; -import { MatSelectModule } from "@angular/material/select"; -import { MatExpansionModule } from "@angular/material/expansion"; -import { MatCheckboxModule } from "@angular/material/checkbox"; -import { MatChipsModule } from "@angular/material/chips"; -import { BrowserAnimationsModule } from "@angular/platform-browser/animations"; -import { ClipboardModule } from "@angular/cdk/clipboard"; -import { MatSnackBarModule } from "@angular/material/snack-bar"; -import { MatRadioModule } from "@angular/material/radio"; -import { MatAutocompleteModule } from "@angular/material/autocomplete"; -import { MatTabsModule } from "@angular/material/tabs"; -import { MatDividerModule } from "@angular/material/divider"; -import { MatCardModule } from "@angular/material/card"; -import { MatTooltip } from "@angular/material/tooltip"; -import { PaginatorModule } from "../paginator/paginator.module"; -import { TorrentModule } from "../torrent/torrent.module"; -import { HumanTimePipe } from "../pipes/human-time.pipe"; -import { SearchComponent } from "./search.component"; - -@NgModule({ - declarations: [SearchComponent], - imports: [ - BrowserAnimationsModule, - ClipboardModule, - CommonModule, - MatAutocompleteModule, - MatButtonModule, - MatCardModule, - MatCheckboxModule, - MatChipsModule, - MatDividerModule, - MatExpansionModule, - MatFormFieldModule, - MatIconModule, - MatInputModule, - MatProgressBarModule, - MatRadioModule, - MatSelectModule, - MatSidenavModule, - MatSnackBarModule, - MatTableModule, - MatTabsModule, - MatTooltip, - NgOptimizedImage, - NgxFilesizeModule, - PaginatorModule, - ReactiveFormsModule, - TorrentModule, - HumanTimePipe, - ], - exports: [SearchComponent], -}) -export class SearchModule {} diff --git a/webui/src/app/status/status.module.ts b/webui/src/app/status/status.module.ts deleted file mode 100644 index 39426f7..0000000 --- a/webui/src/app/status/status.module.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { NgModule } from "@angular/core"; -import { CommonModule } from "@angular/common"; -import { VersionComponent } from "./version/version.component"; - -@NgModule({ - declarations: [VersionComponent], - imports: [CommonModule], - exports: [VersionComponent], -}) -export class StatusModule {} diff --git a/webui/src/app/status/version/version.component.html b/webui/src/app/status/version/version.component.html deleted file mode 100644 index 2742802..0000000 --- a/webui/src/app/status/version/version.component.html +++ /dev/null @@ -1,3 +0,0 @@ -
- {{ version }} -
diff --git a/webui/src/app/status/version/version.component.ts b/webui/src/app/status/version/version.component.ts deleted file mode 100644 index be48c87..0000000 --- a/webui/src/app/status/version/version.component.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { Component, OnInit } from "@angular/core"; -import * as generated from "../../graphql/generated"; -import { GraphQLService } from "src/app/graphql/graphql.service"; - -const defaultVersionName = ""; - -@Component({ - selector: "app-version", - standalone: false, - templateUrl: "./version.component.html", - styleUrl: "./version.component.scss", -}) -export class VersionComponent implements OnInit { - version: string = defaultVersionName; - - constructor(private graphQLService: GraphQLService) {} - - ngOnInit(): void { - this.graphQLService.systemQuery().subscribe({ - next: this.parseVersionFromRsp.bind(this), - error: () => { - this.version = defaultVersionName; - }, - }); - } - - parseVersionFromRsp(data: generated.SystemQuery) { - this.version = data?.version || defaultVersionName; - } -} diff --git a/webui/src/app/themes/_theme-emitter-component.theme.scss b/webui/src/app/themes/_theme-emitter-component.theme.scss new file mode 100644 index 0000000..eeb3ea0 --- /dev/null +++ b/webui/src/app/themes/_theme-emitter-component.theme.scss @@ -0,0 +1,36 @@ +@use "@angular/material" as mat; +@use "sass:map"; + +$base-colors: ( + "primary": primary, + "secondary": secondary, + "tertiary": tertiary, + "neutral": neutral, + "neutral-variant": neutral-variant, + "error": error, +); +$hues: 20, 40, 50, 60, 80; + +@mixin theme($theme) { + .theme-emitter-color.success-50 { + color: map.get(map.get($theme, "success"), 50); + } + .theme-emitter-color.caution-50 { + color: map.get($theme, caution, 50); + } + @each $key, $color in $base-colors { + @each $hue in $hues { + .theme-emitter-color.#{$key}-#{$hue} { + color: mat.get-theme-color($theme, $color, $hue); + } + } + } + .theme-emitter-lightdark { + @if mat.get-theme-type($theme) == dark { + color: #000; + } + else { + color: #fff; + } + } +} diff --git a/webui/src/app/themes/classic-theme.scss b/webui/src/app/themes/classic-theme.scss new file mode 100644 index 0000000..fda17ad --- /dev/null +++ b/webui/src/app/themes/classic-theme.scss @@ -0,0 +1,261 @@ +// This file was generated by running 'ng generate @angular/material:m3-theme'. +// Proceed with caution if making changes to this file. + +@use "sass:map"; +@use "@angular/material" as mat; + +// Note: Color palettes are generated from primary: #3f51b5, secondary: #e91e63 +$_palettes: ( + primary: ( + 0: #000000, + 10: #00105c, + 20: #08218a, + 25: #1b2f95, + 30: #293ca0, + 35: #3649ac, + 40: #4355b9, + 50: #5d6fd4, + 60: #7789f0, + 70: #97a5ff, + 80: #bac3ff, + 90: #dee0ff, + 95: #f0efff, + 98: #fbf8ff, + 99: #fefbff, + 100: #ffffff, + ), + secondary: ( + 0: #000000, + 10: #400014, + 20: #660025, + 25: #7b002e, + 30: #900038, + 35: #a60041, + 40: #bc004b, + 50: #e61a61, + 60: #ff4e7c, + 70: #ff869d, + 80: #ffb2be, + 90: #ffd9de, + 95: #ffecee, + 98: #fff8f7, + 99: #fffbff, + 100: #ffffff, + ), + tertiary: ( + 0: #000000, + 10: #2d1228, + 20: #44263d, + 25: #513149, + 30: #5d3c55, + 35: #6a4861, + 40: #77536d, + 50: #916c86, + 60: #ac85a1, + 70: #c99fbc, + 80: #e6bad7, + 90: #ffd7f1, + 95: #ffecf6, + 98: #fff7f9, + 99: #fffbff, + 100: #ffffff, + ), + neutral: ( + 0: #000000, + 10: #1b1b1f, + 20: #303034, + 25: #3b3b3f, + 30: #47464a, + 35: #535256, + 40: #5f5e62, + 50: #78767a, + 60: #929094, + 70: #acaaaf, + 80: #c8c5ca, + 90: #e4e1e6, + 95: #f3f0f4, + 98: #fbf8fd, + 99: #fefbff, + 100: #ffffff, + 4: #0e0e11, + 6: #131316, + 12: #1f1f23, + 17: #2a2a2d, + 22: #353438, + 24: #39393c, + 87: #dcd9de, + 92: #eae7ec, + 94: #f0edf1, + 96: #f6f2f7, + ), + neutral-variant: ( + 0: #000000, + 10: #1a1b23, + 20: #2f3038, + 25: #3a3b43, + 30: #46464f, + 35: #51525b, + 40: #5d5e67, + 50: #767680, + 60: #90909a, + 70: #abaab4, + 80: #c7c5d0, + 90: #e3e1ec, + 95: #f1effa, + 98: #fbf8ff, + 99: #fefbff, + 100: #ffffff, + ), + error: ( + 0: #000000, + 10: #410002, + 20: #690005, + 25: #7e0007, + 30: #93000a, + 35: #a80710, + 40: #ba1a1a, + 50: #de3730, + 60: #ff5449, + 70: #ff897d, + 80: #ffb4ab, + 90: #ffdad6, + 95: #ffedea, + 98: #fff8f7, + 99: #fffbff, + 100: #ffffff, + ), +); + +$_rest: ( + secondary: map.get($_palettes, secondary), + neutral: map.get($_palettes, neutral), + neutral-variant: map.get($_palettes, neutral-variant), + error: map.get($_palettes, error), +); +$_primary: map.merge(map.get($_palettes, primary), $_rest); +$_tertiary: map.merge(map.get($_palettes, tertiary), $_rest); + +$theme: map.merge( + mat.define-theme( + ( + color: ( + theme-type: light, + primary: $_primary, + tertiary: $_tertiary, + ), + ) + ), + ( + success: ( + 0: #000000, + 10: #002204, + 20: #00390a, + 25: #00460f, + 30: #005313, + 35: #006018, + 40: #006e1c, + 50: #22892f, + 60: #41a447, + 70: #5dc05e, + 80: #78dc77, + 90: #94f990, + 95: #c8ffc0, + 98: #ecffe4, + 99: #f6fff0, + 100: #ffffff, + ), + caution: ( + 0: #000000, + 10: #311300, + 20: #502400, + 25: #612d00, + 30: #723600, + 35: #843f00, + 40: #964900, + 50: #bc5d00, + 60: #e37100, + 70: #ff8e36, + 80: #ffb787, + 90: #ffdcc7, + 95: #ffede4, + 98: #fff8f5, + 99: #fffbff, + 100: #ffffff, + ), + ) +); + +@mixin clean-theme-vars { + --mat-app-background-color: #{mat.get-theme-color($theme, neutral, 98)}; + --mat-app-background: #{mat.get-theme-color($theme, neutral, 98)}; + --mat-expansion-container-background-color: #{mat.get-theme-color( + $theme, + neutral, + 95 + )}; + --mat-expansion-container-shape: 2px; + --mat-menu-container-color: #{mat.get-theme-color($theme, neutral, 95)}; + --mat-sidenav-container-background-color: #{mat.get-theme-color( + $theme, + neutral, + 98 + )}; + --mat-sidenav-content-background-color: #{mat.get-theme-color( + $theme, + neutral, + 98 + )}; + --mat-table-background-color: #{mat.get-theme-color($theme, neutral, 95)}; + --mdc-chip-container-shape-radius: 4px; + --mdc-dialog-container-shape: 6px; + --mdc-elevated-card-container-color: #{mat.get-theme-color( + $theme, + neutral, + 95 + )}; + --mdc-elevated-card-container-shape: 6px; + --mdc-fab-small-container-color: #{mat.get-theme-color($theme, neutral, 90)}; + --mdc-fab-small-container-elevation-shadow: none; + --mdc-fab-small-container-shape: 4px; + --mdc-fab-small-focus-container-elevation-shadow: 1px 1px 2px #{mat.get-theme-color( + $theme, + neutral, + 80 + )}; + --mdc-fab-small-hover-container-elevation-shadow: 1px 1px 2px #{mat.get-theme-color( + $theme, + neutral, + 70 + )}; + --mdc-filled-text-field-container-color: #{mat.get-theme-color( + $theme, + neutral, + 95 + )}; + --mdc-linear-progress-track-color: #{mat.get-theme-color($theme, neutral, 95)}; + --mdc-outlined-button-container-shape: 6px; + --mdc-text-button-container-shape: 4px; + .mat-toolbar.toolbar-header { + --mat-toolbar-container-text-color: var(--mat-app-text-color); + background-color: mat.get-theme-color($theme, neutral, 95); + border-bottom-color: var(--mat-table-row-item-outline-color); + border-bottom-style: solid; + border-bottom-width: 1px; + a { + color: var(--mat-app-text-color); + &.active { + color: mat.get-theme-color($theme, primary, 40); + &.mdc-button { + background-color: mat.get-theme-color($theme, neutral, 92); + } + } + } + .mat-icon { + color: var(--mat-app-text-color); + fill: var(--mat-app-text-color); + } + } + .mat-expansion-panel { + box-shadow: 1px 1px 2px var(--mat-table-row-item-outline-color); + } +} diff --git a/webui/src/app/themes/neon-theme.scss b/webui/src/app/themes/neon-theme.scss new file mode 100644 index 0000000..0a235db --- /dev/null +++ b/webui/src/app/themes/neon-theme.scss @@ -0,0 +1,230 @@ +// This file was generated by running 'ng generate @angular/material:m3-theme'. +// Neon Dark Theme with bright neon highlights + +@use "sass:map"; +@use "@angular/material" as mat; + +// Neon color palettes +$_palettes: ( + primary: ( + 0: #000000, + 10: #1a001a, + 20: #330033, + 25: #4d004d, + 30: #660066, + 35: #800080, + 40: #ff00ff, + 50: #ff33ff, + 60: #ff66ff, + 70: #ff99ff, + 80: #ffccff, + 90: #ffe6ff, + 95: #fff2ff, + 98: #fff9ff, + 99: #fffaff, + 100: #ffffff, + ), + secondary: ( + 0: #0a0a0a, + 10: #0f2a0f, + 20: #145514, + 25: #196f19, + 30: #1e891e, + 35: #23a323, + 40: #28bd28, + 50: #3dff14, + 60: #57ff2e, + 70: #71ff47, + 80: #8bff61, + 90: #a5ff7a, + 95: #bfff94, + 98: #d9ffad, + 99: #f3ffc7, + 100: #ffffff, + ), + tertiary: ( + 0: #000000, + 10: #001a33, + 20: #003366, + 25: #004d99, + 30: #0066cc, + 35: #007fff, + 40: #00b3ff, + 50: #33ccff, + 60: #66e5ff, + 70: #99ffff, + 80: #ccffff, + 90: #e6ffff, + 95: #f2ffff, + 98: #f9ffff, + 99: #fbffff, + 100: #ffffff, + ), + neutral: ( + 0: #000000, + 10: #191c1e, + 20: #2e3132, + 25: #393c3d, + 30: #444749, + 35: #505355, + 40: #5c5f60, + 50: #757779, + 60: #8f9193, + 70: #a9abad, + 80: #c5c7c8, + 90: #e1e2e4, + 95: #eff1f3, + 98: #f8f9fb, + 99: #fbfcfe, + 100: #ffffff, + 4: #0c0f10, + 6: #111415, + 12: #1d2022, + 17: #272a2c, + 22: #323537, + 24: #373a3b, + 87: #d9dadc, + 92: #e7e8ea, + 94: #edeef0, + 96: #f2f4f6, + ), + neutral-variant: ( + 0: #000000, + 10: #151d20, + 20: #2a3236, + 25: #353d41, + 30: #40484c, + 35: #4c5458, + 40: #586064, + 50: #70787d, + 60: #8a9297, + 70: #a4acb1, + 80: #c0c8cd, + 90: #dce4e9, + 95: #eaf2f7, + 98: #f4faff, + 99: #fafcff, + 100: #ffffff, + ), + error: ( + 0: #000000, + 10: #330000, + 20: #660000, + 25: #800000, + 30: #990000, + 35: #b30000, + 40: #ff3333, + 50: #ff6666, + 60: #ff9999, + 70: #ffcccc, + 80: #ffe6e6, + 90: #fff2f2, + 95: #fff9f9, + 98: #fffbfb, + 99: #fffefe, + 100: #ffffff, + ), +); + +// Merge palettes +$_rest: ( + secondary: map.get($_palettes, secondary), + neutral: map.get($_palettes, neutral), + neutral-variant: map.get($_palettes, neutral-variant), + error: map.get($_palettes, error), +); +$_primary: map.merge(map.get($_palettes, primary), $_rest); +$_tertiary: map.merge(map.get($_palettes, tertiary), $_rest); + +$theme: map.merge( + mat.define-theme( + ( + color: ( + theme-type: dark, + primary: $_primary, + tertiary: $_tertiary, + ), + ) + ), + ( + background: #fff, + success: ( + 0: #000000, + 10: #003300, + 20: #006600, + 25: #009900, + 30: #00cc00, + 35: #00ff00, + 40: #1aff33, + 50: #33ff66, + 60: #66ff99, + 70: #80ffb3, + 80: #99ffcc, + 90: #ccffe6, + 95: #e6fff2, + 98: #f2fffa, + 99: #f7fffd, + 100: #ffffff, + ), + caution: ( + 0: #000000, + 10: #332b00, + 20: #665700, + 25: #806900, + 30: #998000, + 35: #b38f00, + 40: #ffc300, + 50: #ffd633, + 60: #ffe066, + 70: #ffe699, + 80: #ffefcc, + 90: #fff6e6, + 95: #fffaf2, + 98: #fffdf9, + 99: #fffefb, + 100: #ffffff, + ), + ) +); + +@mixin theme-vars { + --mat-app-background-color: #{mat.get-theme-color($theme, neutral, 4)}; + --mat-app-background: #{mat.get-theme-color($theme, neutral, 4)}; + --mat-expansion-container-background-color: #{mat.get-theme-color( + $theme, + neutral, + 10 + )}; + --mat-sidenav-container-background-color: #{mat.get-theme-color( + $theme, + neutral, + 4 + )}; + --mat-sidenav-content-background-color: #{mat.get-theme-color( + $theme, + neutral, + 4 + )}; + --mat-table-background-color: #{mat.get-theme-color($theme, neutral, 10)}; + --mdc-elevated-card-container-color: #{mat.get-theme-color( + $theme, + neutral, + 10 + )}; + .mat-toolbar.toolbar-header { + --mat-toolbar-container-text-color: var(--mat-app-text-color); + a { + color: mat.get-theme-color($theme, neutral, 4); + &.active { + color: mat.get-theme-color($theme, neutral, 4); + &.mdc-button { + background-color: mat.get-theme-color($theme, neutral, 4); + } + } + } + .mat-icon { + color: mat.get-theme-color($theme, neutral, 4); + fill: mat.get-theme-color($theme, neutral, 4); + } + } +} diff --git a/webui/src/app/themes/theme-constants.ts b/webui/src/app/themes/theme-constants.ts new file mode 100644 index 0000000..41c9673 --- /dev/null +++ b/webui/src/app/themes/theme-constants.ts @@ -0,0 +1,32 @@ +import { ThemeColors, ThemeInfo } from "./theme-types"; + +export const themeBaseColors = [ + "primary", + "secondary", + "tertiary", + "neutral", + "neutral-variant", + "error", + "caution", + "success", +] as const; + +export const themeColorHues = [20, 40, 50, 60, 80] as const; + +export const themeColors = [ + "background", + "foreground", + ...themeBaseColors.flatMap((baseColor) => + themeColorHues.map( + ( + n, + ): `${(typeof themeBaseColors)[number]}-${(typeof themeColorHues)[number]}` => + `${baseColor}-${n}`, + ), + ), +] as const; + +export const emptyThemeInfo: ThemeInfo = { + type: "light", + colors: {} as ThemeColors, +}; diff --git a/webui/src/app/themes/theme-emitter-color.component.ts b/webui/src/app/themes/theme-emitter-color.component.ts new file mode 100644 index 0000000..ff9373c --- /dev/null +++ b/webui/src/app/themes/theme-emitter-color.component.ts @@ -0,0 +1,12 @@ +import { Component, ElementRef, Input, ViewChild } from "@angular/core"; +import { ThemeColor } from "./theme-types"; + +@Component({ + selector: "app-theme-emitter-color", + standalone: true, + template: `
`, +}) +export class ThemeEmitterColorComponent { + @Input() color: ThemeColor; + @ViewChild("element") element: ElementRef; +} diff --git a/webui/src/app/themes/theme-emitter.component.html b/webui/src/app/themes/theme-emitter.component.html new file mode 100644 index 0000000..e2a0e4f --- /dev/null +++ b/webui/src/app/themes/theme-emitter.component.html @@ -0,0 +1,6 @@ + + @for (c of themeColors; track c) { + + } +
+
diff --git a/webui/src/app/themes/theme-emitter.component.scss b/webui/src/app/themes/theme-emitter.component.scss new file mode 100644 index 0000000..99ee81f --- /dev/null +++ b/webui/src/app/themes/theme-emitter.component.scss @@ -0,0 +1,11 @@ +:host { + display: none; +} + +.theme-emitter-color.background { + color: var(--mat-app-background-color); +} + +.theme-emitter-color.foreground { + color: var(--mat-app-text-color); +} diff --git a/webui/src/app/themes/theme-emitter.component.ts b/webui/src/app/themes/theme-emitter.component.ts new file mode 100644 index 0000000..0ec3120 --- /dev/null +++ b/webui/src/app/themes/theme-emitter.component.ts @@ -0,0 +1,60 @@ +import { + AfterViewInit, + Component, + ElementRef, + inject, + ViewChild, + ViewChildren, +} from "@angular/core"; +import { themeColors } from "./theme-constants"; +import { ThemeEmitterColorComponent } from "./theme-emitter-color.component"; +import { ThemeColors } from "./theme-types"; +import { ThemeInfoService } from "./theme-info.service"; +import { ThemeManager } from "./theme-manager.service"; + +@Component({ + selector: "app-theme-emitter", + standalone: true, + templateUrl: "./theme-emitter.component.html", + imports: [ThemeEmitterColorComponent], + styleUrl: "./theme-emitter.component.scss", +}) +export class ThemeEmitterComponent implements AfterViewInit { + private service = inject(ThemeInfoService); + private themeManager = inject(ThemeManager); + + themeColors = themeColors; + + @ViewChildren(ThemeEmitterColorComponent) + elements: ThemeEmitterColorComponent[]; + @ViewChild("lightdark") lightdark?: ElementRef; + + constructor() { + this.themeManager.selectedTheme$.subscribe(() => { + this.updateThemeColors(); + }); + } + + ngAfterViewInit() { + this.updateThemeColors(); + } + + updateThemeColors() { + const colors: Partial = {}; + for (const color of this.elements ?? []) { + colors[color.color] = getComputedStyle( + color.element.nativeElement as Element, + ).color; + } + const type = + this.lightdark && + getComputedStyle(this.lightdark.nativeElement as Element).color === + "rgb(0, 0, 0)" + ? "dark" + : "light"; + this.service.setInfo({ + colors: colors as ThemeColors, + type, + }); + } +} diff --git a/webui/src/app/themes/theme-info.service.ts b/webui/src/app/themes/theme-info.service.ts new file mode 100644 index 0000000..03dfb2c --- /dev/null +++ b/webui/src/app/themes/theme-info.service.ts @@ -0,0 +1,31 @@ +import { Injectable } from "@angular/core"; +import { BehaviorSubject } from "rxjs"; +import { ThemeColors, ThemeInfo, ThemeType } from "./theme-types"; +import { emptyThemeInfo } from "./theme-constants"; + +@Injectable({ providedIn: "root" }) +export class ThemeInfoService { + private infoSubject = new BehaviorSubject(emptyThemeInfo); + + public info$ = this.infoSubject.asObservable(); + + public get info(): ThemeInfo { + return this.infoSubject.getValue(); + } + + public get colors(): ThemeColors { + return this.info.colors; + } + + public get type(): ThemeType { + return this.info.type; + } + + public get isDark(): boolean { + return this.type === "dark"; + } + + public setInfo(info: ThemeInfo) { + this.infoSubject.next(info); + } +} diff --git a/webui/src/app/themes/theme-manager.service.ts b/webui/src/app/themes/theme-manager.service.ts new file mode 100644 index 0000000..01a06b2 --- /dev/null +++ b/webui/src/app/themes/theme-manager.service.ts @@ -0,0 +1,80 @@ +import { DOCUMENT } from "@angular/common"; +import { Injectable, inject } from "@angular/core"; +import { BehaviorSubject } from "rxjs"; +import { BrowserStorageService } from "../browser-storage/browser-storage.service"; +import { + defaultDarkTheme, + defaultLightTheme, + ThemeKey, + themes, +} from "./theme-registry"; + +const LOCAL_STORAGE_KEY = "bitmagnet-theme"; + +@Injectable({ providedIn: "root" }) +export class ThemeManager { + private document = inject(DOCUMENT); + private browserStorage = inject(BrowserStorageService); + private _window = this.document.defaultView; + private selectedThemeSubject = new BehaviorSubject( + undefined, + ); + public selectedTheme$ = this.selectedThemeSubject.asObservable(); + public selectedTheme?: ThemeKey; + public themes = Object.values(themes); + + constructor() { + this.setActiveTheme(this.getPreferredTheme()); + this.windowMatchMediaPrefersDark()?.addEventListener("change", () => { + const storedTheme = this.getStoredTheme(); + if (!storedTheme) { + this.setActiveTheme(this.getAutoTheme()); + } + }); + } + + getPreferredTheme = (): ThemeKey => { + return this.getStoredTheme() ?? this.getAutoTheme(); + }; + + getStoredTheme = (): ThemeKey | undefined => { + const value = this.browserStorage.get(LOCAL_STORAGE_KEY); + return value && value in themes ? (value as ThemeKey) : undefined; + }; + + getAutoTheme = (): ThemeKey => { + return this.windowMatchMediaPrefersDark()?.matches + ? defaultDarkTheme + : defaultLightTheme; + }; + + setTheme = (theme: string) => { + this.setActiveTheme(theme); + this.setStoredTheme(this.selectedTheme ?? "auto"); + }; + + private setActiveTheme = (theme: string) => { + if (theme === "auto" || !(theme in themes)) { + theme = this.getAutoTheme(); + this.selectedTheme = undefined; + } else { + this.selectedTheme = theme as ThemeKey; + } + this.document.documentElement.setAttribute("data-bitmagnet-theme", theme); + this.selectedThemeSubject.next(this.selectedTheme); + }; + + private setStoredTheme = (theme: ThemeKey | "auto") => { + if (theme === "auto") { + this.browserStorage.remove(LOCAL_STORAGE_KEY); + } else { + this.browserStorage.set(LOCAL_STORAGE_KEY, theme); + } + }; + + private windowMatchMediaPrefersDark(): MediaQueryList | undefined { + return this._window && this._window.matchMedia + ? this._window.matchMedia("(prefers-color-scheme: dark)") + : undefined; + } +} diff --git a/webui/src/app/themes/theme-registry.ts b/webui/src/app/themes/theme-registry.ts new file mode 100644 index 0000000..3dc7632 --- /dev/null +++ b/webui/src/app/themes/theme-registry.ts @@ -0,0 +1,39 @@ +export type ThemeInfo = { + key: Key; + label: string; + dark: boolean; +}; + +export type Themes = { + [key in Keys]: ThemeInfo; +}; + +const _themes = { + classic: { + key: "classic" as const, + label: "Classic", + dark: false, + }, + clean: { + key: "clean" as const, + label: "Clean", + dark: false, + }, + neon: { + key: "neon" as const, + label: "Neon", + dark: true, + }, + tundra: { + key: "tundra" as const, + label: "Tundra", + dark: true, + }, +}; + +export type ThemeKey = keyof typeof _themes; + +export const themes: Themes = _themes; + +export const defaultLightTheme = "classic"; +export const defaultDarkTheme = "tundra"; diff --git a/webui/src/app/themes/theme-types.ts b/webui/src/app/themes/theme-types.ts new file mode 100644 index 0000000..c9e80cc --- /dev/null +++ b/webui/src/app/themes/theme-types.ts @@ -0,0 +1,20 @@ +import { + themeBaseColors, + themeColorHues, + themeColors, +} from "./theme-constants"; + +export type ThemeBaseColor = (typeof themeBaseColors)[number]; + +export type ThemeColorHue = (typeof themeColorHues)[number]; + +export type ThemeColor = (typeof themeColors)[number]; + +export type ThemeColors = Record; + +export type ThemeType = "light" | "dark"; + +export type ThemeInfo = { + colors: ThemeColors; + type: ThemeType; +}; diff --git a/webui/src/app/themes/theme-utils.ts b/webui/src/app/themes/theme-utils.ts new file mode 100644 index 0000000..988bf2d --- /dev/null +++ b/webui/src/app/themes/theme-utils.ts @@ -0,0 +1,6 @@ +import { ThemeBaseColor, ThemeColor, ThemeColorHue } from "./theme-types"; + +export const createThemeColor = ( + base: ThemeBaseColor, + hue: ThemeColorHue, +): ThemeColor => `${base}-${hue}`; diff --git a/webui/src/app/themes/tundra-theme.scss b/webui/src/app/themes/tundra-theme.scss new file mode 100644 index 0000000..585057c --- /dev/null +++ b/webui/src/app/themes/tundra-theme.scss @@ -0,0 +1,218 @@ +// This file was generated by running 'ng generate @angular/material:m3-theme'. +// Proceed with caution if making changes to this file. + +@use "sass:map"; +@use "@angular/material" as mat; + +// Note: Color palettes are generated from primary: #607d8b, secondary: #4caf50 +$_palettes: ( + primary: ( + 0: #0d0f19, + 10: #141726, + 20: #222744, + 25: #2b3056, + 30: #3a4179, + 35: #424a8a, + 40: #4a529c, + 50: #5963b0, + 60: #6a75b6, + 70: #7181c3, + 80: #8591cd, + 90: #99a1d7, + 95: #adb1e1, + 98: #c1c1eb, + 99: #e0e3f5, + 100: #ffffff, + ), + secondary: ( + 0: #1f1f0b, + 10: #2d2d0f, + 20: #3c3c13, + 25: #464619, + 30: #51511e, + 35: #5b5b23, + 40: #666628, + 50: #7a7a30, + 60: #8e8e39, + 70: #a09f44, + 80: #b3b355, + 90: #c7c766, + 95: #dbdb77, + 98: #efef88, + 99: #fafaa3, + 100: #ffffff, + ), + tertiary: ( + 0: #000000, + 10: #191836, + 20: #2e2d4d, + 25: #393858, + 30: #454364, + 35: #514f71, + 40: #5d5b7d, + 50: #767397, + 60: #8f8db2, + 70: #aaa7ce, + 80: #c6c2ea, + 90: #e3dfff, + 95: #f2eeff, + 98: #fcf8ff, + 99: #fffbff, + 100: #ffffff, + ), + neutral: ( + 0: #000000, + 10: #191c1e, + 20: #2e3132, + 25: #393c3d, + 30: #444749, + 35: #505355, + 40: #5c5f60, + 50: #757779, + 60: #8f9193, + 70: #a9abad, + 80: #c5c7c8, + 90: #e1e2e4, + 95: #eff1f3, + 98: #f8f9fb, + 99: #fbfcfe, + 100: #ffffff, + 4: #0c0f10, + 6: #111415, + 12: #1d2022, + 17: #272a2c, + 22: #323537, + 24: #373a3b, + 87: #d9dadc, + 92: #e7e8ea, + 94: #edeef0, + 96: #f2f4f6, + ), + neutral-variant: ( + 0: #000000, + 10: #151d20, + 20: #2a3236, + 25: #353d41, + 30: #40484c, + 35: #4c5458, + 40: #586064, + 50: #70787d, + 60: #8a9297, + 70: #a4acb1, + 80: #c0c8cd, + 90: #dce4e9, + 95: #eaf2f7, + 98: #f4faff, + 99: #fafcff, + 100: #ffffff, + ), + error: ( + 0: #000000, + 10: #410002, + 20: #690005, + 25: #7e0007, + 30: #93000a, + 35: #a80710, + 40: #ba1a1a, + 50: #de3730, + 60: #ff5449, + 70: #ff897d, + 80: #ffb4ab, + 90: #ffdad6, + 95: #ffedea, + 98: #fff8f7, + 99: #fffbff, + 100: #ffffff, + ), +); + +$_rest: ( + secondary: map.get($_palettes, secondary), + neutral: map.get($_palettes, neutral), + neutral-variant: map.get($_palettes, neutral-variant), + error: map.get($_palettes, error), +); +$_primary: map.merge(map.get($_palettes, primary), $_rest); +$_tertiary: map.merge(map.get($_palettes, tertiary), $_rest); + +$theme: map.merge( + mat.define-theme( + ( + color: ( + theme-type: dark, + primary: $_primary, + tertiary: $_tertiary, + ), + ) + ), + ( + success: ( + 0: #000000, + 10: #002204, + 20: #00390a, + 25: #00460f, + 30: #005313, + 35: #006018, + 40: #006e1c, + 50: #22892f, + 60: #41a447, + 70: #5dc05e, + 80: #78dc77, + 90: #94f990, + 95: #c8ffc0, + 98: #ecffe4, + 99: #f6fff0, + 100: #ffffff, + ), + caution: ( + 0: #000000, + 10: #311300, + 20: #502400, + 25: #612d00, + 30: #723600, + 35: #843f00, + 40: #964900, + 50: #bc5d00, + 60: #e37100, + 70: #ff8e36, + 80: #ffb787, + 90: #ffdcc7, + 95: #ffede4, + 98: #fff8f5, + 99: #fffbff, + 100: #ffffff, + ), + ) +); + +@mixin theme-vars { + --mat-sidenav-content-background-color: #{mat.get-theme-color( + $theme, + primary, + 0 + )}; + --mat-sidenav-container-background-color: #{mat.get-theme-color( + $theme, + primary, + 0 + )}; + --mat-app-background-color: #{mat.get-theme-color($theme, primary, 0)}; + --mat-app-background: #{mat.get-theme-color($theme, primary, 0)}; + --mat-fab-small-foreground-color: var(--mat-app-text-color); + --mat-table-background-color: #{mat.get-theme-color($theme, primary, 10)}; + --mat-expansion-container-background-color: #{mat.get-theme-color( + $theme, + primary, + 10 + )}; + --mdc-elevated-card-container-color: #{mat.get-theme-color( + $theme, + primary, + 10 + )}; + --mat-toolbar-container-background-color: #{mat.get-theme-color( + $theme, + primary, + 20 + )}; +} diff --git a/webui/src/app/torrent/torrent-content.component.html b/webui/src/app/torrent/torrent-content.component.html deleted file mode 100644 index a688926..0000000 --- a/webui/src/app/torrent/torrent-content.component.html +++ /dev/null @@ -1,250 +0,0 @@ -@if (getAttribute("poster_path", "tmdb"); as posterPath) { - Poster -} -

{{ torrentContent.torrent.name }}

-

- Info hash: - {{ torrentContent.infoHash }} -

-

- Source:  - @for (s of torrentContent.torrent.sources; let j = $index; track s.key) { - {{ (j > 0 ? ", " : "") + s.name }} - } -

-@if (torrentContent.content) { -

Title: {{ torrentContent.content.title }}

-} -@if (torrentContent.languages?.length) { -

- Language:  - @for (l of torrentContent.languages; let j = $index; track l.id) { - {{ - (j > 0 ? ", " : "") + - l.name + - (l.id === torrentContent.content?.originalLanguage?.id - ? " (original)" - : "") - }} - } -

-} -@if (torrentContent.content?.releaseYear) { -

- Original release date: - {{ - torrentContent.content?.releaseDate ?? torrentContent.content?.releaseYear - }} -

-} -@if (torrentContent.episodes) { -

Episodes: {{ torrentContent.episodes!.label }}

-} -@if (torrentContent.content?.overview) { -

- {{ torrentContent.content!.overview }} -

-} -@if (getCollections("genre"); as genres) { - -

Genres: {{ genres.join(", ") }}

-
-} -@if (torrentContent.content?.voteAverage != null) { -

- Rating: {{ torrentContent.content?.voteAverage }} / 10 - @if (torrentContent.content?.voteCount != null) { - ({{ torrentContent.content?.voteCount }} votes) - } -

-} -@if (torrentContent.content?.externalLinks; as externalLinks) { -

- External links:  - @for (l of externalLinks; let j = $index; track l.metadataSource.key) { - {{ j > 0 ? ", " : "" - }}{{ l.metadataSource.name }} - } -

-} - - - - - - - - - file_present - Files - @if (filesCount(); as filesCount) { - ({{ filesCount | number }}) - } - - - - - @if (torrentContent.torrent.filesStatus === "no_info") { -

No file information available.

- } - @if (torrentContent.torrent.filesStatus === "single") { -

- Single file: {{ torrentContent.torrent.name - }}
- @if (torrentContent.torrent.fileType; as ft) { - File type: - {{ ft!.charAt(0).toUpperCase() + ft!.slice(1) }}
- } - File size: - {{ torrentContent.torrent.size | filesize }} -

- } - @if (torrentContent.torrent.filesStatus === "multi") { -

{{ torrentContent.torrent.files?.length | number }} files.

- } - @if (torrentContent.torrent.filesStatus === "over_threshold") { -

- Showing - {{ torrentContent.torrent.files?.length | number }} of - {{ - torrentContent.torrent.filesCount == null - ? "?" - : (torrentContent.torrent.filesCount | number) - }} - files. -

- } - @if (torrentContent.torrent.files?.length) { - - - - - - - - - - @for (f of torrentContent.torrent.files; track f.path) { - - - - - - } - -
PathTypeSize
- {{ f.path }} - - {{ - f.fileType - ? f.fileType.charAt(0).toUpperCase() + - f.fileType.slice(1) - : "Unknown" - }} - - {{ f.size | filesize }} -
- } -
-
-
- - - - sell - Edit tags - - - - - - @for ( - tagName of torrentContent.torrent.tagNames; - let j = $index; - track tagName - ) { - - {{ tagName }} - - - } - - - - @for (tagName of suggestedTags; track tagName) { - {{ tagName }} - } - - - - - - - - - delete_forever - Delete - - - - - -

- Are you sure you want to delete this torrent? -
This action cannot be undone. -

-
- - - -
-
-
- @if (selectedTabIndex > 0) { - - - close - - - } -
diff --git a/webui/src/app/torrent/torrent.module.ts b/webui/src/app/torrent/torrent.module.ts deleted file mode 100644 index d466722..0000000 --- a/webui/src/app/torrent/torrent.module.ts +++ /dev/null @@ -1,66 +0,0 @@ -import { NgModule } from "@angular/core"; -import { CommonModule, DecimalPipe, NgOptimizedImage } from "@angular/common"; -import { - MatAutocomplete, - MatAutocompleteTrigger, - MatOption, -} from "@angular/material/autocomplete"; -import { MatButton } from "@angular/material/button"; -import { - MatCard, - MatCardActions, - MatCardContent, -} from "@angular/material/card"; -import { - MatChipGrid, - MatChipInput, - MatChipRemove, - MatChipRow, -} from "@angular/material/chips"; -import { MatDivider } from "@angular/material/divider"; -import { MatFormField } from "@angular/material/form-field"; -import { MatIcon } from "@angular/material/icon"; -import { - MatTab, - MatTabContent, - MatTabGroup, - MatTabLabel, -} from "@angular/material/tabs"; -import { MatTooltip } from "@angular/material/tooltip"; -import { NgxFilesizeModule } from "ngx-filesize"; -import { ReactiveFormsModule } from "@angular/forms"; -import { CdkCopyToClipboard } from "@angular/cdk/clipboard"; -import { TorrentContentComponent } from "./torrent-content.component"; - -@NgModule({ - declarations: [TorrentContentComponent], - imports: [ - CommonModule, - DecimalPipe, - MatAutocomplete, - MatAutocompleteTrigger, - MatButton, - MatCard, - MatCardActions, - MatCardContent, - MatChipGrid, - MatChipInput, - MatChipRemove, - MatChipRow, - MatDivider, - MatFormField, - MatIcon, - MatOption, - MatTab, - MatTabContent, - MatTabGroup, - MatTabLabel, - MatTooltip, - NgOptimizedImage, - NgxFilesizeModule, - ReactiveFormsModule, - CdkCopyToClipboard, - ], - exports: [TorrentContentComponent], -}) -export class TorrentModule {} diff --git a/webui/src/app/torrents/_torrents-search-component.theme.scss b/webui/src/app/torrents/_torrents-search-component.theme.scss new file mode 100644 index 0000000..324fd51 --- /dev/null +++ b/webui/src/app/torrents/_torrents-search-component.theme.scss @@ -0,0 +1,47 @@ +@use "../../../node_modules/@angular/material/index" as mat; + +@mixin theme($theme) { + .drawer-scroll-wrapper { + background-color: rgba( + mat.get-theme-color($theme, primary-container), + 0.75 + ); + } + .drawer-content { + @media (pointer: fine) { + &::-webkit-scrollbar-thumb { + background-color: mat.get-theme-color($theme, primary); + } + } + } + .panel-content-type { + li { + &.active { + color: mat.get-theme-color($theme, secondary); + } + &:hover:not(.active) { + color: mat.get-theme-color($theme, tertiary); + } + } + } + .filtered { + .mat-mdc-checkbox-checked { + .mat-internal-form-field { + color: mat.get-theme-color($theme, secondary); + } + } + .mat-mdc-checkbox:hover:not(.mat-mdc-checkbox-checked) { + .mat-internal-form-field { + color: mat.get-theme-color($theme, tertiary); + } + } + } + .unfiltered { + --mdc-checkbox-selected-icon-color: lightgray; + .mat-mdc-checkbox:hover { + .mat-internal-form-field { + color: mat.get-theme-color($theme, tertiary); + } + } + } +} diff --git a/webui/src/app/torrents/_torrents-table-component.theme.scss b/webui/src/app/torrents/_torrents-table-component.theme.scss new file mode 100644 index 0000000..b55508d --- /dev/null +++ b/webui/src/app/torrents/_torrents-table-component.theme.scss @@ -0,0 +1,15 @@ +@use "../../../node_modules/@angular/material/index" as mat; + +@mixin theme($theme) { + .table-torrents { + .mat-column-magnet { + .mat-icon { + @if mat.get-theme-type($theme) == dark { + fill: mat.get-theme-color($theme, primary, 60); + } @else { + fill: mat.get-theme-color($theme, primary, 40); + } + } + } + } +} diff --git a/webui/src/app/torrents/content-types.ts b/webui/src/app/torrents/content-types.ts new file mode 100644 index 0000000..1b893dd --- /dev/null +++ b/webui/src/app/torrents/content-types.ts @@ -0,0 +1,75 @@ +import * as generated from "../graphql/generated"; + +type ContentTypeInfo = { + singular: string; + plural: string; + icon: string; +}; + +export const contentTypeMap: Record< + generated.ContentType | "null", + ContentTypeInfo +> = { + movie: { + singular: "Movie", + plural: "Movies", + icon: "movie", + }, + tv_show: { + singular: "TV Show", + plural: "TV Shows", + icon: "live_tv", + }, + music: { + singular: "Music", + plural: "Music", + icon: "music_note", + }, + ebook: { + singular: "E-Book", + plural: "E-Books", + icon: "auto_stories", + }, + comic: { + singular: "Comic", + plural: "Comics", + icon: "comic_bubble", + }, + audiobook: { + singular: "Audiobook", + plural: "Audiobooks", + icon: "mic", + }, + software: { + singular: "Software", + plural: "Software", + icon: "desktop_windows", + }, + game: { + singular: "Game", + plural: "Games", + icon: "sports_esports", + }, + xxx: { + singular: "XXX", + plural: "XXX", + icon: "18_up_rating", + }, + null: { + singular: "Unknown", + plural: "Unknown", + icon: "question_mark", + }, +}; + +export const contentTypeList = Object.entries(contentTypeMap).map( + ([key, info]) => ({ + key: key as keyof typeof contentTypeMap, + ...info, + }), +); + +export const contentTypeInfo = ( + key?: string | null, +): ContentTypeInfo | undefined => + key ? contentTypeMap[key as generated.ContentType] : undefined; diff --git a/webui/src/app/torrents/torrent-chips.component.html b/webui/src/app/torrents/torrent-chips.component.html new file mode 100644 index 0000000..5fb74d1 --- /dev/null +++ b/webui/src/app/torrents/torrent-chips.component.html @@ -0,0 +1,40 @@ + + + @for (tagName of torrentContent.torrent.tagNames; track tagName) { + + sell + {{ tagName }} + + } + @if (torrentContent.languages; as languages) { + + translate + @for (l of languages; let j = $index; track l.id) { + {{ t("languages." + l.id) + (j < languages!.length - 1 ? ", " : "") }} + } + + } + @if (torrentContent.video3d?.slice(1); as video3d) { + {{ video3d }} + } + @if (torrentContent.videoResolution?.slice(1); as videoResolution) { + aspect_ratio{{ videoResolution }} + } + @if (torrentContent.videoSource; as videoSource) { + album{{ videoSource }} + } + @if (torrentContent.videoCodec; as videoCodec) { + {{ videoCodec }} + } + @if (torrentContent.videoModifier; as videoModifier) { + {{ videoModifier }} + } + + diff --git a/webui/src/app/torrents/torrent-chips.component.scss b/webui/src/app/torrents/torrent-chips.component.scss new file mode 100644 index 0000000..4ac9c16 --- /dev/null +++ b/webui/src/app/torrents/torrent-chips.component.scss @@ -0,0 +1,6 @@ +mat-chip-set { + mat-icon { + position: relative; + left: 4px; + } +} diff --git a/webui/src/app/torrents/torrent-chips.component.spec.ts b/webui/src/app/torrents/torrent-chips.component.spec.ts new file mode 100644 index 0000000..547f98c --- /dev/null +++ b/webui/src/app/torrents/torrent-chips.component.spec.ts @@ -0,0 +1,21 @@ +import { ComponentFixture, TestBed } from "@angular/core/testing"; + +import { appConfig } from "../app.config"; +import { TorrentChipsComponent } from "./torrent-chips.component"; + +describe("TorrentChipsComponent", () => { + let component: TorrentChipsComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule(appConfig).compileComponents(); + + fixture = TestBed.createComponent(TorrentChipsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it("should create", () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/webui/src/app/torrents/torrent-chips.component.ts b/webui/src/app/torrents/torrent-chips.component.ts new file mode 100644 index 0000000..8c72a99 --- /dev/null +++ b/webui/src/app/torrents/torrent-chips.component.ts @@ -0,0 +1,14 @@ +import { Component, Input } from "@angular/core"; +import * as generated from "../graphql/generated"; +import { AppModule } from "../app.module"; + +@Component({ + selector: "app-torrent-chips", + standalone: true, + imports: [AppModule], + templateUrl: "./torrent-chips.component.html", + styleUrl: "./torrent-chips.component.scss", +}) +export class TorrentChipsComponent { + @Input() torrentContent: generated.TorrentContent; +} diff --git a/webui/src/app/torrents/torrent-content.component.html b/webui/src/app/torrents/torrent-content.component.html new file mode 100644 index 0000000..c26eb16 --- /dev/null +++ b/webui/src/app/torrents/torrent-content.component.html @@ -0,0 +1,236 @@ + + @if (getAttribute("poster_path", "tmdb"); as posterPath) { + + } + @if (heading) { +

+ {{ torrentContent.torrent.name }} +

+ } + @if (size) { +

+ {{ t("torrents.size") }}: + {{ torrentContent.torrent.size | filesize }} +

+ } + @if (published) { +

+ {{ t("torrents.published") }} + {{ torrentContent.publishedAt | timeAgo }} +

+ } + @if (peers) { +

+ {{ t("torrents.s_l") }}: + {{ torrentContent.seeders ?? "?" }} / {{ torrentContent.leechers ?? "?" }} +

+ } +

+ {{ t("torrents.info_hash") }}: + {{ torrentContent.infoHash }} +

+

+ {{ t("torrents.source") }}:  + @for (s of torrentContent.torrent.sources; let j = $index; track s.key) { + {{ (j > 0 ? ", " : "") + s.name }} + } +

+ @if (torrentContent.content) { +

+ {{ t("torrents.title") }}: + {{ torrentContent.content.title }} +

+ } + @if (torrentContent.languages?.length) { +

+ {{ t("torrents.languages") }}:  + @for (l of torrentContent.languages; let j = $index; track l.id) { + {{ + (j > 0 ? ", " : "") + + l.name + + (l.id === torrentContent.content?.originalLanguage?.id + ? " (original)" + : "") + }} + } +

+ } + @if (torrentContent.content?.releaseYear) { +

+ {{ t("torrents.original_release_date") }}: + {{ + torrentContent.content?.releaseDate ?? + torrentContent.content?.releaseYear + }} +

+ } + @if (torrentContent.episodes) { +

+ {{ t("torrents.episodes") }}: + {{ torrentContent.episodes!.label }} +

+ } + @if (torrentContent.content?.overview) { +

+ {{ torrentContent.content!.overview }} +

+ } + @if (getCollections("genre"); as genres) { + +

+ {{ t("torrents.genres") }}: {{ genres.join(", ") }} +

+
+ } + @if (torrentContent.content?.voteAverage != null) { +

+ {{ t("torrents.rating") }}: + {{ torrentContent.content?.voteAverage }} / 10 + @if (torrentContent.content?.voteCount != null) { + ({{ + t("torrents.votes_count_n", { + count: torrentContent.content?.voteCount | number + }) + }}) + } +

+ } + @if (torrentContent.content?.externalLinks; as externalLinks) { +

+ {{ t("torrents.external_links") }}:  + @for (l of externalLinks; let j = $index; track l.metadataSource.key) { + {{ j > 0 ? ", " : "" + }}{{ l.metadataSource.name }} + } +

+ } + + + + + + + + + file_present + @if (breakpoints.sizeAtLeast("Medium")) { + {{ t("torrents.files") }} + } + @if (filesCount(); as filesCount) { + ({{ filesCount | number }}) + } + + + + + @if (torrentContent.torrent.filesStatus === "no_info") { +

{{ t("torrents.files_no_info") }}

+ } + +
+
+
+ + + + sell + @if (breakpoints.sizeAtLeast("Medium")) { + {{ t("torrents.edit_tags") }} + } + + + + + + @for ( + tagName of torrentContent.torrent.tagNames; + let j = $index; + track tagName + ) { + + {{ tagName }} + cancel + + } + + + + @for (tagName of suggestedTags; track tagName) { + {{ tagName }} + } + + + + + + + + + delete_forever + @if (breakpoints.sizeAtLeast("Medium")) { + {{ t("torrents.delete") }} + } + + + + + +

+ {{ t("torrents.delete_are_you_sure") }} +
{{ t("torrents.delete_action_cannot_be_undone") }} +

+
+ + + +
+
+
+ @if (selectedTabIndex > 0) { + + + close + + + } +
+
diff --git a/webui/src/app/torrent/torrent-content.component.scss b/webui/src/app/torrents/torrent-content.component.scss similarity index 50% rename from webui/src/app/torrent/torrent-content.component.scss rename to webui/src/app/torrents/torrent-content.component.scss index 839fa61..410e774 100644 --- a/webui/src/app/torrent/torrent-content.component.scss +++ b/webui/src/app/torrents/torrent-content.component.scss @@ -1,7 +1,9 @@ h2 { margin-top: 10px; max-width: 900px; - word-wrap: break-word; + white-space: pre-wrap; + word-break: break-all; + overflow-wrap: break-word; } .poster { @@ -11,10 +13,15 @@ h2 { } .info-hash { - padding-left: 5px; - cursor: crosshair; - text-decoration: underline; - text-decoration-style: dotted; + white-space: pre-wrap; + word-break: break-all; + overflow-wrap: break-word; + span { + padding-left: 5px; + cursor: crosshair; + text-decoration: underline; + text-decoration-style: dotted; + } } .torrent-files { @@ -43,3 +50,23 @@ h2 { .files-count { margin-left: 4px; } + +.mat-mdc-card-content { + p { + margin-top: 0; + } +} + +::ng-deep .mdc-tab { + &[aria-labelledby="hidden"] { + display: none; + } + &[role="tab"] { + padding-left: 15px; + padding-right: 15px; + } + .label, + .files-count { + margin-left: 8px; + } +} diff --git a/webui/src/app/torrent/torrent-content.component.spec.ts b/webui/src/app/torrents/torrent-content.component.spec.ts similarity index 80% rename from webui/src/app/torrent/torrent-content.component.spec.ts rename to webui/src/app/torrents/torrent-content.component.spec.ts index 2649761..a8e78b4 100644 --- a/webui/src/app/torrent/torrent-content.component.spec.ts +++ b/webui/src/app/torrents/torrent-content.component.spec.ts @@ -1,18 +1,14 @@ import { ComponentFixture, TestBed } from "@angular/core/testing"; -import { AppModule } from "../app.module"; +import { appConfig } from "../app.config"; import { TorrentContentComponent } from "./torrent-content.component"; -import { TorrentModule } from "./torrent.module"; describe("TorrentContentComponent", () => { let component: TorrentContentComponent; let fixture: ComponentFixture; beforeEach(async () => { - await TestBed.configureTestingModule({ - imports: [AppModule, TorrentModule], - declarations: [TorrentContentComponent], - }).compileComponents(); + await TestBed.configureTestingModule(appConfig).compileComponents(); fixture = TestBed.createComponent(TorrentContentComponent); component = fixture.componentInstance; diff --git a/webui/src/app/torrent/torrent-content.component.ts b/webui/src/app/torrents/torrent-content.component.ts similarity index 79% rename from webui/src/app/torrent/torrent-content.component.ts rename to webui/src/app/torrents/torrent-content.component.ts index 37e081c..2b85df4 100644 --- a/webui/src/app/torrent/torrent-content.component.ts +++ b/webui/src/app/torrents/torrent-content.component.ts @@ -1,19 +1,40 @@ -import { Component, EventEmitter, Input, Output } from "@angular/core"; +import { Component, EventEmitter, inject, Input, Output } from "@angular/core"; import { catchError, EMPTY, tap } from "rxjs"; import { FormControl } from "@angular/forms"; import { COMMA, ENTER } from "@angular/cdk/keycodes"; -import { AppErrorsService } from "../app-errors.service"; -import { GraphQLService } from "../graphql/graphql.service"; -import normalizeTagInput from "../util/normalizeTagInput"; +import { NgOptimizedImage } from "@angular/common"; +import { TranslocoService } from "@jsverse/transloco"; +import { FilesizePipe } from "../pipes/filesize.pipe"; import * as generated from "../graphql/generated"; +import normalizeTagInput from "../util/normalizeTagInput"; +import { GraphQLService } from "../graphql/graphql.service"; +import { ErrorsService } from "../errors/errors.service"; +import { BreakpointsService } from "../layout/breakpoints.service"; +import { TimeAgoPipe } from "../pipes/time-ago.pipe"; +import { AppModule } from "../app.module"; +import { TorrentFilesTableComponent } from "./torrent-files-table.component"; @Component({ selector: "app-torrent-content", templateUrl: "./torrent-content.component.html", styleUrl: "./torrent-content.component.scss", + standalone: true, + imports: [ + AppModule, + FilesizePipe, + NgOptimizedImage, + TimeAgoPipe, + TorrentFilesTableComponent, + ], }) export class TorrentContentComponent { + breakpoints = inject(BreakpointsService); + @Input() torrentContent: generated.TorrentContent; + @Input() heading = true; + @Input() size = true; + @Input() peers = true; + @Input() published = true; @Output() updated = new EventEmitter(); @@ -24,9 +45,11 @@ export class TorrentContentComponent { readonly separatorKeysCodes = [ENTER, COMMA] as const; + transloco = inject(TranslocoService); + constructor( private graphQLService: GraphQLService, - private errorsService: AppErrorsService, + private errorsService: ErrorsService, ) { this.newTagCtrl.valueChanges.subscribe((value) => { if (value) { @@ -35,7 +58,7 @@ export class TorrentContentComponent { } return graphQLService .torrentSuggestTags({ - query: { + input: { prefix: value, exclusions: this.torrentContent.torrent.tagNames, }, diff --git a/webui/src/app/torrents/torrent-files-table.component.html b/webui/src/app/torrents/torrent-files-table.component.html new file mode 100644 index 0000000..57e0f22 --- /dev/null +++ b/webui/src/app/torrents/torrent-files-table.component.html @@ -0,0 +1,66 @@ + +
+ +
+ @if (torrent.filesStatus === "over_threshold") { +

+ {{ + t("torrents.showing_x_of_y_files", { + x: dataSource.result.totalCount | number, + y: torrent.filesCount == null ? "?" : (torrent.filesCount | number) + }) + }} +

+ } + + + + + + + + + + + + + + + + + + + + + + + +
{{ t("torrents.file_index") }} + {{ item(i).index }} + {{ t("torrents.file_path") }} + {{ item(i).path }} + {{ t("torrents.file_type") }} + {{ t("file_types." + (item(i).fileType ?? "unknown")) }} + {{ t("torrents.file_size") }} + {{ item(i).size | filesize }} +
+ @if (dataSource.result.totalCount > 10) { + + } +
diff --git a/webui/src/app/torrents/torrent-files-table.component.scss b/webui/src/app/torrents/torrent-files-table.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/webui/src/app/torrents/torrent-files-table.component.spec.ts b/webui/src/app/torrents/torrent-files-table.component.spec.ts new file mode 100644 index 0000000..adddb7b --- /dev/null +++ b/webui/src/app/torrents/torrent-files-table.component.spec.ts @@ -0,0 +1,37 @@ +import { ComponentFixture, TestBed } from "@angular/core/testing"; + +import { appConfig } from "../app.config"; +import { AppModule } from "../app.module"; +import { TorrentFilesTableComponent } from "./torrent-files-table.component"; + +describe("TorrentFilesTableComponent", () => { + let component: TorrentFilesTableComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + ...appConfig, + imports: [AppModule], + }).compileComponents(); + + fixture = TestBed.createComponent(TorrentFilesTableComponent); + component = fixture.componentInstance; + component.torrent = { + name: "test", + infoHash: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", + magnetUri: "magnet:?xt=urn:btih:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", + size: 100, + filesStatus: "single", + hasFilesInfo: true, + sources: [], + tagNames: [], + createdAt: new Date().toISOString(), + updatedAt: new Date().toISOString(), + }; + fixture.detectChanges(); + }); + + it("should create", () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/webui/src/app/torrents/torrent-files-table.component.ts b/webui/src/app/torrents/torrent-files-table.component.ts new file mode 100644 index 0000000..2f6bb1f --- /dev/null +++ b/webui/src/app/torrents/torrent-files-table.component.ts @@ -0,0 +1,62 @@ +import { Component, inject, Input, OnInit } from "@angular/core"; +import { Apollo } from "apollo-angular"; +import { TranslocoService } from "@jsverse/transloco"; +import { TimeAgoPipe } from "../pipes/time-ago.pipe"; +import * as generated from "../graphql/generated"; +import { ErrorsService } from "../errors/errors.service"; +import { PaginatorComponent } from "../paginator/paginator.component"; +import { FilesizePipe } from "../pipes/filesize.pipe"; +import { AppModule } from "../app.module"; +import { + ITorrentFilesDatasource, + TorrentFilesDatasource, + TorrentFilesSingleDatasource, +} from "./torrent-files.datasource"; +import { + TorrentFilesController, + TorrentFilesControls, +} from "./torrent-files.controller"; + +@Component({ + selector: "app-torrent-files-table", + standalone: true, + imports: [AppModule, FilesizePipe, PaginatorComponent, TimeAgoPipe], + templateUrl: "./torrent-files-table.component.html", + styleUrl: "./torrent-files-table.component.scss", +}) +export class TorrentFilesTableComponent implements OnInit { + private apollo = inject(Apollo); + private errorsService = inject(ErrorsService); + protected transloco = inject(TranslocoService); + + @Input() torrent: generated.Torrent; + + protected controller: TorrentFilesController; + protected dataSource: ITorrentFilesDatasource; + + protected displayedColumns = ["index", "path", "type", "size"]; + + protected controls: TorrentFilesControls; + + ngOnInit() { + this.controller = new TorrentFilesController(this.torrent.infoHash); + this.dataSource = + this.torrent.filesStatus === "single" + ? new TorrentFilesSingleDatasource(this.torrent) + : new TorrentFilesDatasource( + this.apollo, + this.errorsService, + this.controller.variables$, + ); + this.controller.controls$.subscribe((ctrl) => { + this.controls = ctrl; + }); + } + + /** + * Workaround for untyped table cell definitions + */ + item(item: generated.TorrentFile): generated.TorrentFile { + return item; + } +} diff --git a/webui/src/app/torrents/torrent-files.controller.ts b/webui/src/app/torrents/torrent-files.controller.ts new file mode 100644 index 0000000..2d5b296 --- /dev/null +++ b/webui/src/app/torrents/torrent-files.controller.ts @@ -0,0 +1,64 @@ +import { BehaviorSubject, debounceTime, Observable } from "rxjs"; +import * as generated from "../graphql/generated"; +import { PageEvent } from "../paginator/paginator.types"; + +export class TorrentFilesController { + private controlsSubject: BehaviorSubject; + controls$: Observable; + + private variablesSubject: BehaviorSubject; + variables$: Observable; + + constructor(infoHash: string) { + const ctrl: TorrentFilesControls = { + infoHash, + limit: 10, + page: 1, + }; + this.controlsSubject = new BehaviorSubject(ctrl); + this.controls$ = this.controlsSubject.asObservable(); + this.controls$.pipe(debounceTime(100)).subscribe((ctrl) => { + const currentParams = this.variablesSubject.getValue(); + const nextParams = controlsToQueryVariables(ctrl); + if (JSON.stringify(currentParams) !== JSON.stringify(nextParams)) { + this.variablesSubject.next(nextParams); + } + }); + this.variablesSubject = new BehaviorSubject(controlsToQueryVariables(ctrl)); + this.variables$ = this.variablesSubject.asObservable(); + } + + update(fn: (c: TorrentFilesControls) => TorrentFilesControls) { + const ctrl = this.controlsSubject.getValue(); + const next = fn(ctrl); + if (JSON.stringify(ctrl) !== JSON.stringify(next)) { + this.controlsSubject.next(next); + } + } + + handlePageEvent(event: PageEvent) { + this.update((ctrl) => ({ + ...ctrl, + limit: event.pageSize, + page: event.page, + })); + } +} + +export type TorrentFilesControls = { + infoHash: string; + limit: number; + page: number; +}; + +const controlsToQueryVariables = ( + ctrl: TorrentFilesControls, +): generated.TorrentFilesQueryVariables => ({ + input: { + infoHashes: [ctrl.infoHash], + limit: ctrl.limit, + page: ctrl.page, + totalCount: true, + hasNextPage: false, + }, +}); diff --git a/webui/src/app/torrents/torrent-files.datasource.ts b/webui/src/app/torrents/torrent-files.datasource.ts new file mode 100644 index 0000000..d1e032c --- /dev/null +++ b/webui/src/app/torrents/torrent-files.datasource.ts @@ -0,0 +1,136 @@ +import { CollectionViewer, DataSource } from "@angular/cdk/collections"; +import { Apollo } from "apollo-angular"; +import { + BehaviorSubject, + catchError, + EMPTY, + Observable, + Subscription, +} from "rxjs"; +import { map } from "rxjs/operators"; +import { ErrorsService } from "../errors/errors.service"; +import * as generated from "../graphql/generated"; + +const emptyResult = { + items: [], + hasNextPage: false, + totalCount: 0, + aggregations: { + queue: [], + status: [], + }, +}; + +export interface ITorrentFilesDatasource + extends DataSource { + loading$: Observable; + result$: Observable; + result: generated.TorrentFilesQueryResult; + items$: Observable; +} + +export class TorrentFilesDatasource implements ITorrentFilesDatasource { + private currentRequest = new BehaviorSubject(0); + private currentSubscription?: Subscription; + + private loadingSubject = new BehaviorSubject(false); + public loading$ = this.loadingSubject.asObservable(); + + public result: generated.TorrentFilesQueryResult = emptyResult; + private resultSubject = + new BehaviorSubject(this.result); + public result$ = this.resultSubject.asObservable(); + + public items$ = this.resultSubject.pipe(map((result) => result.items)); + + constructor( + private apollo: Apollo, + private errorsService: ErrorsService, + queryVariables: Observable, + ) { + queryVariables.subscribe( + (variables: generated.TorrentFilesQueryVariables) => { + this.loadResult(variables); + }, + ); + this.resultSubject.subscribe((result) => { + this.result = result; + }); + } + + connect({}: CollectionViewer): Observable { + return this.items$; + } + + disconnect(): void { + this.resultSubject.complete(); + } + + private loadResult(variables: generated.TorrentFilesQueryVariables): void { + if (this.currentSubscription) { + this.currentSubscription.unsubscribe(); + this.currentSubscription = undefined; + } + this.loadingSubject.next(true); + const currentRequest = this.currentRequest.getValue() + 1; + this.currentRequest.next(currentRequest); + const result = this.apollo + .query( + { + query: generated.TorrentFilesDocument, + variables, + fetchPolicy: "no-cache", + }, + ) + .pipe(map((r) => r.data.torrent.files)) + .pipe( + catchError((err: Error) => { + this.errorsService.addError( + `Error loading item results: ${err.message}`, + ); + return EMPTY; + }), + ); + this.currentSubscription = result.subscribe((r) => { + if (currentRequest === this.currentRequest.getValue()) { + this.loadingSubject.next(false); + this.resultSubject.next(r); + } + }); + } +} + +export class TorrentFilesSingleDatasource implements ITorrentFilesDatasource { + private file: generated.TorrentFile; + + loading$ = new BehaviorSubject(false).asObservable(); + result: generated.TorrentFilesQueryResult; + result$: Observable; + items$: Observable; + + constructor(private torrent: generated.Torrent) { + this.file = { + infoHash: torrent.infoHash, + index: 0, + path: torrent.name, + size: torrent.size, + fileType: torrent.fileType, + extension: torrent.extension, + createdAt: torrent.createdAt, + updatedAt: torrent.updatedAt, + }; + this.result = { + hasNextPage: false, + items: [this.file], + totalCount: 1, + }; + this.result$ = new BehaviorSubject(this.result).asObservable(); + this.items$ = new BehaviorSubject([this.file]).asObservable(); + } + + connect({}: CollectionViewer): Observable { + return this.items$; + } + + disconnect(): void {} +} diff --git a/webui/src/app/torrents/torrent-permalink.component.html b/webui/src/app/torrents/torrent-permalink.component.html new file mode 100644 index 0000000..cfea161 --- /dev/null +++ b/webui/src/app/torrents/torrent-permalink.component.html @@ -0,0 +1,38 @@ + + @if (loading) { + + } @else if (!found) { +

Not found!

+ } @else { + + + {{ + contentTypeInfo(torrentContent.contentType)?.icon ?? "question_mark" + }} + +

{{ torrentContent.torrent.name }}

+ +
+ + + +
+ + + +
+ } +
diff --git a/webui/src/app/torrents/torrent-permalink.component.scss b/webui/src/app/torrents/torrent-permalink.component.scss new file mode 100644 index 0000000..a970c5d --- /dev/null +++ b/webui/src/app/torrents/torrent-permalink.component.scss @@ -0,0 +1,28 @@ +.torrent-permalink { + max-width: 900px; + margin: 20px auto; + mat-card-title { + h2 { + margin: 0; + font-size: 24px; + word-break: break-word; + overflow-wrap: break-word; + padding-right: 80px; + } + .magnet-link { + position: absolute; + right: 20px; + top: 20px; + } + } + .mat-mdc-card-avatar { + font-size: 44px; + margin-top: -10px; + border-radius: 0; + overflow: visible; + } + mat-card-subtitle { + margin: 16px 0 14px -56px; + font-size: 6px; + } +} diff --git a/webui/src/app/torrents/torrent-permalink.component.spec.ts b/webui/src/app/torrents/torrent-permalink.component.spec.ts new file mode 100644 index 0000000..bd948f8 --- /dev/null +++ b/webui/src/app/torrents/torrent-permalink.component.spec.ts @@ -0,0 +1,21 @@ +import { ComponentFixture, TestBed } from "@angular/core/testing"; + +import { appConfig } from "../app.config"; +import { TorrentPermalinkComponent } from "./torrent-permalink.component"; + +describe("TorrentPermalinkComponent", () => { + let component: TorrentPermalinkComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule(appConfig).compileComponents(); + + fixture = TestBed.createComponent(TorrentPermalinkComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it("should create", () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/webui/src/app/torrents/torrent-permalink.component.ts b/webui/src/app/torrents/torrent-permalink.component.ts new file mode 100644 index 0000000..9edc12d --- /dev/null +++ b/webui/src/app/torrents/torrent-permalink.component.ts @@ -0,0 +1,56 @@ +import { Component, inject, OnInit } from "@angular/core"; +import { ActivatedRoute } from "@angular/router"; +import { Apollo } from "apollo-angular"; +import * as generated from "../graphql/generated"; +import { GraphQLModule } from "../graphql/graphql.module"; +import { AppModule } from "../app.module"; +import { TorrentContentComponent } from "./torrent-content.component"; +import { contentTypeInfo } from "./content-types"; +import { TorrentChipsComponent } from "./torrent-chips.component"; + +@Component({ + selector: "app-torrent-permalink", + standalone: true, + imports: [ + AppModule, + GraphQLModule, + TorrentContentComponent, + TorrentChipsComponent, + ], + templateUrl: "./torrent-permalink.component.html", + styleUrl: "./torrent-permalink.component.scss", +}) +export class TorrentPermalinkComponent implements OnInit { + private route = inject(ActivatedRoute); + private apollo = inject(Apollo); + loading = true; + found = false; + torrentContent: generated.TorrentContent; + + ngOnInit() { + this.loading = true; + this.route.paramMap.subscribe((params) => { + this.apollo + .query< + generated.TorrentContentSearchQuery, + generated.TorrentContentSearchQueryVariables + >({ + query: generated.TorrentContentSearchDocument, + variables: { + input: { + infoHashes: [params.get("infoHash") as string], + }, + }, + fetchPolicy: "no-cache", + }) + .subscribe((result) => { + const items = result.data.torrentContent.search.items; + this.torrentContent = items[0]; + this.found = items.length > 0; + this.loading = false; + }); + }); + } + + protected readonly contentTypeInfo = contentTypeInfo; +} diff --git a/webui/src/app/torrents/torrents-bulk-actions.component.html b/webui/src/app/torrents/torrents-bulk-actions.component.html new file mode 100644 index 0000000..425cdc6 --- /dev/null +++ b/webui/src/app/torrents/torrents-bulk-actions.component.html @@ -0,0 +1,164 @@ + + + + + + + content_copy + @if (breakpoints.sizeAtLeast("Medium")) { + {{ t("torrents.copy") }} + } + + + + + + + + + + + + + + + sell + @if (breakpoints.sizeAtLeast("Medium")) { + {{ t("torrents.edit_tags") }} + } + + + + + + + @for (tagName of editedTags; let j = $index; track tagName) { + + {{ tagName }} + cancel + + } + + + + @for (tagName of suggestedTags; track tagName) { + {{ tagName }} + } + + + + + + + + + + + + + + delete_forever + @if (breakpoints.sizeAtLeast("Medium")) { + {{ t("torrents.delete") }} + } + + + + + +

+ Are you sure you want to delete the selected torrents? +
This action cannot be undone. +

+
+ + + +
+
+
+ @if (selectedTabIndex > 0) { + + + close + + + } +
+
diff --git a/webui/src/app/torrents/torrents-bulk-actions.component.scss b/webui/src/app/torrents/torrents-bulk-actions.component.scss new file mode 100644 index 0000000..a943ae1 --- /dev/null +++ b/webui/src/app/torrents/torrents-bulk-actions.component.scss @@ -0,0 +1,17 @@ +mat-tab-group { + padding-left: 10px; +} + +button { + margin-right: 10px; +} + +p { + margin-top: 0; +} + +::ng-deep .mdc-tab { + &[aria-labelledby="hidden"] { + display: none; + } +} diff --git a/webui/src/app/torrents/torrents-bulk-actions.component.spec.ts b/webui/src/app/torrents/torrents-bulk-actions.component.spec.ts new file mode 100644 index 0000000..cdac036 --- /dev/null +++ b/webui/src/app/torrents/torrents-bulk-actions.component.spec.ts @@ -0,0 +1,21 @@ +import { ComponentFixture, TestBed } from "@angular/core/testing"; + +import { appConfig } from "../app.config"; +import { TorrentsBulkActionsComponent } from "./torrents-bulk-actions.component"; + +describe("TorrentsBulkActionsComponent", () => { + let component: TorrentsBulkActionsComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule(appConfig).compileComponents(); + + fixture = TestBed.createComponent(TorrentsBulkActionsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it("should create", () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/webui/src/app/torrents/torrents-bulk-actions.component.ts b/webui/src/app/torrents/torrents-bulk-actions.component.ts new file mode 100644 index 0000000..835de94 --- /dev/null +++ b/webui/src/app/torrents/torrents-bulk-actions.component.ts @@ -0,0 +1,199 @@ +import { + Component, + EventEmitter, + inject, + Input, + OnInit, + Output, +} from "@angular/core"; +import { FormControl } from "@angular/forms"; +import { catchError, EMPTY, Observable, tap } from "rxjs"; +import { COMMA, ENTER } from "@angular/cdk/keycodes"; +import * as generated from "../graphql/generated"; +import { BreakpointsService } from "../layout/breakpoints.service"; +import { ErrorsService } from "../errors/errors.service"; +import { GraphQLService } from "../graphql/graphql.service"; +import { AppModule } from "../app.module"; + +@Component({ + selector: "app-torrents-bulk-actions", + standalone: true, + imports: [AppModule], + templateUrl: "./torrents-bulk-actions.component.html", + styleUrl: "./torrents-bulk-actions.component.scss", +}) +export class TorrentsBulkActionsComponent implements OnInit { + private graphQLService = inject(GraphQLService); + private errorsService = inject(ErrorsService); + breakpoints = inject(BreakpointsService); + + @Input() selectedItems$: Observable = + new Observable(); + @Output() updated = new EventEmitter(); + + readonly separatorKeysCodes = [ENTER, COMMA] as const; + selectedTabIndex = 0; + newTagCtrl = new FormControl(""); + editedTags = Array(); + suggestedTags = Array(); + selectedItems = new Array(); + + ngOnInit() { + this.selectedItems$.subscribe((items) => { + this.selectedItems = items; + }); + } + + selectTab(index: number): void { + this.selectedTabIndex = index; + } + + getSelectedMagnetLinks(): string { + return this.selectedItems.map((i) => i.torrent.magnetUri).join("\n"); + } + + getSelectedInfoHashes(): string { + return this.selectedItems.map((i) => i.infoHash).join("\n"); + } + + addTag(tagName: string) { + if (!this.editedTags.includes(tagName)) { + this.editedTags.push(tagName); + } + this.newTagCtrl.reset(); + this.updateSuggestedTags(); + } + + deleteTag(tagName: string) { + this.editedTags = this.editedTags.filter((t) => t !== tagName); + this.updateSuggestedTags(); + } + + renameTag(fromTagName: string, toTagName: string) { + this.editedTags = this.editedTags.map((t) => + t === fromTagName ? toTagName : t, + ); + this.updateSuggestedTags(); + } + + putTags() { + const infoHashes = this.selectedItems.map(({ infoHash }) => infoHash); + if (!infoHashes.length) { + return; + } + if (this.newTagCtrl.value) { + this.addTag(this.newTagCtrl.value); + } + return this.graphQLService + .torrentPutTags({ + infoHashes, + tagNames: this.editedTags, + }) + .pipe( + catchError((err: Error) => { + this.errorsService.addError(`Error putting tags: ${err.message}`); + return EMPTY; + }), + ) + .pipe( + tap(() => { + this.updated.emit(); + }), + ) + .subscribe(); + } + + setTags() { + const infoHashes = this.selectedItems.map(({ infoHash }) => infoHash); + if (!infoHashes.length) { + return; + } + if (this.newTagCtrl.value) { + this.addTag(this.newTagCtrl.value); + } + return this.graphQLService + .torrentSetTags({ + infoHashes, + tagNames: this.editedTags, + }) + .pipe( + catchError((err: Error) => { + this.errorsService.addError(`Error setting tags: ${err.message}`); + return EMPTY; + }), + ) + .pipe( + tap(() => { + this.updated.emit(); + }), + ) + .subscribe(); + } + + deleteTags() { + const infoHashes = this.selectedItems.map(({ infoHash }) => infoHash); + if (!infoHashes.length) { + return; + } + if (this.newTagCtrl.value) { + this.addTag(this.newTagCtrl.value); + } + return this.graphQLService + .torrentDeleteTags({ + infoHashes, + tagNames: this.editedTags, + }) + .pipe( + catchError((err: Error) => { + this.errorsService.addError(`Error deleting tags: ${err.message}`); + return EMPTY; + }), + ) + .pipe( + tap(() => { + this.updated.emit(); + }), + ) + .subscribe(); + } + + private updateSuggestedTags() { + return this.graphQLService + .torrentSuggestTags({ + input: { + prefix: this.newTagCtrl.value, + exclusions: this.editedTags, + }, + }) + .pipe( + tap((result) => { + this.suggestedTags.splice( + 0, + this.suggestedTags.length, + ...result.suggestions.map((t) => t.name), + ); + }), + ) + .subscribe(); + } + + deleteTorrents() { + const infoHashes = this.selectedItems.map(({ infoHash }) => infoHash); + this.graphQLService + .torrentDelete({ infoHashes }) + .pipe( + catchError((err: Error) => { + this.errorsService.addError( + `Error deleting torrents: ${err.message}`, + ); + return EMPTY; + }), + ) + .pipe( + tap(() => { + this.updated.emit(); + }), + ) + .subscribe(); + } +} diff --git a/webui/src/app/torrents/torrents-search.component.html b/webui/src/app/torrents/torrents-search.component.html new file mode 100644 index 0000000..969e906 --- /dev/null +++ b/webui/src/app/torrents/torrents-search.component.html @@ -0,0 +1,226 @@ + + + + + + + interests {{ t("facets.content_type") }} + + +
+ +
+
+ @for (facet of facets$ | async; track facet.key) { + @if (facet.relevant) { + + + + {{ facet.icon }} + {{ t("facets." + facet.key) }} + + + @if (facet.filter?.length) { +
+ @for (agg of facet.aggregations; track agg.value) { + + {{ agg.label }} + {{ agg.isEstimate ? "~" : "" + }}{{ agg.count | number }} + + } +
+ } @else { +
+ @if (facet.aggregations.length) { + @for (agg of facet.aggregations; track agg.value) { + + {{ agg.label }} + {{ agg.isEstimate ? "~" : "" + }}{{ agg.count | number }} + + } + } @else { + {{ t("general.none") }} + } +
+ } +
+ } + } +
+ +
+
+ +
+
+ + + + @if (queryString.value) { + + } + +
+
+ + {{ t("torrents.order_by") }} + + @for (option of orderByOptions; track option.field) { + @if (option.field != "relevance" || queryString.value) { + + {{ t("torrents.ordering." + option.field) }} + + } + } + + + +
+
+ +
+
+ + + + + +
+
+
diff --git a/webui/src/app/torrents/torrents-search.component.scss b/webui/src/app/torrents/torrents-search.component.scss new file mode 100644 index 0000000..f502f75 --- /dev/null +++ b/webui/src/app/torrents/torrents-search.component.scss @@ -0,0 +1,95 @@ +.mat-expansion-panel { + margin-top: 14px; + margin-right: 14px; + section { + margin-left: -10px; + } + &.panel-content-type { + margin-top: 20px; + section { + margin-left: 0; + } + } + ul { + list-style: none; + padding-left: 0; + margin: 0; + } + mat-panel-title, + li { + position: relative; + line-height: 40px; + padding-left: 40px; + mat-icon { + position: absolute; + left: 0; + top: 8px; + } + } + li { + cursor: pointer; + mat-icon { + top: 6px; + } + small { + float: right; + font-size: 0.8rem; + } + } + mat-checkbox { + display: block; + ::ng-deep label { + min-width: 220px; + } + small { + margin-left: 10px; + position: absolute; + right: 0; + } + } +} + +.search-form { + padding-top: 20px; + padding-bottom: 10px; + position: relative; + clear: both; + display: flex; + flex-wrap: wrap; + .form-field-container { + display: inline-flex; + flex-direction: column; + position: relative; + margin-left: 20px; + padding-bottom: 20px; + button { + top: 8px; + } + &.form-field-container-order-by { + padding-right: 40px; + button { + position: absolute; + right: 0; + } + } + &.form-field-container-search-query { + width: 300px; + button { + position: absolute; + right: 0; + } + ::ng-deep .mat-mdc-form-field-infix { + padding-right: 50px; + } + } + } + .button-container-toggle-direction { + margin-left: 4px; + } +} + +app-paginator { + float: right; + padding-top: 14px; + padding-bottom: 20px; +} diff --git a/webui/src/app/torrents/torrents-search.component.spec.ts b/webui/src/app/torrents/torrents-search.component.spec.ts new file mode 100644 index 0000000..33c03d5 --- /dev/null +++ b/webui/src/app/torrents/torrents-search.component.spec.ts @@ -0,0 +1,23 @@ +import { waitForAsync, ComponentFixture, TestBed } from "@angular/core/testing"; + +import { appConfig } from "../app.config"; +import { TorrentsSearchComponent } from "./torrents-search.component"; + +describe("TableComponent", () => { + let component: TorrentsSearchComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(async () => { + await TestBed.configureTestingModule(appConfig).compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(TorrentsSearchComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it("should compile", () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/webui/src/app/torrents/torrents-search.component.ts b/webui/src/app/torrents/torrents-search.component.ts new file mode 100644 index 0000000..9970246 --- /dev/null +++ b/webui/src/app/torrents/torrents-search.component.ts @@ -0,0 +1,286 @@ +import { + ChangeDetectionStrategy, + Component, + inject, + OnDestroy, + OnInit, +} from "@angular/core"; +import { ActivatedRoute, Params, Router } from "@angular/router"; +import { + BehaviorSubject, + combineLatestWith, + Observable, + Subscription, +} from "rxjs"; +import { map } from "rxjs/operators"; +import { TranslocoService } from "@jsverse/transloco"; +import { FormControl } from "@angular/forms"; +import { SelectionModel } from "@angular/cdk/collections"; +import { Apollo } from "apollo-angular"; +import { ErrorsService } from "../errors/errors.service"; +import { GraphQLModule } from "../graphql/graphql.module"; +import { PaginatorComponent } from "../paginator/paginator.component"; +import { BreakpointsService } from "../layout/breakpoints.service"; +import * as generated from "../graphql/generated"; +import { intParam, stringListParam, stringParam } from "../util/query-string"; +import { AppModule } from "../app.module"; +import { TorrentsBulkActionsComponent } from "./torrents-bulk-actions.component"; +import { contentTypeList, contentTypeMap } from "./content-types"; +import { + allColumns, + compactColumns, + TorrentsTableComponent, +} from "./torrents-table.component"; +import { + emptyResult, + TorrentsSearchDatasource, +} from "./torrents-search.datasource"; +import { + ContentTypeSelection, + defaultOrderBy, + defaultQueryOrderBy, + FacetInfo, + facets, + inactiveFacet, + orderByOptions, + TorrentSearchControls, + TorrentsSearchController, +} from "./torrents-search.controller"; + +@Component({ + selector: "app-torrents-search", + templateUrl: "./torrents-search.component.html", + styleUrl: "./torrents-search.component.scss", + standalone: true, + imports: [ + AppModule, + GraphQLModule, + PaginatorComponent, + TorrentsBulkActionsComponent, + TorrentsTableComponent, + ], + changeDetection: ChangeDetectionStrategy.OnPush, +}) +export class TorrentsSearchComponent implements OnInit, OnDestroy { + private route = inject(ActivatedRoute); + private router = inject(Router); + private apollo = inject(Apollo); + private errorsService = inject(ErrorsService); + private transloco = inject(TranslocoService); + breakpoints = inject(BreakpointsService); + + dataSource: TorrentsSearchDatasource; + + controller: TorrentsSearchController; + + controls: TorrentSearchControls; + + contentTypes = contentTypeList; + orderByOptions = orderByOptions; + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + facets$: Observable[]>; + + allColumns = allColumns; + compactColumns = compactColumns; + + queryString = new FormControl(""); + + result = emptyResult; + + selection = new SelectionModel(true, []); + private selectedItemsSubject = new BehaviorSubject< + generated.TorrentContent[] + >([]); + selectedItems$ = this.selectedItemsSubject.asObservable(); + + private subscriptions = Array(); + + constructor() { + this.controls = { + ...initControls, + language: this.transloco.getActiveLang(), + }; + this.controller = new TorrentsSearchController(this.controls); + this.dataSource = new TorrentsSearchDatasource( + this.apollo, + this.errorsService, + this.controller.params$, + ); + this.subscriptions.push( + this.controller.controls$.subscribe((ctrl) => { + this.controls = ctrl; + }), + ); + this.facets$ = this.controller.controls$.pipe( + combineLatestWith(this.dataSource.result$), + map(([controls, result]) => + facets.map((f) => ({ + ...f, + ...f.extractInput(controls.facets), + relevant: + !f.contentTypes || + !!( + controls.contentType && + controls.contentType !== "null" && + f.contentTypes.includes(controls.contentType) + ), + aggregations: f + .extractAggregations(result.aggregations) + .map((agg) => ({ + ...agg, + label: f.resolveLabel(agg, this.transloco), + })), + })), + ), + ); + this.subscriptions.push( + this.dataSource.result$.subscribe((result) => { + this.result = result; + const infoHashes = new Set( + result.items.map(({ infoHash }) => infoHash), + ); + this.selection.deselect( + ...this.selection.selected.filter( + (infoHash) => !infoHashes.has(infoHash), + ), + ); + }), + ); + } + + ngOnInit(): void { + this.subscriptions.push( + this.route.queryParams.subscribe((params) => { + const queryString = stringParam(params, "query"); + this.queryString.setValue(queryString ?? null); + this.controller.update((ctrl) => { + const activeFacets = stringListParam(params, "facets"); + let orderBy = ctrl.orderBy; + if (queryString) { + if (queryString !== ctrl.queryString) { + orderBy = defaultQueryOrderBy; + } + } else if (orderBy.field === "relevance") { + orderBy = defaultOrderBy; + } + return { + ...ctrl, + queryString, + orderBy, + contentType: contentTypeParam(params, "content_type"), + limit: intParam(params, "limit") ?? ctrl.limit, + page: intParam(params, "page") ?? ctrl.page, + facets: facets.reduce( + (acc, facet) => { + const active = activeFacets?.includes(facet.key) ?? false; + const filter = stringListParam(params, facet.key); + return facet.patchInput(acc, { + active, + filter, + }); + }, + ctrl.facets, + ), + }; + }); + }), + this.controller.controls$.subscribe((ctrl) => { + let page: number | undefined = ctrl.page; + let limit: number | undefined = ctrl.limit; + if (page === 1) { + page = undefined; + } + if (limit === defaultLimit) { + limit = undefined; + } + void this.router.navigate([], { + relativeTo: this.route, + queryParams: { + query: ctrl.queryString + ? encodeURIComponent(ctrl.queryString) + : undefined, + page, + limit, + content_type: ctrl.contentType, + ...flattenFacets(ctrl.facets), + }, + queryParamsHandling: "merge", + }); + }), + this.selection.changed.subscribe((selection) => { + const infoHashes = new Set(selection.source.selected); + this.selectedItemsSubject.next( + this.result.items.filter((i) => infoHashes.has(i.infoHash)), + ); + }), + ); + } + + ngOnDestroy() { + this.subscriptions.forEach((subscription) => subscription.unsubscribe()); + this.subscriptions = new Array(); + } +} + +const defaultLimit = 20; + +const initControls: TorrentSearchControls = { + language: "en", + page: 1, + limit: defaultLimit, + contentType: null, + orderBy: defaultOrderBy, + facets: { + genre: inactiveFacet, + language: inactiveFacet, + fileType: inactiveFacet, + torrentSource: inactiveFacet, + torrentTag: inactiveFacet, + videoResolution: inactiveFacet, + videoSource: inactiveFacet, + }, +}; + +const contentTypeParam = ( + params: Params, + key: string, +): ContentTypeSelection => { + const str = stringParam(params, key); + return str && str in contentTypeMap ? (str as ContentTypeSelection) : null; +}; + +const flattenFacets = ( + ctrl: TorrentSearchControls["facets"], +): Record => { + const [activeFacets, filters] = facets.reduce< + [string[], Record] + >( + (acc, f) => { + const input = f.extractInput(ctrl); + if (input.active) { + return [ + [...acc[0], f.key], + input.filter + ? { + ...acc[1], + [f.key]: input.filter, + } + : acc[1], + ]; + } else { + return acc; + } + }, + [[], {}], + ); + return { + facets: activeFacets.length ? activeFacets.join(",") : undefined, + ...Object.fromEntries( + Object.entries(filters).map(([k, values]) => [ + k, + encodeURIComponent(values.join(",")), + ]), + ), + }; +}; diff --git a/webui/src/app/torrents/torrents-search.controller.ts b/webui/src/app/torrents/torrents-search.controller.ts new file mode 100644 index 0000000..20ad2d6 --- /dev/null +++ b/webui/src/app/torrents/torrents-search.controller.ts @@ -0,0 +1,485 @@ +import { BehaviorSubject, debounceTime, Observable } from "rxjs"; +import { TranslocoService } from "@jsverse/transloco"; +import * as generated from "../graphql/generated"; +import { PageEvent } from "../paginator/paginator.types"; + +type FacetInput = { + active: boolean; + filter?: TValue[]; +}; + +export type ContentTypeSelection = generated.ContentType | "null" | null; + +export type TorrentSearchControls = { + language: string; + limit: number; + page: number; + queryString?: string; + contentType: ContentTypeSelection; + orderBy: OrderBySelection; + facets: { + genre: FacetInput; + language: FacetInput; + fileType: FacetInput; + torrentSource: FacetInput; + torrentTag: FacetInput; + videoResolution: FacetInput; + videoSource: FacetInput; + }; +}; + +const controlsToQueryVariables = ( + ctrl: TorrentSearchControls, +): generated.TorrentContentSearchQueryVariables => ({ + input: { + queryString: ctrl.queryString, + limit: ctrl.limit, + page: ctrl.page, + totalCount: true, + hasNextPage: true, + orderBy: [ctrl.orderBy], + facets: { + contentType: { + aggregate: true, + filter: ctrl.contentType + ? [ctrl.contentType === "null" ? null : ctrl.contentType] + : undefined, + }, + genre: ctrl.facets.genre.active + ? { + aggregate: true, + filter: ctrl.facets.genre.filter, + } + : undefined, + language: ctrl.facets.language.active + ? { + aggregate: ctrl.facets.language.active, + filter: ctrl.facets.language.filter, + } + : undefined, + torrentFileType: ctrl.facets.fileType.active + ? { + aggregate: true, + filter: ctrl.facets.fileType.filter, + } + : undefined, + torrentSource: ctrl.facets.torrentSource.active + ? { + aggregate: true, + filter: ctrl.facets.torrentSource.filter, + } + : undefined, + torrentTag: ctrl.facets.torrentTag.active + ? { + aggregate: true, + filter: ctrl.facets.torrentTag.filter, + } + : undefined, + videoResolution: ctrl.facets.videoResolution.active + ? { + aggregate: true, + filter: ctrl.facets.videoResolution.filter, + } + : undefined, + videoSource: ctrl.facets.videoSource.active + ? { + aggregate: true, + filter: ctrl.facets.videoSource.filter, + } + : undefined, + }, + }, +}); + +export const inactiveFacet = { + active: false, +}; + +export class TorrentsSearchController { + private controlsSubject: BehaviorSubject; + controls$: Observable; + + private paramsSubject: BehaviorSubject; + params$: Observable; + + constructor(initialControls: TorrentSearchControls) { + this.controlsSubject = new BehaviorSubject(initialControls); + this.controls$ = this.controlsSubject.asObservable(); + this.paramsSubject = new BehaviorSubject( + controlsToQueryVariables(initialControls), + ); + this.params$ = this.paramsSubject.asObservable(); + this.controls$.pipe(debounceTime(100)).subscribe((ctrl) => { + const currentParams = this.paramsSubject.getValue(); + const nextParams = controlsToQueryVariables(ctrl); + if (JSON.stringify(currentParams) !== JSON.stringify(nextParams)) { + this.paramsSubject.next(nextParams); + } + }); + } + + update(fn: (c: TorrentSearchControls) => TorrentSearchControls) { + const ctrl = this.controlsSubject.getValue(); + const next = fn(ctrl); + if (JSON.stringify(ctrl) !== JSON.stringify(next)) { + this.controlsSubject.next(next); + } + } + + selectLanguage(lang: string) { + this.update((ctrl) => ({ + ...ctrl, + language: lang, + })); + } + + selectContentType(ct: ContentTypeSelection) { + this.update((ctrl) => ({ + ...ctrl, + contentType: ct, + page: 1, + facets: { + ...ctrl.facets, + genre: matchesContentType(ct, genreFacet.contentTypes) + ? ctrl.facets.genre + : inactiveFacet, + videoResolution: matchesContentType( + ct, + videoResolutionFacet.contentTypes, + ) + ? ctrl.facets.videoResolution + : inactiveFacet, + videoSource: matchesContentType(ct, videoSourceFacet.contentTypes) + ? ctrl.facets.videoSource + : inactiveFacet, + }, + })); + } + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + activateFacet(def: FacetDefinition) { + this.update((ctrl) => ({ + ...ctrl, + facets: def.patchInput(ctrl.facets, { + ...def.extractInput(ctrl.facets), + active: true, + }), + })); + } + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + deactivateFacet(def: FacetDefinition) { + this.update((ctrl) => { + const input = def.extractInput(ctrl.facets); + return { + ...ctrl, + page: input.filter ? 1 : ctrl.page, + facets: def.patchInput(ctrl.facets, { + ...input, + active: false, + filter: undefined, + }), + }; + }); + } + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + activateFilter(def: FacetDefinition, filter: string) { + this.update((ctrl) => { + const input = def.extractInput(ctrl.facets); + return { + ...ctrl, + page: 1, + facets: def.patchInput(ctrl.facets, { + ...input, + filter: Array.from( + new Set([...((input.filter as unknown[]) ?? []), filter]), + ).sort(), + }), + }; + }); + } + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + deactivateFilter(def: FacetDefinition, filter: string) { + this.update((ctrl) => { + const input = def.extractInput(ctrl.facets); + const nextFilter: string[] | undefined = input.filter?.filter( + (value) => value !== filter, + ); + return { + ...ctrl, + page: 1, + facets: def.patchInput(ctrl.facets, { + ...input, + filter: nextFilter?.length ? nextFilter : undefined, + }), + }; + }); + } + + setQueryString(str?: string | null) { + str = str || undefined; + this.update((ctrl) => { + let orderBy = ctrl.orderBy; + if (str) { + if (str !== ctrl.queryString) { + orderBy = defaultQueryOrderBy; + } + } else if (orderBy.field === "relevance") { + orderBy = defaultOrderBy; + } + return { + ...ctrl, + queryString: str, + orderBy, + page: str === ctrl.queryString ? ctrl.page : 1, + }; + }); + } + + selectOrderBy(field: generated.TorrentContentOrderByField) { + const orderBy = { + field, + descending: + orderByOptions.find((option) => option.field === field)?.descending ?? + false, + }; + this.update((ctrl) => ({ + ...ctrl, + orderBy: + orderBy.field !== "relevance" || ctrl.queryString + ? orderBy + : defaultOrderBy, + page: 1, + })); + } + + toggleOrderByDirection() { + this.update((ctrl) => ({ + ...ctrl, + orderBy: { + ...ctrl.orderBy, + descending: !ctrl.orderBy.descending, + }, + page: 1, + })); + } + + handlePageEvent(event: PageEvent) { + this.update((ctrl) => ({ + ...ctrl, + limit: event.pageSize, + page: event.page, + })); + } +} + +export type FacetDefinition = { + key: string; + icon: string; + contentTypes?: generated.ContentType[]; + allowNull: _allowNull; + extractInput: (facets: TorrentSearchControls["facets"]) => FacetInput; + patchInput: ( + facets: TorrentSearchControls["facets"], + // eslint-disable-next-line @typescript-eslint/no-explicit-any + input: FacetInput, + ) => TorrentSearchControls["facets"]; + extractAggregations: ( + aggs: generated.TorrentContentSearchResult["aggregations"], + ) => Array>; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + resolveLabel: (agg: Agg, t: TranslocoService) => string; +}; + +export const torrentSourceFacet: FacetDefinition = { + key: "torrent_source", + icon: "mediation", + allowNull: false, + extractInput: (f) => f.torrentSource, + patchInput: (f, i) => ({ + ...f, + torrentSource: i, + }), + extractAggregations: (aggs) => aggs.torrentSource ?? [], + resolveLabel: (agg) => agg.label, +}; + +export const torrentTagFacet: FacetDefinition = { + key: "torrent_tag", + icon: "sell", + allowNull: false, + extractInput: (f) => f.torrentTag, + patchInput: (f, i) => ({ + ...f, + torrentTag: i, + }), + extractAggregations: (aggs) => aggs.torrentTag ?? [], + resolveLabel: (agg) => agg.value as string, +}; + +export const fileTypeFacet: FacetDefinition = { + key: "file_type", + icon: "file_present", + allowNull: false, + extractInput: (f) => f.fileType, + patchInput: (f, i) => ({ + ...f, + fileType: i, + }), + extractAggregations: (aggs) => aggs.torrentFileType ?? [], + resolveLabel: (agg, t) => t.translate(`file_types.${agg.value}`), +}; + +export const languageFacet: FacetDefinition = { + key: "language", + icon: "translate", + allowNull: false, + extractInput: (f) => f.language, + patchInput: (f, i) => ({ + ...f, + language: i, + }), + extractAggregations: (aggs) => aggs.language ?? [], + resolveLabel: (agg, t) => t.translate(`languages.${agg.value}`), +}; + +export const genreFacet: FacetDefinition = { + key: "genre", + icon: "theater_comedy", + allowNull: false, + contentTypes: ["movie", "tv_show"], + extractInput: (f) => f.genre, + patchInput: (f, i) => ({ + ...f, + genre: i, + }), + extractAggregations: (aggs) => aggs.genre ?? [], + resolveLabel: (agg) => agg.label, +}; + +export const videoResolutionFacet: FacetDefinition< + generated.VideoResolution, + true +> = { + key: "video_resolution", + icon: "aspect_ratio", + allowNull: true, + contentTypes: ["movie", "tv_show", "xxx"], + extractInput: (f) => f.videoResolution, + patchInput: (f, i) => ({ + ...f, + videoResolution: i, + }), + extractAggregations: (aggs) => + (aggs.videoResolution ?? []).map((agg) => ({ + ...agg, + value: agg.value ?? null, + })), + resolveLabel: (agg) => (agg.value as string | undefined)?.slice(1) ?? "?", +}; + +export const videoSourceFacet: FacetDefinition = { + key: "video_source", + icon: "album", + allowNull: true, + contentTypes: ["movie", "tv_show", "xxx"], + extractInput: (f) => f.videoSource, + patchInput: (f, i) => ({ + ...f, + videoSource: i, + }), + extractAggregations: (aggs) => + (aggs.videoSource ?? []).map((agg) => ({ + ...agg, + value: (agg.value as generated.VideoSource | undefined) ?? null, + })), + resolveLabel: (agg) => (agg.value as string | undefined) ?? "?", +}; + +export const facets = [ + torrentSourceFacet, + torrentTagFacet, + fileTypeFacet, + languageFacet, + genreFacet, + videoResolutionFacet, + videoSourceFacet, +]; + +export type FacetValue = + | T + | (_allowNull extends true ? null : T); + +export type Agg = { + value: FacetValue; + label: string; + count: number; + isEstimate: boolean; +}; + +export type FacetInfo< + T = unknown, + _allowNull extends boolean = true, +> = FacetDefinition<_allowNull> & { + relevant: boolean; + active: boolean; + filter?: Array>; + aggregations: Array>; +}; + +export const orderByOptions: OrderBySelection[] = [ + { + field: "relevance", + descending: true, + }, + { + field: "published_at", + descending: true, + }, + { + field: "updated_at", + descending: true, + }, + { + field: "size", + descending: true, + }, + { + field: "files_count", + descending: true, + }, + { + field: "seeders", + descending: true, + }, + { + field: "leechers", + descending: true, + }, + { + field: "name", + descending: false, + }, +]; + +export const defaultOrderBy = { + field: "published_at" as const, + descending: true, +}; + +export const defaultQueryOrderBy = { + field: "relevance" as const, + descending: true, +}; + +type OrderBySelection = { + field: generated.TorrentContentOrderByField; + descending: boolean; +}; + +const matchesContentType = ( + selection: ContentTypeSelection, + cts?: generated.ContentType[], +) => !cts || (selection && cts.includes(selection as generated.ContentType)); diff --git a/webui/src/app/torrents/torrents-search.datasource.ts b/webui/src/app/torrents/torrents-search.datasource.ts new file mode 100644 index 0000000..06bd47a --- /dev/null +++ b/webui/src/app/torrents/torrents-search.datasource.ts @@ -0,0 +1,163 @@ +import { CollectionViewer, DataSource } from "@angular/cdk/collections"; +import { + BehaviorSubject, + catchError, + EMPTY, + Observable, + scan, + Subscription, +} from "rxjs"; +import { map } from "rxjs/operators"; +import { Apollo } from "apollo-angular"; +import * as generated from "../graphql/generated"; +import { ErrorsService } from "../errors/errors.service"; + +export const emptyResult: generated.TorrentContentSearchResult = { + items: [], + totalCount: 0, + totalCountIsEstimate: false, + aggregations: {}, +}; + +type BudgetedCount = { + count: number; + isEstimate: boolean; +}; + +export class TorrentsSearchDatasource + implements DataSource +{ + private input: generated.TorrentContentSearchQueryInput; + + private currentRequest = new BehaviorSubject(0); + private currentSubscription?: Subscription; + + private loadingSubject = new BehaviorSubject(false); + public loading$ = this.loadingSubject.asObservable(); + + public result: generated.TorrentContentSearchResult = emptyResult; + private resultSubject = + new BehaviorSubject(this.result); + public result$ = this.resultSubject.asObservable(); + + public items$ = this.resultSubject.pipe(map((result) => result.items)); + + public overallTotalCount$ = this.resultSubject.pipe( + map((result) => { + let overallTotalCount = 0; + let overallIsEstimate = false; + for (const ct of result.aggregations.contentType ?? []) { + overallTotalCount += ct.count; + overallIsEstimate = overallIsEstimate || ct.isEstimate; + } + return { + count: overallTotalCount, + isEstimate: overallIsEstimate, + }; + }), + ); + public availableContentTypes$: Observable = + this.resultSubject.pipe( + scan( + (acc: generated.ContentType[], next) => + Array.from( + new Set([ + ...acc, + ...(next.aggregations.contentType ?? []).flatMap((agg) => + agg.value ? [agg.value] : [], + ), + ]), + ), + [], + ), + ); + + public contentTypeCounts$: Observable> = + this.resultSubject.pipe( + map((result) => + Object.fromEntries( + (result.aggregations.contentType ?? []).map((ct) => [ + ct.value as string, + { + count: ct.count, + isEstimate: ct.isEstimate, + }, + ]), + ), + ), + ); + + constructor( + private apollo: Apollo, + private errorsService: ErrorsService, + searchQueryVariables: Observable, + ) { + searchQueryVariables.subscribe( + (variables: generated.TorrentContentSearchQueryVariables) => { + this.input = variables.input; + this.loadResult({ + input: { + ...variables.input, + cached: true, + }, + }); + }, + ); + this.resultSubject.subscribe((result) => { + this.result = result; + }); + } + + connect({}: CollectionViewer): Observable { + return this.items$; + } + + disconnect(): void { + this.resultSubject.complete(); + } + + refresh() { + this.loadResult({ + input: { + ...this.input, + cached: false, + }, + }); + } + + private loadResult( + variables: generated.TorrentContentSearchQueryVariables, + ): void { + if (this.currentSubscription) { + this.currentSubscription.unsubscribe(); + this.currentSubscription = undefined; + } + this.loadingSubject.next(true); + const currentRequest = this.currentRequest.getValue() + 1; + this.currentRequest.next(currentRequest); + const result = this.apollo + .query< + generated.TorrentContentSearchQuery, + generated.TorrentContentSearchQueryVariables + >({ + query: generated.TorrentContentSearchDocument, + variables, + fetchPolicy: "no-cache", + }) + .pipe(map((r) => r.data.torrentContent.search)) + .pipe( + catchError((err: Error) => { + this.errorsService.addError( + `Error loading item results: ${err.message}`, + ); + return EMPTY; + }), + ); + this.currentSubscription = result.subscribe((r) => { + if (currentRequest === this.currentRequest.getValue()) { + this.loadingSubject.next(false); + this.resultSubject.next(r); + } + }); + } +} diff --git a/webui/src/app/torrents/torrents-table.component.html b/webui/src/app/torrents/torrents-table.component.html new file mode 100644 index 0000000..a2e2e83 --- /dev/null +++ b/webui/src/app/torrents/torrents-table.component.html @@ -0,0 +1,139 @@ + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + {{ t("torrents.summary") }} + {{ + contentTypeInfo(item(i).contentType)?.icon ?? "question_mark" + }} + {{ item(i).title }} + @if (item(i).title !== item(i).torrent.name) { +

{{ item(i).torrent.name }}

+ } + +
{{ t("torrents.size") }} + {{ item(i).torrent.size | filesize }} + {{ t("torrents.published") }} + + {{ item(i).publishedAt | timeAgo }} + + + {{ t("torrents.s_l") }} + + {{ item(i).seeders ?? "?" }} / + {{ item(i).leechers ?? "?" }} + + {{ t("torrents.magnet") }} + + + +
+ +
+
+
diff --git a/webui/src/app/torrents/torrents-table.component.scss b/webui/src/app/torrents/torrents-table.component.scss new file mode 100644 index 0000000..3e54c7e --- /dev/null +++ b/webui/src/app/torrents/torrents-table.component.scss @@ -0,0 +1,92 @@ +.progress-bar-container { + height: 10px; +} + +tr.expanded-detail-row td { + border-bottom-width: 0; +} + +tr.expanded + tr.expanded-detail-row td { + border-bottom-width: 1px; +} + +th, +td { + &.cdk-column-select { + padding-right: 0; + } +} + +td.mat-column-summary { + vertical-align: middle; + cursor: pointer; + white-space: pre-wrap; + padding-top: 8px; + padding-bottom: 8px; + .title { + line-height: 30px; + overflow: hidden; + margin-right: 20px; + font-weight: bold; + } + .original-name { + margin: 2px 0 8px 34px; + } + .title, + .original-name { + white-space: pre-wrap; + word-break: break-word; + overflow-wrap: break-word; + } + > .mat-icon { + display: inline-block; + position: relative; + top: 6px; + margin-right: 10px; + } + mat-chip-set { + display: inline-block; + margin-left: 10px; + mat-chip { + margin: 2px 10px 2px 0; + } + } +} + +tr.expanded-detail-row { + height: 0; +} + +tr.mat-mdc-row.expanded { + td { + border-bottom: 0; + } + + .expanded-detail-row { + > td { + padding-bottom: 10px; + } + } +} + +.mat-column-magnet { + text-align: center; + .mat-icon { + position: relative; + top: 3px; + } +} + +.item-detail { + width: 100%; + overflow: hidden; +} + +.td-published-at abbr { + cursor: default; + text-decoration: underline; + text-decoration-style: dotted; +} + +.cdk-column-peers { + white-space: nowrap; +} diff --git a/webui/src/app/torrents/torrents-table.component.spec.ts b/webui/src/app/torrents/torrents-table.component.spec.ts new file mode 100644 index 0000000..5be599b --- /dev/null +++ b/webui/src/app/torrents/torrents-table.component.spec.ts @@ -0,0 +1,37 @@ +import { ComponentFixture, TestBed } from "@angular/core/testing"; + +import { inject } from "@angular/core"; +import { Apollo } from "apollo-angular"; +import { Observable } from "rxjs"; +import { appConfig } from "../app.config"; +import { ErrorsService } from "../errors/errors.service"; +import { AppModule } from "../app.module"; +import { TorrentsSearchDatasource } from "./torrents-search.datasource"; +import { TorrentsTableComponent } from "./torrents-table.component"; + +describe("TorrentsTableComponent", () => { + let component: TorrentsTableComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + ...appConfig, + imports: [AppModule], + }).compileComponents(); + + fixture = TestBed.createComponent(TorrentsTableComponent); + component = fixture.componentInstance; + TestBed.runInInjectionContext(() => { + component.dataSource = new TorrentsSearchDatasource( + inject(Apollo), + inject(ErrorsService), + new Observable(), + ); + }); + fixture.detectChanges(); + }); + + it("should create", () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/webui/src/app/torrents/torrents-table.component.ts b/webui/src/app/torrents/torrents-table.component.ts new file mode 100644 index 0000000..7d61618 --- /dev/null +++ b/webui/src/app/torrents/torrents-table.component.ts @@ -0,0 +1,139 @@ +import { + Component, + EventEmitter, + inject, + Input, + OnInit, + Output, +} from "@angular/core"; +import { + animate, + state, + style, + transition, + trigger, +} from "@angular/animations"; +import { SelectionModel } from "@angular/cdk/collections"; +import { BehaviorSubject } from "rxjs"; +import { ActivatedRoute, Router } from "@angular/router"; +import { FilesizePipe } from "../pipes/filesize.pipe"; +import { TimeAgoPipe } from "../pipes/time-ago.pipe"; +import * as generated from "../graphql/generated"; +import { BreakpointsService } from "../layout/breakpoints.service"; +import { stringParam } from "../util/query-string"; +import { AppModule } from "../app.module"; +import { TorrentsSearchDatasource } from "./torrents-search.datasource"; +import { contentTypeInfo } from "./content-types"; +import { TorrentChipsComponent } from "./torrent-chips.component"; +import { TorrentContentComponent } from "./torrent-content.component"; + +@Component({ + selector: "app-torrents-table", + standalone: true, + imports: [ + AppModule, + FilesizePipe, + TimeAgoPipe, + TorrentChipsComponent, + TorrentContentComponent, + ], + templateUrl: "./torrents-table.component.html", + styleUrl: "./torrents-table.component.scss", + animations: [ + trigger("detailExpand", [ + state("collapsed,void", style({ height: "0px", minHeight: "0" })), + state("expanded", style({ height: "*" })), + transition( + "expanded <=> collapsed", + animate("225ms cubic-bezier(0.4, 0.0, 0.2, 1)"), + ), + ]), + ], +}) +export class TorrentsTableComponent implements OnInit { + private route = inject(ActivatedRoute); + private router = inject(Router); + breakpoints = inject(BreakpointsService); + + contentTypeInfo = contentTypeInfo; + + @Input() dataSource: TorrentsSearchDatasource; + @Input() selection: SelectionModel; + @Input() displayedColumns: readonly Column[] = allColumns; + + @Output() updated = new EventEmitter(); + + items = Array(); + + expandedId = new BehaviorSubject(null); + + ngOnInit() { + this.dataSource.items$.subscribe((items) => { + this.items = items; + // if (items.length) { + // const expandedId = this.expandedId.getValue(); + // if (expandedId && !items.some(({ id }) => id === expandedId)) { + // this.expandedId.next(null); + // } + // } + }); + this.route.queryParams.subscribe((params) => { + const expandedId = this.expandedId.getValue() ?? undefined; + const nextExpandedId = stringParam(params, "expanded"); + if (expandedId !== nextExpandedId) { + this.expandedId.next(nextExpandedId ?? null); + } + }); + this.expandedId.subscribe((expandedId) => { + void this.router.navigate([], { + relativeTo: this.route, + queryParams: { + expanded: expandedId ? encodeURIComponent(expandedId) : undefined, + }, + queryParamsHandling: "merge", + }); + }); + } + + /** Whether the number of selected elements matches the total number of rows. */ + isAllSelected() { + return this.items.every((i) => this.selection.isSelected(i.infoHash)); + } + + /** Selects all rows if they are not all selected; otherwise clear selection. */ + toggleAllRows() { + if (this.isAllSelected()) { + this.selection.clear(); + return; + } + this.selection.select(...this.items.map((i) => i.infoHash)); + } + + toggleTorrentContentId(id: string) { + if (this.expandedId.getValue() === id) { + this.expandedId.next(null); + } else { + this.expandedId.next(id); + } + } + + /** + * Workaround for untyped table cell definitions + */ + item(item: generated.TorrentContent): generated.TorrentContent { + return item; + } +} + +export const allColumns = [ + "select", + "summary", + "size", + "publishedAt", + "peers", + "magnet", +] as const; + +export const compactColumns = ["select", "summary", "size", "magnet"] as const; + +export type Column = (typeof allColumns)[number]; diff --git a/webui/src/app/torrents/torrents.component.html b/webui/src/app/torrents/torrents.component.html new file mode 100644 index 0000000..be07ce5 --- /dev/null +++ b/webui/src/app/torrents/torrents.component.html @@ -0,0 +1 @@ + diff --git a/webui/src/app/torrents/torrents.component.scss b/webui/src/app/torrents/torrents.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/webui/src/app/torrents/torrents.component.spec.ts b/webui/src/app/torrents/torrents.component.spec.ts new file mode 100644 index 0000000..65d7caa --- /dev/null +++ b/webui/src/app/torrents/torrents.component.spec.ts @@ -0,0 +1,21 @@ +import { ComponentFixture, TestBed } from "@angular/core/testing"; + +import { appConfig } from "../app.config"; +import { TorrentsComponent } from "./torrents.component"; + +describe("TorrentsComponent", () => { + let component: TorrentsComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule(appConfig).compileComponents(); + + fixture = TestBed.createComponent(TorrentsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it("should create", () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/webui/src/app/torrents/torrents.component.ts b/webui/src/app/torrents/torrents.component.ts new file mode 100644 index 0000000..3a77bcf --- /dev/null +++ b/webui/src/app/torrents/torrents.component.ts @@ -0,0 +1,11 @@ +import { Component } from "@angular/core"; +import { RouterOutlet } from "@angular/router"; + +@Component({ + selector: "app-torrents", + standalone: true, + imports: [RouterOutlet], + templateUrl: "./torrents.component.html", + styleUrl: "./torrents.component.scss", +}) +export class TorrentsComponent {} diff --git a/webui/src/app/util/query-string.ts b/webui/src/app/util/query-string.ts new file mode 100644 index 0000000..9124421 --- /dev/null +++ b/webui/src/app/util/query-string.ts @@ -0,0 +1,29 @@ +import { Params } from "@angular/router"; + +export const stringListParam = ( + params: Params, + key: string, +): string[] | undefined => { + const str = stringParam(params, key); + const list = str + ?.split(",") + .map((str) => str.trim()) + .filter(Boolean); + return list?.length ? Array.from(new Set(list)).sort() : undefined; +}; + +export const stringParam = ( + params: Params, + key: string, +): string | undefined => { + return typeof params[key] === "string" + ? decodeURIComponent(params[key]) || undefined + : undefined; +}; + +export const intParam = (params: Params, key: string): number | undefined => { + if (params && params[key] && /^\d+$/.test(params[key] as string)) { + return parseInt(params[key] as string); + } + return undefined; +}; diff --git a/webui/src/app/version/version.component.html b/webui/src/app/version/version.component.html new file mode 100644 index 0000000..7791ce6 --- /dev/null +++ b/webui/src/app/version/version.component.html @@ -0,0 +1,11 @@ + + {{ version }} + diff --git a/webui/src/app/status/version/version.component.spec.ts b/webui/src/app/version/version.component.spec.ts similarity index 68% rename from webui/src/app/status/version/version.component.spec.ts rename to webui/src/app/version/version.component.spec.ts index 65b596f..1610f9e 100644 --- a/webui/src/app/status/version/version.component.spec.ts +++ b/webui/src/app/version/version.component.spec.ts @@ -1,8 +1,10 @@ import { ComponentFixture, TestBed } from "@angular/core/testing"; -import { StatusModule } from "../status.module"; +// import { AppModule } from 'src/app/app.module'; +// import { StatusModule } from '../status.module'; +import { GraphQLModule } from "../graphql/graphql.module"; +import { appConfig } from "../app.config"; import { VersionComponent } from "./version.component"; -import { AppModule } from "src/app/app.module"; describe("VersionComponent", () => { let component: VersionComponent; @@ -10,8 +12,8 @@ describe("VersionComponent", () => { beforeEach(async () => { await TestBed.configureTestingModule({ - imports: [AppModule, StatusModule], - declarations: [VersionComponent], + ...appConfig, + imports: [GraphQLModule], }).compileComponents(); fixture = TestBed.createComponent(VersionComponent); diff --git a/webui/src/app/version/version.component.ts b/webui/src/app/version/version.component.ts new file mode 100644 index 0000000..08aead4 --- /dev/null +++ b/webui/src/app/version/version.component.ts @@ -0,0 +1,43 @@ +import { Component, inject, OnInit } from "@angular/core"; +import { Apollo } from "apollo-angular"; +import { map } from "rxjs"; +import * as generated from "../graphql/generated"; +import { GraphQLModule } from "../graphql/graphql.module"; +import { AppModule } from "../app.module"; + +const defaultVersionName = "v-unknown"; + +@Component({ + selector: "app-version", + standalone: true, + templateUrl: "./version.component.html", + imports: [AppModule, GraphQLModule], +}) +export class VersionComponent implements OnInit { + private apollo = inject(Apollo); + + version: string = defaultVersionName; + versionUnknown = true; + + ngOnInit(): void { + this.apollo + .query({ + query: generated.VersionDocument, + }) + .pipe(map((r) => r.data.version)) + .subscribe({ + next: (version: string) => { + if (version) { + this.version = version; + this.versionUnknown = false; + } else { + this.version = defaultVersionName; + this.versionUnknown = true; + } + }, + error: () => { + this.version = defaultVersionName; + }, + }); + } +} diff --git a/webui/src/index.html b/webui/src/index.html index 87b264b..6f1674b 100644 --- a/webui/src/index.html +++ b/webui/src/index.html @@ -3,11 +3,11 @@ bitmagnet - + - + diff --git a/webui/src/main.ts b/webui/src/main.ts index 49db26c..fc38a93 100644 --- a/webui/src/main.ts +++ b/webui/src/main.ts @@ -1,8 +1,8 @@ -import { platformBrowserDynamic } from "@angular/platform-browser-dynamic"; +import { bootstrapApplication } from "@angular/platform-browser"; +import { appConfig } from "./app/app.config"; +import { AppComponent } from "./app/app.component"; -import { AppModule } from "./app/app.module"; - -platformBrowserDynamic() - .bootstrapModule(AppModule) +bootstrapApplication(AppComponent, appConfig).catch((err) => // eslint-disable-next-line no-console - .catch((err) => console.error(err)); + console.error(err), +); diff --git a/webui/src/styles.scss b/webui/src/styles.scss index 88359bb..996ce13 100644 --- a/webui/src/styles.scss +++ b/webui/src/styles.scss @@ -1,8 +1,75 @@ +// Custom Theming for Angular Material +// For more information: https://material.angular.io/guide/theming +@use "@angular/material" as mat; +@use "sass:map"; +// Plus imports for other components in your app. +@use "./app/health/health-widget-component.theme"; +@use "./app/layout/layout-component.theme"; +@use "./app/dashboard/dashboard-component.theme"; +@use "./app/dashboard/queue/queue-visualize-component.theme"; +@use "./app/themes/theme-emitter-component.theme"; +@use "app/torrents/torrents-search-component.theme"; +@use "app/torrents/torrents-table-component.theme"; + +@use "app/themes/classic-theme"; +@use "app/themes/neon-theme"; +@use "app/themes/tundra-theme"; + @import "@fontsource/roboto"; @import "@fontsource/material-icons"; @import "@fontsource/material-icons-outlined"; @import "@fontsource/material-symbols-outlined"; +// Include the common styles for Angular Material. We include this here so that you only +// have to load a single css file for Angular Material in your app. +// Be sure that you only ever include this mixin once! +@include mat.core(); + +@mixin app-component-themes($theme) { + @include health-widget-component.theme($theme); + @include layout-component.theme($theme); + @include dashboard-component.theme($theme); + @include queue-visualize-component.theme($theme); + @include theme-emitter-component.theme($theme); + @include torrents-search-component.theme($theme); + @include torrents-table-component.theme($theme); +} + +//.mat-toolbar.toolbar-header { +// background-color: mat.get-theme-color($theme, primary, 40); +// --mat-toolbar-container-text-color: #fff; + +// Include theme styles for core and each component used in your app. +// Alternatively, you can import and @include the theme mixins for each component +// that you are using. +html { + @include mat.core-theme(classic-theme.$theme); + @include mat.all-component-themes(classic-theme.$theme); + @include app-component-themes(classic-theme.$theme); + //--mat-toolbar-container-text-color: #fff; + &[data-bitmagnet-theme="clean"] { + @include classic-theme.clean-theme-vars; + } + &[data-bitmagnet-theme="neon"] { + @include mat.all-component-colors(neon-theme.$theme); + @include app-component-themes(neon-theme.$theme); + @include neon-theme.theme-vars; + } + &[data-bitmagnet-theme="tundra"] { + @include mat.all-component-colors(tundra-theme.$theme); + @include app-component-themes(tundra-theme.$theme); + @include tundra-theme.theme-vars; + } +} + +// Comment out the line below if you want to use the pre-defined typography utility classes. +// For more information: https://material.angular.io/guide/typography#using-typography-styles-in-your-application. +//@include mat.typography-hierarchy(classic-theme.$theme); + +// Comment out the line below if you want to use the deprecated `color` inputs. +// @include mat.color-variants-backwards-compatibility(classic-theme.$theme); +/* You can add global styles to this file, and also import other style files */ + html, body { height: 100%; @@ -50,3 +117,27 @@ body { font-family: "Material Symbols Outlined"; @include mat-icon; } + +.mat-icon { + fill: var(--mat-icon-color); +} + +.spacer { + display: inline-flex; + flex: 1 1 auto; +} +.drawer-container { + min-height: 100vh; +} + +.drawer { + width: 340px; + padding: 0 8px; + box-sizing: border-box; +} + +mat-drawer-content { + padding-right: 16px; + overflow: visible; + padding-bottom: 20px; +} diff --git a/webui/transloco.config.js b/webui/transloco.config.js new file mode 100644 index 0000000..2ee139a --- /dev/null +++ b/webui/transloco.config.js @@ -0,0 +1,27 @@ +module.exports = { + rootTranslationsPath: "src/app/i18n/translations/", + langs: [ + "ar", + "es", + "de", + "en", + "fr", + "hi", + "ja", + "nl", + "pt", + "ru", + "tr", + "uk", + "zh", + ], + keysManager: { + output: "src/app/i18n/translations", + translationsPath: "src/app/i18n/translations", + addMissingKeys: true, + emitErrorOnExtraKeys: true, + unflat: true, + sort: true, + defaultValue: "__missing__", + }, +}; diff --git a/webui/tsconfig.app.json b/webui/tsconfig.app.json index 84f1f99..8886e90 100644 --- a/webui/tsconfig.app.json +++ b/webui/tsconfig.app.json @@ -1,4 +1,5 @@ -/* To learn more about this file see: https://angular.io/config/tsconfig. */ +/* To learn more about Typescript configuration file: https://www.typescriptlang.org/docs/handbook/tsconfig-json.html. */ +/* To learn more about Angular compiler options: https://angular.dev/reference/configs/angular-compiler-options. */ { "extends": "./tsconfig.json", "compilerOptions": { diff --git a/webui/tsconfig.json b/webui/tsconfig.json index 842d1e5..b775486 100644 --- a/webui/tsconfig.json +++ b/webui/tsconfig.json @@ -1,26 +1,29 @@ +/* To learn more about Typescript configuration file: https://www.typescriptlang.org/docs/handbook/tsconfig-json.html. */ +/* To learn more about Angular compiler options: https://angular.dev/reference/configs/angular-compiler-options. */ { "compileOnSave": false, "compilerOptions": { - "baseUrl": "./", "outDir": "./dist/out-tsc", - "forceConsistentCasingInFileNames": true, "strict": true, "noImplicitOverride": true, "noPropertyAccessFromIndexSignature": true, "noImplicitReturns": true, "noFallthroughCasesInSwitch": true, + "skipLibCheck": true, + "esModuleInterop": true, "sourceMap": true, "declaration": false, - "downlevelIteration": true, "experimentalDecorators": true, - "moduleResolution": "node", + "moduleResolution": "bundler", "importHelpers": true, "target": "ES2022", "module": "ES2022", "useDefineForClassFields": false, - "lib": ["ES2022", "dom", "esnext.asynciterable"], + "forceConsistentCasingInFileNames": true, + "downlevelIteration": true, "allowSyntheticDefaultImports": true, - "strictPropertyInitialization": false + "strictPropertyInitialization": false, + "lib": ["ES2022", "dom"] }, "angularCompilerOptions": { "enableI18nLegacyMessageIdFormat": false, diff --git a/webui/tsconfig.spec.json b/webui/tsconfig.spec.json index 47e3dd7..e00e30e 100644 --- a/webui/tsconfig.spec.json +++ b/webui/tsconfig.spec.json @@ -1,4 +1,5 @@ -/* To learn more about this file see: https://angular.io/config/tsconfig. */ +/* To learn more about Typescript configuration file: https://www.typescriptlang.org/docs/handbook/tsconfig-json.html. */ +/* To learn more about Angular compiler options: https://angular.dev/reference/configs/angular-compiler-options. */ { "extends": "./tsconfig.json", "compilerOptions": {